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
TestData/new-BeamEccentricity/
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
TestData/new-BeamHingesBenchmark/BeamStandardOneHinge.fcsTestData/new-BeamHingesBenchmark/TwoHinges.fcs
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
TestData/new-BeamCrossSectionCalculator/TestData/new-BeamCharSolver/TestData/new-BeamHingesBenchmark/(uses CharacteristicsSolver indirectly)
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
TestData/new-BeamCuts/
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
TestData/new-BeamCrossSectionCalculator/
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 |