FCS Analysis & FEM Keywords
This document covers structural analysis and finite element modeling keywords in FCS.
Model Types
Model type declarations define the analysis context. They must appear before member definitions.
3D Shell Model
model_shell3d
Used for 3D shell/plate analysis with beams. Most common model type.
2D Plate Model
model_plate2d
For 2D plate bending analysis.
2D Plane Stress Model
model_plane2d
For 2D plane stress/strain analysis.
Cross-Section Analysis
crosssection_2d
For 2D cross-section property calculation.
Materials
Basic Syntax
material {name} rho <density> alpha <thermal_expansion> lambda <conductivity> c <specific_heat> linear E <elastic_modulus> ni <poisson_ratio>
IMPORTANT: ALL SIX parameters are REQUIRED in this exact order:
rho, alpha, lambda, c, linear E, ni
Parameters
| Parameter | Description | Units | Typical Steel | Typical Concrete |
|---|---|---|---|---|
rho |
Density | kg/m³ | 7850 | 2500 |
alpha |
Thermal expansion coefficient | 1/K | 1.2E-05 | 1.2E-05 |
lambda |
Thermal conductivity | W/(m·K) | 40 | 40 |
c |
Specific heat capacity | J/(kg·K) | 440 | 440 |
E |
Young's modulus | Pa | 210.0e9 | 35e9 |
ni |
Poisson's ratio | dimensionless | 0.3 | 0.2 |
Examples
# Concrete material (all parameters required!)
material {concrete} rho 2500 alpha 1.2E-05 lambda 40 c 440 linear E 35e9 ni 0.2
# Steel material
material {steel} rho 7850 alpha 1.2E-05 lambda 40 c 440 linear E 210.0e9 ni 0.3
Shorthand (numeric ID)
material 1
Uses default material properties (for simple tests only).
Thickness / Sections
Shell Thickness
thickness <id_or_name> material {material_name} t <thickness>
Examples
# Numeric ID
thickness 1 material {concrete} t 1
# Named thickness
thickness {BeamThicknessMatWeb} material {BeamSteelMaterial} t (BeamThickness.Web)
thickness {BeamThicknessMatFlange} material {BeamSteelMaterial} t (BeamThickness.Flange)
Cross-Section for Beams
cross_section <id> geometry_class <gclass_id>
Example:
gclass 2 filename ("Circle.fcs") parameters {D = dC}
cross_section 1 geometry_class 2
Mesh Control
Area Meshing
mesharea <area_id> mesh_type <type> h <element_size>
Mesh Types
| Type | Description |
|---|---|
MappedTrias |
Mapped triangular mesh |
MappedQuads |
Mapped quadrilateral mesh |
Free |
Free/unstructured mesh |
Examples
mesharea 1 mesh_type MappedTrias h 5
mesharea 2 mesh_type MappedTrias h meshH # Using variable
Global Mesh Parameter
OneMeshElementPerBeam = True
Forces single element per beam member (useful for frame analysis).
Structural Members
Shell/Plate Members (Plane Stress)
planestress <id> area <area_id> section <thickness_id>
Example:
planestress 1 area 1 section 1
planestress 2 area 2 section 1
Beam Members
beam <id_or_name> type <beam_type> curve <curve_id> xsection <xsection_id>
Beam Types
| Type | Description |
|---|---|
Frame |
General 3D frame element |
Truss |
Axial-only element |
Examples
beam 1 type Frame curve 1 xsection 1
beam {b2} type Frame curve 2 xsection 1
beam {b3} type Frame curve 3 xsection 1
Supports (Boundary Conditions)
Curve Support
support <id> curve {curve_name} fixed "<dofs>"
support <id> curve {curve_name} constant <ux> <uy> <uz> <rx> <ry> <rz> fixed "<dofs>"
Vertex Support (Object Syntax)
vertexsupport = VertexSupport{
Vertex := vertex_ref,
Conditions := { ux := 0, uy := 0, uz := 0 }
}
DOF String Format
The fixed string specifies which degrees of freedom are constrained:
ux- translation in Xuy- translation in Yuz- translation in Zrx- rotation about Xry- rotation about Yrz- rotation about Z
Concatenate to fix multiple DOFs: "uxuyuzrxryrz" = fully fixed
Examples
# Fixed support on curve (all DOFs)
support 1 curve {Cb12} fixed "uxuyuzrxryrz"
support 2 curve {Cb23} fixed "uxuyuzrxryrz"
# With prescribed displacements (all zero)
support 4 curve {Cb41} constant 0 0 0 0 0 0 fixed "uxuyuzrxryrz"
Loads
Curve Load (Distributed)
load <id> case <case_id> curve {curve_name} constant <fx> <fy> <fz> <mx> <my> <mz>
Object Syntax for Loads
Vertex Load
vl1 = VertexLoad{
Vertex := vertex_ref,
Intensity := { Fx, Fy, Fz, Mx, My, Mz },
LoadCase := LoadCase
}
Curve Load
loadSW = CurveLoad{
Curve := c1,
Intensity := { qx := 0.1, qz := -1.0 },
LoadCase := loadCase1
}
Area Load
areaLoad = AreaLoad{
Area := area_ref,
IntensityFn := (a, b) => { qz := -2 },
IntensitySystem := Fcs.IntensitySystem.SurfaceLcs,
LoadCase := loadCase
}
Intensity Systems
| System | Description |
|---|---|
Fcs.IntensitySystem.Gcs |
Global coordinate system |
Fcs.IntensitySystem.LoadLcs |
Load local coordinate system |
Fcs.IntensitySystem.SurfaceLcs |
Surface local coordinate system |
Load Case Definition
LoadCase := {
Name := "selfWeight",
ActionType := "Variable", # or "Permanent"
Specification := "",
LoadType := "Static"
}
Examples
# Distributed load on top curve (Z-direction, negative = downward)
load 1 case 1 curve {Ct23} constant 0 0 -0.1 0 0 0
# Point load with object syntax
vl1 = VertexLoad{
Vertex := v1,
Intensity := { Fx := 0, Fy := 0, Fz := -1000, Mx := 0, My := 0, Mz := 0 },
LoadCase := { Name := "PointLoad", LoadType := "Static" }
}
Complete Model Example
# Cooling tower shell model
topH = 150
topR = 40
botR = 65
meshH = 5
# Geometry
vertex {Vb1} xyz botR 0 0
vertex {Vt1} xyz topR 0 topH
vertex {Vb2} xyz 0 botR 0
vertex {Vt2} xyz 0 topR topH
curve {Cv1} arc vertex {Vb1} {Vm1} {Vt1}
curve {Cb12} arc vertex {Vb1} {Vb12} {Vb2}
area 1 boundary curve {Cv1} {Ct12} {Cv2} {Cb12}
# Model declaration
model_shell3d
# Meshing
mesharea 1 mesh_type MappedTrias h meshH
# Material & thickness
material {concrete} rho 2500 alpha 40 lambda 1.2E-05 c 440 linear E 35000 ni 0.2
thickness 1 material {concrete} t 1
# Member assignment
planestress 1 area 1 section 1
# Boundary conditions
support 1 curve {Cb12} fixed "uxuyuzrxryrz"
# Loading
load 1 case 1 curve {Ct12} constant 0 0 -0.1 0 0 0
Frame/Beam Model Example
# Cage structure with frame beams
D := 0.05 # tube diameter
hC := 2 # cage height
# Cross-section geometry
gclass 2 filename ("Circle.fcs") parameters {D = dC}
# Beam curve
vertex 1 xyz 0 -bC 0
vertex 2 xyz 0 -bC hC
curve 1 vertex 1 2
# Analysis setup
material 1
cross_section 1 geometry_class 2
model_shell3d
OneMeshElementPerBeam = True
# Beam members
beam 1 type Frame curve 1 xsection 1
beam {b2} type Frame curve 2 xsection 1
beam {b3} type Frame curve 3 xsection 1
Key Patterns
1. Analysis Workflow Order
- Define geometry (vertices, curves, areas)
- Declare model type (
model_shell3d) - Define mesh parameters
- Define materials and sections
- Create structural members
- Apply supports
- Apply loads
2. ID vs Named References
Both numeric IDs and named identifiers work:
# Numeric ID
material 1
thickness 1 material 1 t 0.1
# Named (preferred for clarity)
material {steel} ...
thickness {steelPlate} material {steel} t 0.1
3. Parametric Properties
Use expressions for parametric models:
t_flange := 0.012
t_web := 0.008
thickness {thkFlange} material {steel} t (t_flange)
thickness {thkWeb} material {steel} t (t_web)
Related Keywords Summary
| Category | Keywords |
|---|---|
| Model Types | model_shell3d, model_plate2d, model_plane2d, crosssection_2d |
| Materials | material, rho, E, ni, alpha, lambda, c, linear |
| Sections | thickness, cross_section, geometry_class |
| Meshing | mesharea, meshcurve, meshvertex, mesh_type, h |
| Members | planestress, shell, beam, type, xsection |
| Supports | support, fixed, constant, VertexSupport, CurveSupport |
| Loads | load, case, VertexLoad, CurveLoad, AreaLoad |
| Load Props | Intensity, IntensityFn, IntensitySystem, LoadCase |