FCS Beam Advanced Features

Advanced beam modelling: cross-section mirroring, eccentricity, end releases (hinges), the characteristics solver, and angle cuts.

1. Cross-Section Mirroring

By default the cross-section local axes follow the beam LCS. Mirroring flips the cross-section about its own Y or Z axis — essential for angle sections (L-profiles) placed symmetrically about a grid line.

# mirror about the CSS Z axis (flips the short leg of an L-section left→right)
leftColumn := BeamStandard(GCS.Rx(0)){
    beamCss    := res.cssLib.lshapeCentered,
    MirrorCssZ := True,
    MirrorCssY := False
}

# mirror about the CSS Y axis (flips the profile top↔bottom)
topPurlin := BeamStandard(GCS.Ry(0)){
    beamCss    := res.cssLib.ceeSection,
    MirrorCssZ := False,
    MirrorCssY := True
}
Property Type Effect
MirrorCssZ bool Flip cross-section about its local Z axis
MirrorCssY bool Flip cross-section about its local Y axis
MirrorLcsZ bool Flip the beam's LCS Z direction
MirrorLcsY bool Flip the beam's LCS Y direction

Source file

TestData/new-BeamMirror/BeamL1b-mirrorZcss.fcs

2. Beam Eccentricity

Offsets the beam centroid from the element centreline in the LCS Y / Z directions.

cross_section {cs1} geometry_class (cssProfile) material 1 parameters {
    A=100, Iy=1000, Iz=2000,
    ey=-50,     # Y eccentricity (mm)
    ez= 25      # Z eccentricity (mm)
}

ey and ez are measured from the reference line to the cross-section centroid along the local-Y and local-Z axes respectively.

Source files

3. End Releases (Hinges)

A hinge releases one or more moment components at a beam end, creating a pin connection.

Predefined hinge families

# --- Predefined values ---
bhn  := Fcs.Beam.Hinges.None          # fully fixed both ends (default)
bhf  := Fcs.Beam.Hinges.Free          # pinned both ends

# --- Per-end specification ---
bh1 := Fcs.Beam.Hinges{
    Head := Fcs.Beam.Hinge.Bend,      # hinge at start (head)
    End  := Fcs.Beam.Hinge.None       # fixed at end
}

bh2 := Fcs.Beam.Hinges{
    Head := Fcs.Beam.Hinge.None,
    End  := Fcs.Beam.Hinge.Bend       # hinge at finish (end)
}

bh3 := Fcs.Beam.Hinges{
    Head := Fcs.Beam.Hinge.Bend,
    End  := Fcs.Beam.Hinge.Bend       # hinged both ends
}

Hinge component values

Value Released DOF
Fcs.Beam.Hinge.None Nothing released (fully fixed)
Fcs.Beam.Hinge.Bend Releases all bending moments (My + Mz)
Fcs.Beam.Hinge.BendY Releases My only
Fcs.Beam.Hinge.BendZ Releases Mz only

Applying to a beam element

beam {b1} type Frame curve {c1} xsection {cs1} hinges bh1
beam {b2} type Frame curve {c2} xsection {cs1} hinges Fcs.Beam.Hinges.None

Source files

4. Characteristics Solver

Fcs.Analysis.BeamSection.CharacteristicsSolver computes the elastic cross-section characteristics (area, moments of inertia, shear integrals) for an arbitrary cross-section geometry. This is needed when the cross-section is not a standard shape with tabulated properties.

# compute characteristics for a custom or compound CSS
ch := Fcs.Analysis.BeamSection.CharacteristicsSolver(beamCss).Result

# use the computed values in a cross_section element
cross_section {cs1} geometry_class (beamCss) material 1 parameters {
    A    = ch.EA,          # axial stiffness → effective area
    ey   = -ch.ESzs/ch.EA, # Y centroid offset = -Sz / A
    ez   =  ch.ESys/ch.EA, # Z centroid offset = Sy / A
    Iy   = ch.EIyc,        # second moment about centroid Y
    Iz   = ch.EIzc,        # second moment about centroid Z
    Dyz  = ch.EDyzc        # product of inertia
}

Available result properties

Property Meaning
ch.EA E × A (axial stiffness)
ch.EIyc E × Iy about centroid
ch.EIzc E × Iz about centroid
ch.EDyzc E × product of inertia (centroid)
ch.ESzs E × first moment Sz about shear centre
ch.ESys E × first moment Sy about shear centre

Source files

5. Beam Angle Cuts

End cuts allow a beam to be trimmed at an angle rather than square. Cuts are specified as rotations of the cutting plane at each beam end.

beam {b1} type Frame curve {c1} xsection {cs1}
    cut_head { Rx:=0, Ry:=0.1, Rz:=0.0 }   # tilt end plane at head
    cut_end  { Rx:=0, Ry:=0.0, Rz:=0.05 }  # tilt end plane at end

Source files

6. model_crosssection2d

Generates a 2-D mesh of the cross-section profile for visualisation and result extraction:

model_crosssection2d {mcs1} geometry_class (beamCss) material 1

Source files

7. Quick Reference

# Mirror
beam {b} ... { MirrorCssZ:=True, MirrorCssY:=False }

# Hinges
bh := Fcs.Beam.Hinges{ Head:=Fcs.Beam.Hinge.Bend, End:=Fcs.Beam.Hinge.None }
beam {b} type Frame curve {c} xsection {cs} hinges bh

# Characteristics solver
ch := Fcs.Analysis.BeamSection.CharacteristicsSolver(myCss).Result
cross_section {cs} geometry_class (myCss) material 1 parameters {
    A=ch.EA, ey=-ch.ESzs/ch.EA, Iy=ch.EIyc, Iz=ch.EIzc, Dyz=ch.EDyzc
}

8. Relevant Test Folders

Folder Feature
new-BeamMirror/ MirrorCssZ, MirrorCssY
new-BeamEccentricity/ ey, ez offsets
new-BeamHingesBenchmark/ Hinge types, one/two hinges
new-BeamCuts/ Angle end cuts
new-BeamCrossSectionCalculator/ 2-D CSS model
new-BeamCharSolver/ CharacteristicsSolver
new-StabOptimization/ Beam stiffness optimisation