> ## Documentation Index
> Fetch the complete documentation index at: https://calcs.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cross-section Solver

> Comprehensive guide to the cross-section solver for analyzing structural section properties using sectionproperties library

The Cross-section Solver provides comprehensive analysis of structural cross-sections, calculating geometric properties, elastic properties, plastic properties, and warping characteristics using the [sectionproperties library](https://sectionproperties.readthedocs.io/en/1.0.8/rst/geom_mesh.html).

## Input Parameters

Most parameters are optional, but enough information must be provided to create a stable structure with:

* Both stiffnesses (EA and EI)
* Length specification
* At least 1-2 supports
* At least one strength load case/combination
* At least one serviceability load combination

### Core Configuration

<ResponseField name="sectionsData" type="array" required>
  Array of section dictionaries following [sectionproperties Documentation](https://sectionproperties.readthedocs.io/en/1.0.8/rst/geom_mesh.html#circular-section) format with additional Calcs.com-specific entries.

  **Note:** You may see `std_*` parameters in past examples. These don't do anything currently and are simply passed through. They were intended for cross-section design linking.
</ResponseField>

<ResponseField name="sectionsData[n]['type']" type="string" required>
  String describing the section type. Full names from sectionproperties documentation are available, plus abbreviated names.
</ResponseField>

<ResponseField name="sectionsData[n]['mirror']" type="string">
  Mirror the section about an axis. Options: `"x"`, `"y"`, or `"null"`
</ResponseField>

<ResponseField name="sectionsData[n]['rot']" type="number">
  Rotate section counterclockwise by specified degrees. Use `null` for no rotation.
</ResponseField>

<ResponseField name="materialsData" type="object">
  Dictionary of material names and their properties.

  **Default:** `{"default": {"E": 1, "nu": 0, "fy": 1, "color": "#000", "lineWeight": 3}}`

  Properties include:

  * `E`: Elastic modulus
  * `nu`: Poisson's ratio
  * `fy`: Yield strength
  * `color`: Line color
  * `lineWeight`: Line weight for display
</ResponseField>

### Analysis Configuration

<ResponseField name="analysisType" type="string" default="none">
  Type of analysis to perform:

  * `"none"`: No analysis (geometry only)
  * `"elastic"`: Elastic analysis only
  * `"warping"`: Elastic + warping analysis
  * `"plastic"`: Elastic + plastic analysis
  * `"frame"`: Optimized analysis for frame properties
  * `"full"`: Complete analysis (elastic + warping + plastic)
</ResponseField>

<ResponseField name="checkGeom" type="string" default="none">
  Geometry validity checking:

  * `"check"`: Issue error messages for problems
  * `"clean"`: Try to fix geometry issues automatically
  * `"none"`: No geometry checking
</ResponseField>

### Mesh and Output Configuration

<ResponseField name="defaultMeshFactor" type="number" default="100">
  Maximum mesh size = gross area / this factor
</ResponseField>

<ResponseField name="meshColor" type="string" default="#AAA">
  Color for mesh lines in output
</ResponseField>

<ResponseField name="meshWeight" type="integer" default="1">
  Line weight for mesh lines
</ResponseField>

<ResponseField name="zeroTol" type="float" default="1e-16">
  Tolerance below which results are rounded to zero. Engineering applications typically use `1e-6`.
</ResponseField>

<ResponseField name="lenUnit" type="string" required>
  Unit for length outputs. Must be valid mathjs unit (e.g., 'm' for SI, 'ft' for US)
</ResponseField>

<ResponseField name="forceUnit" type="string" required>
  Unit for force outputs. Must be valid mathjs unit (e.g., 'N' for SI, 'kip' for US)
</ResponseField>

## Output Properties

All outputs are accessible via `solverRefId.propertyName` where `solverRefId` is your solver's reference ID.

### Always Available (All Analysis Types)

<ResponseField name="lines" type="array">
  All lines making up the cross-section (excluding mesh)
</ResponseField>

<ResponseField name="dimensions" type="array">
  Default dimensions for cross-section diagrams. Includes all input dimensions.
</ResponseField>

<ResponseField name="domain" type="array">
  2×2 array of outer domain extents: `[[xmin, ymin], [xmax, ymax]]`
</ResponseField>

<ResponseField name="points" type="array">
  n×2 array of all points/nodes: `[[x1, y1], [x2, y2], ...]`
</ResponseField>

<ResponseField name="facets" type="array">
  n×2 array of all elements: `[[node0, node1], ...]`
</ResponseField>

<ResponseField name="holes" type="array">
  Points located within empty regions
</ResponseField>

<ResponseField name="control_points" type="array">
  Points located within filled regions
</ResponseField>

<ResponseField name="shift" type="array">
  Amount by which each geometry was shifted
</ResponseField>

### Elastic Results

Available for `elastic`, `warping`, `plastic`, and `full` analysis types:

#### Basic Properties

<ResponseField name="A" type="number" unit="len²">
  Gross area
</ResponseField>

<ResponseField name="cx, cy" type="number" unit="len">
  Centroid location (X, Y coordinates)
</ResponseField>

<ResponseField name="rx, ry" type="number" unit="len">
  Radius of gyration about centroidal axes
</ResponseField>

<ResponseField name="r11, r22" type="number" unit="len">
  Radius of gyration about principal axes
</ResponseField>

<ResponseField name="phi" type="number" unit="deg">
  Angle of major principal axis
</ResponseField>

#### Stiffness Properties

<ResponseField name="EA" type="number" unit="force">
  Axial stiffness
</ResponseField>

<ResponseField name="EQx, EQy" type="number" unit="force·len">
  First moment of area about global axes
</ResponseField>

<ResponseField name="EIxx, EIyy, EIxy" type="number" unit="force·len²">
  Second moment of area about centroidal axes
</ResponseField>

<ResponseField name="EI11, EI22, EI12" type="number" unit="force·len²">
  Second moment of area about principal axes
</ResponseField>

<ResponseField name="EIxxg, EIyyg, EIxyg" type="number" unit="force·len²">
  Second moment of area about global axes
</ResponseField>

#### Section Moduli

<ResponseField name="EZxxp, EZxxm" type="number" unit="force·len">
  Elastic section modulus for positive/negative bending about centroidal X-axis
</ResponseField>

<ResponseField name="EZyyp, EZyym" type="number" unit="force·len">
  Elastic section modulus for positive/negative bending about centroidal Y-axis
</ResponseField>

<ResponseField name="EZxx, EZyy" type="number" unit="force·len">
  Minimum elastic section modulus (min of positive/negative)
</ResponseField>

<ResponseField name="EZ11p, EZ11m, EZ22p, EZ22m" type="number" unit="force·len">
  Elastic section modulus about principal axes
</ResponseField>

<ResponseField name="EZ11, EZ22" type="number" unit="force·len">
  Minimum elastic section modulus about principal axes
</ResponseField>

#### Same Stiffness Outputs

When all sections have identical stiffness, additional properties without 'E' prefix are available:
`Qx`, `Qy`, `Ixx`, `Iyy`, `Ixy`, `I11`, `I22`, `I12`, `Ixxg`, `Iyyg`, `Ixyg`, `Zxxp`, `Zxxm`, `Zyyp`, `Zyym`, `Zxx`, `Zyy`, `Z11p`, `Z11m`, `Z22p`, `Z22m`, `Z11`, `Z22`

### Plastic Properties

Available for `plastic` and `full` analysis types:

<ResponseField name="cxp, cyp" type="number" unit="len">
  Plastic centroid location
</ResponseField>

<ResponseField name="c11p, c22p" type="number" unit="len">
  Plastic centroid location on principal axes
</ResponseField>

<ResponseField name="fySxx, fySyy" type="number" unit="force·len">
  Plastic section modulus about centroidal axes
</ResponseField>

<ResponseField name="fyS11, fyS22" type="number" unit="force·len">
  Plastic section modulus about principal axes
</ResponseField>

#### Same Yield Stress Outputs

When all sections have identical yield stress: `Sxx`, `Syy`, `S11`, `S22`

### Warping Properties

Available for `warping` and `full` analysis types:

#### Shear Centers

<ResponseField name="x0, y0" type="number" unit="len">
  Shear center location
</ResponseField>

<ResponseField name="x011, y022" type="number" unit="len">
  Shear center on principal axes
</ResponseField>

<ResponseField name="x0t, y0t" type="number" unit="len">
  Taffetz shear center location
</ResponseField>

#### Monosymmetry Constants

<ResponseField name="betaxp, betaxm, betayp, betaym" type="number" unit="len">
  Monosymmetry constants for positive/negative bending about centroidal axes
</ResponseField>

<ResponseField name="beta11p, beta11m, beta22p, beta22m" type="number" unit="len">
  Monosymmetry constants about principal axes
</ResponseField>

#### Advanced Properties

<ResponseField name="EJ" type="number" unit="force·len²">
  St Venant's torsion constant
</ResponseField>

<ResponseField name="EIw" type="number" unit="force·len⁴">
  Warping constant
</ResponseField>

<ResponseField name="EAsx, EAsy" type="number" unit="force">
  Shear area about centroidal axes
</ResponseField>

<ResponseField name="EAs11, EAs22" type="number" unit="force">
  Shear area about principal axes
</ResponseField>

#### Same Stiffness Outputs

When all sections have identical stiffness: `J`, `Iw`, `Asx`, `Asy`, `As11`, `As22`

### Frame Properties

For `analysisType: "frame"` - optimized subset for frame analysis:

<ResponseField name="A" type="number" unit="len²">
  Gross area
</ResponseField>

<ResponseField name="phi" type="number" unit="deg">
  Angle of major principal axis
</ResponseField>

<ResponseField name="EA" type="number" unit="force">
  Axial stiffness
</ResponseField>

<ResponseField name="EJ" type="number" unit="force·len²">
  St Venant torsion constant
</ResponseField>

<ResponseField name="EQx, EQy" type="number" unit="force·len">
  First moment of area about global axes
</ResponseField>

<ResponseField name="EIxx, EIyy, EIxy" type="number" unit="force·len²">
  Second moment of area about centroidal axes
</ResponseField>

## Example Usage

```json theme={null}
{
  "type": "remote",
  "referenceId": "section_analysis",
  "solver": "crossSection",
  "inputs": {
    "sectionsData": [
      {
        "type": "rectangular",
        "b": 200,
        "h": 300,
        "material": "steel"
      }
    ],
    "materialsData": {
      "steel": {
        "E": 200000,
        "nu": 0.3,
        "fy": 250,
        "color": "#1f77b4",
        "lineWeight": 2
      }
    },
    "analysisType": "full",
    "lenUnit": "mm",
    "forceUnit": "N"
  }
}
```

## Best Practices

1. **Analysis Type Selection**: Choose the minimum analysis type needed for your calculations to optimize performance
2. **Unit Consistency**: Ensure `lenUnit` and `forceUnit` match your template's unit system
3. **Geometry Validation**: Use `checkGeom: "clean"` for robust geometry handling
4. **Material Properties**: Define realistic material properties for accurate results
5. **Mesh Control**: Adjust `defaultMeshFactor` based on section complexity and required accuracy

## Performance Considerations

* `"frame"` analysis type is fastest and most reliable for basic frame properties
* `"full"` analysis provides complete results but takes longer
* Complex geometries may require geometry cleaning (`checkGeom: "clean"`)
* Large `defaultMeshFactor` values create finer meshes but slower analysis

<Warning>
  When using complex geometries, test with `checkGeom: "check"` first to identify potential issues before using `"clean"` mode.
</Warning>
