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