Skip to main content
Python solvers are server-side calculation engines that perform complex structural analysis tasks including finite element analysis, beam analysis, cross-section calculations, and more. These solvers are accessed through Remote Widgets and provide comprehensive structural engineering calculations.

Overview

Beam Solver

The Beam Solver is the most commonly used solver for 1D structural analysis of beams and columns.

Required Inputs

Most parameters are optional except that enough information must be provided to create a stable structure with:
  • At least one load
  • Both stiffnesses (EI and EA)
  • Length
  • At least 1-2 supports
  • At least one strength load case/combination
  • At least one serviceability load combination

Core Parameters

L
scalar
required
Total length of beam
EI
scalar
required
Bending stiffness of beam
EA
scalar
required
Axial stiffness of beam
SW
scalar
Self-weight of beam (line load)

Support Configuration

r
matrix
required
Support configuration in format: [[support_type, location, ...], ...]Support Types:
  • 0, "Pin", or "Pinned" - Pinned support
  • 1, "Fix", or "Fixed" - Fixed support
  • 2 or "Roller" - Roller restraining lateral translation
  • 101 or "Rotation" - Support restraining only rotation
  • 102 or "Rigid Roller" - Roller with rotation restraint
  • 3, "Hinge", or "Hinged" - Internal pin
  • 4, "Brace", "Lateral Brace", "Strong Axis Brace", or "Top Brace" - Brace type 4
  • 5, "Brace 2", "Torsional Brace", "Weak Axis Brace", or "Bottom Brace" - Brace type 5
  • 6, "Brace 3", or "Twist Brace" - Brace type 6
rRoll
matrix
Roller support configuration: [[support_type=2, location, angle], ...]Angles:
  • 0Β° - Restrains purely lateral translation
  • 90Β° - Restrains purely axial translation
rDist
matrix
Continuous supports: [[label, start_loc, end_loc], ...]Internally creates closely-repeated pinned supports with compiled reactions

Load Inputs

Concentrated Loads
loadsConc
matrix
Linked point loads in format:
[["label", loc, {loads_dictionary}], ...]
[["label", loc, eccentricity, {loads_dictionary}], ...]
[["label", loc, eccentricity, "orientation_string", {loads_dictionary}], ...]
Orientation strings:
  • "Lateral", "Perpendicular", "Aligned" - 90Β° angle
  • "Axial", "Parallel" - 0Β° angle
  • "Global Y" - Gravity direction
  • "Global X" - Perpendicular to gravity
  • "Global" - Gravity for beams, perpendicular for columns
loadsConcAxial
matrix
Axial-only point loads (ignores lateral components). Same format as loadsConc.Used when templates have multiple solvers for major/minor axes.
Distributed Loads
loadsDist
matrix
Linked distributed loads:
[["label", start_loc, end_loc, start_load_width, end_load_width, {loads_dictionary}], ...]

Load Combinations

loadTypesBase
array of strings
required
Load types in order, associated with each column in load case matrices
LCs_str
matrix
required
Strength load cases/combinations. Each row is a load case:
  • First column: String identifier (e.g., β€œ1.2G+1.5Q”)
  • Subsequent columns: Load factors for each load type
LCs_sserv
matrix
Short-term serviceability load cases/combinations
LCs_mserv
matrix
Medium-term serviceability load cases/combinations
LCs_lserv
matrix
Long-term serviceability load cases/combinations

Load Combination Factors

LCFact_DB
dict of arrays
Factor database:
{"Q_conc": [0, 1.0, 0.6, 0.6, 0.3]}
Special prefixes:
  • "all_" - Multiplies every load type by given factors
  • "non_" - Tracks factor but doesn’t affect load combinations
LCFact_str
dict of arrays
Factor indices for strength load cases:
{"Q_conc": [1, 0, 2, 4]}
Values of 0 are ignored (effectively 1.0 factor)

Beam Solver Outputs

Primary Results Access

All outputs are accessible via remote.X where X is the output label:
  • Governing Demands
  • Load Cases
  • Per-Span Results
  • Support Results
remote.gov.M        // Governing moment
remote.gov.V        // Governing shear  
remote.gov.P        // Governing axial
remote.gov.DST      // Short-term deflection
remote.gov.DLT      // Long-term deflection

Plotting Data

remote.plot.x       // X-axis locations
remote.plot.M       // Moment diagram data
remote.plot.V       // Shear diagram data  
remote.plot.D       // Deflection data
remote.plot.MEnv    // Moment envelope
remote.plot.R       // Support/brace locations

Load Linking

Support reactions table for load-linking between templates
Support reactions dictionary: [Rx, Ry, Rm]
Vertical reactions dictionary: [Ry, Rm]

Advanced Features

Load Patterning

loadPattern
array of strings
Load types to be patterned (e.g., ["L", "S"])
loadPatternBasis
string
default:"supports"
Pattern basis: "supports", "braces", or "Brace X"

Non-Concurrent Loads

combNonConc
array of mixed array
Expand load types for non-concurrent analysis:
[["Q_dist", 2]]
Creates β€œQ_dist2” and β€œQ_dist3” for separate analysis

Unit Conversion

len_convert
scalar
default:"0.001"
Length unit conversion factor
forceUnit
string
Force unit for outputs (must be valid mathjs unit, e.g., β€˜kN’, β€˜kip’)
lengthUnit
string
Length unit for outputs (must be valid mathjs unit, e.g., β€˜m’, β€˜ft’)

Important Notes

Non-Concurrent Load Cases: For outputs with β€œbyLC” suffix, non-concurrent load combinations (e.g., β€œEh2”) are added at the END of results. Use LC.str.len for table length, not LCTable.str.len.
Parameter Evolution: Some parameters are deprecated but still functional. New templates should use current parameter formats (e.g., combConc2 instead of combConc).

Best Practices

  • Always provide sufficient boundary conditions for structural stability
  • Use meaningful load case labels that match code requirements
  • Set appropriate units for consistent output formatting
  • Test solver inputs with simple cases before complex implementations
  • Document any special load combination factor requirements
  • Consider performance implications with large numbers of load cases

Other Solvers

Frame Solver

For 2D and 3D frame analysis with multiple members and complex connections.

Cross-section Solver

Calculates section properties for various cross-sectional shapes including custom polygonal sections.

pyCUFSM Solver

Performs constrained finite strip method analysis for buckling calculations of thin-walled sections.
Each solver has specific input requirements and output formats. Refer to the individual solver documentation for detailed parameter specifications.
⌘I