FCS Steel Design Library
Fcs.SteelLib is a built-in namespace providing thin-walled cold-formed section geometry, material definitions, connection categories, and Ultimate Limit State (ULS) design checks.
1. Namespace Overview
| Sub-namespace | Contents |
|---|---|
Fcs.SteelLib.Sections.Zsection |
Z-section profiles from the GSI catalogue |
Fcs.SteelLib.Sections.Materials |
Predefined steel material objects |
Fcs.SteelLib.Sections.Connection |
Bolting / connection category constants |
Fcs.SteelLib.Sections.Shape |
Conversion helpers (section → shape object) |
Fcs.SteelLib.Design.ULS |
ULS design functions |
2. Section Geometry (Z-Section Example)
# from new-FcsSteelLib/designTest.fcs
zsect := Fcs.SteelLib.Sections.Zsection.sectionGsi_6Z12(
Fcs.SteelLib.Sections.Materials.CommonSteel,
Fcs.SteelLib.Sections.Connection.WithoutBolting
)
| Argument | Type | Description |
|---|---|---|
Materials.CommonSteel |
material enum | Standard structural steel (S235–S355) |
Connection.WithoutBolting |
connection enum | No net-section reduction (unbolted) |
The returned zsect object contains the section geometry (vertex positions, areas, moments of inertia) and the material properties as a compound record.
Other section constructors
The pattern Fcs.SteelLib.Sections.<SectionFamily>.<catalogueFunction>(material, connection) applies to all section families:
| Section family | Example function |
|---|---|
Zsection |
sectionGsi_6Z12(...) |
Csection |
sectionGsi_2C_200_S2_0(...) |
HatSection |
sectionGsi_HP_200(...) |
TubularSection |
(RHS / CHS families) |
Catalogue function names encode the cross-section dimensions: 6Z12 means 6-inch Z-section with 12-gauge thickness.
3. Materials
| Constant | Description |
|---|---|
Fcs.SteelLib.Sections.Materials.CommonSteel |
Default structural steel |
Fcs.SteelLib.Sections.Materials.S235 |
Yield strength 235 MPa |
Fcs.SteelLib.Sections.Materials.S355 |
Yield strength 355 MPa |
4. Connection Categories
| Constant | Description |
|---|---|
Fcs.SteelLib.Sections.Connection.WithoutBolting |
Full cross-section area (unbolted zones) |
Fcs.SteelLib.Sections.Connection.WithBolting |
Net section reduced for bolt holes |
5. Shape Conversion
Before passing a section to a design function, convert it to a Shape object:
shape := Fcs.SteelLib.Sections.Shape.shapeFromZet(zsect)
| Converter | Input section type |
|---|---|
shapeFromZet(s) |
Z-section |
shapeFromCee(s) |
C-section |
shapeFromRec(s) |
Rectangular / tubular |
6. ULS Design Checks
Tension ultimate
Nrd := Fcs.SteelLib.Design.ULS.TensionUltimate(shape)
# returns design tensile resistance Nrd [N]
Other available checks (pattern: Fcs.SteelLib.Design.ULS.<Check>(shape, ...))
| Function | Check |
|---|---|
TensionUltimate(shape) |
Net-section tensile capacity |
BendingMoment(shape, axis) |
Bending resistance about Y or Z |
Compression(shape) |
Euler buckling capacity |
Shear(shape, axis) |
Shear capacity |
7. Integrating with CharacteristicsSolver
For custom or compound sections not in the catalogue, use CharacteristicsSolver (see 14-BEAM-ADVANCED.md) to compute the elastic properties, then feed them manually into the analysis:
ch := Fcs.Analysis.BeamSection.CharacteristicsSolver(customCss).Result
cross_section {cs1} geometry_class (customCss) material 1 parameters {
A = ch.EA,
Iy = ch.EIyc,
Iz = ch.EIzc
}
8. Defining Cross-Section Geometry with filletedpoly (inline vertex-list syntax)
The catalogue sections are internally built with filletedpoly. You can also define a custom thin-walled profile manually using the vertex-list form of filletedpoly:
# vertices listed inline; fillet radii listed separately after `fillets`
curve {cProfile} filletedpoly radiusmultiplier 1
vertexes {v1} {v2} {v3} {v4} {v5} {v6} ...
fillets 0 r1 r1 r1 r1 0 ...
area {aCss} boundary curve {cProfile}
This differs from the items (array) form in doc 13 — both are valid. Use the vertex-list form when vertices are separately declared and can be referenced by name; use the items (array) form when constructing the profile from a data array at runtime.
Source file
TestData/new-HieSolver5/css/2C_profile.fcs
9. Complete Design Example
# --- Section and material ---
zsect := Fcs.SteelLib.Sections.Zsection.sectionGsi_6Z12(
Fcs.SteelLib.Sections.Materials.CommonSteel,
Fcs.SteelLib.Sections.Connection.WithoutBolting
)
# --- Convert to shape for design checks ---
shape := Fcs.SteelLib.Sections.Shape.shapeFromZet(zsect)
# --- ULS tension check ---
Nrd := Fcs.SteelLib.Design.ULS.TensionUltimate(shape)
# --- Apply to beam in analysis ---
cross_section {cs1} geometry_class (zsect.Geometry) material 1 parameters {
A=zsect.A, Iy=zsect.Iy, Iz=zsect.Iz
}
beam {b1} type Frame curve {c1} xsection {cs1}
Source file
TestData/new-FcsSteelLib/designTest.fcs
10. Quick Reference
# Section from catalogue
zsect := Fcs.SteelLib.Sections.Zsection.sectionGsi_6Z12(
Fcs.SteelLib.Sections.Materials.CommonSteel,
Fcs.SteelLib.Sections.Connection.WithoutBolting )
# Shape conversion
shape := Fcs.SteelLib.Sections.Shape.shapeFromZet(zsect)
# ULS check
Nrd := Fcs.SteelLib.Design.ULS.TensionUltimate(shape)
11. Relevant Test Folders
| Folder | Feature |
|---|---|
new-FcsSteelLib/ |
Core Z-section + TensionUltimate |
new-BeamCrossSectionCalculator/ |
CharacteristicsSolver for custom CSS |
new-BeamCharSolver/ |
CharacteristicsSolver result properties |
new-HieSolver5/ |
2C double-channel cold-formed profile |
new-HieSolver4/ |
Multi-span HieSolver with steel ribs |
bug-SectionsNotFoundH/ |
Section lookup failure edge case |