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:

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

  1. Define geometry (vertices, curves, areas)
  2. Declare model type (model_shell3d)
  3. Define mesh parameters
  4. Define materials and sections
  5. Create structural members
  6. Apply supports
  7. 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