Skip to content

WASM exports ​

Generated by scripts/gen_wasm_manifest.mjs from the Rust source - do not edit. Run npm run docs:wasm to refresh.

Every one of the 167 functions the solver exports to JavaScript, with the JSON each one reads and returns. 135 of the 158 that exchange JSON have both their input and their result typed; the others say which side is untyped and why. For worked examples of the most used calls, see the WASM API guide.

Conventions. A &str parameter is a JSON string and a String result is JSON. Units are SI (m, N, Pa, N·m) unless a field says otherwise. A call that cannot run returns {"error": "..."} instead of its result. Field types link to WASM types. The machine-readable schemas are in docs/api/fem-wasm-schemas.json in the repository.

Analysis ​

analysis_report ​

Builds the analysis report from the model and its results.

rust
analysis_report(model_json: &str, results_json: &str) -> String

Input model_json: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: { plate_id, axis: [x, y, z], input: { kind: "material", e1, e2, g12, nu12, g13, g23 } | { kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 } }. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Input results_json: WasmResults

FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

Result: AnalysisReport

Result fields
FieldTypeRequiredDescription
maxDisplacementsDisplacementExtreme[]yes
maxReactionsReactionExtreme[]yes
memberUtilisationMemberUtilSummary[]yes
passFailRollupPassFailRollupyes
statsModelStatsyes

auto_size ​

Run the AS 4100 / AS 4600 member-mode auto-sizer entirely in Rust. Input: { model, candidates: {category: [section+mass_kg_m+category]}, sizable: [{member_id, category, current_kg}], options: {target, max_iter} }. Candidates are supplied by JS (the catalogue stays there) already sorted lightest-first per category. Returns the change report { changes:[{id,num,to,toKg,util}], massBefore, massAfter, iterations, converged, target }. AS path only - the international codes (AISC 360 / EC3 / AS 5100 / EIT) and group mode remain in the JS optimiser.

rust
auto_size(json_input: &str) -> String

Input json_input: WasmAutoSizeInput

FieldTypeRequiredDescription
candidates{ [key]: WasmAutoSizeCandidate[] }
modelWasmModelyes
optionsWasmAutoSizeOptions
sizableWasmSizableSpec[]

Result: AutoSizeReport

Result fields
FieldTypeRequiredDescription
changesAutoSizeChange[]yes
convergedbooleanyes
iterationsintegeryes
massAfternumberyes
massBeforenumberyes
nonebooleanyes
solveErrorstring | nullWhy an analysis inside the loop failed, when one did. A failed solve used to end the loop with changed already false, so a mechanism reported converged: true with nothing sized (SA-34).
targetnumberyes

building_slenderness_check ​

Building slenderness in one direction against the given limit.

rust
building_slenderness_check(json_input: &str, direction: &str, limit_ratio: f64) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Input direction: untyped (no typed parse of this parameter)

Result: BuildingSlendernessReport

Result fields
FieldTypeRequiredDescription
building_height_mnumberyes
directionstringyesDirection that was checked: "x", "y", or "xy" (resultant).
governing_load_case_idintegeryes
governing_node_idintegeryes
limit_rationumberyes
max_displacement_mnumberyes
passbooleanyes
slenderness_rationumber | nullThe slenderness ratio, or None when there was NO lateral displacement at all - in which case there is no ratio to report rather than an infinite one. THIS USED TO BE f64::INFINITY, and JSON has no infinity: serde writes it as null, so the field arrived as null and the UI's truthiness guard skipped the whole line. A building that did not sway showed NOTHING - not "passes", not "no displacement", nothing - while the check had in fact passed. Making it Option says the same thing in the type and gives the panel something explicit to render.

fem_set_trace ​

Turn the entry tracing above on or off. Returns the state it is now in, so a caller can assert it rather than assume it.

rust
fem_set_trace(on: bool) -> bool

Result: untyped (returns bool, not JSON)

fem_trace_enabled ​

Whether entry tracing is on. Exported so a check can prove the default is OFF - a default nobody can read is a default that drifts.

rust
fem_trace_enabled() -> bool

Result: untyped (returns bool, not JSON)

influence_line ​

Influence line for a moment, shear or reaction on a single-span beam.

rust
influence_line(json_input: &str) -> String

Input json_input: WasmInfluenceLineInput

FieldTypeRequiredDescription
actionstringyes
n_pointsintegerDefault: 101.
spannumberyes
stationnumberyes
support_typestringyes

Result: WasmInfluenceLineResult

Result fields
FieldTypeRequiredDescription
actionstringyes
ordinatesnumber[]yes
positionsnumber[]yes
spannumberyes
stationnumberyes
supportstringyes

influence_line_continuous ​

Influence line on a continuous beam model by repeated solves.

rust
influence_line_continuous(json_input: &str) -> String

Input json_input: WasmContinuousInfluenceLineInput

FieldTypeRequiredDescription
actionstringyes
member_idsinteger[]yes
modelWasmModelyes
n_pointsintegerDefault: 101.
station_local_xnumberyes
station_memberintegeryes
support_nodeintegerDefault: 0.

Result: WasmContinuousInfluenceLineResult

Result fields
FieldTypeRequiredDescription
actionstringyes
ordinatesnumber[]yes
positionsnumber[]yes
station_local_xnumberyes
station_memberintegeryes
support_reaction_nodeinteger | null
total_lengthnumberyes

member_capacities_only ​

Compute AS 4100 member capacities WITHOUT running a full FEM solve. * json_input - WasmMemberCapacitiesInput JSON string Returns JSON {"member_capacities": [...]} or {"error": "..."}.

rust
member_capacities_only(json_input: &str) -> String

Input json_input: WasmMemberCapacitiesInput

FieldTypeRequiredDescription
member_forcesWasmMemberForce[]Optional member forces for alpha_m / utilisation update. If provided, must contain one entry per member with solved end forces. Default: [].
modelWasmModelyes

Result: WasmMemberCapacitiesOutput

Result fields
FieldTypeRequiredDescription
capacity_warningsstring[]Members the selected design code could not check (unsupported section type/class) - one human-readable line each. The UI must surface these: a missing capacity record means NOT CHECKED, never OK.
member_capacitiesWasmMemberCapacity[]yes

Modal time-history analysis under a ground acceleration record.

rust
modal_time_history_analysis(json_input: &str) -> String

Input json_input: WasmTimeHistoryInput

FieldTypeRequiredDescription
damping_rationumberDefault: 0.05.
directionnumber[]Direction vector [dx, dy, dz] Default: [1,0,0].
modelWasmModelyes
n_modesintegerDefault: 10.
recordnumber[][]yesGround motion record: [[time_s, accel_m_s2], ...]

Result: WasmTimeHistoryResult

Result fields
FieldTypeRequiredDescription
dtnumberyes
n_modesintegeryes
n_stepsintegeryes
peakBaseShearXnumberyes
peakBaseShearYnumberyes
peakBaseShearZnumberyes
peak_displacementsWasmNodeDisplacement[]yes

moving_load_effect ​

Moving-load effect of an axle train over a single-span beam's influence line.

rust
moving_load_effect(json_input: &str) -> String

Input json_input: WasmMovingLoadInput

FieldTypeRequiredDescription
actionstringyes
n_pointsintegeryes
spannumberyes
stationnumberyes
support_typestringyes
vehicleWasmVehicleyes

Result: WasmMovingLoadResult

Result fields
FieldTypeRequiredDescription
critical_position_maxnumberyes
critical_position_minnumberyes
max_valuenumberyes
min_valuenumberyes

response_spectrum_analysis ​

Response spectrum analysis: modal responses combined by SRSS or CQC.

rust
response_spectrum_analysis(json_input: &str) -> String

Input json_input: WasmResponseSpectrumInput

FieldTypeRequiredDescription
combination_methodstringDefault: "SRSS".
damping_rationumberDefault: 0.05.
directionstringyes
modelWasmModelyes
n_modesintegerDefault: 10.
spectrum_pointsnumber[][]yesSpectrum points as [[period_s, accel_m_s2], ...]

Result: WasmResponseSpectrumResult

Result fields
FieldTypeRequiredDescription
combination_methodstringyes
combined_base_shearnumberyes
combined_displacementsWasmNodeDisplacement[]yes
damping_rationumberyes
directionstringyes
mode_responsesWasmModeResponse[]yes
total_effective_massnumberyes
total_massnumberyes

session_create ​

Create a reanalysis session for the given model + first load case and cache its factored LDL^T under a fresh session id. Returns {"session_id": u32} on success. Returns an error JSON (e.g. the model has T/C members, non-zero settlement, or is not in the sparse regime) when the session cannot be created; the caller must fall back to a full solve in that case, never treat this as fatal.

rust
session_create(json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: untyped (JSON built with json!, no Rust type)

session_free ​

Free a cached reanalysis session. A no-op (not an error) if session_id does not exist, since the JS side may call this defensively.

rust
session_free(session_id: u32) -> void

Result: untyped (returns (), not JSON)

session_resolve_loads ​

Milestone A: resolve a load change (nodal/member/plate loads, self-weight factor) against a cached session's factored K. Returns the SAME result JSON shape as solve_model_with_options, or an error JSON. Defence in depth: before reusing the cached factor, verifies the sent model is structurally identical to the one the session was created for (ReanalysisSession::structural_matches_loads). A client-side change classifier gap therefore degrades to an explicit error (caller falls back to a full solve), never a silently wrong reuse.

rust
session_resolve_loads(session_id: u32, json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

session_resolve_loads_typed ​

session_resolve_loads across the seam as OBJECTS: the model arrives as a JS value (no main-thread stringify) and the results leave as one (no Rust-side string serialize, no JS-side parse). Errors REJECT with the same error-envelope JSON string the string export returns, because solveflow.js already reads parsed.error out of that envelope on the string path and its catch treats any throw as "fall back to a full solve". Same text, same fallback, either way.

rust
session_resolve_loads_typed(session_id: u32, model: JsValue, options: JsValue) -> Result<JsValue, JsValue>

Result: untyped (returns Result&lt;JsValue, JsValue&gt;, not JSON)

session_resolve_member ​

Milestone B: resolve a single member's section change against a cached session's factored K via a Woodbury update. Returns the same result JSON shape as solve_model_with_options, or an error JSON. Defence in depth: verifies the sent model differs from the session's model in EXACTLY member_id's section assignment (ReanalysisSession::structural_matches_member_change) before reusing the cached factor.

rust
session_resolve_member(session_id: u32, member_id: i32, json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

session_resolve_member_typed ​

session_resolve_member across the seam as OBJECTS. See session_resolve_loads_typed for the transport and error contract.

rust
session_resolve_member_typed(session_id: u32, member_id: i32, model: JsValue, options: JsValue) -> Result<JsValue, JsValue>

Result: untyped (returns Result&lt;JsValue, JsValue&gt;, not JSON)

solve_model ​

Linear static analysis of the model for every load case and combination.

rust
solve_model(json_input: &str) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solve_model_buckling ​

Elastic buckling (eigenvalue) analysis of one load case for the given number of modes.

rust
solve_model_buckling(json_input: &str, load_case_id: i32, n_modes: usize) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: WasmBucklingResults

Result fields
FieldTypeRequiredDescription
modesWasmBucklingMode[]yes
warningsstring[]Eigensolver self-check notes (Sturm-count mismatch). Non-empty means the mode set is suspect and the UI must show it.

solve_model_modal ​

Modal (free vibration) analysis for the given number of modes, lumped mass.

rust
solve_model_modal(json_input: &str, n_modes: usize) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: WasmModalResults

Result fields
FieldTypeRequiredDescription
modesWasmModalMode[]yes
warningsstring[]Eigensolver self-check notes (Sturm-count mismatch, low seismic mass participation). Non-empty means the mode set is suspect.

solve_model_modal_with_options ​

Modal analysis with options (mass type, number of modes).

rust
solve_model_modal_with_options(json_input: &str) -> String

Input json_input: WasmModalInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmModalOptionsDefault: {"mass_matrix":"","n_modes":0}.

Result: WasmModel

Result fields
FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

solve_model_nonlinear ​

Planar geometric-nonlinear (large-displacement) static analysis. Returns the load-displacement path as &#123; "steps": [ &#123; "lambda", "node_disp": [[h,v,rot]..] &#125; ] &#125; where node_disp is per node, in the model's principal plane. Frame (beam) elements in a single plane, elastic material (v1).

rust
solve_model_nonlinear(json_input: &str, load_case_id: i32, n_steps: usize, max_iterations: usize, tolerance: f64) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: untyped (JSON built with json!, no Rust type)

solve_model_nonlinear_3d ​

Large-displacement static analysis of a SPATIAL frame - ADR 0008 step 2. Same options object as solve_model_nonlinear_with_options and the same per-step result shape, so the capacity-curve panel and the report page need no second renderer. Two differences, both forced by the physics rather than chosen: * node_disp carries SIX components per node ([ux,uy,uz,rx,ry,rz]) instead of three; * plane is absent, because there isn't one. path is "3d" here and "planar" there, so a caller can always say which ran.

rust
solve_model_nonlinear_3d(json_input: &str, options_json: &str) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Input options_json: WasmNlOptions

FieldTypeRequiredDescription
controlstringDefault: "".
dsnumber | null
fibersintegerDefault: 16.
fynumber | null
hardeningnumberDefault: 0.
load_case_idintegerDefault: 0.
materialstringDefault: "".
max_iterationsintegerDefault: 60.
n_stepsintegerDefault: 20.
tolerancenumberDefault: 0.000001.

Result: untyped (JSON built with json!, no Rust type)

solve_model_nonlinear_with_options ​

Planar nonlinear static analysis with material and control options. Options JSON: &#123; load_case_id, n_steps, max_iterations, tolerance, material: "elastic"|"plastic", fy?, fibers, hardening, control: "load"|"arc", ds? &#125;. Returns &#123; steps:[&#123;lambda,node_disp,n_iter&#125;], limit_lambda, terminated: "steps"|"limit"|"collapse", note, material, control, plane:[h,v,o] &#125; or the usual error envelope.

rust
solve_model_nonlinear_with_options(json_input: &str, options_json: &str) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Input options_json: WasmNlOptions

FieldTypeRequiredDescription
controlstringDefault: "".
dsnumber | null
fibersintegerDefault: 16.
fynumber | null
hardeningnumberDefault: 0.
load_case_idintegerDefault: 0.
materialstringDefault: "".
max_iterationsintegerDefault: 60.
n_stepsintegerDefault: 20.
tolerancenumberDefault: 0.000001.

Result: untyped (JSON built with json!, no Rust type)

solve_model_pdelta ​

P-Delta (second-order) analysis of the model, iterating up to the given count.

rust
solve_model_pdelta(json_input: &str, max_iterations: usize, tolerance: f64) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solve_model_pdelta_with_options ​

P-Delta analysis with solver options.

rust
solve_model_pdelta_with_options(json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solve_model_tc ​

Analysis with tension-only and compression-only members, iterating up to the given count.

rust
solve_model_tc(json_input: &str, max_iterations: usize) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solve_model_tc_with_options ​

Tension/compression-only analysis with solver options.

rust
solve_model_tc_with_options(json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solve_model_time_history_direct ​

Direct time-history integration of the full model: Newmark-beta or HHT-alpha on the assembled M, C, K (ADR 0013 Step 3). Same summary fields as the modal export plus the tracked node's displacement series, so the dialog renders either the same way.

rust
solve_model_time_history_direct(json_input: &str) -> String

Input json_input: WasmDirectThInput

FieldTypeRequiredDescription
alphanumber | nullDefault: null.
betanumber | nullDefault: null.
damping_rationumberDefault: 0.05.
directionnumber[]Default: [1,0,0].
gammanumber | nullDefault: null.
modelWasmModelyes
nonlinearbooleanDefault: false.
rayleighnumber[] | nullDefault: null.
recordnumber[][]yes
schemestringDefault: "".
track_nodeinteger | nullDefault: null.

Result: untyped (JSON built with json!, no Rust type)

solve_model_typed ​

ADR 0004 phase 3, first increment: typed-boundary companion to solve_model_with_options. Takes the model and options as structured JS objects (serde_wasm_bindgen - no main-thread JSON.stringify before dispatch) and returns the results as a structured JS object (no Rust-side string serialize). Rejects with the gate's error-summary STRING (the worker's catch stringifies whatever it gets, and the summary is what the UI shows today; the structured violations stay reachable via validate_model). Adopted by solveflow's main solve path when present; the string export remains the fallback and the contract of record.

rust
solve_model_typed(model: JsValue, options: JsValue) -> Result<JsValue, JsValue>

Result: untyped (returns Result&lt;JsValue, JsValue&gt;, not JSON)

solve_model_with_options ​

Linear static analysis with solver options (the input carries the model and the options).

rust
solve_model_with_options(json_input: &str) -> String

Input json_input: WasmSolveInput

FieldTypeRequiredDescription
modelWasmModelyes
optionsWasmSolveOptionsDefault: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}.

Result: WasmResults

Result fields
FieldTypeRequiredDescription
auto_restrainedWasmSingularDof[]Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model.
combinationsWasmCombinationResults[]
combo_stations_omittedbooleanThe combinations carry no station forces (a large job; see COMBO_STATION_LIMIT). Their stations are the factored sum of their load cases' - the studio rebuilds them on demand.
conditioningWasmSoftDof[]Free DOFs left "soft" (tiny but non-zero diagonal stiffness) after auto-restrain - the model solved but is near-singular here, so results may be unreliable (aggregated across load cases, keeping the worst stiffness ratio per node/dof). Empty/omitted for a well-conditioned model.
envelopeWasmEnvelopeResults | null
load_casesWasmLoadCaseResults[]yes

solver_error_catalogue ​

Every SolverError variant the solver can raise, rendered the way solve_model renders it, so the Studio's plain-language table (web_demo/studio/solvererrors.js) can be gated against the producer: a variant added here without a rule in the table turns the gate red, and a rule that no longer matches the wording the engine emits does too. Sample payloads only - the message shape is what the table matches on, not the numbers.

rust
solver_error_catalogue() -> String

Result: any[]

validate_model ​

ADR 0004 seam gate: validate the SOLVER-PAYLOAD shape (WasmModel) before the JS import path loads it (and, in Phase 2, before the solve exports run). Same Violation envelope as validate_snapshot, so JS parses one error shape across both schema halves. A serde parse failure IS a verdict (the payload does not satisfy the schema) and is returned as an error envelope, not swallowed.

rust
validate_model(model_json: &str) -> String

Input model_json: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: ValidationResult

Result fields
FieldTypeRequiredDescription
validbooleanyes
violationsViolation[]yes

Model import, export and merge ​

connection_takeoff ​

Quantity take-off of the model's connections: plates, bolts and welds.

rust
connection_takeoff(json_input: &str) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: ConnectionTakeoff

Result fields
FieldTypeRequiredDescription
connectionsConnection[]yes
totalsConnectionTotalsyes

export_dwg ​

Exports the model as a DWG drawing.

rust
export_dwg(json_input: &str) -> Vec<u8>

Input json_input: untyped (no typed parse of this parameter)

Result: untyped (returns Vec&lt;u8&gt;, not JSON)

import_dwg ​

Imports a DWG drawing (bytes) as model geometry; needs the dwg build feature.

rust
import_dwg(bytes: &[u8]) -> String

Result: untyped (no typed serialisation found)

import_sg_model ​

Imports a SpaceGass model file (bytes) into the Studio model shape.

rust
import_sg_model(bytes: &[u8]) -> String

Result: SgModel

Result fields
FieldTypeRequiredDescription
combinationsSgCombination[]yes
connection_configConnectionConfig | null
diagnosticsSgImportDiagnosticsyes
entriesSgEntryInfo[]yes
load_casesSgLoadCase[]yes
materialsSgMaterial[]yes
member_loadsSgMemberLoad[]yes
member_offsetsSgMemberOffset[]yes
member_point_loadsSgMemberPointLoad[]yes
membersSgMember[]yes
nodal_loadsSgNodalLoad[]yes
nodesSgNode[]yes
plate_loadsSgPlateLoad[]yes
platesSgPlate[]yes
restraintsSgRestraint[]yes
section_infoSgSectionInfo | null
sectionsSgSection[]yes
self_weightsSgSelfWeight[]yes

list_sg_entries ​

Lists the entries in a SpaceGass file (bytes) without importing them.

rust
list_sg_entries(bytes: &[u8]) -> String

Result: SgEntryInfo[]

merge_snapshots ​

Three-way merge of model snapshots (base, ours, theirs); returns the merged snapshot and any conflicts.

rust
merge_snapshots(base_json: &str, ours_json: &str, theirs_json: &str) -> String

Input base_json: untyped (no typed parse of this parameter)

Input ours_json: untyped (no typed parse of this parameter)

Input theirs_json: untyped (no typed parse of this parameter)

Result: untyped (no typed serialisation found)

quantity_takeoff ​

Quantity take-off of the model: member lengths, masses and counts by section.

rust
quantity_takeoff(json_input: &str) -> String

Input json_input: WasmModel

FieldTypeRequiredDescription
cablesWasmCable[]Per-cable-member settings for the 3D nonlinear path (ADR 0013 Step 1): which model ("chord" | "catenary") and the optional unstressed length in metres. Default: [].
design_codestringDesign code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100".
diaphragmsWasmDiaphragm[]Default: [].
double_angle_connectorsDoubleAngleConnectors[]Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: [].
end_gapsWasmEndGap[]Member-end gaps (ADR 0013 Step 2): &#123; member_id, gap_mm &#125; on truss / compression-only members. Default: [].
load_casesWasmLoadCase[]yes
load_combinationsWasmLoadCombination[]Default: [].
materialsWasmMaterial[]yes
member_loadsWasmMemberLoad[]yes
membersWasmMember[]yes
nodal_loadsWasmNodalLoad[]yes
nodesWasmNode[]yes
plate_loadsWasmPlateLoad[]Default: [].
plate_orthotropyPlateOrthotropy[]Orthotropic plates: &#123; plate_id, axis: [x, y, z], input: &#123; kind: "material", e1, e2, g12, nu12, g13, g23 &#125; | &#123; kind: "rigidities", a11, a22, a12, a66, d11, d22, d12, d66, s13, s23 &#125; &#125;. The core type's own serde shape is the wire shape; see model::PlateOrthotropy. Default: [].
platesWasmPlate[]Default: [].
sectionsWasmSection[]yes
shear_centre_loadedinteger[]Member ids loaded at the shear centre rather than on the top flange (the default) - see model::Model::shear_centre_loaded. Default: [].

Result: TakeoffReport

Result fields
FieldTypeRequiredDescription
bySectionSectionRollup[]yesPer-section roll-ups, heaviest first.
linesTakeoffLine[]yesPer-member lines, in model order.
platesPlateTakeoff[]yesPlate take-off lines.
totalsTakeoffTotalsyesGrand totals.

validate_snapshot ​

Validates a canonical model snapshot and returns the violations found (ADR 0004).

rust
validate_snapshot(snapshot_json: &str) -> String

Input snapshot_json: untyped (no typed parse of this parameter)

Result: untyped (no typed serialisation found)

Sections ​

section_properties ​

Section properties of a polygonal section outline (area, centroid, second moments, moduli).

rust
section_properties(json_input: &str) -> String

Input json_input: WasmSectionBuilderInput

FieldTypeRequiredDescription
loopsWasmPoint2[][]yes

Result: WasmSectionBuilderResult

Result fields
FieldTypeRequiredDescription
Asxnumberyes
Asynumberyes
I1numberyes
I2numberyes
Ipnumberyes
Iwnumberyes
Ixxnumberyes
Ixynumberyes
Iyynumberyes
Japproxnumberyes
Jopennumberyes
Sxnumberyes
Synumberyes
Zxapproxnumberyes
Zyapproxnumberyes
areanumberyes
cxnumberyes
cynumberyes
rxnumberyes
rynumberyes
thetaPnumberyes

section_props_from_dims ​

Verified parametric section properties from catalogue dimensions (mm), in the SI shape the JS analysis layer consumes: a (m2), izz=major-axis I (m4), iyy=minor-axis I (m4), j=torsion constant (m4), plus zx/zy/sx/sy/iw/rx/ry. Builds the polygon per family in fem-core and runs the verified integrator - the single source of truth replacing the JS Iy/J approximations. Optional catalogue overrides (area_mm2, lipLength_mm, J_mm4, Iw_mm6, Ix_mm4, Zx_mm3) are forwarded to the builder so families such as cold-formed Cee/Zed use published values where available.

rust
section_props_from_dims(json_input: &str) -> String

Input json_input: WasmSectionDimsInput

FieldTypeRequiredDescription
Iw_mm6numberDefault: 0.
Ix_mm4numberDefault: 0.
Iy_mm4numberDefault: 0.
J_mm4numberDefault: 0.
Zx_mm3numberDefault: 0.
area_mm2numberDefault: 0.
categorystringyes
depth_mmnumberyes
flangeThickness_mmnumberDefault: 0.
flangeWidth_mmnumberyes
lipLength_mmnumberDefault: 0.
namestringDefault: "".
webThickness_mmnumberyes

Result: any

Steel - AS 4100 ​

as4100_alpha_b ​

AS 4100 member section constant alpha_b (Table 6.3.3) for a section name.

rust
as4100_alpha_b(section_name: &str) -> f64

Input section_name: untyped (no typed parse of this parameter)

Result: untyped (returns f64, not JSON)

as4100_alpha_m ​

AS 4100 moment modification factor alpha_m (Cl 5.6.1.1).

rust
as4100_alpha_m(json_input: &str) -> String

Input json_input: WasmAs4100AlphaMInput

FieldTypeRequiredDescription
my1numberyes
my2numberyes

Result: WasmAs4100AlphaMResult

Result fields
FieldTypeRequiredDescription
alpha_mnumberyes

as4100_cellular_check ​

Cellular or castellated beam check to AS 4100 (first-pass geometry and capacities).

rust
as4100_cellular_check(json_input: &str) -> String

Input json_input: WasmAs4100CellularInput

FieldTypeRequiredDescription
alpha_bnumberDefault: 0.
alpha_m_caseintegeryes
b_f_mmnumberyes
d_mmnumberyes
d_o_mmnumberyes
fy_mpanumberyes
le_mmnumberyes
length_mmnumberyes
s_mmnumberyes
t_f_mmnumberyes
t_w_mmnumberyes

Result: WasmAs4100CellularResult

Result fields
FieldTypeRequiredDescription
phi_m_bnumberyes
phi_m_grossnumberyes
phi_m_netnumberyes
phi_m_vierendeelnumberyes
phi_v_netnumberyes
phi_v_web_postnumberyes
web_post_slendernessnumberyes

as4100_combined ​

AS 4100 combined actions check: section and member capacity under axial force and bending (Section 8).

rust
as4100_combined(json_input: &str) -> String

Input json_input: WasmAs4100CombinedInput

FieldTypeRequiredDescription
kfnumberDefault: 1.
m_star_xnumberyes
m_star_ynumberDefault: 0.
n_starnumberyes
nsnumberyes
phi_mbxnumberyes
phi_mbynumberDefault: 0.
phi_msxnumberyes
phi_msynumberDefault: 0.
phi_ncxnumberyes
phi_ncynumberyes
phi_ntnumberyes
section_classstringyes

Result: WasmAs4100CombinedResult

Result fields
FieldTypeRequiredDescription
axial_utilnumberyes
member_util_xnumberyes
member_util_ynumberyes
phi_m_oxnumberyes
phi_m_oynumberyes
phi_m_rxnumberyes
phi_m_rynumberyes
section_util_xnumberyes
section_util_ynumberyes
util_biaxial_membernumberyes
util_biaxial_sectionnumberyes
util_maxnumberyes

as4100_fatigue_check ​

AS 4100 Section 11 fatigue check for a detail category and stress range.

rust
as4100_fatigue_check(json_input: &str) -> String

Input json_input: WasmAs4100FatigueInput

FieldTypeRequiredDescription
apply_beta_tfbooleanDefault: false.
categorystringyes
fy_mpanumberyes
phinumberDefault: 0.9.
spectrum[number, number][]yes
t_mmnumberyes

Result: WasmAs4100FatigueResult

Result fields
FieldTypeRequiredDescription
applicablebooleanyes
damagenumberyes
okbooleanyes

as4100_fire_check ​

AS 4100 Section 12 fire check: limiting temperature and time for an unprotected member.

rust
as4100_fire_check(json_input: &str) -> String

Input json_input: WasmAs4100FireInput

FieldTypeRequiredDescription
ambient_capacitynumberyes
exposurestringyes
fire_demandnumberyes
section_factornumberyes
time_minnumberyes

Result: WasmAs4100FireResult

Result fields
FieldTypeRequiredDescription
limiting_tempnumberyes
load_rationumberyes
okbooleanyes
steel_tempnumberyes
temp_marginnumberyes

as4100_notional_force ​

AS 4100 Cl 3.2.4 notional horizontal force at a floor level (multi-storey buildings).

rust
as4100_notional_force(json_input: &str) -> String

Input json_input: WasmNotionalInput

FieldTypeRequiredDescription
adequately_bracedbooleanLegacy input from before the 2020 edition's single factor; accepted and ignored. Default: false.
multi_storeybooleanAS 4100 Cl 3.2.4 applies to multi-storey buildings only. Default true. Default: true.
total_gravity_loadnumberyesTotal design vertical load applied at the floor level (N).

Result: WasmNotionalResult

Result fields
FieldTypeRequiredDescription
forcenumberyes

as4100_optimize_section ​

Finds the lightest catalogue section that passes AS 4100 for the given actions.

rust
as4100_optimize_section(json_input: &str) -> String

Input json_input: WasmAs4100OptimizeInput

FieldTypeRequiredDescription
alpha_bnumberDefault: 0.
alpha_m_caseintegeryes
categoriesstring[]Default: [].
fy_mpanumberyes
le_mmnumberyes
mx_starnumberyes
my_starnumberDefault: 0.
n_starnumberyes
v_starnumberyes

Result: WasmAs4100OptimizeResult

Result fields
FieldTypeRequiredDescription
best_categorystringyes
best_mass_kg_mnumberyes
best_namestringyes
consideredintegeryes
feasibleintegeryes
foundbooleanyes
util_maxnumberyes

as4100_phi_mbx ​

AS 4100 member moment capacity phiMbx with lateral-torsional buckling (Cl 5.6).

rust
as4100_phi_mbx(json_input: &str) -> String

Input json_input: WasmAs4100PhiMbxInput

FieldTypeRequiredDescription
alpha_m_caseintegeryes0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl
beta_mnumberDefault: 0.
bfnumberyes
dnumberyes
enumberDefault: 200000.
fyfnumberyes
fywnumberyes
gnumberDefault: 80000.
i_wnumberDefault: 0.
i_ynumberyes
jnumberyes
le_mmnumberyes
phinumberDefault: 0.9.
s_xnumberyes
tfnumberyes
twnumberyes
z_xnumberyes

Result: WasmAs4100PhiMbxResult

Result fields
FieldTypeRequiredDescription
alpha_mnumberyes
alpha_snumberyes
m_onumberyes
m_sxnumberyes
phi_m_bxnumberyes

as4100_phi_mbx_derivation ​

The AS 4100 member moment capacity phiMbx with its clause-by-clause working (Cl 5.6).

rust
as4100_phi_mbx_derivation(json_input: &str) -> String

Input json_input: WasmAs4100PhiMbxInput

FieldTypeRequiredDescription
alpha_m_caseintegeryes0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl
beta_mnumberDefault: 0.
bfnumberyes
dnumberyes
enumberDefault: 200000.
fyfnumberyes
fywnumberyes
gnumberDefault: 80000.
i_wnumberDefault: 0.
i_ynumberyes
jnumberyes
le_mmnumberyes
phinumberDefault: 0.9.
s_xnumberyes
tfnumberyes
twnumberyes
z_xnumberyes

Result: Derivation

Result fields
FieldTypeRequiredDescription
codestringyesGoverning standard name, e.g. "AS 4100".
editionstringyesEdition/year of that standard as IMPLEMENTED by the solver - recorded so a historical calc stays traceable to the rules it was run under, even after the standard is revised.
inputsInput[]yes
resultStepyesThe headline line (capacity or utilisation) - carries the pass/fail.
stepsStep[]yes
titlestringyes

as4100_phi_ms ​

AS 4100 section moment capacity phiMs and section classification (Cl 5.2).

rust
as4100_phi_ms(json_input: &str) -> String

Input json_input: WasmAs4100SectionInput

FieldTypeRequiredDescription
bfnumberyes
dnumberyes
fyfnumberyes
fywnumberyes
s_xnumberyes
tfnumberyes
twnumberyes
z_xnumberyes

Result: WasmAs4100PhiMsResult

Result fields
FieldTypeRequiredDescription
lambda_snumberyes
lambda_spnumberyes
lambda_synumberyes
m_sxnumberyes
phi_m_sxnumberyes
section_classstringyes
z_exnumberyes

as4100_phi_ms_derivation ​

The AS 4100 section moment capacity phiMs with its clause-by-clause working (Cl 5.2).

rust
as4100_phi_ms_derivation(json_input: &str) -> String

Input json_input: WasmAs4100SectionInput

FieldTypeRequiredDescription
bfnumberyes
dnumberyes
fyfnumberyes
fywnumberyes
s_xnumberyes
tfnumberyes
twnumberyes
z_xnumberyes

Result: Derivation

Result fields
FieldTypeRequiredDescription
codestringyesGoverning standard name, e.g. "AS 4100".
editionstringyesEdition/year of that standard as IMPLEMENTED by the solver - recorded so a historical calc stays traceable to the rules it was run under, even after the standard is revised.
inputsInput[]yes
resultStepyesThe headline line (capacity or utilisation) - carries the pass/fail.
stepsStep[]yes
titlestringyes

as4100_phi_nc ​

AS 4100 member compression capacity phiNc (Cl 6.3).

rust
as4100_phi_nc(json_input: &str) -> String

Input json_input: WasmAs4100PhiNcInput

FieldTypeRequiredDescription
alpha_bnumberDefault: 0.
areanumberyes
fynumberyes
kfnumberDefault: 1.
le_mmnumberyes
phinumberDefault: 0.9.
rnumberyes

Result: WasmAs4100PhiNcResult

Result fields
FieldTypeRequiredDescription
alpha_cnumberyes
lambda_nnumberyes
n_cnumberyes
n_snumberyes
phi_n_cnumberyes

as4100_phi_nc_derivation ​

The AS 4100 member compression capacity phiNc with its clause-by-clause working (Cl 6.3).

rust
as4100_phi_nc_derivation(json_input: &str) -> String

Input json_input: WasmAs4100PhiNcInput

FieldTypeRequiredDescription
alpha_bnumberDefault: 0.
areanumberyes
fynumberyes
kfnumberDefault: 1.
le_mmnumberyes
phinumberDefault: 0.9.
rnumberyes

Result: Derivation

Result fields
FieldTypeRequiredDescription
codestringyesGoverning standard name, e.g. "AS 4100".
editionstringyesEdition/year of that standard as IMPLEMENTED by the solver - recorded so a historical calc stays traceable to the rules it was run under, even after the standard is revised.
inputsInput[]yes
resultStepyesThe headline line (capacity or utilisation) - carries the pass/fail.
stepsStep[]yes
titlestringyes

as4100_phi_vv ​

AS 4100 web shear capacity phiVv (Cl 5.11).

rust
as4100_phi_vv(json_input: &str) -> String

Input json_input: WasmAs4100PhiVvInput

FieldTypeRequiredDescription
dnumberyes
fynumberyes
section_namestringyes
tfnumberyes
twnumberyes

Result: WasmAs4100PhiVvResult

Result fields
FieldTypeRequiredDescription
phi_vvnumberyes

as4100_tapered_check ​

Web-tapered (non-prismatic) member check to AS 4100 (first-pass).

rust
as4100_tapered_check(json_input: &str) -> String

Input json_input: WasmAs4100TaperedInput

FieldTypeRequiredDescription
alpha_bnumberDefault: 0.
alpha_m_caseintegeryes
b_f_mmnumberyes
d_a_mmnumberyes
d_b_mmnumberyes
fy_mpanumberyes
le_mmnumberyes
length_mmnumberyes
t_f_mmnumberyes
t_w_mmnumberyes

Result: WasmAs4100TaperedResult

Result fields
FieldTypeRequiredDescription
d_govern_mmnumberyes
phi_mbnumberyes
phi_msnumberyes
phi_ncnumberyes
taper_rationumberyes
x_govern_mmnumberyes

as4100_web_bearing ​

AS 4100 web bearing capacity under a concentrated load (Cl 5.13).

rust
as4100_web_bearing(json_input: &str) -> String

Input json_input: WasmWebBearingInput

FieldTypeRequiredDescription
b_snumberyesStiff bearing length (m).
both_flanges_restrainedbooleanBoth flanges restrained against lateral movement (default true). Default: true.
d1numberyesClear web depth between flanges (m).
end_distnumberDistance from member end to the nearer edge of the bearing (m). Negative or missing = interior load. Default: -1.
fynumberyesWeb yield stress (Pa).
tfnumberyes
twnumberyes

Result: untyped (JSON built with json!, no Rust type)

Steel - other codes ​

aisc360_composite_check ​

AISC 360 composite beam check (Chapter I).

rust
aisc360_composite_check(json_input: &str) -> String

Input json_input: WasmAisc360CompositeInput

FieldTypeRequiredDescription
a_snumberyes
b_eff_mmnumberyes
d_mmnumberyes
f_prime_c_mpanumberyes
fu_stud_mpanumberyes
fy_mpanumberyes
n_studsintegeryes
phinumberDefault: 0.9.
stud_dia_mmnumberyes
t_c_mmnumberyes

Result: WasmAisc360CompositeResult

Result fields
FieldTypeRequiredDescription
degree_of_shear_connectionnumberyes
horizontal_shear_forcenumberyes
phi_mn_fullnumberyes
phi_mn_partialnumberyes
stud_shear_forcenumberyes

aisc360_member_check ​

AISC 360 member check: compression, flexure, shear and interaction.

rust
aisc360_member_check(json_input: &str) -> String

Input json_input: WasmAisc360MemberInput

FieldTypeRequiredDescription
anumberyes
bfnumberyes
cbnumberDefault: 0.
dnumberyes
enumberDefault: 0.
funumberDefault: 0.
fynumberyes
hollowbooleanA hollow section (RHS/SHS/CHS). Slender-element compression (E7) is applied to I-shapes only until the hollow-wall case, Table E7.1 (b), is in; absent means an I-shape. Default: false.
iyynumberyes
izznumberyes
jnumberyes
lbnumberyes
leMajornumberyes
leMinornumberyes
mxStarnumberyes
myStarnumberyes
nStarnumberyes
szznumberDefault: 0.
tfnumberyes
twnumberyes
vxStarnumberyes
zzznumberDefault: 0.

Result: WasmAisc360MemberResult

Result fields
FieldTypeRequiredDescription
assumptionsWasmAisc360Assumptionsyes
governingstringyes
phiMnxnumberyes
phiMnynumberyes
phiPnnumberyes
phiPnCompnumberyes
phiVnnumberyes
section_classstringyes
utilAxialnumberyes
utilCombinednumberyes
utilFlexXnumberyes
utilFlexYnumberyes
utilMaxnumberyes
utilShearnumberyes

as4600_capacity ​

AS/NZS 4600 cold-formed member capacity by the effective width method (C, Z and SHS sections).

rust
as4600_capacity(json_input: &str) -> String

Input json_input: WasmAs4600Input

FieldTypeRequiredDescription
bnumberyes
dnumberyes
enumberDefault: 200000.
f_ynumberyes
lipnumberDefault: 0.
rnumberDefault: 0.
section_typestringyes
tnumberyes

Result: WasmAs4600Result

Result fields
FieldTypeRequiredDescription
aEffnumberyes
aGrossnumberyes
governingstringyes
phiMsnumberyes
phiNcnumberyes
zEffnumberyes
zGrossnumberyes

as4600_combined ​

AS/NZS 4600 combined actions check of a cold-formed member.

rust
as4600_combined(json_input: &str) -> String

Input json_input: WasmAs4600CombinedInput

FieldTypeRequiredDescription
m_star_xnumberDefault: 0.
m_star_ynumberDefault: 0.
n_compnumberDefault: 0.
n_tensnumberDefault: 0.
phi_mbxnumberDefault: 0.
phi_mbynumberDefault: 0.
phi_ncxnumberDefault: 0.
phi_ncynumberDefault: 0.
phi_ntnumberDefault: 0.

Result: ColdFormedCombined

Result fields
FieldTypeRequiredDescription
axial_utilnumberyesAxial utilisation: |Ncomp| / min(φNcx, φNcy), or |Ntens| / φNt in tension
util_maxnumberyesCl 3.5 linear interaction sum = axial_util + util_mx + util_my
util_mxnumberyesMajor-axis bending utilisation M*x / φMbx
util_mynumberyesMinor-axis bending utilisation M*y / φMby

as5100_combined ​

AS 5100.6 combined actions check of a steel bridge member.

rust
as5100_combined(json_input: &str) -> String

Input json_input: WasmAs5100CombinedInput

FieldTypeRequiredDescription
kfnumberDefault: 1.
mStarXnumberyes
mStarYnumberDefault: 0.
nStarnumberyes
nsnumberyes
phiMbxnumberyes
phiMbynumberDefault: 0.
phiMsxnumberyes
phiMsynumberDefault: 0.
phiNcxnumberyes
phiNcynumberyes
phiNtnumberyes
sectionClassstringyes

Result: WasmAs5100CombinedResult

Result fields
FieldTypeRequiredDescription
axialUtilnumberyes
memberUtilXnumberyes
memberUtilYnumberyes
phiMOxnumberyes
phiMOynumberyes
phiMRxnumberyes
phiMRynumberyes
sectionUtilXnumberyes
sectionUtilYnumberyes
utilBiaxialMembernumberyes
utilBiaxialSectionnumberyes
utilMaxnumberyes

as5100_member_check ​

AS 5100.6 steel bridge member check: section and member capacities.

rust
as5100_member_check(json_input: &str) -> String

Input json_input: WasmAs5100MemberInput

FieldTypeRequiredDescription
anumberyes
alphaMCaseintegeryes0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl
beta_mnumberDefault: 0.
bfnumberyes
dnumberyes
enumberDefault: 200000.
funumberDefault: 0.
fynumberyes
iyynumberyes
izznumberyes
jnumberyes
leMajornumberyes
leMinornumberyes
mxStarnumberyes
myStarnumberDefault: 0.
nStarnumberyes
syynumberDefault: 0.
szznumberDefault: 0.
tfnumberyes
twnumberyes
vxStarnumberDefault: 0.
zyynumberDefault: 0.
zzznumberDefault: 0.

Result: WasmAs5100MemberResult

Result fields
FieldTypeRequiredDescription
assumptionsWasmAs5100Assumptionsyes
governingstringyes
phiMbxnumberyes
phiMbynumberyes
phiMsxnumberyes
phiMsynumberyes
phiNcxnumberyes
phiNcynumberyes
phiNtnumberyes
phiVvnumberyes
section_classstringyes
utilAxialnumberyes
utilCombinednumberyes
utilFlexXnumberyes
utilFlexYnumberyes
utilMaxnumberyes
utilShearnumberyes

ec3_member_check ​

EN 1993-1-1 member check: cross-section resistances, buckling and interaction.

rust
ec3_member_check(json_input: &str) -> String

Input json_input: WasmEc3MemberInput

FieldTypeRequiredDescription
anumberyes
bfnumberyes
c1numberDefault: 0.
dnumberyes
enumberDefault: 0.
fynumberyes
iyynumberyes
izznumberyes
jnumberyes
lcrLTnumberyes
lcrYnumberyes
lcrZnumberyes
myStarnumberyes
mzStarnumberyes
nStarnumberyes
namestringSection name (optional): picks the Cl 6.2.6(3) shear area by shape (I, channel, RHS, CHS). Default: "".
rnumberRoot radius (m, optional): the fillets' part of the rolled-section shear area. Default: 0.
szznumberDefault: 0.
tfnumberyes
twnumberyes
vyStarnumberyes
w_el_ynumberDefault: 0.
w_pl_ynumberDefault: 0.
zzznumberDefault: 0.

Result: WasmEc3MemberResult

Result fields
FieldTypeRequiredDescription
MbRdnumberyes
MyRdnumberyes
MzRdnumberyes
NbYRdnumberyes
NbZRdnumberyes
NcRdnumberyes
NtRdnumberyes
VplRdnumberyes
assumptionsWasmEc3Assumptionsyes
governingstringyes
section_classstringyes
utilAxialnumberyes
utilCombinednumberyes
utilFlexYnumberyes
utilFlexZnumberyes
utilMaxnumberyes
utilShearnumberyes

nzs3404_combined ​

NZS 3404 Section 8 (and Cl 5.12.3) for one member and one load case.

rust
nzs3404_combined(json_input: &str) -> String

Input json_input: WasmNzs3404CombinedInput

FieldTypeRequiredDescription
doubly_symmetricbooleanWhether the outline is doubly symmetric. With kf and the class, this is the third condition on the higher tier of Cl 8.3.2/8.3.3, and it cannot be inferred from the numbers above. Default: false.
kfnumberDefault: 1.
m_star_xnumberyes
m_star_ynumberDefault: 0.
n_starnumberyes
phi_mbxnumberyes
phi_msxnumberyes
phi_msynumberDefault: 0.
phi_ncxnumberyes
phi_ncynumberyes
phi_nsnumberyes
phi_ntnumberyes
phi_vvnumberDefault: 0.
section_classstringyes"compact" | "non-compact" | "slender", from the capacity record.
v_starnumberDefault: 0.

Result: WasmNzs3404CombinedResult

Result fields
FieldTypeRequiredDescription
governed_bystringyesThe clause the governing check came from, for the report line.
higher_tierbooleanyes
phi_m_ixnumberyes
phi_m_oxnumberyes
phi_m_rxnumberyes
phi_m_rynumberyes
util_axialnumberyes
util_maxnumberyes
util_member_biaxialnumberyes
util_member_in_planenumberyes
util_member_out_of_planenumberyes
util_section_biaxialnumberyes
util_section_xnumberyes
util_section_ynumberyes
util_shearnumberyes

nzs3404_member_check ​

NZS 3404:Part 1:1997 - one member, one load case, Sections 5 through 8.

rust
nzs3404_member_check(json_input: &str) -> String

Input json_input: WasmNzs3404MemberInput

FieldTypeRequiredDescription
agnumberyesGross area, net area (mm²) and the Cl 7.3 correction factor for eccentric end connections.
alpha_mnumberCl 5.6.1.1 moment modification factor. Pass 1.0 for uniform moment. Default: 1.
annumberDefault: 0.
bfnumberDefault: 0.
categorystringyes"1", "2", "3" or "4" - NZS 3404 Section 12. No default: see the note above.
dnumberyesOverall depth, flange width, flange thickness, web thickness (mm). For a CHS, d is the outside diameter and tw the wall.
doubly_symmetricbooleanWhether the outline is doubly symmetric - one of the three conditions on the higher tier of Section 8, and not inferable from the numbers above. Default: false.
enumberElastic and shear moduli (MPa). Default to the standard's steel values. Default: 200000.
familystringyesWhich shear-area and slenderness family the outline belongs to: "hot-rolled-i", "welded-i", "rhs", "chs".
funumberyesTensile strength (MPa).
fyfnumberyesFlange yield stress (MPa) - Cl 5.2.1 reads the FLANGE value, not the lower of flange and web.
fywnumberWeb yield stress (MPa). Default: 0.
gnumberDefault: 80000.
iwnumberyes
iynumberyesSecond moment of area about the minor axis (mm⁴), torsion constant (mm⁴), warping constant (mm⁶) - the Cl 5.6.1.1 reference buckling moment needs all three.
jnumberyes
kfnumberForm factor (Cl 6.2). 1.0 for a fully effective section. Default: 1.
ktenumberDefault: 1.
le_ltbnumberyes
lexnumberyesEffective lengths for compression about each axis, and for lateral-torsional buckling (mm).
leynumberyes
m_star_xnumberDefault: 0.
m_star_ynumberDefault: 0.
n_starnumberDesign actions for this load case. n_star is NEGATIVE in compression. Default: 0.
rxnumberyesRadii of gyration (mm).
rynumberyes
sxnumberyes
synumberyes
tfnumberDefault: 0.
twnumberyes
v_starnumberDefault: 0.
zxnumberyesElastic and plastic section moduli about each axis (mm³).
zynumberyes

Result: untyped (no typed serialisation found)

Connections ​

aisc360_bolt_capacity ​

AISC 360 bolt capacity: shear, tension and bearing (Chapter J).

rust
aisc360_bolt_capacity(json_input: &str) -> String

Input json_input: WasmAiscBoltInput

FieldTypeRequiredDescription
bolt_diameternumberyes
bolt_gradestringyes
clear_distancenumberDefault: 0.
n_shear_planesintegeryes
ply_funumberDefault: 0.
ply_thicknessnumberDefault: 0.
threads_excludedbooleanDefault: false.

Result: WasmAiscBoltResult

Result fields
FieldTypeRequiredDescription
phiRnBearingnumberyes
phiRnShearnumberyes
phiRnTearoutnumberyes
phiRnTensionnumberyes

aisc360_weld_capacity ​

AISC 360 fillet weld capacity (Section J2).

rust
aisc360_weld_capacity(json_input: &str) -> String

Input json_input: WasmAiscWeldInput

FieldTypeRequiredDescription
fexxnumberyes
leg_sizenumberyes
lengthnumberyes
theta_degnumberDefault: 0.

Result: WasmAiscWeldResult

Result fields
FieldTypeRequiredDescription
phiRnnumberyes

base_plate_check ​

Column base plate check: concrete bearing, plate bending, anchor bolts and anchor shear.

rust
base_plate_check(json_input: &str) -> String

Input json_input: WasmBasePlateInput

FieldTypeRequiredDescription
bolt_countintegerDefault: 0.
bolt_diameternumberDefault: 0.
bolt_gradestringDefault: "".
column_bfnumberyes
column_dnumberyes
concrete_fcnumberyes
n_starnumberyes
plate_bnumberyes
plate_dnumberyes
plate_fynumberyes
plate_tnumberyes
v_starnumberDefault: 0.

Result: WasmBasePlateResult

Result fields
FieldTypeRequiredDescription
assumptionsWasmBasePlateAssumptionsyes
bearing_pressurenumberyes
cantilever_bnumberyes
cantilever_dnumberyes
confinementnumberyes
n_starnumberyes
phiAnchorShearnumberyes
phiNcConcnumberyes
phiPlateBendingnumberyes
t_reqnumberyes
util_anchor_shearnumberyes
util_bearingnumberyes
util_boltsnumberyes
util_interactionnumberyes
util_maxnumberyes
util_platenumberyes

bearing_stiffener_check ​

Web bearing stiffener check: yield and buckling (AS 4100 Cl 5.14).

rust
bearing_stiffener_check(json_input: &str) -> String

Input json_input: WasmBearingStiffenerInput

FieldTypeRequiredDescription
b_esnumberyes
d_1numberyes
f_ynumberyes
f_ysnumberyes
r_starnumberyes
t_fnumberyes
t_snumberyes
t_wnumberyes

Result: WasmBearingStiffenerResult

Result fields
FieldTypeRequiredDescription
alphaCnumberyes
lambdaNnumberyes
outstandRationumberyes
phiRsbnumberyes
phiRsynumberyes
r_starnumberyes
util_maxnumberyes
util_stiffener_bucklingnumberyes
util_stiffener_yieldnumberyes

bolt_capacity ​

AS 4100 bolt capacity: shear, tension and combined (Cl 9.2).

rust
bolt_capacity(json_input: &str) -> String

Input json_input: WasmBoltInput

FieldTypeRequiredDescription
bolt_diameternumberyes
bolt_gradestringyes
krnumberDefault: 1.
ply_funumberDefault: 0.
ply_thicknessnumberDefault: 0.
shear_planes_threads_excludedintegeryes
shear_planes_threads_interceptedintegeryes

Result: WasmBoltResult

Result fields
FieldTypeRequiredDescription
minEdgenumberyes
minGaugenumberyes
minPitchnumberyes
phiNtfnumberyes
phiVbnumberyes
phiVfnumberyes

bolt_layout ​

Lays out a bolt group (rows, columns, pitches, edge distances) for a connection.

rust
bolt_layout(json_input: &str) -> String

Input json_input: WasmBoltLayoutInput

FieldTypeRequiredDescription
availWidthnumberyes
boltDiameternumberyes
countintegeryes
edgenumber | nullDefault: null.
edgeTypestringDefault: "".
endnumber | nullDefault: null.
gaugenumber | nullDefault: null.
pitchnumber | nullDefault: null.

Result: WasmBoltLayout

Result fields
FieldTypeRequiredDescription
colsintegeryes
edgenumberyes
endnumberyes
fitsbooleanyes
gaugenumberyes
pitchnumberyes
plateHnumberyes
plateWnumberyes
positionsWasmBoltPos[]yes
rowsintegeryes
tracestring[]yes

bridging_check ​

Purlin bridging bracket check.

rust
bridging_check(json_input: &str) -> String

Input json_input: WasmBridgingInput

FieldTypeRequiredDescription
bolt_countintegeryes
bolt_dianumberyes
bolt_gradestringyes
bracket_bnumberyes
bracket_funumberyes
bracket_fynumberyes
bracket_tnumberyes
gaugenumberyesThe bolt line's gauge: the spacing of the bolts up the purlin's web.
legnumberThe bracket's leg: how far the bridging member's axis sits off the bolt line. Default: 0.
m_starnumberDefault: 0.
n_starnumberyes
v_starnumberyes
web_funumberyes
web_tnumberyes

Result: WasmBridgingResult

Result fields
FieldTypeRequiredDescription
bearingCnumberyes
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

column_side_check ​

Column-side components of a moment joint: flange bending, web tension, compression and panel shear.

rust
column_side_check(json_input: &str) -> String

Input json_input: WasmColumnSideInput

FieldTypeRequiredDescription
beamDnumberyes
beamTfnumberyes
bfColnumberThe column flange width, m. Default: 0.
bothFlangesRestrainedbooleanBoth column flanges are held at the joint (Cl 5.13.4 slenderness 2.5 d1/tw, else 5.0). Default: false.
dColnumberyes
flangeInTstubbooleanThe column flange is already checked as bolted T-stubs, so the flange yield line row is left out. Default: false.
flangeWeldLegnumberThe beam flange's fillet weld leg to the column, m (0 for a butt weld or none). Default: 0.
fyColnumberyes
mStarnumberyes
nStarnumberDefault: 0.
plateTnumberThe end plate's thickness, m (0 on a welded joint). Default: 0.
stiffenerFynumberThe continuity stiffeners' yield stress, Pa. Default: 0.
stiffenerTnumberThe continuity stiffeners' thickness, m (0 when none are drawn). Default: 0.
tfColnumberyes
twColnumberyes

Result: WasmColumnSideResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes
stiffenersRequiredbooleanyes

conn_anchor_check ​

Anchor group concrete checks - the CCD method of EN 1992-4:2018 (AS 5216:2021), with the ACI 318-19 17.8.2.2 anchor-reinforcement credit behind its gates. ADR 0005; the schema is fem_core::conn_anchor::AnchorGroupInput (mm, N, MPa). Every check is three-state; a missing input is a NotDetermined row, never a pass.

rust
conn_anchor_check(json_input: &str) -> String

Input json_input: AnchorGroupInput

FieldTypeRequiredDescription
anchorsAnchor[]yes
concreteConcreteyes
edgesEdgesDefault: {"far_from_all":false,"x_neg":null,"x_pos":null,"y_neg":null,"y_pos":null}.
factorsPartialFactors | nullDefault: null.
justification_notesstring[]Default: [].
loadsCombination[]yes
per_anchor_forcesAnchorForce[][] | nullPer combination, per anchor, when the joint FEA solved them. Same order as loads. Default: null.
phi_nt_nnumber | nullSteel design capacities per anchor, N (AS 4100, phi included). None = steel NotDetermined. Default: null.
phi_vs_nnumber | nullDefault: null.
post_installedbooleanPost-installed / chemical anchors are out of scope; a caller that says so gets every concrete check NotDetermined with the reason, never a cast-in number. Default: false.
reinforcementAnchorReinforcement | nullDefault: null.

Result: AnchorCheckResult

Result fields
FieldTypeRequiredDescription
adequateboolean | null
bar_dev_length_mmnumber | nullAS 3600 development length the claimed bars need, mm (reported; certification is the gate).
bars_acceptedinteger[]yesBars the reinforcement gate accepted / rejected, by index into reinforcement.bars.
bars_rejected[integer, string][]yes
combinationsCombResult[]yes
cone_geometryConeGeometry | null
factorsPartialFactorsyes
governingGoverning | nullThe worst determined utilisation. None while any determined-able check is NotDetermined on the governing side - a verdict with a hole in it is not a verdict (ADR 0003).
notesstring[]yes

conn_fea_mesh ​

CBFEM joint FEA, step 1: the mesh only (fem_core::conn_fea, spec in docs/plans/cbfem-3d-spec.md). Takes a ConnFeaInput - plates as placed polygons, bolts as shanks, plus the mesher's sizing field - and returns a ConnFeaMesh: nodes in 3D, triangles, per-plate ranges and the warnings for any hole that could not be cut. There is no solve behind this and it reports no stresses, displacements or utilisations; the designer's Mesh tab is the only thing that should read it until step 2 lands. Errors come back as &#123;"error": "..."&#125;, the same shape as the other exports here, so a caller that forgets to check gets no numbers rather than plausible ones.

rust
conn_fea_mesh(json_input: &str) -> String

Input json_input: ConnFeaInput

FieldTypeRequiredDescription
anchorsFeAnchor[]Holding-down anchors: bolts that grip the concrete rather than a second ply. Ignored by conn_fea_mesh - an anchor's HOLE is cut by its bolt like any other. Default: [].
bedsFeBed[]Elastic beds under bearing plates. Ignored by conn_fea_mesh. Default: [].
boltsFeBolt[]Default: [].
loadsFeLoad[]What is applied. Ignored by conn_fea_mesh. Default: [].
platesFePlate[]yes
rotation_probesFeRotationProbe[]Cross-sections to report a rotation at, for a joint stiffness. Empty by default and free when empty: the fit runs after the solve, over nodes already computed. Default: [].
sizingSizingFieldyesThe mesher's own sizing field, passed through to mesh_polygon per plate. Hole rims add their own refinement on top of whatever arrives here (see plate_sizing).
supportsFeSupport[]Where the joint is held. Ignored by conn_fea_mesh; conn_fea_solve refuses without at least one, because an unrestrained shell assembly has six rigid-body modes and a solve that "completes" on one is meaningless. Default: [].
weldsFeWeld[]Welds tying plate edges to other plates. Ignored by conn_fea_mesh - the mesh is of the plates, and a tie changes nothing about their geometry. Default: [].

Result: ConnFeaMesh

Result fields
FieldTypeRequiredDescription
bolt_holesBoltHole[]One entry per (bolt, plate) pair where a hole was actually CUT. A bolt with fewer than two of these connects nothing. Default: [].
boundary_nodesinteger[]yesNode indices on a plate boundary (outer edge or hole rim), global numbering. Step 2 needs these to find weld lines and hole rims without re-deriving the topology.
nodesnumber[][]yes
plate_of_triinteger[]yesFor each triangle, the index into ConnFeaMesh::plates it belongs to.
platesPlateMeshInfo[]yes
trisinteger[][]yes
warningsstring[]yesEverything that was refused, skipped or clamped, in the words of the reason. Never empty silently: if a hole did not get cut, it says so here.

conn_fea_solve ​

CBFEM joint FEA, step 2: the LINEAR ELASTIC 3D shell solve on the step-1 mesh (fem_core::conn_fea::conn_fea_solve). Takes the same ConnFeaInput as conn_fea_mesh plus supports and loads - restrained and loaded REGIONS, given as boxes in global coordinates - and returns nodal displacements, elastic von Mises surface stress, and the equilibrium check between what was applied and what the supports gave back. NOT yet wired into any Studio panel, and deliberately. Welds now tie plate edges to the plates they are welded to (spec step 3), but a joint given NO welds still solves as several loose plates - it says so in its warnings - and nothing yet maps a joint's members onto the support and load regions this takes (spec step 4). There is no contact (so no prying), no bolt stiffness, and no plasticity. The folded junction that used to be 6x over-stiff now agrees with OpenSees ShellMITC4 to 5% and with closed-form St Venant torsion, so a welded joint's stiffness is no longer the thing standing in the way - the member mapping is. The component-method checks remain the source of truth for design.

rust
conn_fea_solve(json_input: &str) -> String

Input json_input: ConnFeaInput

FieldTypeRequiredDescription
anchorsFeAnchor[]Holding-down anchors: bolts that grip the concrete rather than a second ply. Ignored by conn_fea_mesh - an anchor's HOLE is cut by its bolt like any other. Default: [].
bedsFeBed[]Elastic beds under bearing plates. Ignored by conn_fea_mesh. Default: [].
boltsFeBolt[]Default: [].
loadsFeLoad[]What is applied. Ignored by conn_fea_mesh. Default: [].
platesFePlate[]yes
rotation_probesFeRotationProbe[]Cross-sections to report a rotation at, for a joint stiffness. Empty by default and free when empty: the fit runs after the solve, over nodes already computed. Default: [].
sizingSizingFieldyesThe mesher's own sizing field, passed through to mesh_polygon per plate. Hole rims add their own refinement on top of whatever arrives here (see plate_sizing).
supportsFeSupport[]Where the joint is held. Ignored by conn_fea_mesh; conn_fea_solve refuses without at least one, because an unrestrained shell assembly has six rigid-body modes and a solve that "completes" on one is meaningless. Default: [].
weldsFeWeld[]Welds tying plate edges to other plates. Ignored by conn_fea_mesh - the mesh is of the plates, and a tie changes nothing about their geometry. Default: [].

Result: ConnFeaResult

Result fields
FieldTypeRequiredDescription
anchor_forcesAnchorForce2[]One entry per holding-down anchor. The number a base plate exists to produce. Default: [].
applied_forcenumber[]yesApplied force resultant, N, and the reaction the supports returned - which must equal it.
applied_momentnumber[]yesThe same for MOMENT about the origin, N.m. Reported for the same reason the forces are: a member can carry pure moment, and then the force resultants are both zero and say nothing.
bedsBedResult[]One entry per elastic bed that had any spring under it: how much the concrete carried, at what peak pressure, and over how much of the plate it was still in contact. Default: [].
bolt_forcesBoltForce[]One entry per bolt that actually connects two or more plies. Elastic, from a linear connector with no pretension, no contact and no slip - see BoltForce. Default: [].
contact_passesinteger | nullHow many active-set passes the bearing/anchor state took to settle. 0 when there was no contact to resolve; None when it did not settle - see the warning that says so. Default: null.
convergedbooleanyesTrue only when the solver returned, the solution is finite, and equilibrium closes.
elastic_stress_rationumber | nullsigma_vm_max / fy over the plates that stated an fy. None when none did. This is an ELASTIC stress ratio, NOT a code utilisation and NOT the 5% plastic strain criterion.
equilibrium_errornumberyes|applied + reaction| / |applied|. Zero for a correct solve; reported rather than only asserted, because it is the one number that catches load applied where nobody meant it.
meshConnFeaMeshyes
reaction_forcenumber[]yes
reaction_momentnumber[]yes
rotationsProbeRotation[]One entry per rotation probe, in the order they were given. Default: [].
sigma_vmnumber[]yesElastic von Mises stress at each node, Pa: the worse of the two plate SURFACES (membrane plus and minus the bending part), area-averaged from the elements meeting at that node.
sigma_vm_maxnumberyes
sigma_vm_max_jointnumberyesThe same peak, taken over the JOINT ONLY - every node inside a load or support region, grown by INTRO_MARGIN, is left out. A member's N/V/M are delivered as a force field over one end face, and a force field over a face is not how the member is really loaded: the face sees a local disturbance that dies away within about a section depth, which is St Venant's principle and is the whole reason the stub exists. Measured on a 360UB stub carrying 180 kN.m, the cut face itself reaches 441 MPa - 1.47 times fy - while the joint 250 mm away is a separate and much larger concentration. Both are red on a plot clipped at yield, and only one of them is a result. Reporting the global maximum as "the peak" reports whichever of the two happens to be higher. Equal to sigma_vm_max when nothing was excluded.
unumber[][]yesTranslation at each node, m, global axes.
u_maxnumberyesLargest nodal translation magnitude, m.
warningsstring[]yes

conn_stiffener_check ​

Sizes the column stiffeners and doubler plates a beam-to-column moment joint needs (AS 4100 / AISC).

rust
conn_stiffener_check(json_input: &str) -> String

Input json_input: WasmConnStiffenerInput

FieldTypeRequiredDescription
b_colnumberyes
d_colnumberyes
flange_bending_utilnumberyes
flange_forcenumberyes
fy_colnumberyes
fy_stiffenernumberyes
panel_shear_utilnumberyes
tf_colnumberyes
tw_colnumberyes
web_bearing_utilnumberyes

Result: WasmConnStiffenerResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnStiffenerComponent[]yes
continuity_plate_area_reqnumberyes
continuity_plate_thickness_minnumberyes
doubler_area_reqnumberyes
doubler_thickness_minnumberyes
flange_forcenumberyes
statusstringyes
stiffeners_requiredbooleanyes

eccentric_bolt_group_check ​

Eccentrically loaded bolt group check (elastic method).

rust
eccentric_bolt_group_check(json_input: &str) -> String

Input json_input: WasmBoltGroupInput

FieldTypeRequiredDescription
boltDiameternumberyes
boltGradestringyes
boltsWasmBoltPositionInput[]yes
krnumberyes
mznumberyes
nNintegeryes
nXintegeryes
vxnumberyes
vynumberyes

Result: WasmBoltGroupResult

Result fields
FieldTypeRequiredDescription
governingBoltintegeryes
phiVboltnumberyes
phiVtotalnumberyes
util_maxnumberyes
vResultantGovnumberyes

end_plate_check ​

Moment end plate check: bolt rows as T-stubs (plate yield, prying, bolt failure) to AS 4100.

rust
end_plate_check(json_input: &str) -> String

Input json_input: WasmEndPlateInput

FieldTypeRequiredDescription
beam_bfnumberDefault: 0.
beam_dnumberyes
beam_fynumberDefault: 0.
beam_tfnumberyes
beam_twnumberDefault: 0.
bolt_count_tensionintegeryes
bolt_count_totalintegerTotal bolts sharing the shear. 0 defaults to twice the tension count. Default: 0.
bolt_diameternumberyes
bolt_gradestringyes
both_directionsbooleanThe moment's sign is not known in the joint frame: check with the tension at either flange (rows mirrored to beam_d - y) and report the worse. Default: false.
column_bfnumberDefault: 0.
column_dnumberThe column the plate bolts to (m, Pa; SA-118): with it the rows are also limited by the column flange as T-stubs and the column web in transverse tension. Default: 0.
column_fynumberDefault: 0.
column_r1numberDefault: 0.
column_stiffenedbooleanContinuity stiffeners opposite the tension flange (the web's tension is theirs). Default: false.
column_tfnumberDefault: 0.
column_twnumberDefault: 0.
flange_weld_legnumberDefault: 0.
gaugenumberCentre-to-centre gauge of the two bolt columns (m). Default: 0.
m_starnumberyes
plate_extnumberHow far the plate runs past the tension flange's outer face (m); 0 for a flush plate. Default: 0.
plate_fynumberyes
plate_thicknessnumberyes
plate_widthnumberDefault: 0.
rowsWasmEndPlateDrawnRow[]The drawn bolt rows (SA-87). When given, the plate is checked as AS 4100 T-stubs (connections::end_plate_tstub_as4100) instead of the strip model: each row's y (m) from the tension flange's outer face, positive towards the compression flange, and its bolt count. Default: [].
v_starnumberCoincident connection shear (N). Optional; 0 skips the Cl 9.2.2.3 combined shear + tension interaction on the tension bolts. Default: 0.
web_weld_legnumberDefault: 0.

Result: WasmEndPlateResult

Result fields
FieldTypeRequiredDescription
columnInTstubbooleanThe column flange and web in tension were in the T-stub rows (SA-118). Default: false.
d_effnumberyes
governingstringDefault: "".
m_starnumberyes
methodstring"tstub" (the drawn rows, AS 4100 T-stubs) or "strip" (no rows given: the plate as one strip). Default: "".
notesstring[]Default: [].
phiBoltsTensionnumberyes
phiMDesnumberyes
phiPlateBendingnumberyes
row_capacitynumber[]Default: [].
row_modesstring[]Per tension row: governing T-stub mode and its capacity (N), top row first. Default: [].
tStarnumberyes
utilWebWeldnumberThe web welds to the plate under the shear and the rows' tension, Cl 9.6.3.10 (SA-119). Default: 0.
util_bolt_combinednumberyes
util_boltsnumberyes
util_maxnumberyes
util_platenumberyes

end_plate_moment_multirow_check ​

Moment end plate with several bolt rows checked row by row as T-stubs.

rust
end_plate_moment_multirow_check(json_input: &str) -> String

Input json_input: WasmEndPlateMultiRowInput

FieldTypeRequiredDescription
bolt_diameternumberyes
bolt_gradestringyes
fc_rdnumberyes
plate_fynumberyes
plate_thicknessnumberyes
plate_widthnumberyes
rowsWasmEndPlateRowInput[]yes

Result: WasmEndPlateMultiRowResult

Result fields
FieldTypeRequiredDescription
fc_rdnumberyes
m_rdnumberyes
notesstring[]yes
rowsWasmEndPlateRowResult[]yes
total_tensionnumberyes

fin_plate_check ​

Fin plate (single plate) shear connection check to AS 4100 Cl 9.

rust
fin_plate_check(json_input: &str) -> String

Input json_input: WasmFinPlateInput

FieldTypeRequiredDescription
bolt_columnsintegerDefault: 0.
bolt_countintegeryes
bolt_diameternumberyes
bolt_gradestringyes
edge_distancenumberDefault: 0.
end_distancenumberDefault: 0.
gaugenumberDefault: 0.
pitchnumberDefault: 0.
plate_depthnumberyes
plate_funumberyes
plate_fynumberyes
plate_thicknessnumberyes
v_starnumberyes
weld_fuwnumberDefault: 480000000.
weld_leg_sizenumberyes
weld_lengthnumberyes

Result: WasmFinPlateResult

Result fields
FieldTypeRequiredDescription
phiBlockShearnumberyes
phiBoltsnumberyes
phiPlateBearingnumberyes
phiPlateShearnumberyes
phiPlateTearoutnumberyes
phiVDesnumberyes
phiWeldnumberyes
util_block_shearnumberyes
util_boltsnumberyes
util_maxnumberyes
util_plate_bearingnumberyes
util_plate_shearnumberyes
util_plate_tearoutnumberyes
util_weldnumberyes
v_starnumberyes

gusset_check ​

Gusset plate check: Whitmore section, block shear, bolts and welds.

rust
gusset_check(json_input: &str) -> String

Input json_input: WasmGussetInput

FieldTypeRequiredDescription
alphaBnumberDefault: 0.5.
boltDiameternumberyes
countintegeryes
edgeTypestringDefault: "".
gradestringDefault: "8.8".
knumberDefault: 0.65.
lbnumberDefault: 0.12.
memberWidthnumberyes
nShearPlanesintegerDefault: 1.
nStarnumberyes
plateFunumberyes
plateFynumberyes
plateThicknessnumberyes

Result: WasmGussetResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
layoutWasmBoltLayoutyes
notesstring[]yes
statusstringyes

gusset_support_check ​

Gusset plate support connection check: face bolts, bearing, plate bending, welds.

rust
gusset_support_check(json_input: &str) -> String

Input json_input: WasmGussetSupportInput

FieldTypeRequiredDescription
bolt_dianumberyes
bolt_gradestringyes
bolted_platebooleanyes
colsintegeryes
f_parnumberyes
f_perpnumberyes
gusset_boltsintegeryes
levernumberyes
m_starnumberyes
pitchnumberyes
plate_fynumberyes
plate_tnumberyes
ply_funumberyes
ply_tnumberyes
rowsintegeryes
stripnumberyes
weld_legnumberyes
weld_lennumberyes

Result: WasmGussetSupportResult

Result fields
FieldTypeRequiredDescription
f_parnumberyes
f_perpnumberyes
tOuternumberyes
util_face_boltsnumberyes
util_gusset_boltsnumberyes
util_gusset_weldnumberyes
util_maxnumberyes
util_plate_bendingnumberyes
util_ply_bearingnumberyes

hollow_brace_end_check ​

Hollow section brace end check: tongue plate, tube, weld and bolts.

rust
hollow_brace_end_check(json_input: &str) -> String

Input json_input: WasmHollowBraceEndInput

FieldTypeRequiredDescription
bolt_columnsintegerDefault: 1.
bolt_countintegeryes
bolt_dianumberyes
bolt_gradestringyes
n_starnumberyes
slottedbooleantrue: a tongue in a slotted tube; false: a lug on an end plate, the tube whole (plan A2b). Default: true.
tongue_endnumberyes
tongue_funumberyes
tongue_fynumberyes
tongue_tnumberyes
tongue_wnumberyes
tube_dnumberyes
tube_funumberyes
tube_fynumberyes
tube_tnumberyes
weld_legnumberyes
weld_lennumberyes

Result: WasmHollowBraceEndResult

Result fields
FieldTypeRequiredDescription
n_starnumberyes
phiBoltShearnumberyes
phiTongueBearingnumberyes
phiTongueFracturenumberyes
phiTongueTearoutnumberyes
phiTongueYieldnumberyes
phiTubeNetnumberyes
phiWeldnumberyes
shearLagUnumberyes
util_bolt_shearnumberyes
util_maxnumberyes
util_tonguenumberyes
util_tongue_bearingnumberyes
util_tubenumberyes
util_weldnumberyes

lap_check ​

Lapped cold-formed purlin or girt connection check.

rust
lap_check(json_input: &str) -> String

Input json_input: WasmLapInput

FieldTypeRequiredDescription
bolt_countintegeryes
bolt_dianumberyes
bolt_gradestringyes
eccentricitynumberThe ply standoff: how far the bolt line sits off the member's own axis. Default: 0.
m_starnumberDefault: 0.
n_starnumberyes
pitchnumberyes
ply1_funumberyes
ply1_tnumberyes
ply2_funumberyes
ply2_tnumberyes
v_starnumberyes

Result: WasmLapResult

Result fields
FieldTypeRequiredDescription
bearingCnumberyes
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
krnumberyes
lapLengthnumberyes
notesstring[]yes
statusstringyes

lap_reduction_kr ​

AS 4100 Table 9.2.2.1 - the bolted lap reduction factor, exported so the JS side can SIZE with the same number the check will grade with. The generator proposes a brace bolt count from the axial demand, and that proposal has to account for the reduction or it under-counts every lap over 300 mm - the check then reports an OVER on a joint the product itself proposed. Exported rather than re-written in JS because a table with two homes is a table that will disagree with itself: fem-core::connections::lap_reduction_kr is the one implementation, unit-tested against the table's own boundaries. lj_mm is the length of the connection between the extreme bolts, measured along the force.

rust
lap_reduction_kr(lj_mm: f64) -> f64

Result: untyped (returns f64, not JSON)

moment_base_check ​

Fixed (moment) column base check: bearing, plate bending and anchor tension.

rust
moment_base_check(json_input: &str) -> String

Input json_input: WasmMomentBaseInput

FieldTypeRequiredDescription
boltDiameternumberyes
columnBfnumberDefault: 0.
columnDnumberyes
concreteFcnumberyes
gradestringDefault: "8.8".
mStarnumberyes
nStarnumberDefault: 0.
nTensionintegeryes
plateBnumberyes
plateDnumberyes
plateFynumberyes
plateTnumberyes
vStarnumberDefault: 0.

Result: WasmMomentBaseResult

Result fields
FieldTypeRequiredDescription
anchorTensionnumberyes
bearingLengthnumberyes
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

purlin_cleat_check ​

Purlin cleat check: bolts, bearing on purlin and cleat, cleat bending and weld.

rust
purlin_cleat_check(json_input: &str) -> String

Input json_input: WasmPurlinCleatInput

FieldTypeRequiredDescription
bolt_countintegeryes
bolt_dianumberyes
bolt_gradestringyes
bolt_heightnumberyes
cleat_bnumberyes
cleat_edgenumberyes
cleat_funumberyes
cleat_fynumberyes
cleat_tnumberyes
purlin_funumberyes
purlin_tnumberyes
v_latnumberDefault: 0.
v_starnumberyes
weld_legnumberyes

Result: WasmPurlinCleatResult

Result fields
FieldTypeRequiredDescription
bearingCnumberyes
phiBoltShearnumberyes
phiCleatBearingnumberyes
phiCleatBendingnumberyes
phiCleatTearoutnumberyes
phiPurlinBearingnumberyes
phiWeldShearnumberyes
util_bolt_shearnumberyes
util_cleat_bearingnumberyes
util_cleat_bendingnumberyes
util_maxnumberyes
util_purlin_bearingnumberyes
util_weldnumberyes
v_latnumberyes
v_starnumberyes

ridge_tie_cleat_check ​

Ridge tie cleat: the tie's axial force and shear on a plate hung under the rafter soffit (SI in: m, Pa, N; utilisations out). See fem_core::conn_ridge_tie for the limit states.

rust
ridge_tie_cleat_check(json_input: &str) -> String

Input json_input: WasmRidgeTieInput

FieldTypeRequiredDescription
bolt_diameternumberyes
bolt_gradestringDefault: "8.8".
enumberyesWeld line to the bolt group's centroid (m).
n_boltsintegeryes
n_starnumberDefault: 0.
plate_bnumberyes
plate_funumberyes
plate_fynumberyes
plate_tnumberyes
tie_endnumberDefault: 0.
tie_funumberDefault: 440000000.
tie_twnumberyes
v_starnumberDefault: 0.
weld_fuwnumberDefault: 480000000.
weld_legnumberyes

Result: RidgeTieCapacity

Result fields
FieldTypeRequiredDescription
governingstringyes
util_bolt_shearnumberyes
util_maxnumberyes
util_plate_axialnumberyes
util_plate_bearingnumberyes
util_plate_bendingnumberyes
util_plate_shearnumberyes
util_tie_bearingnumberyes
util_weldnumberyes

rod_brace_check ​

Rod brace end check: rod, pin, lug, bolts and welds.

rust
rod_brace_check(json_input: &str) -> String

Input json_input: WasmRodBraceInput

FieldTypeRequiredDescription
bolt_countintegeryes
bolt_dianumberyes
bolt_gradestringyes
lug_edgenumberyes
lug_funumberyes
lug_tnumberyes
n_starnumberyes
n_star_boltsnumberDefault: 0.
pin_dianumberyes
pin_fynumberyes
pin_shear_planesintegerDefault: 2.
rod_dianumberyes
rod_funumberyes
rod_fynumberyes
threadedbooleanDefault: true.
v_star_boltsnumberDefault: 0.

Result: WasmRodBraceResult

Result fields
FieldTypeRequiredDescription
n_starnumberyes
phiBoltShearnumberyes
phiBoltTensionnumberyes
phiLugBearingnumberyes
phiLugTearoutnumberyes
phiPinBearingnumberyes
phiPinShearnumberyes
phiRodnumberyes
rodAn_mm2numberyes
util_boltsnumberyes
util_lugnumberyes
util_maxnumberyes
util_pin_bearingnumberyes
util_pin_shearnumberyes
util_rodnumberyes

seat_check ​

Seated beam connection check (stiffened seat).

rust
seat_check(json_input: &str) -> String

Input json_input: WasmSeatInput

FieldTypeRequiredDescription
beam_dnumberyes
beam_fynumberyes
beam_tfnumberyes
beam_twnumberyes
seat_fynumberyes
seat_lennumberyes
seat_tnumberyes
seat_wnumberyes
stiff_fynumberyes
stiff_hnumberyes
stiff_tnumberyes
v_starnumberyes
weld_fuwnumberDefault: 480000000.
weld_legnumberyes
weld_lennumberyes

Result: WasmSeatResult

Result fields
FieldTypeRequiredDescription
bearingWidthnumberyes
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
phiBearingBucklingnumberyes
phiBearingYieldnumberyes
statusstringyes

shear_key_check ​

Base plate shear key check: bearing on concrete, key bending and weld.

rust
shear_key_check(json_input: &str) -> String

Input json_input: WasmShearKeyInput

FieldTypeRequiredDescription
boltDiameternumberDefault: 0.
concreteFcnumberyes
fuwnumberDefault: 480000000.
gradestringDefault: "8.8".
keyBnumberyes
keyFynumberyes
keyHnumberyes
keyTnumberyes
nAnchorintegerDefault: 0.
nStarnumberDefault: 0.
plateBnumberyes
plateDnumberyes
plateFynumberDefault: 0.
plateTnumberDefault: 0.
vStarnumberDefault: 0.
weldLegnumberDefault: 0.

Result: WasmShearKeyResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

shear_plate_check ​

Flexible end plate or web side plate shear connection (ASI Design Guides 4 and 3), each component to AS 4100.

rust
shear_plate_check(json_input: &str) -> String

Input json_input: WasmShearPlateInput

FieldTypeRequiredDescription
anumberDefault: 0.
a_eh_beamnumberDefault: 0.
a_evnumberyesPlate edge distance to the end bolts (vertical).
beamWasmShearBeam | nullThe beam as an object, or flat as beam_d / beam_bf / beam_tf / beam_tw / beam_fy / beam_fu - the flat form is what a family package's input map can name.
beam_bfnumberDefault: 0.
beam_copestringThe flat form's cope (SA-113): "none" (default), "swc" / "top", "dwc" / "double", with its top depth, bottom depth and length (m). The nested beam object carries the same fields. Default: "".
beam_dnumberDefault: 0.
beam_d_cbnumberDefault: 0.
beam_d_ctnumberDefault: 0.
beam_funumberDefault: 440000000.
beam_fynumberDefault: 300000000.
beam_l_cnumberDefault: 0.
beam_tfnumberDefault: 0.
beam_twnumberDefault: 0.
bolt_countintegerDefault: 0.
bolt_diameternumberyes
bolt_gradestringDefault: "8.8".
colsintegerDefault: 1.
gaugenumberDefault: 0.
kindstring"fep" (flexible end plate) or "wsp" (web side plate / fin plate, the default). Default: "wsp".
pitchnumberyes
plate_bnumberyes
plate_funumberyes
plate_fynumberyes
plate_tnumberyes
rowsintegerRows, or leave 0 and give the total bolt_count: rows = ceil(count / cols). Default: 0.
s_g1numberWSP: weld line to the first bolt column, the beam's end distance, beam top to the top bolt. Default: 0.
threads_includedbooleanDefault: true.
v_starnumberDefault: 0.
weld_fuwnumberDefault: 480000000.
weld_legnumberyes

Result: WasmShearPlateResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
dInumberyes
enumberyes
govComponentstringyes
govUtilnumberyes
governingstringyes
kindstringyes
notesstring[]yes
phiVDesnumberyesLeast component capacity (N) and its key (Va..Vh), whatever the demand.
statusstringyes

splice_check ​

Bolted member splice check: cover plates, bolts, net section and block shear.

rust
splice_check(json_input: &str) -> String

Input json_input: WasmSpliceInput

FieldTypeRequiredDescription
boltDiameternumberyes
endDistnumberDefault: 0.
flangeTnumberyes
fpBnumberyes
fpFunumberyes
fpFynumberyes
fpTnumberyes
gradestringDefault: "8.8".
mStarnumberyes
nFlangeintegeryes
nStarnumberDefault: 0.
nWebintegerDefault: 0.
pitchnumberyes
sectionDnumberyes
vStarnumberDefault: 0.
wpTnumberDefault: 0.

Result: WasmSpliceResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

through_plate_check ​

Through-plate connection to a hollow section check.

rust
through_plate_check(json_input: &str) -> String

Input json_input: WasmThroughPlateInput

FieldTypeRequiredDescription
f_starnumberyes
n_slotsintegeryes
n_starnumberyes
plate_tnumberyes
tube_dnumberyes
tube_funumberyes
tube_fynumberyes
tube_tnumberyes
weld_legnumberyes
weld_lennumberyes

Result: WasmThroughPlateResult

Result fields
FieldTypeRequiredDescription
f_starnumberyes
n_starnumberyes
phiTubeNetnumberyes
phiWeldnumberyes
util_maxnumberyes
util_through_weldnumberyes
util_tube_throughnumberyes

web_cleat_check ​

Double-angle web cleat shear connection check.

rust
web_cleat_check(json_input: &str) -> String

Input json_input: WasmWebCleatInput

FieldTypeRequiredDescription
boltDiameternumberyes
dCleatnumberyes
eSupnumberDefault: 0.
eWebnumberyes
edgeDistnumberDefault: 0.
endDistnumberDefault: 0.
fuCleatnumberyes
fuWebnumberyes
fyCleatnumberyes
gradestringDefault: "8.8".
nSupintegeryes
nWebintegeryes
pitchnumberyes
tCleatnumberyes
tWebnumberyes
vStarnumberyes

Result: WasmWebCleatResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

weld_capacity ​

AS 4100 fillet weld capacity per unit length (Cl 9.6).

rust
weld_capacity(json_input: &str) -> String

Input json_input: WasmWeldInput

FieldTypeRequiredDescription
fuwnumberDefault: 480000000.
krnumberDefault: 1.
leg_sizenumberyes
lengthnumberyes

Result: WasmWeldResult

Result fields
FieldTypeRequiredDescription
phiVwnumberyes

weld_group_check ​

Eccentrically loaded fillet weld group check (elastic method).

rust
weld_group_check(json_input: &str) -> String

Input json_input: WasmWeldGroupInput

FieldTypeRequiredDescription
fuwnumberyes
krnumberyes
mznumberyes
segmentsWasmWeldSegmentInput[]yes
vxnumberyes
vynumberyes

Result: WasmWeldGroupResult

Result fields
FieldTypeRequiredDescription
governingSegmentintegeryes
phiVperMmGovnumberyes
phiVtotalnumberyes
util_maxnumberyes
vPerMmGovnumberyes

welded_moment_check ​

Welded beam-to-column moment connection check.

rust
welded_moment_check(json_input: &str) -> String

Input json_input: WasmWeldedMomentInput

FieldTypeRequiredDescription
flangeBnumberyes
flangeCpbwbooleanDefault: true.
flangeLegnumberDefault: 0.
flangeTnumberyes
fuwnumberDefault: 480000000.
fynumberyes
mStarnumberyes
nStarnumberDefault: 0.
sectionDnumberyes
vStarnumberDefault: 0.
webLegnumberDefault: 0.
webTnumberDefault: 0.

Result: WasmWeldedMomentResult

Result fields
FieldTypeRequiredDescription
componentsWasmConnComponent[]yes
govComponentstringyes
govUtilnumberyes
notesstring[]yes
statusstringyes

Concrete - AS 3600 ​

as3600_rc_beam_moment ​

AS 3600 rectangular RC beam moment capacity phiMu by the rectangular stress block (Cl 8.1).

rust
as3600_rc_beam_moment(json_input: &str) -> String

Input json_input: WasmRcBeamInput

FieldTypeRequiredDescription
a_scnumberDefault: 0.
a_stnumberyes
bnumberyes
dnumberyes
d_scnumberDefault: 0.
f_prime_cnumberyes
f_synumberyes

Result: WasmRcBeamResult

Result fields
FieldTypeRequiredDescription
anumberyes
kUnumberyes
overReinforcedbooleanyes
phinumberyes
phiMunumberyes

as3600_rc_beam_serviceability ​

AS 3600:2018 Cl 8.5.3 simplified deflection (I_ef, short + long term, k_cs) and the Cl 8.5.4 deemed-to-conform span-to-depth ratio for a rectangular reinforced beam. SI in and out: the result's lengths are metres, moments N.m, second moments m^4, E_c and f'ct.f in Pa.

rust
as3600_rc_beam_serviceability(json_input: &str) -> String

Input json_input: WasmRcBeamServiceInput

FieldTypeRequiredDescription
a_scnumberDefault: 0.
a_stnumberyes
bnumberyesSI in: m, m^2, Pa, N/m, N.m. b, D (d_section), d, d_sc; A_st, A_sc; f'c, E_s (default 200 GPa)
dnumberyes
d_scnumberDefault: 0.
d_sectionnumberyes
defl_limitnumber | nullDefault: null.
e_snumber | nullDefault: null.
eps_csnumber | nullDefault: null.
f_prime_cnumberyes
gnumberyes
m_snumber | nullM_s* in N.m, required for continuous spans Default: null.
psi_lnumberyes
psi_snumberyes
qnumberyes
spannumberyes
supportBeamSupportyes"simply_supported" | "cantilever" | "continuous_end" | "continuous_interior"

Result: untyped (JSON built with json!, no Rust type)

as3600_rc_beam_shear ​

AS 3600 concrete shear strength phiVuc of an RC beam without fitments (Cl 8.2.4).

rust
as3600_rc_beam_shear(json_input: &str) -> String

Input json_input: WasmRcShearInput

FieldTypeRequiredDescription
a_stnumberyes
bnumberyes
dnumberyes
d_overallnumberOverall depth D (m), optional: d_v = max(0.72 D, 0.9 d) (AS 3600 Cl 8.2.1.9). 0 -> 0.9 d. Default: 0.
f_prime_cnumberyes

Result: WasmRcShearResult

Result fields
FieldTypeRequiredDescription
phinumberyes
phiVucnumberyes
rhoWnumberyes
vUcnumberyes

as3600_rc_column_capacity ​

AS 3600 RC column capacity under axial load and uniaxial bending (Cl 10.6).

rust
as3600_rc_column_capacity(json_input: &str) -> String

Input json_input: WasmRcColumnInput

FieldTypeRequiredDescription
a_scnumberyes
a_stnumberyes
bnumberyes
dnumberyes
d_scnumberDefault: 0.
d_sectionnumberyes
f_prime_cnumberyes
f_synumberyes
m_starnumberyes
n_starnumberyes

Result: WasmRcColumnResult

Result fields
FieldTypeRequiredDescription
curveWasmRcColumnCurveResultyes
phiMNnumberyes
phiMunumberyes
phiNuonumberyes
util_interactionnumberyes
util_mnumberyes
util_maxnumberyes
util_nnumberyes

as3600_rc_column_interaction_curve ​

AS 3600 RC column axial-moment interaction diagram (Cl 10.6), point by point.

rust
as3600_rc_column_interaction_curve(json_input: &str) -> String

Input json_input: WasmRcColumnInput

FieldTypeRequiredDescription
a_scnumberyes
a_stnumberyes
bnumberyes
dnumberyes
d_scnumberDefault: 0.
d_sectionnumberyes
f_prime_cnumberyes
f_synumberyes
m_starnumberyes
n_starnumberyes

Result: WasmRcColumnCurveResult

Result fields
FieldTypeRequiredDescription
mBalancednumberyes
nBalancednumberyes
phiMunumberyes
phiNuonumberyes
pointsWasmRcColumnCurvePoint[]yes

as3600_rc_design_batch ​

AS 3600 reinforcement required for many rectangular RC members at once (fem-core as3600_design): an array of WasmRcDesignItem in, an array of WasmRcDesignOut out.

rust
as3600_rc_design_batch(json_input: &str) -> String

Input json_input: WasmRcDesignItem[]

Result: WasmRcDesignOut[]

as3600_rc_member_check ​

AS 3600 RC member check: bending, axial, interaction and shear.

rust
as3600_rc_member_check(json_input: &str) -> String

Input json_input: WasmRcMemberInput

FieldTypeRequiredDescription
a_scnumberDefault: 0.
a_stnumberyes
bnumberyes
dnumberyes
d_scnumberDefault: 0.
d_sectionnumberyes
f_prime_cnumberyes
f_synumberyes
m_starnumberyes
n_starnumberyes
v_starnumberyes

Result: WasmRcMemberResult

Result fields
FieldTypeRequiredDescription
governingstringyes
phiMNnumberyes
phiMunumberyes
phiNuonumberyes
phiVucnumberyes
util_axialnumberyes
util_bendingnumberyes
util_interactionnumberyes
util_maxnumberyes
util_shearnumberyes

as3600_slab_check ​

AS 3600 slab check: strip moment, minimum steel, punching and deflection.

rust
as3600_slab_check(json_input: &str) -> String

Input json_input: WasmSlabInput

FieldTypeRequiredDescription
a_st_per_mnumberyes
col_anumberyes
col_bnumberyes
covernumberyes
dnumberyes
f_prime_cnumberyes
f_synumberyes
m_starnumberyes
mv_starnumberMoment transferred to the support, M*v (N·m); see WasmSlabPunchingInput::mv_star. Default: 0.
n_starnumberyes
spannumberyes
support_typeintegerDefault: 0.
thicknessnumberDefault: 0.

Result: WasmSlabResult

Result fields
FieldTypeRequiredDescription
a_st_minnumberyes
a_st_providednumberyes
betaHnumberyes
fCvnumberyes
governingstringyes
lOverDActualnumberyes
lOverDLimitnumberyes
phiMunumberyes
phiVUonumberyes
util_deflectionnumberyes
util_maxnumberyes
util_min_steelnumberyes
util_momentnumberyes
util_punchingnumberyes
vStarEquivalentnumberyes

as3600_slab_deflection ​

AS 3600 slab deflection screen by the deemed-to-comply span-to-depth ratio (Cl 9.3.4).

rust
as3600_slab_deflection(json_input: &str) -> String

Input json_input: WasmSlabDeflectionInput

FieldTypeRequiredDescription
dnumberyes
f_synumberyes
spannumberyes
support_typeintegerDefault: 0.
thicknessnumberDefault: 0.

Result: WasmSlabDeflectionResult

Result fields
FieldTypeRequiredDescription
lOverDActualnumberyes
lOverDLimitnumberyes
util_deflectionnumberyes

as3600_slab_punching_shear ​

AS 3600 slab punching shear capacity (Cl 9.3).

rust
as3600_slab_punching_shear(json_input: &str) -> String

Input json_input: WasmSlabPunchingInput

FieldTypeRequiredDescription
col_anumberyes
col_bnumberyes
covernumberyes
dnumberyes
f_prime_cnumberyes
mv_starnumberMoment transferred to the support, M*v (N·m). Defaults to 0 so an existing payload keeps its old meaning, but Cl 9.3.2(b)(ii) requires it whenever moment IS transferred. Default: 0.
n_starnumberyes

Result: WasmSlabPunchingResult

Result fields
FieldTypeRequiredDescription
betaHnumberyesCl 9.3.1.4 shape factor, and the Cl 9.3.4 moment-transfer outputs. Reported so the result can be hand-checked against the clause instead of taken on trust.
dnumberyes
f_cvnumberyes
phiVUonumberyes
unumberyes
util_punchingnumberyes
vStarEquivalentnumberyes
vUnumberyes
vUonumberyes

as3600_slab_strip_moment ​

AS 3600 slab strip moment capacity and minimum steel.

rust
as3600_slab_strip_moment(json_input: &str) -> String

Input json_input: WasmSlabStripInput

FieldTypeRequiredDescription
a_st_per_mnumberyes
covernumberyes
dnumberyes
f_prime_cnumberyes
f_synumberyes
m_starnumberyes
thicknessnumberDefault: 0.

Result: WasmSlabStripResult

Result fields
FieldTypeRequiredDescription
a_st_minnumberyes
a_st_providednumberyes
phiMunumberyes
util_min_steelnumberyes
util_momentnumberyes

composite_beam_check ​

AS 2327 composite steel-concrete beam check: moment capacity and shear connectors.

rust
composite_beam_check(json_input: &str) -> String

Input json_input: WasmCompositeBeamInput

FieldTypeRequiredDescription
b_fnumberyes
beam_spacingnumberyes
dnumberyes
d_snumberyes
d_studnumberyes
f_prime_cnumberyes
f_u_studnumberyes
f_ynumberyes
m_starnumberyes
n_studsintegeryes
spannumberyes
t_fnumberyes
t_wnumberyes
z_enumberyes

Result: WasmCompositeBeamResult

Result fields
FieldTypeRequiredDescription
bEffnumberyes
etanumberyes
fCcnumberyes
fStnumberyes
mBarenumberyes
mFullnumberyes
nStudsReqnumberyes
phiMbvnumberyes
phiNQnumberyes
pnaInSlabbooleanyes
util_maxnumberyes
util_momentnumberyes
util_studnumberyes

rc_beam_section_capacity ​

Fibre-section analysis of a rectangular RC beam with a bottom and an optional top bar row: gross and cracked properties and the moment-curvature response.

rust
rc_beam_section_capacity(json_input: &str) -> String

Input json_input: WasmRcBeamCapacityInput

FieldTypeRequiredDescription
bnumberyesSection width (m).
bottom_barsWasmRcBarRowyesBottom reinforcement row.
covernumberyesConcrete cover to bar centroid (m).
e_cnumberConcrete elastic modulus (Pa). Defaults to 30 GPa. Default: 30000000000.
e_snumberSteel elastic modulus (Pa). Defaults to 200 GPa. Default: 200000000000.
f_prime_cnumberyesConcrete compressive strength f'c (Pa).
f_synumberyesSteel yield stress fsy (Pa).
hnumberyesSection height (m).
kappa_maxnumberMaximum curvature for the M-κ curve (1/m). Default: 0.005.
mesh_sizenumberFiber mesh size (m). Smaller = more accurate but slower. Default: 0.002.
n_kappa_pointsintegerNumber of points on the M-κ curve. Default: 20.
top_barsWasmRcBarRow | nullTop reinforcement row (optional). Default: null.

Result: WasmRcBeamCapacityOutput

Result fields
FieldTypeRequiredDescription
area_concretenumberyesPlain concrete area, b × h (m²).
area_transformednumberyesTransformed gross area, concrete + n·A_s (m²).
d_na_crackednumberyesCracked neutral-axis depth from extreme compression fibre (m).
i_crackednumberyesCracked second moment of area about cracked neutral axis (m⁴).
i_grossnumberyesGross second moment of area about centroidal x-axis (m⁴).
k_uonumberyesNeutral-axis parameter k_uo = c / d_o at ultimate.
m_crnumberyesCracking moment (N·m).
m_unumberyesNominal ultimate moment capacity from AS 3600 stress block (N·m).
moment_curvatureWasmRcMomentCurvaturePoint[]yesMoment-curvature curve.
phinumberyesCapacity reduction factor, AS 3600 Table 2.2.2 (ductility-dependent, 0.65 to 0.85).
phi_m_unumberyesCapacity-reduced ultimate moment phi * M_u (N·m).
y_centroidnumberyesGross section centroid height from bottom (m).

rc_column_interaction_surface_3d ​

Build the P-Mx-My biaxial interaction surface for a rectangular RC column. The returned (P, Mx, My) points are the NOMINAL (unfactored) section capacity. AS 3600 capacity-reduction (phi, ~0.6 compression-controlled to 0.85 tension-controlled) is NOT applied here. Any design check that compares factored actions (N*, Mx*, My*) against this surface must apply phi first; treating the raw surface as a design envelope over-states capacity.

rust
rc_column_interaction_surface_3d(json_input: &str) -> String

Input json_input: WasmRcBiaxialInput

FieldTypeRequiredDescription
bnumberyes
f_prime_cnumberyesConcrete compressive strength f'c (Pa).
f_synumberyesSteel yield stress fsy (Pa).
hnumberyes
mesh_sizenumberFiber mesh size (m). Defaults to 0.005. Default: 0.002.
n_cintegerNumber of neutral-axis depths per angle (>= 3). Default: 21.
n_thetaintegerNumber of neutral-axis angles to sweep (>= 2). Default: 8.
rebarsWasmRcRebar[]Reinforcing bars as a list of {x, y, area} (SI units). Default: [].

Result: WasmRcBiaxialOutput

Result fields
FieldTypeRequiredDescription
n_cintegeryes
n_thetaintegeryes
pointsWasmRcBiaxialPoint[]yes

rc_shear_torsion_combined ​

AS 3600 Cl 8.3 combined shear and torsion check of a rectangular RC beam.

rust
rc_shear_torsion_combined(json_input: &str) -> String

Input json_input: WasmShearTorsionInput

FieldTypeRequiredDescription
aStnumberyes
bnumberyes
dnumberyes
fPrimeCnumberyes
hnumberyes
tStarnumberyes
vStarnumberyes

Result: WasmShearTorsionResult

Result fields
FieldTypeRequiredDescription
governingstringyes
phiTUcnumberyes
phiVUcnumberyes
utilCombinednumberyes
utilMaxnumberyes
utilTnumberyes
utilVnumberyes

Foundations ​

as2870_design ​

AS 2870 site classification + deemed-to-comply stiffened-raft footing. Classifies from the soil profile unless site_class is supplied; then selects the footing for construction + slab_length_m.

rust
as2870_design(json_input: &str) -> String

Input json_input: WasmAs2870Input

FieldTypeRequiredDescription
constructionstringDefault: "".
du_surfacenumberDefault: 1.2.
footing_systemstringDefault: "".
hs_mnumberDefault: 1.5.
layersSoilLayer[]Default: [].
site_classstringOptional: skip the soil profile and use this class directly ("M", "H1-D", ...). Default: "".
slab_length_mnumberDefault: 15.

Result: any

combined_footing_design ​

Combined (two-column) pad footing: bearing, AS 3600 flexure, one-way and punching shear.

rust
combined_footing_design(json_input: &str) -> String

Input json_input: WasmCombinedFootingInput

FieldTypeRequiredDescription
barDiameternumberDefault: 0.
bearingBasisstringDefault: "allowable".
columnsWasmCombinedColumn[]yes
covernumberyes
fPrimeCnumberyes
fPrimeCColumnnumberDefault: 0.
fSynumberyes
footingBxnumberyes
footingBynumberyes
footingHnumberyes
qBearingnumberyes
selfWeightnumberDefault: 0.
standardFootingCodeDefault: "as3600".

Result: WasmCombinedFootingResult

Result fields
FieldTypeRequiredDescription
aStBottomReqnumberyes
aStMinnumberyes
aStTopReqnumberyes
aStTransverseReqnumberyes
checksRefusedstring[]yes
contactStatestringyes
governingstringyes
mHognumberyes
mSagnumberyes
mTransversenumberyes
notestring | null
phiVPunchnumberyes
phiVUcnumberyes
qAllowablenumberyes
qMaxnumberyes
resultantXnumberyes
utilBearingnumberyes
utilBearingStressnumberyes
utilDevelopmentnumberyes
utilMaxnumberyes
utilMomentnumberyes
utilPunchingnumberyes
utilShearnumberyes
utilTransversenumberyes
vDesignnumberyes
vPunchnumberyes

footing_fe_pressure ​

Plate-on-Winkler FE soil pressure over the pad plan (the mat/raft path). SI in, kPa out. Returns the nodal pressure grid, peak/min, Wood-Armer design-moment peaks (kNm/m), a global-equilibrium self-check, convergence flag, and any solver/mesh warnings - so the caller shows the FE field BESIDE the rigid field (never instead of it) with its honest caveats attached.

rust
footing_fe_pressure(json_input: &str) -> String

Input json_input: WasmFootingFeInput

FieldTypeRequiredDescription
bxnumberyes
bynumberyes
cxnumberDefault: 0.4.
cynumberDefault: 0.4.
e_concretenumberDefault: 30000000000.
ksnumberyes
mxnumberDefault: 0.
mynumberDefault: 0.
nnumberyes
nunumberDefault: 0.2.
nxintegerDefault: 12.
nyintegerDefault: 12.
self_weightnumberDefault: 0.
thicknessnumberyes

Result: untyped (JSON built with json!, no Rust type)

footing_pressure_field ​

Rigid soil-pressure field over the footing plan, for the contour view. SI in, kPa out. A refused state (NaN) serialises to JSON null so the renderer can never read a refusal as zero pressure.

rust
footing_pressure_field(json_input: &str) -> String

Input json_input: WasmPressureFieldInput

FieldTypeRequiredDescription
bxnumberyes
bynumberyes
mxnumberyes
mynumberyes
nnumberyes
nxintegerDefault: 25.
nyintegerDefault: 25.

Result: untyped (JSON built with json!, no Rust type)

footing_size_for_bearing ​

Sizes a pad footing plan for the allowable bearing pressure.

rust
footing_size_for_bearing(json_input: &str) -> String

Input json_input: WasmFootingSizeInput

FieldTypeRequiredDescription
aspectnumberby/bx. Defaults to 1.0 (square). Default: 0.
footingHnumberFooting thickness, m, so self-weight can grow with the plan area inside the loop. Default: 0.
mxServicenumberDefault: 0.
myServicenumberDefault: 0.
nServicenumberyesUnfactored vertical load, kN. Bearing is a working-stress check.
qAllowablenumberyesAllowable bearing pressure, kPa. Already factored if the caller's basis was "ultimate".

Result: WasmFootingSizeResult

Result fields
FieldTypeRequiredDescription
bxnumberyes
bynumberyes
convergedbooleanyes
notestring | null
qMaxnumberyes
utilnumberyes

geo_classify_point ​

Classify a georeferenced point against a set of polygons (a loaded region / soil-zone layer). Returns every polygon the point falls in, in input order: &#123; point, matches: [&#123;name, class&#125;], count &#125;. No hazard data is embedded - the polygons are always supplied by the caller.

rust
geo_classify_point(json_input: &str) -> String

Input json_input: WasmGeoClassifyInput

FieldTypeRequiredDescription
pointnumber[]yesQuery point [lon, lat].
polygonsGeoPolygon[]Candidate polygons (name, optional class attribute, GeoJSON rings). Default: [].

Result: any

grade_beam_design ​

Strip / grade beam on an elastic foundation - the LONGITUDINAL span between a line of columns, which strip_footing_design does not cover.

rust
grade_beam_design(json_input: &str) -> String

Input json_input: WasmGradeBeamInput

FieldTypeRequiredDescription
columnsWasmGradeBeamColumn[]yes
covernumberyes
fPrimeCnumberyes
fSynumberyes
ksnumberyesModulus of subgrade reaction, N/m^3. Geotechnical; no default - see grade_beam.rs.
lengthnumberyes
nElementsintegerDefault: 0.
standardFootingCodeConcrete design code for the longitudinal flexure design. Omitted -> AS 3600, so a payload without a standard designs exactly as before. Default: "as3600".
thicknessnumberyes
widthnumberyes

Result: WasmGradeBeamResult

Result fields
FieldTypeRequiredDescription
aStBottomReqnumberyes
aStMinnumberyes
aStTopReqnumberyes
checksRefusedstring[]yes
lambdaLnumberyes
mHognumberyes
mSagnumberyes
notestring | null
qMaxnumberyes
qMaxAtnumberyes
rigiditystringyes
settlementMaxnumberyes
utilMomentnumberyes
vMaxnumberyes

pad_footing_design ​

Isolated pad footing: bearing under biaxial moment, AS 3600 flexure, one-way and punching shear.

rust
pad_footing_design(json_input: &str) -> String

Input json_input: WasmPadFootingInput

FieldTypeRequiredDescription
asDowelProvidednumberDefault: 0.
asProvidedXnumberDefault: 0.
asProvidedYnumberDefault: 0.
barDiameternumberDefault: 0.
bearingBasisstringDefault: "allowable".
columnBxnumberyes
columnBynumberyes
columnExnumberDefault: 0.
columnEynumberDefault: 0.
columnPositionstringDefault: "interior".
covernumberyes
designSectionDesignSectionDefault: {"kind":"face"}.
fPrimeCnumberyes
fPrimeCColumnnumberDefault: 0.
fSynumberyes
footingBxnumberyes
footingBynumberyes
footingHnumberyes
mxServicenumberDefault: 0.
mxStarnumberyes
myServicenumberDefault: 0.
myStarnumberyes
nServicenumberDefault: 0.
nStarnumberyes
pedestalHeightnumberDefault: 0.
phiBaseDegnumberDefault: 30.
qBearingnumberyes
reinfClassReinforcementClassDefault: "n".
reinforcedbooleanDefault: true.
selfWeightnumberDefault: 0.
standardFootingCodeDefault: "as3600".
vStarnumberDefault: 0.

Result: WasmPadFootingResult

Result fields
FieldTypeRequiredDescription
aSDowelReqnumberyes
aStMinnumberyes
aStXProvidednumberyes
aStXReqnumberyes
aStYProvidednumberyes
aStYReqnumberyes
bearingStressCapacitynumberyes
bearingStressDemandnumberyes
checksRefusedstring[]yes
contactStatestringyes
cornerPressuresnumber[]yes
dEffnumberyes
developmentAvailableMnumberyes
developmentDetailstringyes
developmentLstMnumberyes
governingstringyes
infinitestring[]yesUtilisation fields that are +Infinity (a decided failure), which JSON would otherwise turn into null and so into "not evaluated". The JS adapter restores them.
kUoXnumberyes
kUoYnumberyes
mXDesignnumberyes
mYDesignnumberyes
notestring | null
overturningEnumberyes
overturningELimitnumberyes
phiBendingXnumberyes
phiBendingYnumberyes
phiVPunchnumberyes
phiVUcnumberyes
plainWasmPlainConcreteCheck | nullPresent only when the caller asked for an UNREINFORCED footing; null otherwise, which is what every existing caller sees.
punchingPerimeternumberyes
qAllowablenumberyes
qMaxnumberyes
slidingResistancenumberyes
thicknessRequirednumberyes
utilBearingnumberyes
utilBearingStressnumberyes
utilDevelopmentnumberyes
utilDowelDevelopmentnumberyes
utilDowelTensionnumberyes
utilMaxnumberyes
utilMomentXnumberyes
utilMomentYnumberyes
utilOverturningnumberyes
utilPedestalnumberyes
utilPunchingnumberyes
utilShearnumberyes
utilSlidingnumberyes
vPunchnumberyes
vUcnumberyes
vXnumberyes
vYnumberyes

pedestal_design ​

RC pedestal on a footing: axial and biaxial bending capacity to AS 3600.

rust
pedestal_design(json_input: &str) -> String

Input json_input: PedestalInput

FieldTypeRequiredDescription
aScTotalnumberyesTOTAL longitudinal steel area Asc (mm^2), summed over all bars.
barDianumberyesLongitudinal bar diameter (mm) - to place the bar centroid off the cover.
bracedbooleanyesWhether the pedestal is braced against sidesway (Cl 10.3.1). Pedestals are normally braced by the surrounding construction; braced uses the Le/r < 25 limit, unbraced Le/r < 22.
covernumberyesClear cover to the longitudinal bars (mm).
dcXnumberyesPedestal plan dimension along global X (mm).
dcYnumberyesPedestal plan dimension along global Y (mm).
fPrimeCnumberyesConcrete characteristic strength f'c (MPa).
fPrimeCBearingnumberyesConcrete strength at the bearing interface (MPa) - the weaker of the bearing member and the pedestal. Zero means "use the pedestal f'c" (Cl 12.6 takes the weaker of the two concretes).
fSynumberyesReinforcement yield strength fsy (MPa).
heightnumberyesPedestal height (mm) - used by the (deferred) slenderness classification.
kEffnumberyesEffective length factor k (Cl 10.5.3). Le = k * height. Default 1.0 is conservative (a pedestal fixed into the footing has a lower k, so 1.0 over-estimates slenderness, which only makes the short-column test stricter - the safe direction, since a slender pedestal is refused).
loadBxnumberyesLoaded bearing footprint on the pedestal TOP along X (mm) - the steel column or base plate. Zero means "not supplied", and the Cl 12.6 bearing check is then reported NotDetermined.
loadBynumberyesLoaded bearing footprint on the pedestal top along Y (mm).
mxStarnumberyesDesign moment about the global X axis (N·mm).
myStarnumberyesDesign moment about the global Y axis (N·mm).
nStarnumberyesDesign axial load N* (N), compression positive.

Result: PedestalResult

Result fields
FieldTypeRequiredDescription
adequateboolean | nullSome(true/false) once every check is determined; None while any check is NotDetermined, because an undetermined check cannot be certified adequate.
bearingCheckStateyesCl 12.6 bearing at the loaded interface. Ok when util <= 1; NotDetermined when no loaded area was supplied (bearing cannot be checked without it).
bearingUtilnumberyesCl 12.6 bearing utilisation at the loaded interface (NaN when not determined).
fitmentMaxSpacingnumberyesCl 10.7.4.3(b)(i): maximum fitment spacing = min(Dc, 15.db) for single bars (mm).
fitmentMinDianumberyesCl 10.7.4.3(a) Table: minimum fitment/tie bar diameter for the longitudinal bar size (mm).
fitmentsCheckStateyesCl 10.7.3/10.7.4 fitments. Ok = the detailing requirement is determined (min fitment diameter + max spacing below); it states what to provide, not a demand pass/fail.
phiMNnumberyesBending capacity at the applied axial load phi.Mn (N·mm) for the governing axis.
phiNuonumberyesSquash-load capacity phi.Nuo (N) for the governing axis.
reducedMinPermittedbooleanyesCl 10.7.1(a) proviso: a reduced minimum is permitted when Ag.fsy > 0.15 N*.
slendernessCheckStateyesCl 10.3.1 short-column classification. Ok = short (the M-N check above is valid with slenderness moments taken as zero); NotAdequate = slender (needs the Cl 10.4 moment magnifier, which this module does not perform - the pedestal is refused rather than designed unsafely).
slendernessLimitnumberyesThe short-column limit applied (25 braced / 22 unbraced), Cl 10.3.1.
slendernessRationumberyesSlenderness ratio Le/r (Cl 10.3.1, r per Cl 10.5.2) on the most slender axis.
steelMaxCheckStateyesCl 10.7.1(b): Asc <= 0.04 Ag.
steelMinCheckStateyesCl 10.7.1(a): Asc >= 0.01 Ag.
steelRationumberyesLongitudinal steel ratio Asc/Ag.
utilInteractionnumberyesGoverning M-N interaction utilisation (Cl 10). <= 1.0 is adequate.

pile_design ​

Single pile or bored pier: geotechnical axial capacity (shaft and base) from a soil profile.

rust
pile_design(json_input: &str) -> String

Input json_input: PileInput

FieldTypeRequiredDescription
diameternumberyesPile shaft diameter (m). The tip is at the bottom of the last layer (embedded length = sum of the layer thicknesses).
drivenbooleanyesDriven pile mobilises higher lateral stress on the shaft than a bored one (K factor).
gammaConcretenumberConcrete unit weight for the pier's own weight (kN/m^3), 24 by default; buoyant below the WT. Default: 24.
hStarnumberDesign lateral load at the pier head (kN), applied load_height above ground. 0 = no check. Default: 0.
layersPileSoilLayer[]yesSoil profile, top-down; the pile is embedded through all of it.
loadHeightnumberHeight of the lateral load above ground level (m): the base plate height, or 0 at grade. Default: 0.
nStarnumberyesDesign axial compression N* (kN). 0 -> utilisation reported as 0.
nUpliftnumberDesign uplift (tension) load on the pier (kN). 0 = no check. Default: 0.
phiGnumberyesAS 2159 geotechnical strength reduction factor phi_g (from the risk assessment, ~0.40-0.65).
tensionShaftFactornumberFraction of the compression shaft resistance mobilised in tension (0.7 by default). Default: 0.7.
waterTablenumberyesDepth to the water table (m from the surface); large = dry.

Result: PileResult

Result fields
FieldTypeRequiredDescription
baseUltimatenumberyesUltimate base (end bearing) resistance (kN).
designnumberyesDesign geotechnical strength Rd,g = phi_g . Rd,ug (kN).
embeddedLengthnumberyesEmbedded length (m) = sum of layer thicknesses.
lateralDesignnumberyesLateral: design lateral resistance phi_g x H_u (kN).
lateralMethodstringyes"broms-cohesive" or "broms-cohesionless".
lateralMomentAtHStarnumberyesLateral: the moment in the pier under H* (Broms scales with the load), kNm.
lateralMomentDepthnumberyesLateral: depth below ground to the maximum moment (m).
lateralMomentUltimatenumberyesLateral: maximum bending moment in the pier at the ultimate lateral load (kNm), for the section check; scaled to H* in lateral_moment_at_h_star.
lateralSoilstringyesThe idealised soil the lateral check used: c_u (kPa) or phi' (deg) and gamma' (kN/m^3).
lateralUltimatenumberyesLateral: Broms ultimate lateral load at the head (kN).
pierWeightnumberyesUplift: the pier's own weight (kN), buoyant below the water table.
shaftUltimatenumberyesUltimate shaft (skin friction) resistance (kN).
ultimatenumberyesUltimate geotechnical strength Rd,ug = shaft + base (kN).
upliftDesignnumberyesUplift: design resistance = phi_g x tension shaft + pier weight (the weight is not a geotechnical strength and takes no phi_g) (kN).
upliftShaftUltimatenumberyesUplift: shaft resistance in tension (kN) = tension_shaft_factor x compression shaft.
upliftUltimatenumberyesUplift: ultimate resistance = tension shaft + pier weight (kN).
utilnumberyesUtilisation N* / Rd,g (NaN when no capacity).
utilLateralnumberyesLateral utilisation H* / lateral_design (NaN when not asked).
utilUpliftnumberyesUplift utilisation N_uplift / uplift_design (NaN when not asked).
verifiedbooleanyes
warningsstring[]yes

pilecap_design ​

Pile cap: rigid-cap distribution of the column load and moments to the piles, and pile capacity and uplift checks.

rust
pilecap_design(json_input: &str) -> String

Input json_input: PileCapInput

FieldTypeRequiredDescription
barDianumberMain bar diameter (mm) - to place the bar centroid and set the effective depth. Default: 0.
capBxnumberCap plan dimensions (mm). Default: 0.
capBynumberDefault: 0.
capThicknessnumberCap overall thickness (mm). Default: 0.
capWeightnumberyesCap self-weight + soil overburden (N), added to the axial as uniform compression. 0 to ignore.
columnBxnumberColumn footprint on the cap (mm) - the flexure/shear critical sections start at the column face. Default: 0.
columnBynumberDefault: 0.
covernumberCover to the main (bottom) bars (mm). Default: 0.
fPrimeCnumberCap concrete strength f'c (MPa). Default: 0.
fSynumberReinforcement yield strength fsy (MPa). Default: 0.
mxStarnumberyesColumn design moment about the global X axis (N.m).
myStarnumberyesColumn design moment about the global Y axis (N.m).
nStarnumberyesColumn design axial N* (N), compression positive.
pileCapCompressionnumberyesSingle-pile capacity in compression (N). <= 0 => the compression check is NotDetermined.
pileCapTensionnumberyesSingle-pile capacity in tension / uplift (N), positive magnitude. 0 means the piles are taken as unable to carry tension, so any uplift fails.
pileDianumberPile diameter/side (mm) - the loaded area for the pile-punching check. 0 -> pile punching is not checked (NotDetermined), but column punching still is. Default: 0.
pilesnumber[][]yesPile plan positions (m), measured from the COLUMN / load point (any consistent origin - the centroid is computed from these).
standardFootingCodeThe concrete design standard (AS 3600 default / ACI 318 / Eurocode 2) for the SHALLOW-cap concrete checks (flexure Cl 8.1, one-way shear Cl 8.2, punching Cl 9.3). Omitted -> AS 3600, so every existing payload is unchanged. The DEEP-cap strut-and-tie model (Section 7) is AS 3600 regardless of this field - a per-code strut-and-tie is out of scope (see strut_and_tie). Default: "as3600".

Result: PileCapResult

Result fields
FieldTypeRequiredDescription
adequateboolean | nullSome(true/false) only when the APPLICABLE method is fully checked: a shallow cap by the flexural model (flexure + one-way shear + punching), a deep cap by strut-and-tie. None when the governing method's checks are not all determined (missing geometry) - a deep cap is never certified on the conservative beam model.
capAstReqnumberyes
capFlexureCheckStateyesCap FLEXURE at the column face (AS 3600 Cl 8.1). Ok when the section can carry the design moment (steel found); NotAdequate when it cannot; NotDetermined when no cap geometry supplied.
capMStarnumberyesGoverning design moment at the column face (N.mm) and the required bottom steel (mm^2, total across the cap width) in that direction.
capPunchingCheckStateyesCap PUNCHING (Cl 9.3): the worst of column punching (the column into the cap) and pile punching (a pile up through the cap, with free-edge perimeter truncation for edge/corner piles). Ok when the worst util <= 1. NotDetermined when no cap geometry.
capPunchingUtilnumberyes
capShearCheckStateyesCap one-way (beam) SHEAR at d from the column face (Cl 8.2). Ok when V* <= phi.Vuc.
capShearUtilnumberyes
compressionCheckCheckStateyesCl-independent capacity checks.
compressionUtilnumberyesCompression utilisation = max_reaction / pile_cap_compression.
deepCapbooleanyesTrue when the cap is DEEP - the nearest pile centre is within the effective depth of the column face (a_v <= d). The flexural/beam-shear model is then conservative or inapplicable and the strut-and-tie model (Section 7) governs; strut_tie is that check.
maxReactionnumberyesLargest compression reaction (N).
minReactionnumberyesSmallest reaction (N) - negative means uplift.
reactionsnumber[]yesPer-pile axial reaction (N), compression positive, in the input pile order.
strutTieCheckStateyesDeep-cap STRUT-AND-TIE model (AS 3600:2018 Section 7). Ok when the model is valid (every strut-to-tie angle >= 30 deg, Cl 7 item (g)) and the strut concrete is adequate; NotAdequate when an angle is too shallow or a strut over-stresses; NotDetermined without the geometry.
strutTieAstReqnumberyesRequired bottom TIE steel Ast (mm^2) in the governing direction = T / (0.85 fsy), Cl 7.3.
strutTieMinAngleDegnumberyesMinimum strut-to-tie angle (deg) - below 30 the STM is not permitted.
strutTieUtilnumberyesWorst strut concrete-stress utilisation (Cl 7.2.3, phi_st 0.65, beta_s Cl 7.2.2) at the pile node.
upliftbooleanyesTrue when any pile is in tension (min_reaction < 0).
upliftCheckCheckStateyes
upliftUtilnumberyesUplift utilisation = |min_reaction| / pile_cap_tension when uplift occurs (else 0). Infinite when a pile lifts but no tension capacity was given.

raft_design ​

Raft/mat reinforcement at a point from its plate moment field (Mx, My, Mxy per metre): the Wood-Armer design moments and the required steel each face/direction (mm^2/m), None where a 1 m strip cannot carry the moment. Puts the raft reinforcement engine on a real, tested call path.

rust
raft_design(json_input: &str) -> String

Input json_input: RaftPointInput

FieldTypeRequiredDescription
dnumberyesEffective depth (mm), concrete strength (MPa), steel yield (MPa).
fPrimeCnumberyes
fSynumberyes
mxnumberyesPlate bending + twisting moments per metre (N.mm/m): Mx, My, Mxy.
mxynumberyes
mynumberyes

Result: RaftReo

Result fields
FieldTypeRequiredDescription
astXBottomnumber | nullBottom/top steel in the X and Y directions, mm^2/m. None = the section cannot carry that moment.
astXTopnumber | null
astYBottomnumber | null
astYTopnumber | null
designWoodArmeryesThe Wood-Armer design moments used (per metre: N.mm/m).

raft_fe_design ​

Task 9: the single UI-facing export that turns a polygon raft footprint + column loads into a DESIGNED mat. RaftDesignResult (raft_design::raft_design, Task 7) carries the per-node reinforcement, per-column punching, and ks-envelope, but NOT the mesh/pressure/resultant FIELDS - those live on RaftFeResult (footing_fe::raft_fe_solve, Task 5/6). Neither call alone is the complete answer a UI panel needs, so both run here and are combined into one JSON object. The nominal-ks FE is solved twice this way (once directly for the fields, once again inside raft_design's ks-envelope sweep) - a deliberate, documented duplication (correctness/honesty over a micro-optimisation), not an oversight. HONESTY: verified is hardcoded false - this whole path (mesh -> Winkler FE -> Wood-Armer -> AS 3600 flexure/punching -> ks-envelope) has not been checked end-to-end against an independent worked raft example. Every Option&lt;f64&gt; (the four Ast faces, punching vStar/phiVu/ utilisation) serialises None as JSON null - never a fabricated 0 or a fake pass - and the punching position/warning fields are surfaced verbatim (reshaping vStar/phiVu from N to kN for UI unit consistency, everything else passed through) so an edge/corner column that refused a non-conservative interior-perimeter capacity (see raft_design's module docs) reaches the UI, not just the Rust console. A MeshError from either solve (degenerate/self-intersecting polygon, non-terminating refinement) returns &#123;"error": "mesh: ..."&#125; - a NotDetermined refusal, never a fake mesh; a JSON parse failure returns &#123;"error": "Parse error: ..."&#125;, mirroring footing_fe_pressure above. Neither error path panics on degenerate input.

rust
raft_fe_design(json_input: &str) -> String

Input json_input: WasmRaftFeInput

FieldTypeRequiredDescription
columnsColumnLoad[]yes
dEffnumberyes
eConcretenumberDefault: 30000000000.
fPrimeCnumberyes
fSynumberyes
fidelityMeshFidelityDefault: "light".
holesnumber[][][]Default: [].
ksnumberyes
ksHinumberyes
ksLonumberyes
nunumberDefault: 0.2.
outernumber[][]yes
selfWeightnumberDefault: 0.
thicknessnumberyes

Result: untyped (JSON built with json!, no Rust type)

raft_fe_solve ​

Unstructured-mesh (MITC3) raft-on-Winkler-springs FE solve (Task 5/6 path) - arbitrary polygon footprint, multiple column loads, and (Task 6) per-node recovered resultant fields (mx/my/mxy/vx/vy). Input/output are RaftFeInput/RaftFeResult (fem_core::footing_fe) directly, since both now derive Serialize/Deserialize - no separate Wasm-facing struct needed, unlike the structured footing_fe_pressure above (which predates this and reshapes units/naming for the JS UI). This export exists for Experiment E3b (the OpenSees differential oracle, web_demo/tests/raft_oracle_check.mjs) - it is not yet wired into any Studio UI panel.

rust
raft_fe_solve(json_input: &str) -> String

Input json_input: RaftFeInput

FieldTypeRequiredDescription
columnsColumnLoad[]yes
e_concretenumberyes
ksnumberyes
nunumberyes
polyPolygonyes
self_weightnumberyes
sizingSizingFieldyes
thicknessnumberyes

Result: RaftFeResult

Result fields
FieldTypeRequiredDescription
applied_loadnumberyes
convergedbooleanyes
equilibrium_errornumberyes
meshMesh2dyes
mx_nodesnumber[]yes
mxy_nodesnumber[]yes
my_nodesnumber[]yes
q_maxnumberyes
q_minnumberyes
q_nodesnumber[]yes
sum_reactionnumberyes
uz_nodesnumber[]yes
vx_nodesnumber[]yes
vy_nodesnumber[]yes
warningsstring[]yes

retaining_wall_design ​

Cantilever retaining wall: active pressure, sliding, overturning and bearing (AS/NZS 1170.0 factors), and AS 3600 stem and heel reinforcement.

rust
retaining_wall_design(json_input: &str) -> String

Input json_input: WasmRetainingWallInput

FieldTypeRequiredDescription
baseThicknessnumberyes
baseWidthnumberyes
covernumberyes
fPrimeCnumberyes
fSynumberyes
gammaSoilnumberyes
gamma_concnumberDefault: 24.
kanumberyes
phi_base_degnumberDefault: 30.
qAllowablenumberyes
stemThicknessBasenumberyes
stemThicknessTopnumberyes
toeLengthnumberyes
wallHeightnumberyes

Result: WasmRetainingWallResult

Result fields
FieldTypeRequiredDescription
eccentricitynumberyes
governingstringyes
heelAstnumberyes
heelMomentnumberyes
overturningMomentnumberyes
panumberyes
paHeightnumberyes
qMaxnumberyes
qMinnumberyes
restoringMomentnumberyes
resultantXnumberyes
slidingResistancenumberyes
stemAstnumberyes
stemMomentnumberyes
utilBearingnumberyes
utilHeelnumberyes
utilMaxnumberyes
utilOverturningnumberyes
utilSlidingnumberyes
utilStemnumberyes

settlement_design ​

Shallow-foundation settlement: immediate (elastic) plus primary consolidation, from the soil profile given.

rust
settlement_design(json_input: &str) -> String

Input json_input: SettlementInput

FieldTypeRequiredDescription
bnumberyesFooting plan dimensions (m). The least dimension is used as B in the elastic formula.
ccnumberyesCompression index Cc (virgin line slope).
crnumberyesRecompression index Cr (unload-reload slope). 0 falls back to Cc when overconsolidated.
depthFactornumberyesEmbedment (depth) correction factor I_F (<= 1), Fox's correction. 1.0 (default/conservative) ignores the reduction from founding below the surface.
e0numberyesInitial void ratio e0.
eSoilnumberyesSoil drained (long-term) or undrained elastic modulus for the immediate part (kPa).
hLayernumberyesCompressible layer thickness (m). <= 0 means "no consolidation layer" -> ConsolState::NotComputed.
lnumberyes
nuSoilnumberyesSoil Poisson's ratio (-).
qNetnumberyesNet applied bearing pressure at founding level (kPa) - the pressure ABOVE the pre-existing overburden, which is what drives settlement.
sigmaPcnumberyesPreconsolidation pressure sigma'_p (kPa). <= sigma'_0 is treated as normally consolidated.
sigmaV0numberyesInitial vertical effective stress at mid-layer, sigma'_0 (kPa).
zToMidnumberyesDepth from founding level to the MIDDLE of the compressible layer (m), where the representative stress increase is evaluated.

Result: SettlementResult

Result fields
FieldTypeRequiredDescription
consolStateConsolStateyesWhich e-log(sigma') branch was used (or NotComputed).
consolidationnumberyesPrimary consolidation settlement (mm); 0 with state NotComputed when there is no layer.
deltaSigmaMidnumberyesStress increase at mid-layer from the 2:1 spread, delta-sigma (kPa).
immediatenumberyesImmediate (elastic) settlement (mm).
totalnumberyesTotal settlement (mm) = immediate + consolidation.

strip_footing_design ​

Strip footing under a wall or column line: bearing, AS 3600 flexure and one-way shear.

rust
strip_footing_design(json_input: &str) -> String

Input json_input: WasmStripFootingInput

FieldTypeRequiredDescription
asLongProvidednumberLongitudinal steel provided EACH face, mm^2 (0 = check against max(required, minimum)). Default: 0.
asProvidednumberDefault: 0.
barDiameternumberDefault: 0.
bearingBasisstringDefault: "allowable".
covernumberyes
fPrimeCnumberyes
fSynumberyes
longitudinalBarDiameternumberDefault: 0.
longitudinalSpannumberLength of lost support the strip spans along the wall, m (0 = not designed). Default: 0.
mServicenumberDefault: 0.
mStarnumberDefault: 0.
nServicenumberDefault: 0.
nStarnumberyes
qBearingnumberyes
reinforcedbooleanfalse = an unreinforced strip, checked to AS 3600 Section 20 across its width. Default: true.
selfWeightnumberDefault: 0.
standardFootingCodeDefault: "as3600".
stripThicknessnumberyes
stripWidthnumberyes
wallThicknessnumberyes

Result: WasmStripFootingResult

Result fields
FieldTypeRequiredDescription
aStMinnumberyes
aStReqnumberyes
checksRefusedstring[]yes
contactStatestringyes
dEffnumberyes
developmentDetailstringyes
developmentLstnumberyes
governingstringyes
kUonumberyes
longitudinalWasmStripLongitudinal | nullThe design along the wall, present only when a span of lost support was given.
mDesignnumberyes
notestring | null
phiBendingnumberyes
phiVUcnumberyes
plainWasmPlainConcreteCheck | nullThe Section 20 checks, present only for an unreinforced strip.
qAllowablenumberyes
qMaxnumberyes
qMinnumberyes
utilBearingnumberyes
utilDevelopmentnumberyes
utilMaxnumberyes
utilMomentnumberyes
utilShearnumberyes
vDesignnumberyes

Loads, wind and seismic ​

as1170_1_imposed ​

AS/NZS 1170.1:2002 Table 3.1 lookup: &#123; category, use &#125; (a substring of the specific-use wording) -> the matching row, or an error naming what was not found. The psi occupancy suggested by the row's category (A/B floors -> office/residential, C3-C5/D/E -> storage/other, roofs -> roof rows) is left to the caller/UI to suggest, never forced here.

rust
as1170_1_imposed(json_input: &str) -> String

Input json_input: WasmImposedInput

FieldTypeRequiredDescription
categorystringyes
usestringDefault: "".

Result: ImposedRow

Result fields
FieldTypeRequiredDescription
categorystringyes
notestringyes
point_knnumber | null
udl_kpanumber | null
use_stringyes

as1170_design_spectrum ​

AS 1170.4:2024 Cl 7.2 horizontal design response spectrum, as the (period, acceleration) table the modal response-spectrum solver takes.

rust
as1170_design_spectrum(json_input: &str) -> String

Input json_input: WasmSpectrumInput

FieldTypeRequiredDescription
annual_probabilitynumber | nullDefault: null.
locationstring | nullDefault: null.
munumber | nullDefault: null.
soilstringDefault: "".
spnumber | nullDefault: null.
systemstring | nullDefault: null.
znumber | nullDefault: null.

Result: any

as1170_dynamic_base_shear_floor ​

AS 1170.4:2024 Cl 7.2: the floor under a dynamic analysis's base shear. A modal analysis under-predicts base shear whenever the modes it keeps miss mass. The clause requires the design base shear to be at least 70 percent (50 above 50 m) of the equivalent-static value computed with the period from Eq 6.2(7), and requires every design action AND DISPLACEMENT to be scaled by k when it is not. The displacement half is the part that gets forgotten, so the result says it.

rust
as1170_dynamic_base_shear_floor(json_input: &str) -> String

Input json_input: WasmDynamicFloorInput

FieldTypeRequiredDescription
annual_probabilitynumber | nullDefault: null.
height_mnumberyes
ktnumber | nullEq 6.2(7) inputs: kt and the structure height hn, metres. Default: null.
locationstring | nullDefault: null.
munumber | nullDefault: null.
soilstringDefault: "".
spnumber | nullDefault: null.
systemstring | nullDefault: null.
v_dynamicnumberyesThe base shear the dynamic analysis produced, newtons.
weightnumberyesSeismic weight Wt, newtons - the same mass the dynamic analysis used.
znumber | nullDefault: null.

Result: any

as1170_open_wind ​

AS/NZS 1170.2 wind on open structures: hoardings, free-standing walls and free roofs (Appendix B).

rust
as1170_open_wind(json_input: &str) -> String

Input json_input: WasmOpenWindInput

FieldTypeRequiredDescription
alpha_degnumberDefault: 0.
bnumberDefault: 0.
blockagenumberDefault: 0.
cnumberDefault: 0.
casestringDefault: "".
cp_enumberDefault: 0.
dnumberDefault: 0.
enclosurestringDefault: "".
frictionstringDefault: "".
hnumberDefault: 0.
hcnumberDefault: 0.
k_lnumberDefault: 1.
kindstringyes
m_dnumberDefault: 1.
m_snumberDefault: 1.
m_tnumberDefault: 1.
parallelbooleanDefault: false.
parapet_hpnumber | nullDefault: null.
regionstringDefault: "A".
return_cornerbooleanDefault: false.
return_period_yearsnumberDefault: 500.
roofstringDefault: "".
slope_degnumberDefault: 0.
soliditynumberDefault: 1.
terrainstringDefault: "TC2".
tributary_area_m2numberDefault: 10.
wcnumberDefault: 0.
windstringDefault: "".

Result: untyped (JSON built with json!, no Rust type)

as1170_open_wind_tables ​

Every table cell wind_as1170_open.rs carries, for the ledger check.

rust
as1170_open_wind_tables() -> String

Result: untyped (no typed serialisation found)

as1170_part_force ​

AS 1170.4:2024 Section 8: the earthquake force on a non-structural part or component.

rust
as1170_part_force(json_input: &str) -> String

Input json_input: WasmPartInput

FieldTypeRequiredDescription
annual_probabilitynumber | null
ductilitystring"flexible-ductile", "rigid", "non-ductile" or "connection" (Cl 8.2). Default: "".
floor_accelerationnumber | nullCl 8.2(1): effective floor acceleration at the component's level, as a fraction of g. It is floored at k_p Z C_h(0) by the clause, and the result says whether that floor applied. Default: null.
hn_mnumber | nullCl 8.3: total height of the structure above the structural base, metres. Default: null.
hx_mnumber | nullCl 8.3: height at which the component is attached above the structural base, metres. Default: null.
importancestring"importance-level-4", "life-safety-critical" or "other" (Cl 8.2). Default: "".
locationstring | nullTable 3.2 location name, or pass z directly from Figure 3.2. Default: null.
mechanical_or_electricalbooleanCl 8.1.3: a mechanical or electrical component also takes a vertical force of half the horizontal one, NOT acting at the same time. Set this and the result carries it. Default: false.
methodstringDefault: "".
mountingstring"flexible-spring-mechanical" or "other" (Cl 8.2). Default: "".
soilstringyesSite sub-soil class Ae to Ee; Table 6.4's BRACKETED Ch(0) is the one Section 8 uses.
weight_nnumberyesW_c, the component's seismic weight, in NEWTONS.
znumber | nullDefault: null.

Result: WasmPartResult

Result fields
FieldTypeRequiredDescription
a_cnumberyes
a_floornumberyes
acceleration_flooredbooleanyes
boundstringyes"computed", "lower" (0.05 W_c governed) or "upper" (0.5 W_c governed).
clausestringyes
force_nnumberyes
height_amplificationnumber | null
i_cnumberyes
r_cnumberyes
unbounded_nnumberyes
vertical_nnumber | nullCl 8.1.3's vertical force, when the component is mechanical or electrical. It is an ALTERNATIVE load case to the horizontal force, never an addition to it.

as1170_portal_wind ​

AS/NZS 1170.2 wind pressures on a portal frame building, including dominant openings.

rust
as1170_portal_wind(json_input: &str) -> String

Input json_input: WasmPortalWindInput

FieldTypeRequiredDescription
alpha_degnumberDefault: 0.
bnumberyes
dnumberyes
h_enumberyes
m_dnumberDefault: 1.
m_snumberDefault: 1.
m_tnumberDefault: 1.
open_rationumberDefault: 0.
openingDominantOpening | nullDefault: null.
regionstringyes
return_period_yearsnumberDefault: 500.
roofstringDefault: "".
terrainstringyes
tribnumberDefault: 0.

Result: untyped (JSON built with json!, no Rust type)

as1170_seismic_base_shear ​

AS 1170.4 equivalent static base shear.

rust
as1170_seismic_base_shear(json_input: &str) -> String

Input json_input: WasmSeismicInput

FieldTypeRequiredDescription
annual_probabilitynumber | null
height_mnumber | nullDefault: null.
ktnumber | nullDefault: null.
locationstring | nullDefault: null.
munumber | nullDefault: null.
periodnumber | nullDefault: null.
r_unumber | nullDefault: null.
s_pnumber | nullDefault: null.
soilstringyes
spnumber | nullDefault: null.
systemstring | nullDefault: null.
weightnumberyes
znumber | nullDefault: null.
zonestring | nullDefault: null.

Result: WasmSeismicResult

Result fields
FieldTypeRequiredDescription
c_hnumberyes
cdnumberyes
citationstringyes
flooredbooleanyes
kpnumberyes
kp_z_usednumberyes
munumberyes
spnumberyes
t1numberyes
vnumberyes
znumberyes

as1170_snow_load ​

Table 5.2's named sites are NOT carried: the published table is a scan, and transcribing ground snow loads out of OCR would put invented numbers into designs. A request naming a site is refused with what to do instead.

rust
as1170_snow_load(json_input: &str) -> String

Input json_input: WasmSnowInput

FieldTypeRequiredDescription
altitude_mnumberHeight above the Australian Height Datum or New Zealand mean sea level, metres. Default: 0.
annual_probabilitynumber | nullAnnual probability of exceedance, as a fraction: 1/500 is 0.002 (Table 5.1). Default: null.
exposurestringsheltered, semi-sheltered or windswept (Cl 4.2.2). Default: "".
locationstring | nullA named Table 5.2 site, which this build does not carry: refused by name if given. Default: null.
regionstringAS/NZS 1170.3:2003 snow region: AS, AT, NzNorth, NzSouth (alpine); AN, AC, AsSub, AtSub (sub-alpine Australia); N1 to N5 (sub-alpine New Zealand). Default: "".
roof_pitch2_degnumber | nullThe second slope of a duo-pitched roof; absent for a mono-pitched one. Default: null.
roof_pitch_degnumberRoof slope, degrees. Default: 0.
terrain_factornumber | nullTerrain classification factor kt, Australian ALPINE regions only: 0.7, 1.0 or 1.3 (Cl 5.3). Default: null.

Result: RoofSnow

Result fields
FieldTypeRequiredDescription
balanced_onlybooleanyes
casesSnowCase[]yes
cenumberyes
citationstringyes
equationstringyes
gamma_kn_m3numberyes
kpnumberyes
overhang_kn_mnumberyesCl 4.2.3: the edge overhang load, kN per metre of eave, from the peak case.
peak_kpanumberyesThe largest load any case puts on any slope, kPa - the number a first pass sizes to.
sg_kpanumberyes

as1170_tables ​

The engine's AS/NZS 1170 tables, for the ledger. Extended by later tasks.

rust
as1170_tables() -> String

Result: untyped (JSON built with json!, no Rust type)

as1170_wind_design ​

AS/NZS 1170.2 building wind design: pressures on each surface for the given building.

rust
as1170_wind_design(json_input: &str) -> String

Input json_input: WasmWindDesignInput

FieldTypeRequiredDescription
alpha_degnumberDefault: 0.
bnumberyes
dnumberyes
h_enumberyes
m_dnumberDefault: 1.
m_snumberDefault: 1.
m_tnumberDefault: 1.
open_rationumberDefault: 0.
regionstringyes
return_period_yearsnumberDefault: 500.
roofstringDefault: "".
terrainstringyes

Result: WindDesign

Result fields
FieldTypeRequiredDescription
standardstringyes
surfacesSurfacePressure[]yes
tablesTableStatus[]yesPer-table verification, the adapter's own statement (WindStandard::table_status).
traceStep[]yes
verifiedbooleanyesALWAYS false until an engineer cross-checks the coefficient tables against the standard.
warningsstring[]yes

as1170_wind_pressure ​

AS/NZS 1170.2 site wind speed and pressure for a region, terrain and height.

rust
as1170_wind_pressure(json_input: &str) -> String

Input json_input: WasmWindInput

FieldTypeRequiredDescription
heightnumberyes
regionstringyes
return_period_factornumberDefault: 1.
terrainstringyes

Result: WasmWindResult

Result fields
FieldTypeRequiredDescription
mCnumberyes
mZcatnumberyes
pnumberyes
qnumberyes
vDesnumberyes
vRnumberyes

as1170_wind_tables ​

Full AS/NZS 1170.2 wind design: site speed -> q + per-surface shape factors + net pressures for theta=0 and theta=90, with a clause trace + verified:false warnings. Returns the serialised fem_core::wind_core::WindDesign. THE ENGINE'S WIND TABLES, TABULATED FOR THE LEDGER GATE (docs/reference/wind_validation.md, web_demo/tests/wind_ledger_check.mjs): every cell the standard prints, read back off the same functions the design uses, so the ledger's transcription of AS/NZS 1170.2:2021 is compared to what the product computes and not to a second copy of the numbers.

rust
as1170_wind_tables() -> String

Result: untyped (JSON built with json!, no Rust type)

asce7_roof_pressure_coefficient ​

ASCE 7-22 Fig. 27.3-1: external pressure coefficient C_p for a roof.

rust
asce7_roof_pressure_coefficient(json_input: &str) -> String

Input json_input: WasmAsce7RoofCpInput

FieldTypeRequiredDescription
dist_from_windward_edge_over_hnumberDistance from the windward edge divided by h. Used by the parallel-to-ridge case, which zones the roof by distance rather than by slope. Default: 0.
facestringyes"windward", "leeward" or "parallel" (wind parallel to the ridge).
h_over_lnumberyesh/L - mean roof height over the plan dimension along the wind.
theta_degnumberyesRoof angle theta, degrees from horizontal.

Result: WasmAsce7CpResult

Result fields
FieldTypeRequiredDescription
c_pnumberyes
c_p_bnumber | nullDesign case B where Fig. 27.3-1 gives a second one; null when it does not. BOTH cases must be checked - B is often a downward pressure and governs different members from A.
clausestringyes
usesstringyes"q_z" (point height, windward wall only) or "q_h" (mean roof height, everything else). The figure chooses this, not the caller.

asce7_surface_pressure ​

ASCE 7-22 Eq. 27.3-1: p = q G C_p on one surface.

rust
asce7_surface_pressure(json_input: &str) -> String

Input json_input: WasmAsce7SurfacePressureInput

FieldTypeRequiredDescription
c_pnumberyes
gnumberyesGust-effect factor G, Section 26.11. NO DEFAULT: 0.85 is the rigid-building value and this build does not classify a model as rigid or flexible, so it must be supplied.
q_h_panumberyesq_h, Pa - the velocity pressure at mean roof height.
q_z_panumberyesq_z, Pa - the velocity pressure at the height of the point considered.
usesstringyes"q_z" or "q_h" - which velocity pressure the figure sends to this surface. Take it from the uses field of the coefficient call rather than choosing it.

Result: WasmAsce7SurfacePressureResult

Result fields
FieldTypeRequiredDescription
c_pnumberyes
clausestringyes
gnumberyes
p_panumberyesp = q G C_p, Pa. Positive acts toward the surface, negative away from it.
q_sourcestringyes
q_used_panumberyes

asce7_velocity_pressure ​

ASCE 7-22 Eq. 26.10-1: q_z = 0.613 K_z K_zt K_d K_e V^2, SI. Every factor comes back beside the pressure, because a calc sheet has to show the working and a checker needs z_used_m - the 4.6 m floor of Table 26.10-1 note 1 means the height used is not always the height asked for. This is the VELOCITY pressure only. Pressure coefficients, gust factors and internal pressure are not carried yet, so nothing here is a design pressure on a surface.

rust
asce7_velocity_pressure(json_input: &str) -> String

Input json_input: WasmAsce7VelocityPressureInput

FieldTypeRequiredDescription
basic_wind_speed_msnumberyesBasic wind speed V, m/s (Section 26.5 hazard maps).
exposurestringyesExposure category letter: "B", "C" or "D" (Section 26.7).
ground_elevation_mnumberGround elevation above mean sea level, m, for K_e. NOT the terrain gradient height. Default: 0.
k_dnumberyesWind directionality factor K_d, Table 26.6-1. 0.85 for buildings.
k_ztnumberTopographic factor K_zt, Section 26.8.2. 1.0 on flat terrain. Default: 1.
z_mnumberyesHeight above ground, m.

Result: WasmAsce7VelocityPressureResult

Result fields
FieldTypeRequiredDescription
clausestringyes
k_dnumberyes
k_enumberyes
k_znumberyes
k_ztnumberyes
q_panumberyes
z_used_mnumberyes

asce7_wall_pressure_coefficient ​

ASCE 7-22 Fig. 27.3-1: external pressure coefficient C_p for a wall.

rust
asce7_wall_pressure_coefficient(json_input: &str) -> String

Input json_input: WasmAsce7WallCpInput

FieldTypeRequiredDescription
facestringyes"windward", "side" or "leeward".
l_over_bnumberyesL/B - plan dimension along the wind over the dimension across it.

Result: WasmAsce7CpResult

Result fields
FieldTypeRequiredDescription
c_pnumberyes
c_p_bnumber | nullDesign case B where Fig. 27.3-1 gives a second one; null when it does not. BOTH cases must be checked - B is often a downward pressure and governs different members from A.
clausestringyes
usesstringyes"q_z" (point height, windward wall only) or "q_h" (mean roof height, everything else). The figure chooses this, not the caller.

distribute_seismic_forces ​

Distributes a seismic base shear up the height of the building (AS 1170.4).

rust
distribute_seismic_forces(json_input: &str) -> String

Input json_input: WasmSeismicDistributionInput

FieldTypeRequiredDescription
baseShearnumberyes
directionnumber[]yes
distributionDistributionRuleWhich standard's vertical distribution rule: "as1170_4" (the default, and what every caller that predates this field gets) or "nzs1170_5". See DistributionRule in fem-core. Default: "as1170_4".
eccentricityFractionnumberAS 1170.4:2024 Cl 6.6: the accidental eccentricity as a fraction of the storey's plan dimension across the action. The clause says +/- 0.1b; 0.0 (the default) keeps the force at the nominal centre of mass. Both signs have to be run to find the adverse one. Default: 0.
loadCaseIdintegeryes
modelWasmModelyes
periodnumberyes
storeysWasmStoreyDefinition[]Default: [].
vertical_axisstring | nullDefault: null.

Result: WasmSeismicDistributionResult

Result fields
FieldTypeRequiredDescription
knumberyes
nodalLoadsWasmNodalLoad[]yes
storeyForcesWasmStoreyForce[]yes
sumForcesnumberyes
totalBaseShearnumberyes

ec1_peak_velocity_pressure ​

EN 1991-1-4 Eq. 4.8: q_p(z) = [1 + 7 I_v(z)] (1/2) rho v_m(z)^2, SI. Every factor comes back beside the pressure so a calc sheet can show the working, including z_used_m - Table 4.1's z_min means the height used is not always the height asked for. THE NATIONAL ANNEX IS THE CALLER'S. rho, c_0 and k_I default to the EN's recommended values and are overridable; the basic wind velocity has no default at all, because there is no such thing as a default site. This carries the EN procedure, not any country's Annex data. Peak VELOCITY pressure only - c_pe, c_pi and c_s c_d are not carried, so this is not a pressure on a surface.

rust
ec1_peak_velocity_pressure(json_input: &str) -> String

Input json_input: WasmEc1PeakVelocityPressureInput

FieldTypeRequiredDescription
c_0numberOrography factor c_0(z). 1.0 where orography is not significant. Default: 1.
k_inumberTurbulence factor k_I. A National Annex parameter; the EN recommends 1.0. Default: 1.
rho_kg_m3numberAir density, kg/m3. A NATIONAL ANNEX parameter; the EN recommends 1.25. Default: 1.25.
terrainstringyesTerrain category label: "0", "I", "II", "III" or "IV" (Table 4.1).
v_b_msnumberyesBasic wind velocity v_b, m/s, from the national map (Section 4.2).
z_mnumberyesHeight above ground, m.

Result: WasmEc1PeakVelocityPressureResult

Result fields
FieldTypeRequiredDescription
c_0numberyes
c_enumberyesq_p / q_b, EN's exposure factor c_e(z) - the number an engineer recognises at a glance.
c_rnumberyes
clausestringyes
i_vnumberyes
q_b_panumberyes
q_p_panumberyes
v_m_msnumberyes
z_used_mnumberyes

en1991_1_7_robustness ​

EN 1991-1-7 robustness: tie forces and the key-element requirements for the consequence class.

rust
en1991_1_7_robustness(json_input: &str) -> String

Input json_input: WasmRobustnessInput

FieldTypeRequiredDescription
classstringyes
column_storey_reaction_knnumberDefault: 0.
constructionstringDefault: "".
gk_kpanumberDefault: 0.
psinumberDefault: 1.
qk_kpanumberDefault: 0.
storeysintegerDefault: 1.
tie_spacing_mnumberDefault: 0.
tie_span_mnumberDefault: 0.
wall_clear_height_mnumberDefault: 0.
wall_plan_area_mm2numberDefault: 0.
wall_thickness_mnumberDefault: 0.
z_mnumberDefault: 0.

Result: RobustnessResult

Result fields
FieldTypeRequiredDescription
classConsequencesClassyes
class_examplesstringyes
class_labelstringyes
constructionConstructionyes
f_tnumber | nullA6.2: F_t (kN/m or kN), None for framed construction.
horizontal_ties_requiredbooleanyesWhether the strategy asks for horizontal ties at all (Class 2 and above).
key_element_ad_kpanumberyesA9: the key-element accidental design action A_d (kN/m2), horizontal and vertical, one at a time.
notional_removal_damage_limitnumberyesA5(c): the admissible local damage on notional removal, 15 percent of the floor in each of two adjacent storeys.
standardstringyes
stepsStep[]yes
strategystringyes
t_internalnumberyesA6.1 framed: internal tie force T_i (kN) and perimeter tie force T_p (kN); A6.2 wall: internal T_i (kN/m of floor width) and peripheral T_p (kN).
t_perimeternumberyes
t_verticalnumber | nullA7: framed, the accidental design tensile force on the column (kN); wall, the vertical tie force (N per the formula, reported in kN/m of wall).
t_vertical_unitsstringyes
tie_unitsstringyesThe unit the horizontal tie forces are in: "kN" (framed) or "kN/m, kN" (wall internal, peripheral).
verifiedbooleanyes
vertical_ties_requiredbooleanyesWhether the strategy asks for vertical ties or the notional-removal alternative (Class 2b).
warningsstring[]yes

en1991_1_7_tables ​

Every constant en1991_1_7.rs carries, for the ledger check.

rust
en1991_1_7_tables() -> String

Result: untyped (no typed serialisation found)

en1991_3_crane ​

EN 1991-3 crane actions: wheel loads, horizontal forces and dynamic factors.

rust
en1991_3_crane(json_input: &str) -> String

Input json_input: WasmCraneInput

FieldTypeRequiredDescription
bridge_weight_knnumberyes
buffer_stiffness_kn_mnumberDefault: 0.
buffer_xinumberDefault: 0.5.
crab_weight_knnumberDefault: 0.
driven_wheelsintegerDefault: 2.
fatigue_classinteger | nullDefault: null.
frictionnumberDefault: 0.2.
guide_spacing_mnumberDefault: 0.
hoist_load_knnumberyes
hoisting_classintegerDefault: 2.
hoisting_speed_msnumberDefault: 0.1.
min_approach_mnumberDefault: 1.
phi_5numberDefault: 1.5.
skew_angle_radnumberDefault: 0.015.
span_mnumberyes
travel_speed_msnumberDefault: 0.
wheel_pair_distances_mnumber[]Default: [].
wheel_spacings_mnumber[]Default: [3].
wheels_per_railintegerDefault: 2.

Result: CraneResult

Result fields
FieldTypeRequiredDescription
axle_spacings_mnumber[]yes
axle_weights_knnumber[]yesThe axle train for the runway beam: the group 1 wheel loads on rail 1 at the wheel spacings.
buffer_h_b1_knnumberyesBuffer forces (kN): H_B,1 from the crane's kinetic energy, H_B,2 from the crab.
buffer_h_b2_knnumberyes
drive_force_knnumberyesDrive force K (kN), the lever l_s (m), the moment M (kNm).
drive_moment_knmnumberyes
fatigue_q_e_normal_knnumber | nullFatigue damage-equivalent wheel loads (kN per wheel), normal and shear, if a class was given.
fatigue_q_e_shear_knnumber | null
groupsLoadGroup[]yes
l_s_mnumberyes
phi_1number[]yes
phi_2numberyes
phi_4numberyes
phi_5numberyes
phi_7numberyes
q_r_max_acc_staticnumberyes
q_r_max_knnumberyesThe characteristic maximum wheel load (group 1, phi_1 = 1.1 and phi_2), kN per wheel.
q_r_max_staticnumberyesStatic wheel loads (no dynamic factor), kN per wheel: loaded crane near rail (Q_r,max), loaded far rail (Q_r,(max)), unloaded near rail (Q_r,min), unloaded far rail (Q_r,(min)).
q_r_min_acc_staticnumberyes
q_r_min_knnumberyesThe characteristic minimum wheel load (unloaded crane, phi_1 = 0.9), kN per wheel.
q_r_min_staticnumberyes
skew_fnumberyesSkewing: f, S (kN), and the transverse wheel forces per wheel pair on rails 1 and 2 (kN).
skew_h_t_rail1_knnumber[]yes
skew_h_t_rail2_knnumber[]yes
skew_s_knnumberyes
standardstringyes
stepsStep[]yes
verifiedbooleanyes
warningsstring[]yes
xi_1numberyes

en1991_3_tables ​

Every constant crane_en1991_3.rs carries, for the ledger check.

rust
en1991_3_tables() -> String

Result: untyped (no typed serialisation found)

generate_load_combinations ​

Generates the AS/NZS 1170.0 load combinations for the load cases and occupancy given.

rust
generate_load_combinations(json_input: &str) -> String

Input json_input: WasmComboGenInput

FieldTypeRequiredDescription
codestringWhich code's combination set: "asnzs" (default) | "asce7" | "eurocode". Default: "".
load_casesWasmLoadCase[]yes
occupancystring | nullAS/NZS 1170.0 Table 4.1 occupancy: resolves psi_s/psi_l/psi_c/psi_e at once. Overridden per-field by any of the explicit psi_* fields above. Default: null.
psi0_qnumber | nullDefault: null.
psi0_snumber | nullDefault: null.
psi0_wnumber | nullDefault: null.
psi1_qnumber | nullDefault: null.
psi2_qnumber | nullDefault: null.
psi_cnumber | nullDefault: null.
psi_enumber | nullAS/NZS 1170.0 Table 4.1 earthquake combination factor. Default: null.
psi_lnumber | nullDefault: null.
psi_snumber | nullDefault: null.

Result: WasmComboGenOutput

Result fields
FieldTypeRequiredDescription
combinationsWasmLoadCombination[]yes

nzs1170_design_coefficient ​

NZS 1170.5:2004 Eq 5.2(1)/(2): Cd(T1) = C(T1) Sp / k_mu, floored.

rust
nzs1170_design_coefficient(json_input: &str) -> String

Input json_input: WasmNzDesignCoefficientInput

FieldTypeRequiredDescription
annual_probabilitynumberyes
munumberyesStructural ductility factor mu, Cl 4.3.
n_maxnumber | nullDefault: null.
near_fault_kmnumber | nullDefault: null.
periodnumberyesT1, the largest translational period in the direction considered (Cl 4.1).
soilstringyes
spnumberyesStructural performance factor Sp, Cl 4.4.
znumberyes

Result: WasmNzDesignCoefficientResult

Result fields
FieldTypeRequiredDescription
c_tnumberyes
cdnumberyes
cd_unfloorednumberyes
clausestringyes
floornumberyes
floor_governsbooleanyesTrue when Eq 5.2(2)'s floor decided the answer.
k_munumberyes
rnumberyes
r_cappedbooleanyes
spnumberyes

nzs1170_design_spectrum ​

NZS 1170.5 design spectrum for a site.

rust
nzs1170_design_spectrum(json_input: &str) -> String

Input json_input: WasmNzDesignSpectrumInput

FieldTypeRequiredDescription
annual_probabilitynumberyes
munumberyesStructural ductility factor mu, Cl 4.3.
n_maxnumber | nullDefault: null.
near_fault_kmnumber | nullDefault: null.
soilstringyes
spnumberyesStructural performance factor Sp, Cl 4.4.
znumberyes

Result: WasmNzDesignSpectrumResult

Result fields
FieldTypeRequiredDescription
citationstringyesThe same sentence the UI prints beside the numbers, so the reading travels with them.
clausestringyes
flooredbooleanyesTrue when the floor decided at least one ordinate, for a one-line caveat.
floored_periodsnumber[]yesThe periods where Eq 5.2(2)'s floor decided the ordinate rather than Eq 5.2(1).
munumberyes
points[number, number][]yes(period s, Cd) pairs, one per Table 3.1 period, ascending.
rnumberyes
r_cappedbooleanyes
spnumberyes
znumberyes

nzs1170_equivalent_static ​

NZS 1170.5:2004 Eq 6.2(1) and 6.2(2): V = Cd(T1) Wt, then Fi = Ft + 0.92 V Wi hi / SUM(Wi hi).

rust
nzs1170_equivalent_static(json_input: &str) -> String

Input json_input: WasmNzEquivalentStaticInput

FieldTypeRequiredDescription
annual_probabilitynumberyes
levels[number, number][]yes(seismic weight N, height above base m) per level, in any order.
munumberyes
n_maxnumber | nullDefault: null.
near_fault_kmnumber | nullDefault: null.
periodnumberyes
soilstringyes
spnumberyes
weightnumber | nullSeismic weight Wt, newtons (Cl 4.2). Omit to have it summed from levels. Default: null.
znumberyes

Result: WasmNzEquivalentStaticResult

Result fields
FieldTypeRequiredDescription
base_shearnumberyes
cdnumberyes
cd_unfloorednumberyes
clausestringyes
floor_governsbooleanyes
k_munumberyes
levelsWasmNzStoreyForce[]yes
seismic_weightnumberyes

nzs1170_part_force ​

NZS 1170.5:2004 Eq 8.2(1) and 8.5(1): the horizontal design action on a part.

rust
nzs1170_part_force(json_input: &str) -> String

Input json_input: WasmNzPartInput

FieldTypeRequiredDescription
annual_probabilitynumberyes
cphnumberyesPart horizontal response factor C_ph, Table 8.2.
hinumberyesHeight of the part's attachment above the base, m. Below ground floor reads as ground floor.
hnnumberyesHeight from the base to the uppermost seismic mass, m.
n_maxnumber | nullDefault: null.
near_fault_kmnumber | nullDefault: null.
rpnumberyesPart risk factor R_p, Table 8.1.
soilstringyes
tpnumberyesPeriod of the part itself, seconds (Cl 8.4).
wpnumberyesWeight of the part, newtons.
znumberyes

Result: WasmNzPartResult

Result fields
FieldTypeRequiredDescription
c_hinumberyes
c_inumberyes
c_zeronumberyesC(0), from Table 3.1's BRACKETED column - not the general spectrum at zero period.
cappedbooleanyesTrue when 3.6 W_p decided the answer.
clausestringyes
cpnumberyes
forcenumberyesF_ph, newtons, after Eq 8.5(1)'s 3.6 W_p cap.
unboundednumberyes

nzs1170_site_hazard ​

NZS 1170.5:2004 Eq 3.1(1): C(T) = Ch(T) Z R N(T,D).

rust
nzs1170_site_hazard(json_input: &str) -> String

Input json_input: WasmNzSiteHazardInput

FieldTypeRequiredDescription
annual_probabilitynumberyesAnnual probability of exceedance, as a fraction: 1/500 is 0.002 (Table 3.5).
n_maxnumber | nullNmax(T) from Table 3.7, which this build does not carry. Default: null.
near_fault_kmnumber | nullShortest distance to a Table 3.6 fault, km. With n_max, drives Cl 3.1.6. Default: null.
periodnumberyesPeriod T, seconds. Table 3.1 stops at 4.5 s and so does this.
soilstringyesSite subsoil class A, B, C, D or E (Cl 3.1.3). A and B are one column of Table 3.1.
znumberyesHazard factor Z (Cl 3.1.4, Table 3.3).

Result: WasmNzSiteHazardResult

Result fields
FieldTypeRequiredDescription
c_tnumberyes
ch_tnumberyes
clausestringyes
n_t_dnumberyes
rnumberyes
r_cappedbooleanyesTrue when Cl 3.1.1's cap held Z R down to 0.7.
r_tablenumberyes
znumberyes

p354_floor_vibration ​

Floor vibration response to walking (SCI P354) from the modal result.

rust
p354_floor_vibration(json_input: &str) -> String

Input json_input: WasmFloorVibrationInput

FieldTypeRequiredDescription
cutoff_hznumber | nullDefault: null.
dampingstringDefault: "".
damping_rationumber | nullDefault: null.
floorstringDefault: "".
limitnumberDefault: 8.
modesFloorMode[]yes
pace_max_hznumberDefault: 2.2.
pace_min_hznumberDefault: 1.8.
person_weight_nnumberDefault: 746.
verticalbooleanDefault: true.
walking_path_mnumber | nullDefault: null.
weightingstringDefault: "".

Result: FloorVibrationResult

Result fields
FieldTypeRequiredDescription
base_valuenumberyes
cutoff_hznumberyes
damping_rationumberyes
floor_classstringyes"low" or "high", by Table 6.1.
fundamental_hznumberyes
governingstringyes
governing_pace_hznumberyes
limitnumberyes
okbooleanyes
response_factornumberyesThe governing response factor (the larger of steady-state and transient) and where it came from.
standardstringyes
steady_stateSteadyStateResult | null
stepsStep[]yes
transientTransientResultyes
verifiedbooleanyes
warningsstring[]yes
weightingWeightingyes

p354_tables ​

Every constant floor_vibration.rs carries, for the ledger check.

rust
p354_tables() -> String

Result: untyped (no typed serialisation found)

Timber ​

as1720_timber_check ​

AS 1720.1 timber member check (mm, N and N.mm; see docs/adr/0014).

rust
as1720_timber_check(json_input: &str) -> String

Input json_input: WasmAs1720Input

FieldTypeRequiredDescription
a_tnumber | nullNet tension area (mm²) when holes reduce it; defaults to the gross area. Default: null.
bnumberBreadth of ONE board (mm). Stability uses it; area and Z use n_boards · b. Default: 0.
categoryintegerApplication category 1, 2 or 3 (Table 2.1). Default: 2.
dnumberDefault: 0.
g13xnumberEffective length factors g13 about x (major) and y (minor), Table 3.2. Default: 1.
g13ynumberDefault: 1.
gradestringDefault: "F17".
high_tempbooleanSeasoned timber in Queensland north of 25°S or elsewhere north of 16°S: k6 = 0.9. Default: false.
k1numberDefault: 1.
k12number | nullDefault: null.
k12cnumber | nullDefault: null.
k4number | nullDefault: null.
k6number | nullDefault: null.
k9number | nullDefault: null.
la_phinumber | nullSpacing of torsional restraints (only for TensionAndTorsional). Default: null.
la_ynumber | nullSpacing of restraints against lateral (minor-axis) displacement, for S1 and S4. Defaults to length. Default: null.
le_bendingnumberDefault: 0.
le_compressionnumberDefault: 0.
lengthnumber | nullMember length L (mm): the span for k9 and the length for column buckling. Default: null.
m_starnumberDefault: 0.
n_boardsintegerBoards nailed or screwed side by side (a "2/190x35" is 2). Default: 1.
n_membersintegerMembers in the parallel system for k9 (1 = single member) and their spacing (mm). Default: 1.
n_starnumberDefault: 0.
nt_starnumberDefault: 0.
partial_seasoningbooleanUnseasoned timber that will partly season in service: k4 by least dimension (Table 2.5). Default: false.
rnumberRatio of temporary to total design action effect (Appendix E2); ≤ 0 is taken as 0.25. Default: 0.25.
restraint_edgeRestraintEdgeDefault: "compression".
seasonedbooleanDefault: true.
spacingnumberDefault: 0.
speciesSpeciesDefault: "softwood".
v_starnumberDefault: 0.

Result: WasmAs1720Result

Result fields
FieldTypeRequiredDescription
Enumberyes
S1numberyes
S3numberyes
S4numberyes
continuousRestraintbooleanyes
fBnumberyes
fCnumberyes
fSnumberyes
fTnumberyes
governingstringyes
k1numberyes
k12numberyes
k12cnumberyes
k12xnumberyes
k12ynumberyes
k4numberyes
k6numberyes
k9numberyes
phinumberyes
phiMnumberyes
phiNnumberyesCompression capacity, the smaller of the two axes.
phiNcxnumberyes
phiNcynumberyes
phiNtnumberyes
phiVnumberyes
rhoBnumberyes
rhoCnumberyes
stabilityAssessedbooleanyes
utilMnumberyes
utilMaxnumberyes
utilNnumberyes
utilNtnumberyes
utilVnumberyes