Appearance
WASM exports
Generated by
scripts/gen_wasm_manifest.mjsfrom the Rust source - do not edit. Runnpm run docs:wasmto 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) -> StringInput model_json: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | yes |
Result: AnalysisReport
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
maxDisplacements | DisplacementExtreme[] | yes | |
maxReactions | ReactionExtreme[] | yes | |
memberUtilisation | MemberUtilSummary[] | yes | |
passFailRollup | PassFailRollup | yes | |
stats | ModelStats | yes |
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) -> StringInput json_input: WasmAutoSizeInput
| Field | Type | Required | Description |
|---|---|---|---|
candidates | { [key]: WasmAutoSizeCandidate[] } | ||
model | WasmModel | yes | |
options | WasmAutoSizeOptions | ||
sizable | WasmSizableSpec[] |
Result: AutoSizeReport
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
changes | AutoSizeChange[] | yes | |
converged | boolean | yes | |
iterations | integer | yes | |
massAfter | number | yes | |
massBefore | number | yes | |
none | boolean | yes | |
solveError | string | null | Why 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). | |
target | number | yes |
building_slenderness_check
Building slenderness in one direction against the given limit.
rust
building_slenderness_check(json_input: &str, direction: &str, limit_ratio: f64) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"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
| Field | Type | Required | Description |
|---|---|---|---|
building_height_m | number | yes | |
direction | string | yes | Direction that was checked: "x", "y", or "xy" (resultant). |
governing_load_case_id | integer | yes | |
governing_node_id | integer | yes | |
limit_ratio | number | yes | |
max_displacement_m | number | yes | |
pass | boolean | yes | |
slenderness_ratio | number | null | The 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) -> boolResult: 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() -> boolResult: 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) -> StringInput json_input: WasmInfluenceLineInput
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
n_points | integer | Default: 101. | |
span | number | yes | |
station | number | yes | |
support_type | string | yes |
Result: WasmInfluenceLineResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
ordinates | number[] | yes | |
positions | number[] | yes | |
span | number | yes | |
station | number | yes | |
support | string | yes |
influence_line_continuous
Influence line on a continuous beam model by repeated solves.
rust
influence_line_continuous(json_input: &str) -> StringInput json_input: WasmContinuousInfluenceLineInput
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
member_ids | integer[] | yes | |
model | WasmModel | yes | |
n_points | integer | Default: 101. | |
station_local_x | number | yes | |
station_member | integer | yes | |
support_node | integer | Default: 0. |
Result: WasmContinuousInfluenceLineResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
ordinates | number[] | yes | |
positions | number[] | yes | |
station_local_x | number | yes | |
station_member | integer | yes | |
support_reaction_node | integer | null | ||
total_length | number | yes |
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) -> StringInput json_input: WasmMemberCapacitiesInput
| Field | Type | Required | Description |
|---|---|---|---|
member_forces | WasmMemberForce[] | Optional member forces for alpha_m / utilisation update. If provided, must contain one entry per member with solved end forces. Default: []. | |
model | WasmModel | yes |
Result: WasmMemberCapacitiesOutput
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
capacity_warnings | string[] | 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_capacities | WasmMemberCapacity[] | yes |
modal_time_history_analysis
Modal time-history analysis under a ground acceleration record.
rust
modal_time_history_analysis(json_input: &str) -> StringInput json_input: WasmTimeHistoryInput
| Field | Type | Required | Description |
|---|---|---|---|
damping_ratio | number | Default: 0.05. | |
direction | number[] | Direction vector [dx, dy, dz] Default: [1,0,0]. | |
model | WasmModel | yes | |
n_modes | integer | Default: 10. | |
record | number[][] | yes | Ground motion record: [[time_s, accel_m_s2], ...] |
Result: WasmTimeHistoryResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
dt | number | yes | |
n_modes | integer | yes | |
n_steps | integer | yes | |
peakBaseShearX | number | yes | |
peakBaseShearY | number | yes | |
peakBaseShearZ | number | yes | |
peak_displacements | WasmNodeDisplacement[] | 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) -> StringInput json_input: WasmMovingLoadInput
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | |
n_points | integer | yes | |
span | number | yes | |
station | number | yes | |
support_type | string | yes | |
vehicle | WasmVehicle | yes |
Result: WasmMovingLoadResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
critical_position_max | number | yes | |
critical_position_min | number | yes | |
max_value | number | yes | |
min_value | number | yes |
response_spectrum_analysis
Response spectrum analysis: modal responses combined by SRSS or CQC.
rust
response_spectrum_analysis(json_input: &str) -> StringInput json_input: WasmResponseSpectrumInput
| Field | Type | Required | Description |
|---|---|---|---|
combination_method | string | Default: "SRSS". | |
damping_ratio | number | Default: 0.05. | |
direction | string | yes | |
model | WasmModel | yes | |
n_modes | integer | Default: 10. | |
spectrum_points | number[][] | yes | Spectrum points as [[period_s, accel_m_s2], ...] |
Result: WasmResponseSpectrumResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
combination_method | string | yes | |
combined_base_shear | number | yes | |
combined_displacements | WasmNodeDisplacement[] | yes | |
damping_ratio | number | yes | |
direction | string | yes | |
mode_responses | WasmModeResponse[] | yes | |
total_effective_mass | number | yes | |
total_mass | number | yes |
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) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"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) -> voidResult: 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) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}. |
Result: WasmResults
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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<JsValue, JsValue>, 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) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}. |
Result: WasmResults
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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<JsValue, JsValue>, not JSON)
solve_model
Linear static analysis of the model for every load case and combination.
rust
solve_model(json_input: &str) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
modes | WasmBucklingMode[] | yes | |
warnings | string[] | 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
modes | WasmModalMode[] | yes | |
warnings | string[] | 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) -> StringInput json_input: WasmModalInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmModalOptions | Default: {"mass_matrix":"","n_modes":0}. |
Result: WasmModel
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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 { "steps": [ { "lambda", "node_disp": [[h,v,rot]..] } ] } 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
control | string | Default: "". | |
ds | number | null | ||
fibers | integer | Default: 16. | |
fy | number | null | ||
hardening | number | Default: 0. | |
load_case_id | integer | Default: 0. | |
material | string | Default: "". | |
max_iterations | integer | Default: 60. | |
n_steps | integer | Default: 20. | |
tolerance | number | Default: 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: { load_case_id, n_steps, max_iterations, tolerance, material: "elastic"|"plastic", fy?, fibers, hardening, control: "load"|"arc", ds? }. Returns { steps:[{lambda,node_disp,n_iter}], limit_lambda, terminated: "steps"|"limit"|"collapse", note, material, control, plane:[h,v,o] } or the usual error envelope.
rust
solve_model_nonlinear_with_options(json_input: &str, options_json: &str) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
control | string | Default: "". | |
ds | number | null | ||
fibers | integer | Default: 16. | |
fy | number | null | ||
hardening | number | Default: 0. | |
load_case_id | integer | Default: 0. | |
material | string | Default: "". | |
max_iterations | integer | Default: 60. | |
n_steps | integer | Default: 20. | |
tolerance | number | Default: 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | yes |
solve_model_pdelta_with_options
P-Delta analysis with solver options.
rust
solve_model_pdelta_with_options(json_input: &str) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}. |
Result: WasmResults
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | yes |
solve_model_tc_with_options
Tension/compression-only analysis with solver options.
rust
solve_model_tc_with_options(json_input: &str) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}. |
Result: WasmResults
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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) -> StringInput json_input: WasmDirectThInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha | number | null | Default: null. | |
beta | number | null | Default: null. | |
damping_ratio | number | Default: 0.05. | |
direction | number[] | Default: [1,0,0]. | |
gamma | number | null | Default: null. | |
model | WasmModel | yes | |
nonlinear | boolean | Default: false. | |
rayleigh | number[] | null | Default: null. | |
record | number[][] | yes | |
scheme | string | Default: "". | |
track_node | integer | null | Default: 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<JsValue, JsValue>, 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) -> StringInput json_input: WasmSolveInput
| Field | Type | Required | Description |
|---|---|---|---|
model | WasmModel | yes | |
options | WasmSolveOptions | Default: {"extrapolate_plate_results":false,"n_stations":11,"smooth_plate_nodal_results":false,"station_output":"objects"}. |
Result: WasmResults
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
auto_restrained | WasmSingularDof[] | Zero-stiffness DOFs auto-restrained so the model could solve (aggregated across load cases, de-duplicated). Empty/omitted for a clean model. | |
combinations | WasmCombinationResults[] | ||
combo_stations_omitted | boolean | The 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. | |
conditioning | WasmSoftDof[] | 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. | |
envelope | WasmEnvelopeResults | null | ||
load_cases | WasmLoadCaseResults[] | 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() -> StringResult: 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) -> StringInput model_json: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
valid | boolean | yes | |
violations | Violation[] | 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
connections | Connection[] | yes | |
totals | ConnectionTotals | yes |
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<u8>, not JSON)
import_dwg
Imports a DWG drawing (bytes) as model geometry; needs the dwg build feature.
rust
import_dwg(bytes: &[u8]) -> StringResult: 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]) -> StringResult: SgModel
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
combinations | SgCombination[] | yes | |
connection_config | ConnectionConfig | null | ||
diagnostics | SgImportDiagnostics | yes | |
entries | SgEntryInfo[] | yes | |
load_cases | SgLoadCase[] | yes | |
materials | SgMaterial[] | yes | |
member_loads | SgMemberLoad[] | yes | |
member_offsets | SgMemberOffset[] | yes | |
member_point_loads | SgMemberPointLoad[] | yes | |
members | SgMember[] | yes | |
nodal_loads | SgNodalLoad[] | yes | |
nodes | SgNode[] | yes | |
plate_loads | SgPlateLoad[] | yes | |
plates | SgPlate[] | yes | |
restraints | SgRestraint[] | yes | |
section_info | SgSectionInfo | null | ||
sections | SgSection[] | yes | |
self_weights | SgSelfWeight[] | yes |
list_sg_entries
Lists the entries in a SpaceGass file (bytes) without importing them.
rust
list_sg_entries(bytes: &[u8]) -> StringResult: 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) -> StringInput 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) -> StringInput json_input: WasmModel
| Field | Type | Required | Description |
|---|---|---|---|
cables | WasmCable[] | 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_code | string | Design code for member capacity checks: "AS4100" (default), "AISC360", "EC3". Default: "AS4100". | |
diaphragms | WasmDiaphragm[] | Default: []. | |
double_angle_connectors | DoubleAngleConnectors[] | Double-angle interconnectors (SA-156) - see model::DoubleAngleConnectors; the core type's own serde shape is the wire shape. Default: []. | |
end_gaps | WasmEndGap[] | Member-end gaps (ADR 0013 Step 2): { member_id, gap_mm } on truss / compression-only members. Default: []. | |
load_cases | WasmLoadCase[] | yes | |
load_combinations | WasmLoadCombination[] | Default: []. | |
materials | WasmMaterial[] | yes | |
member_loads | WasmMemberLoad[] | yes | |
members | WasmMember[] | yes | |
nodal_loads | WasmNodalLoad[] | yes | |
nodes | WasmNode[] | yes | |
plate_loads | WasmPlateLoad[] | Default: []. | |
plate_orthotropy | PlateOrthotropy[] | 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: []. | |
plates | WasmPlate[] | Default: []. | |
sections | WasmSection[] | yes | |
shear_centre_loaded | integer[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
bySection | SectionRollup[] | yes | Per-section roll-ups, heaviest first. |
lines | TakeoffLine[] | yes | Per-member lines, in model order. |
plates | PlateTakeoff[] | yes | Plate take-off lines. |
totals | TakeoffTotals | yes | Grand totals. |
validate_snapshot
Validates a canonical model snapshot and returns the violations found (ADR 0004).
rust
validate_snapshot(snapshot_json: &str) -> StringInput 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) -> StringInput json_input: WasmSectionBuilderInput
| Field | Type | Required | Description |
|---|---|---|---|
loops | WasmPoint2[][] | yes |
Result: WasmSectionBuilderResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
Asx | number | yes | |
Asy | number | yes | |
I1 | number | yes | |
I2 | number | yes | |
Ip | number | yes | |
Iw | number | yes | |
Ixx | number | yes | |
Ixy | number | yes | |
Iyy | number | yes | |
Japprox | number | yes | |
Jopen | number | yes | |
Sx | number | yes | |
Sy | number | yes | |
Zxapprox | number | yes | |
Zyapprox | number | yes | |
area | number | yes | |
cx | number | yes | |
cy | number | yes | |
rx | number | yes | |
ry | number | yes | |
thetaP | number | yes |
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) -> StringInput json_input: WasmSectionDimsInput
| Field | Type | Required | Description |
|---|---|---|---|
Iw_mm6 | number | Default: 0. | |
Ix_mm4 | number | Default: 0. | |
Iy_mm4 | number | Default: 0. | |
J_mm4 | number | Default: 0. | |
Zx_mm3 | number | Default: 0. | |
area_mm2 | number | Default: 0. | |
category | string | yes | |
depth_mm | number | yes | |
flangeThickness_mm | number | Default: 0. | |
flangeWidth_mm | number | yes | |
lipLength_mm | number | Default: 0. | |
name | string | Default: "". | |
webThickness_mm | number | yes |
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) -> f64Input 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) -> StringInput json_input: WasmAs4100AlphaMInput
| Field | Type | Required | Description |
|---|---|---|---|
my1 | number | yes | |
my2 | number | yes |
Result: WasmAs4100AlphaMResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
alpha_m | number | yes |
as4100_cellular_check
Cellular or castellated beam check to AS 4100 (first-pass geometry and capacities).
rust
as4100_cellular_check(json_input: &str) -> StringInput json_input: WasmAs4100CellularInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_b | number | Default: 0. | |
alpha_m_case | integer | yes | |
b_f_mm | number | yes | |
d_mm | number | yes | |
d_o_mm | number | yes | |
fy_mpa | number | yes | |
le_mm | number | yes | |
length_mm | number | yes | |
s_mm | number | yes | |
t_f_mm | number | yes | |
t_w_mm | number | yes |
Result: WasmAs4100CellularResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phi_m_b | number | yes | |
phi_m_gross | number | yes | |
phi_m_net | number | yes | |
phi_m_vierendeel | number | yes | |
phi_v_net | number | yes | |
phi_v_web_post | number | yes | |
web_post_slenderness | number | yes |
as4100_combined
AS 4100 combined actions check: section and member capacity under axial force and bending (Section 8).
rust
as4100_combined(json_input: &str) -> StringInput json_input: WasmAs4100CombinedInput
| Field | Type | Required | Description |
|---|---|---|---|
kf | number | Default: 1. | |
m_star_x | number | yes | |
m_star_y | number | Default: 0. | |
n_star | number | yes | |
ns | number | yes | |
phi_mbx | number | yes | |
phi_mby | number | Default: 0. | |
phi_msx | number | yes | |
phi_msy | number | Default: 0. | |
phi_ncx | number | yes | |
phi_ncy | number | yes | |
phi_nt | number | yes | |
section_class | string | yes |
Result: WasmAs4100CombinedResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
axial_util | number | yes | |
member_util_x | number | yes | |
member_util_y | number | yes | |
phi_m_ox | number | yes | |
phi_m_oy | number | yes | |
phi_m_rx | number | yes | |
phi_m_ry | number | yes | |
section_util_x | number | yes | |
section_util_y | number | yes | |
util_biaxial_member | number | yes | |
util_biaxial_section | number | yes | |
util_max | number | yes |
as4100_fatigue_check
AS 4100 Section 11 fatigue check for a detail category and stress range.
rust
as4100_fatigue_check(json_input: &str) -> StringInput json_input: WasmAs4100FatigueInput
| Field | Type | Required | Description |
|---|---|---|---|
apply_beta_tf | boolean | Default: false. | |
category | string | yes | |
fy_mpa | number | yes | |
phi | number | Default: 0.9. | |
spectrum | [number, number][] | yes | |
t_mm | number | yes |
Result: WasmAs4100FatigueResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
applicable | boolean | yes | |
damage | number | yes | |
ok | boolean | yes |
as4100_fire_check
AS 4100 Section 12 fire check: limiting temperature and time for an unprotected member.
rust
as4100_fire_check(json_input: &str) -> StringInput json_input: WasmAs4100FireInput
| Field | Type | Required | Description |
|---|---|---|---|
ambient_capacity | number | yes | |
exposure | string | yes | |
fire_demand | number | yes | |
section_factor | number | yes | |
time_min | number | yes |
Result: WasmAs4100FireResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
limiting_temp | number | yes | |
load_ratio | number | yes | |
ok | boolean | yes | |
steel_temp | number | yes | |
temp_margin | number | yes |
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) -> StringInput json_input: WasmNotionalInput
| Field | Type | Required | Description |
|---|---|---|---|
adequately_braced | boolean | Legacy input from before the 2020 edition's single factor; accepted and ignored. Default: false. | |
multi_storey | boolean | AS 4100 Cl 3.2.4 applies to multi-storey buildings only. Default true. Default: true. | |
total_gravity_load | number | yes | Total design vertical load applied at the floor level (N). |
Result: WasmNotionalResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
force | number | yes |
as4100_optimize_section
Finds the lightest catalogue section that passes AS 4100 for the given actions.
rust
as4100_optimize_section(json_input: &str) -> StringInput json_input: WasmAs4100OptimizeInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_b | number | Default: 0. | |
alpha_m_case | integer | yes | |
categories | string[] | Default: []. | |
fy_mpa | number | yes | |
le_mm | number | yes | |
mx_star | number | yes | |
my_star | number | Default: 0. | |
n_star | number | yes | |
v_star | number | yes |
Result: WasmAs4100OptimizeResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
best_category | string | yes | |
best_mass_kg_m | number | yes | |
best_name | string | yes | |
considered | integer | yes | |
feasible | integer | yes | |
found | boolean | yes | |
util_max | number | yes |
as4100_phi_mbx
AS 4100 member moment capacity phiMbx with lateral-torsional buckling (Cl 5.6).
rust
as4100_phi_mbx(json_input: &str) -> StringInput json_input: WasmAs4100PhiMbxInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_m_case | integer | yes | 0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl |
beta_m | number | Default: 0. | |
bf | number | yes | |
d | number | yes | |
e | number | Default: 200000. | |
fyf | number | yes | |
fyw | number | yes | |
g | number | Default: 80000. | |
i_w | number | Default: 0. | |
i_y | number | yes | |
j | number | yes | |
le_mm | number | yes | |
phi | number | Default: 0.9. | |
s_x | number | yes | |
tf | number | yes | |
tw | number | yes | |
z_x | number | yes |
Result: WasmAs4100PhiMbxResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
alpha_m | number | yes | |
alpha_s | number | yes | |
m_o | number | yes | |
m_sx | number | yes | |
phi_m_bx | number | yes |
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) -> StringInput json_input: WasmAs4100PhiMbxInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_m_case | integer | yes | 0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl |
beta_m | number | Default: 0. | |
bf | number | yes | |
d | number | yes | |
e | number | Default: 200000. | |
fyf | number | yes | |
fyw | number | yes | |
g | number | Default: 80000. | |
i_w | number | Default: 0. | |
i_y | number | yes | |
j | number | yes | |
le_mm | number | yes | |
phi | number | Default: 0.9. | |
s_x | number | yes | |
tf | number | yes | |
tw | number | yes | |
z_x | number | yes |
Result: Derivation
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Governing standard name, e.g. "AS 4100". |
edition | string | yes | Edition/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. |
inputs | Input[] | yes | |
result | Step | yes | The headline line (capacity or utilisation) - carries the pass/fail. |
steps | Step[] | yes | |
title | string | yes |
as4100_phi_ms
AS 4100 section moment capacity phiMs and section classification (Cl 5.2).
rust
as4100_phi_ms(json_input: &str) -> StringInput json_input: WasmAs4100SectionInput
| Field | Type | Required | Description |
|---|---|---|---|
bf | number | yes | |
d | number | yes | |
fyf | number | yes | |
fyw | number | yes | |
s_x | number | yes | |
tf | number | yes | |
tw | number | yes | |
z_x | number | yes |
Result: WasmAs4100PhiMsResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
lambda_s | number | yes | |
lambda_sp | number | yes | |
lambda_sy | number | yes | |
m_sx | number | yes | |
phi_m_sx | number | yes | |
section_class | string | yes | |
z_ex | number | yes |
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) -> StringInput json_input: WasmAs4100SectionInput
| Field | Type | Required | Description |
|---|---|---|---|
bf | number | yes | |
d | number | yes | |
fyf | number | yes | |
fyw | number | yes | |
s_x | number | yes | |
tf | number | yes | |
tw | number | yes | |
z_x | number | yes |
Result: Derivation
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Governing standard name, e.g. "AS 4100". |
edition | string | yes | Edition/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. |
inputs | Input[] | yes | |
result | Step | yes | The headline line (capacity or utilisation) - carries the pass/fail. |
steps | Step[] | yes | |
title | string | yes |
as4100_phi_nc
AS 4100 member compression capacity phiNc (Cl 6.3).
rust
as4100_phi_nc(json_input: &str) -> StringInput json_input: WasmAs4100PhiNcInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_b | number | Default: 0. | |
area | number | yes | |
fy | number | yes | |
kf | number | Default: 1. | |
le_mm | number | yes | |
phi | number | Default: 0.9. | |
r | number | yes |
Result: WasmAs4100PhiNcResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
alpha_c | number | yes | |
lambda_n | number | yes | |
n_c | number | yes | |
n_s | number | yes | |
phi_n_c | number | yes |
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) -> StringInput json_input: WasmAs4100PhiNcInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_b | number | Default: 0. | |
area | number | yes | |
fy | number | yes | |
kf | number | Default: 1. | |
le_mm | number | yes | |
phi | number | Default: 0.9. | |
r | number | yes |
Result: Derivation
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Governing standard name, e.g. "AS 4100". |
edition | string | yes | Edition/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. |
inputs | Input[] | yes | |
result | Step | yes | The headline line (capacity or utilisation) - carries the pass/fail. |
steps | Step[] | yes | |
title | string | yes |
as4100_phi_vv
AS 4100 web shear capacity phiVv (Cl 5.11).
rust
as4100_phi_vv(json_input: &str) -> StringInput json_input: WasmAs4100PhiVvInput
| Field | Type | Required | Description |
|---|---|---|---|
d | number | yes | |
fy | number | yes | |
section_name | string | yes | |
tf | number | yes | |
tw | number | yes |
Result: WasmAs4100PhiVvResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phi_vv | number | yes |
as4100_tapered_check
Web-tapered (non-prismatic) member check to AS 4100 (first-pass).
rust
as4100_tapered_check(json_input: &str) -> StringInput json_input: WasmAs4100TaperedInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_b | number | Default: 0. | |
alpha_m_case | integer | yes | |
b_f_mm | number | yes | |
d_a_mm | number | yes | |
d_b_mm | number | yes | |
fy_mpa | number | yes | |
le_mm | number | yes | |
length_mm | number | yes | |
t_f_mm | number | yes | |
t_w_mm | number | yes |
Result: WasmAs4100TaperedResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
d_govern_mm | number | yes | |
phi_mb | number | yes | |
phi_ms | number | yes | |
phi_nc | number | yes | |
taper_ratio | number | yes | |
x_govern_mm | number | yes |
as4100_web_bearing
AS 4100 web bearing capacity under a concentrated load (Cl 5.13).
rust
as4100_web_bearing(json_input: &str) -> StringInput json_input: WasmWebBearingInput
| Field | Type | Required | Description |
|---|---|---|---|
b_s | number | yes | Stiff bearing length (m). |
both_flanges_restrained | boolean | Both flanges restrained against lateral movement (default true). Default: true. | |
d1 | number | yes | Clear web depth between flanges (m). |
end_dist | number | Distance from member end to the nearer edge of the bearing (m). Negative or missing = interior load. Default: -1. | |
fy | number | yes | Web yield stress (Pa). |
tf | number | yes | |
tw | number | yes |
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) -> StringInput json_input: WasmAisc360CompositeInput
| Field | Type | Required | Description |
|---|---|---|---|
a_s | number | yes | |
b_eff_mm | number | yes | |
d_mm | number | yes | |
f_prime_c_mpa | number | yes | |
fu_stud_mpa | number | yes | |
fy_mpa | number | yes | |
n_studs | integer | yes | |
phi | number | Default: 0.9. | |
stud_dia_mm | number | yes | |
t_c_mm | number | yes |
Result: WasmAisc360CompositeResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
degree_of_shear_connection | number | yes | |
horizontal_shear_force | number | yes | |
phi_mn_full | number | yes | |
phi_mn_partial | number | yes | |
stud_shear_force | number | yes |
aisc360_member_check
AISC 360 member check: compression, flexure, shear and interaction.
rust
aisc360_member_check(json_input: &str) -> StringInput json_input: WasmAisc360MemberInput
| Field | Type | Required | Description |
|---|---|---|---|
a | number | yes | |
bf | number | yes | |
cb | number | Default: 0. | |
d | number | yes | |
e | number | Default: 0. | |
fu | number | Default: 0. | |
fy | number | yes | |
hollow | boolean | A 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. | |
iyy | number | yes | |
izz | number | yes | |
j | number | yes | |
lb | number | yes | |
leMajor | number | yes | |
leMinor | number | yes | |
mxStar | number | yes | |
myStar | number | yes | |
nStar | number | yes | |
szz | number | Default: 0. | |
tf | number | yes | |
tw | number | yes | |
vxStar | number | yes | |
zzz | number | Default: 0. |
Result: WasmAisc360MemberResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
assumptions | WasmAisc360Assumptions | yes | |
governing | string | yes | |
phiMnx | number | yes | |
phiMny | number | yes | |
phiPn | number | yes | |
phiPnComp | number | yes | |
phiVn | number | yes | |
section_class | string | yes | |
utilAxial | number | yes | |
utilCombined | number | yes | |
utilFlexX | number | yes | |
utilFlexY | number | yes | |
utilMax | number | yes | |
utilShear | number | yes |
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) -> StringInput json_input: WasmAs4600Input
| Field | Type | Required | Description |
|---|---|---|---|
b | number | yes | |
d | number | yes | |
e | number | Default: 200000. | |
f_y | number | yes | |
lip | number | Default: 0. | |
r | number | Default: 0. | |
section_type | string | yes | |
t | number | yes |
Result: WasmAs4600Result
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
aEff | number | yes | |
aGross | number | yes | |
governing | string | yes | |
phiMs | number | yes | |
phiNc | number | yes | |
zEff | number | yes | |
zGross | number | yes |
as4600_combined
AS/NZS 4600 combined actions check of a cold-formed member.
rust
as4600_combined(json_input: &str) -> StringInput json_input: WasmAs4600CombinedInput
| Field | Type | Required | Description |
|---|---|---|---|
m_star_x | number | Default: 0. | |
m_star_y | number | Default: 0. | |
n_comp | number | Default: 0. | |
n_tens | number | Default: 0. | |
phi_mbx | number | Default: 0. | |
phi_mby | number | Default: 0. | |
phi_ncx | number | Default: 0. | |
phi_ncy | number | Default: 0. | |
phi_nt | number | Default: 0. |
Result: ColdFormedCombined
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
axial_util | number | yes | Axial utilisation: |Ncomp| / min(φNcx, φNcy), or |Ntens| / φNt in tension |
util_max | number | yes | Cl 3.5 linear interaction sum = axial_util + util_mx + util_my |
util_mx | number | yes | Major-axis bending utilisation M*x / φMbx |
util_my | number | yes | Minor-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) -> StringInput json_input: WasmAs5100CombinedInput
| Field | Type | Required | Description |
|---|---|---|---|
kf | number | Default: 1. | |
mStarX | number | yes | |
mStarY | number | Default: 0. | |
nStar | number | yes | |
ns | number | yes | |
phiMbx | number | yes | |
phiMby | number | Default: 0. | |
phiMsx | number | yes | |
phiMsy | number | Default: 0. | |
phiNcx | number | yes | |
phiNcy | number | yes | |
phiNt | number | yes | |
sectionClass | string | yes |
Result: WasmAs5100CombinedResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
axialUtil | number | yes | |
memberUtilX | number | yes | |
memberUtilY | number | yes | |
phiMOx | number | yes | |
phiMOy | number | yes | |
phiMRx | number | yes | |
phiMRy | number | yes | |
sectionUtilX | number | yes | |
sectionUtilY | number | yes | |
utilBiaxialMember | number | yes | |
utilBiaxialSection | number | yes | |
utilMax | number | yes |
as5100_member_check
AS 5100.6 steel bridge member check: section and member capacities.
rust
as5100_member_check(json_input: &str) -> StringInput json_input: WasmAs5100MemberInput
| Field | Type | Required | Description |
|---|---|---|---|
a | number | yes | |
alphaMCase | integer | yes | 0=UniformMoment, 1=SimplySupportedUdl, 2=SimplySupportedPointLoad, 3=EndMoments, 4=CantileverUdl |
beta_m | number | Default: 0. | |
bf | number | yes | |
d | number | yes | |
e | number | Default: 200000. | |
fu | number | Default: 0. | |
fy | number | yes | |
iyy | number | yes | |
izz | number | yes | |
j | number | yes | |
leMajor | number | yes | |
leMinor | number | yes | |
mxStar | number | yes | |
myStar | number | Default: 0. | |
nStar | number | yes | |
syy | number | Default: 0. | |
szz | number | Default: 0. | |
tf | number | yes | |
tw | number | yes | |
vxStar | number | Default: 0. | |
zyy | number | Default: 0. | |
zzz | number | Default: 0. |
Result: WasmAs5100MemberResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
assumptions | WasmAs5100Assumptions | yes | |
governing | string | yes | |
phiMbx | number | yes | |
phiMby | number | yes | |
phiMsx | number | yes | |
phiMsy | number | yes | |
phiNcx | number | yes | |
phiNcy | number | yes | |
phiNt | number | yes | |
phiVv | number | yes | |
section_class | string | yes | |
utilAxial | number | yes | |
utilCombined | number | yes | |
utilFlexX | number | yes | |
utilFlexY | number | yes | |
utilMax | number | yes | |
utilShear | number | yes |
ec3_member_check
EN 1993-1-1 member check: cross-section resistances, buckling and interaction.
rust
ec3_member_check(json_input: &str) -> StringInput json_input: WasmEc3MemberInput
| Field | Type | Required | Description |
|---|---|---|---|
a | number | yes | |
bf | number | yes | |
c1 | number | Default: 0. | |
d | number | yes | |
e | number | Default: 0. | |
fy | number | yes | |
iyy | number | yes | |
izz | number | yes | |
j | number | yes | |
lcrLT | number | yes | |
lcrY | number | yes | |
lcrZ | number | yes | |
myStar | number | yes | |
mzStar | number | yes | |
nStar | number | yes | |
name | string | Section name (optional): picks the Cl 6.2.6(3) shear area by shape (I, channel, RHS, CHS). Default: "". | |
r | number | Root radius (m, optional): the fillets' part of the rolled-section shear area. Default: 0. | |
szz | number | Default: 0. | |
tf | number | yes | |
tw | number | yes | |
vyStar | number | yes | |
w_el_y | number | Default: 0. | |
w_pl_y | number | Default: 0. | |
zzz | number | Default: 0. |
Result: WasmEc3MemberResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
MbRd | number | yes | |
MyRd | number | yes | |
MzRd | number | yes | |
NbYRd | number | yes | |
NbZRd | number | yes | |
NcRd | number | yes | |
NtRd | number | yes | |
VplRd | number | yes | |
assumptions | WasmEc3Assumptions | yes | |
governing | string | yes | |
section_class | string | yes | |
utilAxial | number | yes | |
utilCombined | number | yes | |
utilFlexY | number | yes | |
utilFlexZ | number | yes | |
utilMax | number | yes | |
utilShear | number | yes |
nzs3404_combined
NZS 3404 Section 8 (and Cl 5.12.3) for one member and one load case.
rust
nzs3404_combined(json_input: &str) -> StringInput json_input: WasmNzs3404CombinedInput
| Field | Type | Required | Description |
|---|---|---|---|
doubly_symmetric | boolean | Whether 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. | |
kf | number | Default: 1. | |
m_star_x | number | yes | |
m_star_y | number | Default: 0. | |
n_star | number | yes | |
phi_mbx | number | yes | |
phi_msx | number | yes | |
phi_msy | number | Default: 0. | |
phi_ncx | number | yes | |
phi_ncy | number | yes | |
phi_ns | number | yes | |
phi_nt | number | yes | |
phi_vv | number | Default: 0. | |
section_class | string | yes | "compact" | "non-compact" | "slender", from the capacity record. |
v_star | number | Default: 0. |
Result: WasmNzs3404CombinedResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governed_by | string | yes | The clause the governing check came from, for the report line. |
higher_tier | boolean | yes | |
phi_m_ix | number | yes | |
phi_m_ox | number | yes | |
phi_m_rx | number | yes | |
phi_m_ry | number | yes | |
util_axial | number | yes | |
util_max | number | yes | |
util_member_biaxial | number | yes | |
util_member_in_plane | number | yes | |
util_member_out_of_plane | number | yes | |
util_section_biaxial | number | yes | |
util_section_x | number | yes | |
util_section_y | number | yes | |
util_shear | number | yes |
nzs3404_member_check
NZS 3404:Part 1:1997 - one member, one load case, Sections 5 through 8.
rust
nzs3404_member_check(json_input: &str) -> StringInput json_input: WasmNzs3404MemberInput
| Field | Type | Required | Description |
|---|---|---|---|
ag | number | yes | Gross area, net area (mm²) and the Cl 7.3 correction factor for eccentric end connections. |
alpha_m | number | Cl 5.6.1.1 moment modification factor. Pass 1.0 for uniform moment. Default: 1. | |
an | number | Default: 0. | |
bf | number | Default: 0. | |
category | string | yes | "1", "2", "3" or "4" - NZS 3404 Section 12. No default: see the note above. |
d | number | yes | Overall depth, flange width, flange thickness, web thickness (mm). For a CHS, d is the outside diameter and tw the wall. |
doubly_symmetric | boolean | Whether 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. | |
e | number | Elastic and shear moduli (MPa). Default to the standard's steel values. Default: 200000. | |
family | string | yes | Which shear-area and slenderness family the outline belongs to: "hot-rolled-i", "welded-i", "rhs", "chs". |
fu | number | yes | Tensile strength (MPa). |
fyf | number | yes | Flange yield stress (MPa) - Cl 5.2.1 reads the FLANGE value, not the lower of flange and web. |
fyw | number | Web yield stress (MPa). Default: 0. | |
g | number | Default: 80000. | |
iw | number | yes | |
iy | number | yes | Second 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. |
j | number | yes | |
kf | number | Form factor (Cl 6.2). 1.0 for a fully effective section. Default: 1. | |
kte | number | Default: 1. | |
le_ltb | number | yes | |
lex | number | yes | Effective lengths for compression about each axis, and for lateral-torsional buckling (mm). |
ley | number | yes | |
m_star_x | number | Default: 0. | |
m_star_y | number | Default: 0. | |
n_star | number | Design actions for this load case. n_star is NEGATIVE in compression. Default: 0. | |
rx | number | yes | Radii of gyration (mm). |
ry | number | yes | |
sx | number | yes | |
sy | number | yes | |
tf | number | Default: 0. | |
tw | number | yes | |
v_star | number | Default: 0. | |
zx | number | yes | Elastic and plastic section moduli about each axis (mm³). |
zy | number | yes |
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) -> StringInput json_input: WasmAiscBoltInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_diameter | number | yes | |
bolt_grade | string | yes | |
clear_distance | number | Default: 0. | |
n_shear_planes | integer | yes | |
ply_fu | number | Default: 0. | |
ply_thickness | number | Default: 0. | |
threads_excluded | boolean | Default: false. |
Result: WasmAiscBoltResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phiRnBearing | number | yes | |
phiRnShear | number | yes | |
phiRnTearout | number | yes | |
phiRnTension | number | yes |
aisc360_weld_capacity
AISC 360 fillet weld capacity (Section J2).
rust
aisc360_weld_capacity(json_input: &str) -> StringInput json_input: WasmAiscWeldInput
| Field | Type | Required | Description |
|---|---|---|---|
fexx | number | yes | |
leg_size | number | yes | |
length | number | yes | |
theta_deg | number | Default: 0. |
Result: WasmAiscWeldResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phiRn | number | yes |
base_plate_check
Column base plate check: concrete bearing, plate bending, anchor bolts and anchor shear.
rust
base_plate_check(json_input: &str) -> StringInput json_input: WasmBasePlateInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_count | integer | Default: 0. | |
bolt_diameter | number | Default: 0. | |
bolt_grade | string | Default: "". | |
column_bf | number | yes | |
column_d | number | yes | |
concrete_fc | number | yes | |
n_star | number | yes | |
plate_b | number | yes | |
plate_d | number | yes | |
plate_fy | number | yes | |
plate_t | number | yes | |
v_star | number | Default: 0. |
Result: WasmBasePlateResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
assumptions | WasmBasePlateAssumptions | yes | |
bearing_pressure | number | yes | |
cantilever_b | number | yes | |
cantilever_d | number | yes | |
confinement | number | yes | |
n_star | number | yes | |
phiAnchorShear | number | yes | |
phiNcConc | number | yes | |
phiPlateBending | number | yes | |
t_req | number | yes | |
util_anchor_shear | number | yes | |
util_bearing | number | yes | |
util_bolts | number | yes | |
util_interaction | number | yes | |
util_max | number | yes | |
util_plate | number | yes |
bearing_stiffener_check
Web bearing stiffener check: yield and buckling (AS 4100 Cl 5.14).
rust
bearing_stiffener_check(json_input: &str) -> StringInput json_input: WasmBearingStiffenerInput
| Field | Type | Required | Description |
|---|---|---|---|
b_es | number | yes | |
d_1 | number | yes | |
f_y | number | yes | |
f_ys | number | yes | |
r_star | number | yes | |
t_f | number | yes | |
t_s | number | yes | |
t_w | number | yes |
Result: WasmBearingStiffenerResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
alphaC | number | yes | |
lambdaN | number | yes | |
outstandRatio | number | yes | |
phiRsb | number | yes | |
phiRsy | number | yes | |
r_star | number | yes | |
util_max | number | yes | |
util_stiffener_buckling | number | yes | |
util_stiffener_yield | number | yes |
bolt_capacity
AS 4100 bolt capacity: shear, tension and combined (Cl 9.2).
rust
bolt_capacity(json_input: &str) -> StringInput json_input: WasmBoltInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_diameter | number | yes | |
bolt_grade | string | yes | |
kr | number | Default: 1. | |
ply_fu | number | Default: 0. | |
ply_thickness | number | Default: 0. | |
shear_planes_threads_excluded | integer | yes | |
shear_planes_threads_intercepted | integer | yes |
Result: WasmBoltResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
minEdge | number | yes | |
minGauge | number | yes | |
minPitch | number | yes | |
phiNtf | number | yes | |
phiVb | number | yes | |
phiVf | number | yes |
bolt_layout
Lays out a bolt group (rows, columns, pitches, edge distances) for a connection.
rust
bolt_layout(json_input: &str) -> StringInput json_input: WasmBoltLayoutInput
| Field | Type | Required | Description |
|---|---|---|---|
availWidth | number | yes | |
boltDiameter | number | yes | |
count | integer | yes | |
edge | number | null | Default: null. | |
edgeType | string | Default: "". | |
end | number | null | Default: null. | |
gauge | number | null | Default: null. | |
pitch | number | null | Default: null. |
Result: WasmBoltLayout
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
cols | integer | yes | |
edge | number | yes | |
end | number | yes | |
fits | boolean | yes | |
gauge | number | yes | |
pitch | number | yes | |
plateH | number | yes | |
plateW | number | yes | |
positions | WasmBoltPos[] | yes | |
rows | integer | yes | |
trace | string[] | yes |
bridging_check
Purlin bridging bracket check.
rust
bridging_check(json_input: &str) -> StringInput json_input: WasmBridgingInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_count | integer | yes | |
bolt_dia | number | yes | |
bolt_grade | string | yes | |
bracket_b | number | yes | |
bracket_fu | number | yes | |
bracket_fy | number | yes | |
bracket_t | number | yes | |
gauge | number | yes | The bolt line's gauge: the spacing of the bolts up the purlin's web. |
leg | number | The bracket's leg: how far the bridging member's axis sits off the bolt line. Default: 0. | |
m_star | number | Default: 0. | |
n_star | number | yes | |
v_star | number | yes | |
web_fu | number | yes | |
web_t | number | yes |
Result: WasmBridgingResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bearingC | number | yes | |
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
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) -> StringInput json_input: WasmColumnSideInput
| Field | Type | Required | Description |
|---|---|---|---|
beamD | number | yes | |
beamTf | number | yes | |
bfCol | number | The column flange width, m. Default: 0. | |
bothFlangesRestrained | boolean | Both column flanges are held at the joint (Cl 5.13.4 slenderness 2.5 d1/tw, else 5.0). Default: false. | |
dCol | number | yes | |
flangeInTstub | boolean | The column flange is already checked as bolted T-stubs, so the flange yield line row is left out. Default: false. | |
flangeWeldLeg | number | The beam flange's fillet weld leg to the column, m (0 for a butt weld or none). Default: 0. | |
fyCol | number | yes | |
mStar | number | yes | |
nStar | number | Default: 0. | |
plateT | number | The end plate's thickness, m (0 on a welded joint). Default: 0. | |
stiffenerFy | number | The continuity stiffeners' yield stress, Pa. Default: 0. | |
stiffenerT | number | The continuity stiffeners' thickness, m (0 when none are drawn). Default: 0. | |
tfCol | number | yes | |
twCol | number | yes |
Result: WasmColumnSideResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes | |
stiffenersRequired | boolean | yes |
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) -> StringInput json_input: AnchorGroupInput
| Field | Type | Required | Description |
|---|---|---|---|
anchors | Anchor[] | yes | |
concrete | Concrete | yes | |
edges | Edges | Default: {"far_from_all":false,"x_neg":null,"x_pos":null,"y_neg":null,"y_pos":null}. | |
factors | PartialFactors | null | Default: null. | |
justification_notes | string[] | Default: []. | |
loads | Combination[] | yes | |
per_anchor_forces | AnchorForce[][] | null | Per combination, per anchor, when the joint FEA solved them. Same order as loads. Default: null. | |
phi_nt_n | number | null | Steel design capacities per anchor, N (AS 4100, phi included). None = steel NotDetermined. Default: null. | |
phi_vs_n | number | null | Default: null. | |
post_installed | boolean | Post-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. | |
reinforcement | AnchorReinforcement | null | Default: null. |
Result: AnchorCheckResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
adequate | boolean | null | ||
bar_dev_length_mm | number | null | AS 3600 development length the claimed bars need, mm (reported; certification is the gate). | |
bars_accepted | integer[] | yes | Bars the reinforcement gate accepted / rejected, by index into reinforcement.bars. |
bars_rejected | [integer, string][] | yes | |
combinations | CombResult[] | yes | |
cone_geometry | ConeGeometry | null | ||
factors | PartialFactors | yes | |
governing | Governing | null | The 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). | |
notes | string[] | 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 {"error": "..."}, 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) -> StringInput json_input: ConnFeaInput
| Field | Type | Required | Description |
|---|---|---|---|
anchors | FeAnchor[] | 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: []. | |
beds | FeBed[] | Elastic beds under bearing plates. Ignored by conn_fea_mesh. Default: []. | |
bolts | FeBolt[] | Default: []. | |
loads | FeLoad[] | What is applied. Ignored by conn_fea_mesh. Default: []. | |
plates | FePlate[] | yes | |
rotation_probes | FeRotationProbe[] | 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: []. | |
sizing | SizingField | yes | The 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). |
supports | FeSupport[] | 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: []. | |
welds | FeWeld[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
bolt_holes | BoltHole[] | One entry per (bolt, plate) pair where a hole was actually CUT. A bolt with fewer than two of these connects nothing. Default: []. | |
boundary_nodes | integer[] | yes | Node 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. |
nodes | number[][] | yes | |
plate_of_tri | integer[] | yes | For each triangle, the index into ConnFeaMesh::plates it belongs to. |
plates | PlateMeshInfo[] | yes | |
tris | integer[][] | yes | |
warnings | string[] | yes | Everything 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) -> StringInput json_input: ConnFeaInput
| Field | Type | Required | Description |
|---|---|---|---|
anchors | FeAnchor[] | 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: []. | |
beds | FeBed[] | Elastic beds under bearing plates. Ignored by conn_fea_mesh. Default: []. | |
bolts | FeBolt[] | Default: []. | |
loads | FeLoad[] | What is applied. Ignored by conn_fea_mesh. Default: []. | |
plates | FePlate[] | yes | |
rotation_probes | FeRotationProbe[] | 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: []. | |
sizing | SizingField | yes | The 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). |
supports | FeSupport[] | 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: []. | |
welds | FeWeld[] | 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
| Field | Type | Required | Description |
|---|---|---|---|
anchor_forces | AnchorForce2[] | One entry per holding-down anchor. The number a base plate exists to produce. Default: []. | |
applied_force | number[] | yes | Applied force resultant, N, and the reaction the supports returned - which must equal it. |
applied_moment | number[] | yes | The 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. |
beds | BedResult[] | 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_forces | BoltForce[] | 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_passes | integer | null | How 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. | |
converged | boolean | yes | True only when the solver returned, the solution is finite, and equilibrium closes. |
elastic_stress_ratio | number | null | sigma_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_error | number | yes | |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. |
mesh | ConnFeaMesh | yes | |
reaction_force | number[] | yes | |
reaction_moment | number[] | yes | |
rotations | ProbeRotation[] | One entry per rotation probe, in the order they were given. Default: []. | |
sigma_vm | number[] | yes | Elastic 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_max | number | yes | |
sigma_vm_max_joint | number | yes | The 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. |
u | number[][] | yes | Translation at each node, m, global axes. |
u_max | number | yes | Largest nodal translation magnitude, m. |
warnings | string[] | 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) -> StringInput json_input: WasmConnStiffenerInput
| Field | Type | Required | Description |
|---|---|---|---|
b_col | number | yes | |
d_col | number | yes | |
flange_bending_util | number | yes | |
flange_force | number | yes | |
fy_col | number | yes | |
fy_stiffener | number | yes | |
panel_shear_util | number | yes | |
tf_col | number | yes | |
tw_col | number | yes | |
web_bearing_util | number | yes |
Result: WasmConnStiffenerResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnStiffenerComponent[] | yes | |
continuity_plate_area_req | number | yes | |
continuity_plate_thickness_min | number | yes | |
doubler_area_req | number | yes | |
doubler_thickness_min | number | yes | |
flange_force | number | yes | |
status | string | yes | |
stiffeners_required | boolean | yes |
eccentric_bolt_group_check
Eccentrically loaded bolt group check (elastic method).
rust
eccentric_bolt_group_check(json_input: &str) -> StringInput json_input: WasmBoltGroupInput
| Field | Type | Required | Description |
|---|---|---|---|
boltDiameter | number | yes | |
boltGrade | string | yes | |
bolts | WasmBoltPositionInput[] | yes | |
kr | number | yes | |
mz | number | yes | |
nN | integer | yes | |
nX | integer | yes | |
vx | number | yes | |
vy | number | yes |
Result: WasmBoltGroupResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governingBolt | integer | yes | |
phiVbolt | number | yes | |
phiVtotal | number | yes | |
util_max | number | yes | |
vResultantGov | number | yes |
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) -> StringInput json_input: WasmEndPlateInput
| Field | Type | Required | Description |
|---|---|---|---|
beam_bf | number | Default: 0. | |
beam_d | number | yes | |
beam_fy | number | Default: 0. | |
beam_tf | number | yes | |
beam_tw | number | Default: 0. | |
bolt_count_tension | integer | yes | |
bolt_count_total | integer | Total bolts sharing the shear. 0 defaults to twice the tension count. Default: 0. | |
bolt_diameter | number | yes | |
bolt_grade | string | yes | |
both_directions | boolean | The 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_bf | number | Default: 0. | |
column_d | number | The 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_fy | number | Default: 0. | |
column_r1 | number | Default: 0. | |
column_stiffened | boolean | Continuity stiffeners opposite the tension flange (the web's tension is theirs). Default: false. | |
column_tf | number | Default: 0. | |
column_tw | number | Default: 0. | |
flange_weld_leg | number | Default: 0. | |
gauge | number | Centre-to-centre gauge of the two bolt columns (m). Default: 0. | |
m_star | number | yes | |
plate_ext | number | How far the plate runs past the tension flange's outer face (m); 0 for a flush plate. Default: 0. | |
plate_fy | number | yes | |
plate_thickness | number | yes | |
plate_width | number | Default: 0. | |
rows | WasmEndPlateDrawnRow[] | 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_star | number | Coincident connection shear (N). Optional; 0 skips the Cl 9.2.2.3 combined shear + tension interaction on the tension bolts. Default: 0. | |
web_weld_leg | number | Default: 0. |
Result: WasmEndPlateResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
columnInTstub | boolean | The column flange and web in tension were in the T-stub rows (SA-118). Default: false. | |
d_eff | number | yes | |
governing | string | Default: "". | |
m_star | number | yes | |
method | string | "tstub" (the drawn rows, AS 4100 T-stubs) or "strip" (no rows given: the plate as one strip). Default: "". | |
notes | string[] | Default: []. | |
phiBoltsTension | number | yes | |
phiMDes | number | yes | |
phiPlateBending | number | yes | |
row_capacity | number[] | Default: []. | |
row_modes | string[] | Per tension row: governing T-stub mode and its capacity (N), top row first. Default: []. | |
tStar | number | yes | |
utilWebWeld | number | The web welds to the plate under the shear and the rows' tension, Cl 9.6.3.10 (SA-119). Default: 0. | |
util_bolt_combined | number | yes | |
util_bolts | number | yes | |
util_max | number | yes | |
util_plate | number | yes |
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) -> StringInput json_input: WasmEndPlateMultiRowInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_diameter | number | yes | |
bolt_grade | string | yes | |
fc_rd | number | yes | |
plate_fy | number | yes | |
plate_thickness | number | yes | |
plate_width | number | yes | |
rows | WasmEndPlateRowInput[] | yes |
Result: WasmEndPlateMultiRowResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
fc_rd | number | yes | |
m_rd | number | yes | |
notes | string[] | yes | |
rows | WasmEndPlateRowResult[] | yes | |
total_tension | number | yes |
fin_plate_check
Fin plate (single plate) shear connection check to AS 4100 Cl 9.
rust
fin_plate_check(json_input: &str) -> StringInput json_input: WasmFinPlateInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_columns | integer | Default: 0. | |
bolt_count | integer | yes | |
bolt_diameter | number | yes | |
bolt_grade | string | yes | |
edge_distance | number | Default: 0. | |
end_distance | number | Default: 0. | |
gauge | number | Default: 0. | |
pitch | number | Default: 0. | |
plate_depth | number | yes | |
plate_fu | number | yes | |
plate_fy | number | yes | |
plate_thickness | number | yes | |
v_star | number | yes | |
weld_fuw | number | Default: 480000000. | |
weld_leg_size | number | yes | |
weld_length | number | yes |
Result: WasmFinPlateResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phiBlockShear | number | yes | |
phiBolts | number | yes | |
phiPlateBearing | number | yes | |
phiPlateShear | number | yes | |
phiPlateTearout | number | yes | |
phiVDes | number | yes | |
phiWeld | number | yes | |
util_block_shear | number | yes | |
util_bolts | number | yes | |
util_max | number | yes | |
util_plate_bearing | number | yes | |
util_plate_shear | number | yes | |
util_plate_tearout | number | yes | |
util_weld | number | yes | |
v_star | number | yes |
gusset_check
Gusset plate check: Whitmore section, block shear, bolts and welds.
rust
gusset_check(json_input: &str) -> StringInput json_input: WasmGussetInput
| Field | Type | Required | Description |
|---|---|---|---|
alphaB | number | Default: 0.5. | |
boltDiameter | number | yes | |
count | integer | yes | |
edgeType | string | Default: "". | |
grade | string | Default: "8.8". | |
k | number | Default: 0.65. | |
lb | number | Default: 0.12. | |
memberWidth | number | yes | |
nShearPlanes | integer | Default: 1. | |
nStar | number | yes | |
plateFu | number | yes | |
plateFy | number | yes | |
plateThickness | number | yes |
Result: WasmGussetResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
layout | WasmBoltLayout | yes | |
notes | string[] | yes | |
status | string | yes |
gusset_support_check
Gusset plate support connection check: face bolts, bearing, plate bending, welds.
rust
gusset_support_check(json_input: &str) -> StringInput json_input: WasmGussetSupportInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_dia | number | yes | |
bolt_grade | string | yes | |
bolted_plate | boolean | yes | |
cols | integer | yes | |
f_par | number | yes | |
f_perp | number | yes | |
gusset_bolts | integer | yes | |
lever | number | yes | |
m_star | number | yes | |
pitch | number | yes | |
plate_fy | number | yes | |
plate_t | number | yes | |
ply_fu | number | yes | |
ply_t | number | yes | |
rows | integer | yes | |
strip | number | yes | |
weld_leg | number | yes | |
weld_len | number | yes |
Result: WasmGussetSupportResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
f_par | number | yes | |
f_perp | number | yes | |
tOuter | number | yes | |
util_face_bolts | number | yes | |
util_gusset_bolts | number | yes | |
util_gusset_weld | number | yes | |
util_max | number | yes | |
util_plate_bending | number | yes | |
util_ply_bearing | number | yes |
hollow_brace_end_check
Hollow section brace end check: tongue plate, tube, weld and bolts.
rust
hollow_brace_end_check(json_input: &str) -> StringInput json_input: WasmHollowBraceEndInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_columns | integer | Default: 1. | |
bolt_count | integer | yes | |
bolt_dia | number | yes | |
bolt_grade | string | yes | |
n_star | number | yes | |
slotted | boolean | true: a tongue in a slotted tube; false: a lug on an end plate, the tube whole (plan A2b). Default: true. | |
tongue_end | number | yes | |
tongue_fu | number | yes | |
tongue_fy | number | yes | |
tongue_t | number | yes | |
tongue_w | number | yes | |
tube_d | number | yes | |
tube_fu | number | yes | |
tube_fy | number | yes | |
tube_t | number | yes | |
weld_leg | number | yes | |
weld_len | number | yes |
Result: WasmHollowBraceEndResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
n_star | number | yes | |
phiBoltShear | number | yes | |
phiTongueBearing | number | yes | |
phiTongueFracture | number | yes | |
phiTongueTearout | number | yes | |
phiTongueYield | number | yes | |
phiTubeNet | number | yes | |
phiWeld | number | yes | |
shearLagU | number | yes | |
util_bolt_shear | number | yes | |
util_max | number | yes | |
util_tongue | number | yes | |
util_tongue_bearing | number | yes | |
util_tube | number | yes | |
util_weld | number | yes |
lap_check
Lapped cold-formed purlin or girt connection check.
rust
lap_check(json_input: &str) -> StringInput json_input: WasmLapInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_count | integer | yes | |
bolt_dia | number | yes | |
bolt_grade | string | yes | |
eccentricity | number | The ply standoff: how far the bolt line sits off the member's own axis. Default: 0. | |
m_star | number | Default: 0. | |
n_star | number | yes | |
pitch | number | yes | |
ply1_fu | number | yes | |
ply1_t | number | yes | |
ply2_fu | number | yes | |
ply2_t | number | yes | |
v_star | number | yes |
Result: WasmLapResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bearingC | number | yes | |
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
kr | number | yes | |
lapLength | number | yes | |
notes | string[] | yes | |
status | string | yes |
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) -> f64Result: 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) -> StringInput json_input: WasmMomentBaseInput
| Field | Type | Required | Description |
|---|---|---|---|
boltDiameter | number | yes | |
columnBf | number | Default: 0. | |
columnD | number | yes | |
concreteFc | number | yes | |
grade | string | Default: "8.8". | |
mStar | number | yes | |
nStar | number | Default: 0. | |
nTension | integer | yes | |
plateB | number | yes | |
plateD | number | yes | |
plateFy | number | yes | |
plateT | number | yes | |
vStar | number | Default: 0. |
Result: WasmMomentBaseResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
anchorTension | number | yes | |
bearingLength | number | yes | |
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
purlin_cleat_check
Purlin cleat check: bolts, bearing on purlin and cleat, cleat bending and weld.
rust
purlin_cleat_check(json_input: &str) -> StringInput json_input: WasmPurlinCleatInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_count | integer | yes | |
bolt_dia | number | yes | |
bolt_grade | string | yes | |
bolt_height | number | yes | |
cleat_b | number | yes | |
cleat_edge | number | yes | |
cleat_fu | number | yes | |
cleat_fy | number | yes | |
cleat_t | number | yes | |
purlin_fu | number | yes | |
purlin_t | number | yes | |
v_lat | number | Default: 0. | |
v_star | number | yes | |
weld_leg | number | yes |
Result: WasmPurlinCleatResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bearingC | number | yes | |
phiBoltShear | number | yes | |
phiCleatBearing | number | yes | |
phiCleatBending | number | yes | |
phiCleatTearout | number | yes | |
phiPurlinBearing | number | yes | |
phiWeldShear | number | yes | |
util_bolt_shear | number | yes | |
util_cleat_bearing | number | yes | |
util_cleat_bending | number | yes | |
util_max | number | yes | |
util_purlin_bearing | number | yes | |
util_weld | number | yes | |
v_lat | number | yes | |
v_star | number | yes |
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) -> StringInput json_input: WasmRidgeTieInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_diameter | number | yes | |
bolt_grade | string | Default: "8.8". | |
e | number | yes | Weld line to the bolt group's centroid (m). |
n_bolts | integer | yes | |
n_star | number | Default: 0. | |
plate_b | number | yes | |
plate_fu | number | yes | |
plate_fy | number | yes | |
plate_t | number | yes | |
tie_end | number | Default: 0. | |
tie_fu | number | Default: 440000000. | |
tie_tw | number | yes | |
v_star | number | Default: 0. | |
weld_fuw | number | Default: 480000000. | |
weld_leg | number | yes |
Result: RidgeTieCapacity
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governing | string | yes | |
util_bolt_shear | number | yes | |
util_max | number | yes | |
util_plate_axial | number | yes | |
util_plate_bearing | number | yes | |
util_plate_bending | number | yes | |
util_plate_shear | number | yes | |
util_tie_bearing | number | yes | |
util_weld | number | yes |
rod_brace_check
Rod brace end check: rod, pin, lug, bolts and welds.
rust
rod_brace_check(json_input: &str) -> StringInput json_input: WasmRodBraceInput
| Field | Type | Required | Description |
|---|---|---|---|
bolt_count | integer | yes | |
bolt_dia | number | yes | |
bolt_grade | string | yes | |
lug_edge | number | yes | |
lug_fu | number | yes | |
lug_t | number | yes | |
n_star | number | yes | |
n_star_bolts | number | Default: 0. | |
pin_dia | number | yes | |
pin_fy | number | yes | |
pin_shear_planes | integer | Default: 2. | |
rod_dia | number | yes | |
rod_fu | number | yes | |
rod_fy | number | yes | |
threaded | boolean | Default: true. | |
v_star_bolts | number | Default: 0. |
Result: WasmRodBraceResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
n_star | number | yes | |
phiBoltShear | number | yes | |
phiBoltTension | number | yes | |
phiLugBearing | number | yes | |
phiLugTearout | number | yes | |
phiPinBearing | number | yes | |
phiPinShear | number | yes | |
phiRod | number | yes | |
rodAn_mm2 | number | yes | |
util_bolts | number | yes | |
util_lug | number | yes | |
util_max | number | yes | |
util_pin_bearing | number | yes | |
util_pin_shear | number | yes | |
util_rod | number | yes |
seat_check
Seated beam connection check (stiffened seat).
rust
seat_check(json_input: &str) -> StringInput json_input: WasmSeatInput
| Field | Type | Required | Description |
|---|---|---|---|
beam_d | number | yes | |
beam_fy | number | yes | |
beam_tf | number | yes | |
beam_tw | number | yes | |
seat_fy | number | yes | |
seat_len | number | yes | |
seat_t | number | yes | |
seat_w | number | yes | |
stiff_fy | number | yes | |
stiff_h | number | yes | |
stiff_t | number | yes | |
v_star | number | yes | |
weld_fuw | number | Default: 480000000. | |
weld_leg | number | yes | |
weld_len | number | yes |
Result: WasmSeatResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bearingWidth | number | yes | |
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
phiBearingBuckling | number | yes | |
phiBearingYield | number | yes | |
status | string | yes |
shear_key_check
Base plate shear key check: bearing on concrete, key bending and weld.
rust
shear_key_check(json_input: &str) -> StringInput json_input: WasmShearKeyInput
| Field | Type | Required | Description |
|---|---|---|---|
boltDiameter | number | Default: 0. | |
concreteFc | number | yes | |
fuw | number | Default: 480000000. | |
grade | string | Default: "8.8". | |
keyB | number | yes | |
keyFy | number | yes | |
keyH | number | yes | |
keyT | number | yes | |
nAnchor | integer | Default: 0. | |
nStar | number | Default: 0. | |
plateB | number | yes | |
plateD | number | yes | |
plateFy | number | Default: 0. | |
plateT | number | Default: 0. | |
vStar | number | Default: 0. | |
weldLeg | number | Default: 0. |
Result: WasmShearKeyResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
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) -> StringInput json_input: WasmShearPlateInput
| Field | Type | Required | Description |
|---|---|---|---|
a | number | Default: 0. | |
a_eh_beam | number | Default: 0. | |
a_ev | number | yes | Plate edge distance to the end bolts (vertical). |
beam | WasmShearBeam | null | The 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_bf | number | Default: 0. | |
beam_cope | string | The 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_d | number | Default: 0. | |
beam_d_cb | number | Default: 0. | |
beam_d_ct | number | Default: 0. | |
beam_fu | number | Default: 440000000. | |
beam_fy | number | Default: 300000000. | |
beam_l_c | number | Default: 0. | |
beam_tf | number | Default: 0. | |
beam_tw | number | Default: 0. | |
bolt_count | integer | Default: 0. | |
bolt_diameter | number | yes | |
bolt_grade | string | Default: "8.8". | |
cols | integer | Default: 1. | |
gauge | number | Default: 0. | |
kind | string | "fep" (flexible end plate) or "wsp" (web side plate / fin plate, the default). Default: "wsp". | |
pitch | number | yes | |
plate_b | number | yes | |
plate_fu | number | yes | |
plate_fy | number | yes | |
plate_t | number | yes | |
rows | integer | Rows, or leave 0 and give the total bolt_count: rows = ceil(count / cols). Default: 0. | |
s_g1 | number | WSP: weld line to the first bolt column, the beam's end distance, beam top to the top bolt. Default: 0. | |
threads_included | boolean | Default: true. | |
v_star | number | Default: 0. | |
weld_fuw | number | Default: 480000000. | |
weld_leg | number | yes |
Result: WasmShearPlateResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
dI | number | yes | |
e | number | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
governing | string | yes | |
kind | string | yes | |
notes | string[] | yes | |
phiVDes | number | yes | Least component capacity (N) and its key (Va..Vh), whatever the demand. |
status | string | yes |
splice_check
Bolted member splice check: cover plates, bolts, net section and block shear.
rust
splice_check(json_input: &str) -> StringInput json_input: WasmSpliceInput
| Field | Type | Required | Description |
|---|---|---|---|
boltDiameter | number | yes | |
endDist | number | Default: 0. | |
flangeT | number | yes | |
fpB | number | yes | |
fpFu | number | yes | |
fpFy | number | yes | |
fpT | number | yes | |
grade | string | Default: "8.8". | |
mStar | number | yes | |
nFlange | integer | yes | |
nStar | number | Default: 0. | |
nWeb | integer | Default: 0. | |
pitch | number | yes | |
sectionD | number | yes | |
vStar | number | Default: 0. | |
wpT | number | Default: 0. |
Result: WasmSpliceResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
through_plate_check
Through-plate connection to a hollow section check.
rust
through_plate_check(json_input: &str) -> StringInput json_input: WasmThroughPlateInput
| Field | Type | Required | Description |
|---|---|---|---|
f_star | number | yes | |
n_slots | integer | yes | |
n_star | number | yes | |
plate_t | number | yes | |
tube_d | number | yes | |
tube_fu | number | yes | |
tube_fy | number | yes | |
tube_t | number | yes | |
weld_leg | number | yes | |
weld_len | number | yes |
Result: WasmThroughPlateResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
f_star | number | yes | |
n_star | number | yes | |
phiTubeNet | number | yes | |
phiWeld | number | yes | |
util_max | number | yes | |
util_through_weld | number | yes | |
util_tube_through | number | yes |
web_cleat_check
Double-angle web cleat shear connection check.
rust
web_cleat_check(json_input: &str) -> StringInput json_input: WasmWebCleatInput
| Field | Type | Required | Description |
|---|---|---|---|
boltDiameter | number | yes | |
dCleat | number | yes | |
eSup | number | Default: 0. | |
eWeb | number | yes | |
edgeDist | number | Default: 0. | |
endDist | number | Default: 0. | |
fuCleat | number | yes | |
fuWeb | number | yes | |
fyCleat | number | yes | |
grade | string | Default: "8.8". | |
nSup | integer | yes | |
nWeb | integer | yes | |
pitch | number | yes | |
tCleat | number | yes | |
tWeb | number | yes | |
vStar | number | yes |
Result: WasmWebCleatResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
weld_capacity
AS 4100 fillet weld capacity per unit length (Cl 9.6).
rust
weld_capacity(json_input: &str) -> StringInput json_input: WasmWeldInput
| Field | Type | Required | Description |
|---|---|---|---|
fuw | number | Default: 480000000. | |
kr | number | Default: 1. | |
leg_size | number | yes | |
length | number | yes |
Result: WasmWeldResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phiVw | number | yes |
weld_group_check
Eccentrically loaded fillet weld group check (elastic method).
rust
weld_group_check(json_input: &str) -> StringInput json_input: WasmWeldGroupInput
| Field | Type | Required | Description |
|---|---|---|---|
fuw | number | yes | |
kr | number | yes | |
mz | number | yes | |
segments | WasmWeldSegmentInput[] | yes | |
vx | number | yes | |
vy | number | yes |
Result: WasmWeldGroupResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governingSegment | integer | yes | |
phiVperMmGov | number | yes | |
phiVtotal | number | yes | |
util_max | number | yes | |
vPerMmGov | number | yes |
welded_moment_check
Welded beam-to-column moment connection check.
rust
welded_moment_check(json_input: &str) -> StringInput json_input: WasmWeldedMomentInput
| Field | Type | Required | Description |
|---|---|---|---|
flangeB | number | yes | |
flangeCpbw | boolean | Default: true. | |
flangeLeg | number | Default: 0. | |
flangeT | number | yes | |
fuw | number | Default: 480000000. | |
fy | number | yes | |
mStar | number | yes | |
nStar | number | Default: 0. | |
sectionD | number | yes | |
vStar | number | Default: 0. | |
webLeg | number | Default: 0. | |
webT | number | Default: 0. |
Result: WasmWeldedMomentResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
components | WasmConnComponent[] | yes | |
govComponent | string | yes | |
govUtil | number | yes | |
notes | string[] | yes | |
status | string | yes |
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) -> StringInput json_input: WasmRcBeamInput
| Field | Type | Required | Description |
|---|---|---|---|
a_sc | number | Default: 0. | |
a_st | number | yes | |
b | number | yes | |
d | number | yes | |
d_sc | number | Default: 0. | |
f_prime_c | number | yes | |
f_sy | number | yes |
Result: WasmRcBeamResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
a | number | yes | |
kU | number | yes | |
overReinforced | boolean | yes | |
phi | number | yes | |
phiMu | number | yes |
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) -> StringInput json_input: WasmRcBeamServiceInput
| Field | Type | Required | Description |
|---|---|---|---|
a_sc | number | Default: 0. | |
a_st | number | yes | |
b | number | yes | SI 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) |
d | number | yes | |
d_sc | number | Default: 0. | |
d_section | number | yes | |
defl_limit | number | null | Default: null. | |
e_s | number | null | Default: null. | |
eps_cs | number | null | Default: null. | |
f_prime_c | number | yes | |
g | number | yes | |
m_s | number | null | M_s* in N.m, required for continuous spans Default: null. | |
psi_l | number | yes | |
psi_s | number | yes | |
q | number | yes | |
span | number | yes | |
support | BeamSupport | yes | "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) -> StringInput json_input: WasmRcShearInput
| Field | Type | Required | Description |
|---|---|---|---|
a_st | number | yes | |
b | number | yes | |
d | number | yes | |
d_overall | number | Overall 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_c | number | yes |
Result: WasmRcShearResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
phi | number | yes | |
phiVuc | number | yes | |
rhoW | number | yes | |
vUc | number | yes |
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) -> StringInput json_input: WasmRcColumnInput
| Field | Type | Required | Description |
|---|---|---|---|
a_sc | number | yes | |
a_st | number | yes | |
b | number | yes | |
d | number | yes | |
d_sc | number | Default: 0. | |
d_section | number | yes | |
f_prime_c | number | yes | |
f_sy | number | yes | |
m_star | number | yes | |
n_star | number | yes |
Result: WasmRcColumnResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
curve | WasmRcColumnCurveResult | yes | |
phiMN | number | yes | |
phiMu | number | yes | |
phiNuo | number | yes | |
util_interaction | number | yes | |
util_m | number | yes | |
util_max | number | yes | |
util_n | number | yes |
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) -> StringInput json_input: WasmRcColumnInput
| Field | Type | Required | Description |
|---|---|---|---|
a_sc | number | yes | |
a_st | number | yes | |
b | number | yes | |
d | number | yes | |
d_sc | number | Default: 0. | |
d_section | number | yes | |
f_prime_c | number | yes | |
f_sy | number | yes | |
m_star | number | yes | |
n_star | number | yes |
Result: WasmRcColumnCurveResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
mBalanced | number | yes | |
nBalanced | number | yes | |
phiMu | number | yes | |
phiNuo | number | yes | |
points | WasmRcColumnCurvePoint[] | 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) -> StringInput 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) -> StringInput json_input: WasmRcMemberInput
| Field | Type | Required | Description |
|---|---|---|---|
a_sc | number | Default: 0. | |
a_st | number | yes | |
b | number | yes | |
d | number | yes | |
d_sc | number | Default: 0. | |
d_section | number | yes | |
f_prime_c | number | yes | |
f_sy | number | yes | |
m_star | number | yes | |
n_star | number | yes | |
v_star | number | yes |
Result: WasmRcMemberResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governing | string | yes | |
phiMN | number | yes | |
phiMu | number | yes | |
phiNuo | number | yes | |
phiVuc | number | yes | |
util_axial | number | yes | |
util_bending | number | yes | |
util_interaction | number | yes | |
util_max | number | yes | |
util_shear | number | yes |
as3600_slab_check
AS 3600 slab check: strip moment, minimum steel, punching and deflection.
rust
as3600_slab_check(json_input: &str) -> StringInput json_input: WasmSlabInput
| Field | Type | Required | Description |
|---|---|---|---|
a_st_per_m | number | yes | |
col_a | number | yes | |
col_b | number | yes | |
cover | number | yes | |
d | number | yes | |
f_prime_c | number | yes | |
f_sy | number | yes | |
m_star | number | yes | |
mv_star | number | Moment transferred to the support, M*v (N·m); see WasmSlabPunchingInput::mv_star. Default: 0. | |
n_star | number | yes | |
span | number | yes | |
support_type | integer | Default: 0. | |
thickness | number | Default: 0. |
Result: WasmSlabResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
a_st_min | number | yes | |
a_st_provided | number | yes | |
betaH | number | yes | |
fCv | number | yes | |
governing | string | yes | |
lOverDActual | number | yes | |
lOverDLimit | number | yes | |
phiMu | number | yes | |
phiVUo | number | yes | |
util_deflection | number | yes | |
util_max | number | yes | |
util_min_steel | number | yes | |
util_moment | number | yes | |
util_punching | number | yes | |
vStarEquivalent | number | yes |
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) -> StringInput json_input: WasmSlabDeflectionInput
| Field | Type | Required | Description |
|---|---|---|---|
d | number | yes | |
f_sy | number | yes | |
span | number | yes | |
support_type | integer | Default: 0. | |
thickness | number | Default: 0. |
Result: WasmSlabDeflectionResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
lOverDActual | number | yes | |
lOverDLimit | number | yes | |
util_deflection | number | yes |
as3600_slab_punching_shear
AS 3600 slab punching shear capacity (Cl 9.3).
rust
as3600_slab_punching_shear(json_input: &str) -> StringInput json_input: WasmSlabPunchingInput
| Field | Type | Required | Description |
|---|---|---|---|
col_a | number | yes | |
col_b | number | yes | |
cover | number | yes | |
d | number | yes | |
f_prime_c | number | yes | |
mv_star | number | Moment 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_star | number | yes |
Result: WasmSlabPunchingResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
betaH | number | yes | Cl 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. |
d | number | yes | |
f_cv | number | yes | |
phiVUo | number | yes | |
u | number | yes | |
util_punching | number | yes | |
vStarEquivalent | number | yes | |
vU | number | yes | |
vUo | number | yes |
as3600_slab_strip_moment
AS 3600 slab strip moment capacity and minimum steel.
rust
as3600_slab_strip_moment(json_input: &str) -> StringInput json_input: WasmSlabStripInput
| Field | Type | Required | Description |
|---|---|---|---|
a_st_per_m | number | yes | |
cover | number | yes | |
d | number | yes | |
f_prime_c | number | yes | |
f_sy | number | yes | |
m_star | number | yes | |
thickness | number | Default: 0. |
Result: WasmSlabStripResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
a_st_min | number | yes | |
a_st_provided | number | yes | |
phiMu | number | yes | |
util_min_steel | number | yes | |
util_moment | number | yes |
composite_beam_check
AS 2327 composite steel-concrete beam check: moment capacity and shear connectors.
rust
composite_beam_check(json_input: &str) -> StringInput json_input: WasmCompositeBeamInput
| Field | Type | Required | Description |
|---|---|---|---|
b_f | number | yes | |
beam_spacing | number | yes | |
d | number | yes | |
d_s | number | yes | |
d_stud | number | yes | |
f_prime_c | number | yes | |
f_u_stud | number | yes | |
f_y | number | yes | |
m_star | number | yes | |
n_studs | integer | yes | |
span | number | yes | |
t_f | number | yes | |
t_w | number | yes | |
z_e | number | yes |
Result: WasmCompositeBeamResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bEff | number | yes | |
eta | number | yes | |
fCc | number | yes | |
fSt | number | yes | |
mBare | number | yes | |
mFull | number | yes | |
nStudsReq | number | yes | |
phiMbv | number | yes | |
phiNQ | number | yes | |
pnaInSlab | boolean | yes | |
util_max | number | yes | |
util_moment | number | yes | |
util_stud | number | yes |
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) -> StringInput json_input: WasmRcBeamCapacityInput
| Field | Type | Required | Description |
|---|---|---|---|
b | number | yes | Section width (m). |
bottom_bars | WasmRcBarRow | yes | Bottom reinforcement row. |
cover | number | yes | Concrete cover to bar centroid (m). |
e_c | number | Concrete elastic modulus (Pa). Defaults to 30 GPa. Default: 30000000000. | |
e_s | number | Steel elastic modulus (Pa). Defaults to 200 GPa. Default: 200000000000. | |
f_prime_c | number | yes | Concrete compressive strength f'c (Pa). |
f_sy | number | yes | Steel yield stress fsy (Pa). |
h | number | yes | Section height (m). |
kappa_max | number | Maximum curvature for the M-κ curve (1/m). Default: 0.005. | |
mesh_size | number | Fiber mesh size (m). Smaller = more accurate but slower. Default: 0.002. | |
n_kappa_points | integer | Number of points on the M-κ curve. Default: 20. | |
top_bars | WasmRcBarRow | null | Top reinforcement row (optional). Default: null. |
Result: WasmRcBeamCapacityOutput
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
area_concrete | number | yes | Plain concrete area, b × h (m²). |
area_transformed | number | yes | Transformed gross area, concrete + n·A_s (m²). |
d_na_cracked | number | yes | Cracked neutral-axis depth from extreme compression fibre (m). |
i_cracked | number | yes | Cracked second moment of area about cracked neutral axis (m⁴). |
i_gross | number | yes | Gross second moment of area about centroidal x-axis (m⁴). |
k_uo | number | yes | Neutral-axis parameter k_uo = c / d_o at ultimate. |
m_cr | number | yes | Cracking moment (N·m). |
m_u | number | yes | Nominal ultimate moment capacity from AS 3600 stress block (N·m). |
moment_curvature | WasmRcMomentCurvaturePoint[] | yes | Moment-curvature curve. |
phi | number | yes | Capacity reduction factor, AS 3600 Table 2.2.2 (ductility-dependent, 0.65 to 0.85). |
phi_m_u | number | yes | Capacity-reduced ultimate moment phi * M_u (N·m). |
y_centroid | number | yes | Gross 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) -> StringInput json_input: WasmRcBiaxialInput
| Field | Type | Required | Description |
|---|---|---|---|
b | number | yes | |
f_prime_c | number | yes | Concrete compressive strength f'c (Pa). |
f_sy | number | yes | Steel yield stress fsy (Pa). |
h | number | yes | |
mesh_size | number | Fiber mesh size (m). Defaults to 0.005. Default: 0.002. | |
n_c | integer | Number of neutral-axis depths per angle (>= 3). Default: 21. | |
n_theta | integer | Number of neutral-axis angles to sweep (>= 2). Default: 8. | |
rebars | WasmRcRebar[] | Reinforcing bars as a list of {x, y, area} (SI units). Default: []. |
Result: WasmRcBiaxialOutput
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
n_c | integer | yes | |
n_theta | integer | yes | |
points | WasmRcBiaxialPoint[] | 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) -> StringInput json_input: WasmShearTorsionInput
| Field | Type | Required | Description |
|---|---|---|---|
aSt | number | yes | |
b | number | yes | |
d | number | yes | |
fPrimeC | number | yes | |
h | number | yes | |
tStar | number | yes | |
vStar | number | yes |
Result: WasmShearTorsionResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
governing | string | yes | |
phiTUc | number | yes | |
phiVUc | number | yes | |
utilCombined | number | yes | |
utilMax | number | yes | |
utilT | number | yes | |
utilV | number | yes |
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) -> StringInput json_input: WasmAs2870Input
| Field | Type | Required | Description |
|---|---|---|---|
construction | string | Default: "". | |
du_surface | number | Default: 1.2. | |
footing_system | string | Default: "". | |
hs_m | number | Default: 1.5. | |
layers | SoilLayer[] | Default: []. | |
site_class | string | Optional: skip the soil profile and use this class directly ("M", "H1-D", ...). Default: "". | |
slab_length_m | number | Default: 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) -> StringInput json_input: WasmCombinedFootingInput
| Field | Type | Required | Description |
|---|---|---|---|
barDiameter | number | Default: 0. | |
bearingBasis | string | Default: "allowable". | |
columns | WasmCombinedColumn[] | yes | |
cover | number | yes | |
fPrimeC | number | yes | |
fPrimeCColumn | number | Default: 0. | |
fSy | number | yes | |
footingBx | number | yes | |
footingBy | number | yes | |
footingH | number | yes | |
qBearing | number | yes | |
selfWeight | number | Default: 0. | |
standard | FootingCode | Default: "as3600". |
Result: WasmCombinedFootingResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
aStBottomReq | number | yes | |
aStMin | number | yes | |
aStTopReq | number | yes | |
aStTransverseReq | number | yes | |
checksRefused | string[] | yes | |
contactState | string | yes | |
governing | string | yes | |
mHog | number | yes | |
mSag | number | yes | |
mTransverse | number | yes | |
note | string | null | ||
phiVPunch | number | yes | |
phiVUc | number | yes | |
qAllowable | number | yes | |
qMax | number | yes | |
resultantX | number | yes | |
utilBearing | number | yes | |
utilBearingStress | number | yes | |
utilDevelopment | number | yes | |
utilMax | number | yes | |
utilMoment | number | yes | |
utilPunching | number | yes | |
utilShear | number | yes | |
utilTransverse | number | yes | |
vDesign | number | yes | |
vPunch | number | yes |
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) -> StringInput json_input: WasmFootingFeInput
| Field | Type | Required | Description |
|---|---|---|---|
bx | number | yes | |
by | number | yes | |
cx | number | Default: 0.4. | |
cy | number | Default: 0.4. | |
e_concrete | number | Default: 30000000000. | |
ks | number | yes | |
mx | number | Default: 0. | |
my | number | Default: 0. | |
n | number | yes | |
nu | number | Default: 0.2. | |
nx | integer | Default: 12. | |
ny | integer | Default: 12. | |
self_weight | number | Default: 0. | |
thickness | number | yes |
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) -> StringInput json_input: WasmPressureFieldInput
| Field | Type | Required | Description |
|---|---|---|---|
bx | number | yes | |
by | number | yes | |
mx | number | yes | |
my | number | yes | |
n | number | yes | |
nx | integer | Default: 25. | |
ny | integer | Default: 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) -> StringInput json_input: WasmFootingSizeInput
| Field | Type | Required | Description |
|---|---|---|---|
aspect | number | by/bx. Defaults to 1.0 (square). Default: 0. | |
footingH | number | Footing thickness, m, so self-weight can grow with the plan area inside the loop. Default: 0. | |
mxService | number | Default: 0. | |
myService | number | Default: 0. | |
nService | number | yes | Unfactored vertical load, kN. Bearing is a working-stress check. |
qAllowable | number | yes | Allowable bearing pressure, kPa. Already factored if the caller's basis was "ultimate". |
Result: WasmFootingSizeResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
bx | number | yes | |
by | number | yes | |
converged | boolean | yes | |
note | string | null | ||
qMax | number | yes | |
util | number | yes |
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: { point, matches: [{name, class}], count }. No hazard data is embedded - the polygons are always supplied by the caller.
rust
geo_classify_point(json_input: &str) -> StringInput json_input: WasmGeoClassifyInput
| Field | Type | Required | Description |
|---|---|---|---|
point | number[] | yes | Query point [lon, lat]. |
polygons | GeoPolygon[] | 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) -> StringInput json_input: WasmGradeBeamInput
| Field | Type | Required | Description |
|---|---|---|---|
columns | WasmGradeBeamColumn[] | yes | |
cover | number | yes | |
fPrimeC | number | yes | |
fSy | number | yes | |
ks | number | yes | Modulus of subgrade reaction, N/m^3. Geotechnical; no default - see grade_beam.rs. |
length | number | yes | |
nElements | integer | Default: 0. | |
standard | FootingCode | Concrete design code for the longitudinal flexure design. Omitted -> AS 3600, so a payload without a standard designs exactly as before. Default: "as3600". | |
thickness | number | yes | |
width | number | yes |
Result: WasmGradeBeamResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
aStBottomReq | number | yes | |
aStMin | number | yes | |
aStTopReq | number | yes | |
checksRefused | string[] | yes | |
lambdaL | number | yes | |
mHog | number | yes | |
mSag | number | yes | |
note | string | null | ||
qMax | number | yes | |
qMaxAt | number | yes | |
rigidity | string | yes | |
settlementMax | number | yes | |
utilMoment | number | yes | |
vMax | number | yes |
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) -> StringInput json_input: WasmPadFootingInput
| Field | Type | Required | Description |
|---|---|---|---|
asDowelProvided | number | Default: 0. | |
asProvidedX | number | Default: 0. | |
asProvidedY | number | Default: 0. | |
barDiameter | number | Default: 0. | |
bearingBasis | string | Default: "allowable". | |
columnBx | number | yes | |
columnBy | number | yes | |
columnEx | number | Default: 0. | |
columnEy | number | Default: 0. | |
columnPosition | string | Default: "interior". | |
cover | number | yes | |
designSection | DesignSection | Default: {"kind":"face"}. | |
fPrimeC | number | yes | |
fPrimeCColumn | number | Default: 0. | |
fSy | number | yes | |
footingBx | number | yes | |
footingBy | number | yes | |
footingH | number | yes | |
mxService | number | Default: 0. | |
mxStar | number | yes | |
myService | number | Default: 0. | |
myStar | number | yes | |
nService | number | Default: 0. | |
nStar | number | yes | |
pedestalHeight | number | Default: 0. | |
phiBaseDeg | number | Default: 30. | |
qBearing | number | yes | |
reinfClass | ReinforcementClass | Default: "n". | |
reinforced | boolean | Default: true. | |
selfWeight | number | Default: 0. | |
standard | FootingCode | Default: "as3600". | |
vStar | number | Default: 0. |
Result: WasmPadFootingResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
aSDowelReq | number | yes | |
aStMin | number | yes | |
aStXProvided | number | yes | |
aStXReq | number | yes | |
aStYProvided | number | yes | |
aStYReq | number | yes | |
bearingStressCapacity | number | yes | |
bearingStressDemand | number | yes | |
checksRefused | string[] | yes | |
contactState | string | yes | |
cornerPressures | number[] | yes | |
dEff | number | yes | |
developmentAvailableM | number | yes | |
developmentDetail | string | yes | |
developmentLstM | number | yes | |
governing | string | yes | |
infinite | string[] | yes | Utilisation fields that are +Infinity (a decided failure), which JSON would otherwise turn into null and so into "not evaluated". The JS adapter restores them. |
kUoX | number | yes | |
kUoY | number | yes | |
mXDesign | number | yes | |
mYDesign | number | yes | |
note | string | null | ||
overturningE | number | yes | |
overturningELimit | number | yes | |
phiBendingX | number | yes | |
phiBendingY | number | yes | |
phiVPunch | number | yes | |
phiVUc | number | yes | |
plain | WasmPlainConcreteCheck | null | Present only when the caller asked for an UNREINFORCED footing; null otherwise, which is what every existing caller sees. | |
punchingPerimeter | number | yes | |
qAllowable | number | yes | |
qMax | number | yes | |
slidingResistance | number | yes | |
thicknessRequired | number | yes | |
utilBearing | number | yes | |
utilBearingStress | number | yes | |
utilDevelopment | number | yes | |
utilDowelDevelopment | number | yes | |
utilDowelTension | number | yes | |
utilMax | number | yes | |
utilMomentX | number | yes | |
utilMomentY | number | yes | |
utilOverturning | number | yes | |
utilPedestal | number | yes | |
utilPunching | number | yes | |
utilShear | number | yes | |
utilSliding | number | yes | |
vPunch | number | yes | |
vUc | number | yes | |
vX | number | yes | |
vY | number | yes |
pedestal_design
RC pedestal on a footing: axial and biaxial bending capacity to AS 3600.
rust
pedestal_design(json_input: &str) -> StringInput json_input: PedestalInput
| Field | Type | Required | Description |
|---|---|---|---|
aScTotal | number | yes | TOTAL longitudinal steel area Asc (mm^2), summed over all bars. |
barDia | number | yes | Longitudinal bar diameter (mm) - to place the bar centroid off the cover. |
braced | boolean | yes | Whether 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. |
cover | number | yes | Clear cover to the longitudinal bars (mm). |
dcX | number | yes | Pedestal plan dimension along global X (mm). |
dcY | number | yes | Pedestal plan dimension along global Y (mm). |
fPrimeC | number | yes | Concrete characteristic strength f'c (MPa). |
fPrimeCBearing | number | yes | Concrete 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). |
fSy | number | yes | Reinforcement yield strength fsy (MPa). |
height | number | yes | Pedestal height (mm) - used by the (deferred) slenderness classification. |
kEff | number | yes | Effective 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). |
loadBx | number | yes | Loaded 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. |
loadBy | number | yes | Loaded bearing footprint on the pedestal top along Y (mm). |
mxStar | number | yes | Design moment about the global X axis (N·mm). |
myStar | number | yes | Design moment about the global Y axis (N·mm). |
nStar | number | yes | Design axial load N* (N), compression positive. |
Result: PedestalResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
adequate | boolean | null | Some(true/false) once every check is determined; None while any check is NotDetermined, because an undetermined check cannot be certified adequate. | |
bearing | CheckState | yes | Cl 12.6 bearing at the loaded interface. Ok when util <= 1; NotDetermined when no loaded area was supplied (bearing cannot be checked without it). |
bearingUtil | number | yes | Cl 12.6 bearing utilisation at the loaded interface (NaN when not determined). |
fitmentMaxSpacing | number | yes | Cl 10.7.4.3(b)(i): maximum fitment spacing = min(Dc, 15.db) for single bars (mm). |
fitmentMinDia | number | yes | Cl 10.7.4.3(a) Table: minimum fitment/tie bar diameter for the longitudinal bar size (mm). |
fitments | CheckState | yes | Cl 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. |
phiMN | number | yes | Bending capacity at the applied axial load phi.Mn (N·mm) for the governing axis. |
phiNuo | number | yes | Squash-load capacity phi.Nuo (N) for the governing axis. |
reducedMinPermitted | boolean | yes | Cl 10.7.1(a) proviso: a reduced minimum is permitted when Ag.fsy > 0.15 N*. |
slenderness | CheckState | yes | Cl 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). |
slendernessLimit | number | yes | The short-column limit applied (25 braced / 22 unbraced), Cl 10.3.1. |
slendernessRatio | number | yes | Slenderness ratio Le/r (Cl 10.3.1, r per Cl 10.5.2) on the most slender axis. |
steelMax | CheckState | yes | Cl 10.7.1(b): Asc <= 0.04 Ag. |
steelMin | CheckState | yes | Cl 10.7.1(a): Asc >= 0.01 Ag. |
steelRatio | number | yes | Longitudinal steel ratio Asc/Ag. |
utilInteraction | number | yes | Governing 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) -> StringInput json_input: PileInput
| Field | Type | Required | Description |
|---|---|---|---|
diameter | number | yes | Pile shaft diameter (m). The tip is at the bottom of the last layer (embedded length = sum of the layer thicknesses). |
driven | boolean | yes | Driven pile mobilises higher lateral stress on the shaft than a bored one (K factor). |
gammaConcrete | number | Concrete unit weight for the pier's own weight (kN/m^3), 24 by default; buoyant below the WT. Default: 24. | |
hStar | number | Design lateral load at the pier head (kN), applied load_height above ground. 0 = no check. Default: 0. | |
layers | PileSoilLayer[] | yes | Soil profile, top-down; the pile is embedded through all of it. |
loadHeight | number | Height of the lateral load above ground level (m): the base plate height, or 0 at grade. Default: 0. | |
nStar | number | yes | Design axial compression N* (kN). 0 -> utilisation reported as 0. |
nUplift | number | Design uplift (tension) load on the pier (kN). 0 = no check. Default: 0. | |
phiG | number | yes | AS 2159 geotechnical strength reduction factor phi_g (from the risk assessment, ~0.40-0.65). |
tensionShaftFactor | number | Fraction of the compression shaft resistance mobilised in tension (0.7 by default). Default: 0.7. | |
waterTable | number | yes | Depth to the water table (m from the surface); large = dry. |
Result: PileResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
baseUltimate | number | yes | Ultimate base (end bearing) resistance (kN). |
design | number | yes | Design geotechnical strength Rd,g = phi_g . Rd,ug (kN). |
embeddedLength | number | yes | Embedded length (m) = sum of layer thicknesses. |
lateralDesign | number | yes | Lateral: design lateral resistance phi_g x H_u (kN). |
lateralMethod | string | yes | "broms-cohesive" or "broms-cohesionless". |
lateralMomentAtHStar | number | yes | Lateral: the moment in the pier under H* (Broms scales with the load), kNm. |
lateralMomentDepth | number | yes | Lateral: depth below ground to the maximum moment (m). |
lateralMomentUltimate | number | yes | Lateral: 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. |
lateralSoil | string | yes | The idealised soil the lateral check used: c_u (kPa) or phi' (deg) and gamma' (kN/m^3). |
lateralUltimate | number | yes | Lateral: Broms ultimate lateral load at the head (kN). |
pierWeight | number | yes | Uplift: the pier's own weight (kN), buoyant below the water table. |
shaftUltimate | number | yes | Ultimate shaft (skin friction) resistance (kN). |
ultimate | number | yes | Ultimate geotechnical strength Rd,ug = shaft + base (kN). |
upliftDesign | number | yes | Uplift: design resistance = phi_g x tension shaft + pier weight (the weight is not a geotechnical strength and takes no phi_g) (kN). |
upliftShaftUltimate | number | yes | Uplift: shaft resistance in tension (kN) = tension_shaft_factor x compression shaft. |
upliftUltimate | number | yes | Uplift: ultimate resistance = tension shaft + pier weight (kN). |
util | number | yes | Utilisation N* / Rd,g (NaN when no capacity). |
utilLateral | number | yes | Lateral utilisation H* / lateral_design (NaN when not asked). |
utilUplift | number | yes | Uplift utilisation N_uplift / uplift_design (NaN when not asked). |
verified | boolean | yes | |
warnings | string[] | 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) -> StringInput json_input: PileCapInput
| Field | Type | Required | Description |
|---|---|---|---|
barDia | number | Main bar diameter (mm) - to place the bar centroid and set the effective depth. Default: 0. | |
capBx | number | Cap plan dimensions (mm). Default: 0. | |
capBy | number | Default: 0. | |
capThickness | number | Cap overall thickness (mm). Default: 0. | |
capWeight | number | yes | Cap self-weight + soil overburden (N), added to the axial as uniform compression. 0 to ignore. |
columnBx | number | Column footprint on the cap (mm) - the flexure/shear critical sections start at the column face. Default: 0. | |
columnBy | number | Default: 0. | |
cover | number | Cover to the main (bottom) bars (mm). Default: 0. | |
fPrimeC | number | Cap concrete strength f'c (MPa). Default: 0. | |
fSy | number | Reinforcement yield strength fsy (MPa). Default: 0. | |
mxStar | number | yes | Column design moment about the global X axis (N.m). |
myStar | number | yes | Column design moment about the global Y axis (N.m). |
nStar | number | yes | Column design axial N* (N), compression positive. |
pileCapCompression | number | yes | Single-pile capacity in compression (N). <= 0 => the compression check is NotDetermined. |
pileCapTension | number | yes | Single-pile capacity in tension / uplift (N), positive magnitude. 0 means the piles are taken as unable to carry tension, so any uplift fails. |
pileDia | number | Pile 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. | |
piles | number[][] | yes | Pile plan positions (m), measured from the COLUMN / load point (any consistent origin - the centroid is computed from these). |
standard | FootingCode | The 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
| Field | Type | Required | Description |
|---|---|---|---|
adequate | boolean | null | Some(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. | |
capAstReq | number | yes | |
capFlexure | CheckState | yes | Cap 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. |
capMStar | number | yes | Governing design moment at the column face (N.mm) and the required bottom steel (mm^2, total across the cap width) in that direction. |
capPunching | CheckState | yes | Cap 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. |
capPunchingUtil | number | yes | |
capShear | CheckState | yes | Cap one-way (beam) SHEAR at d from the column face (Cl 8.2). Ok when V* <= phi.Vuc. |
capShearUtil | number | yes | |
compressionCheck | CheckState | yes | Cl-independent capacity checks. |
compressionUtil | number | yes | Compression utilisation = max_reaction / pile_cap_compression. |
deepCap | boolean | yes | True 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. |
maxReaction | number | yes | Largest compression reaction (N). |
minReaction | number | yes | Smallest reaction (N) - negative means uplift. |
reactions | number[] | yes | Per-pile axial reaction (N), compression positive, in the input pile order. |
strutTie | CheckState | yes | Deep-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. |
strutTieAstReq | number | yes | Required bottom TIE steel Ast (mm^2) in the governing direction = T / (0.85 fsy), Cl 7.3. |
strutTieMinAngleDeg | number | yes | Minimum strut-to-tie angle (deg) - below 30 the STM is not permitted. |
strutTieUtil | number | yes | Worst strut concrete-stress utilisation (Cl 7.2.3, phi_st 0.65, beta_s Cl 7.2.2) at the pile node. |
uplift | boolean | yes | True when any pile is in tension (min_reaction < 0). |
upliftCheck | CheckState | yes | |
upliftUtil | number | yes | Uplift 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) -> StringInput json_input: RaftPointInput
| Field | Type | Required | Description |
|---|---|---|---|
d | number | yes | Effective depth (mm), concrete strength (MPa), steel yield (MPa). |
fPrimeC | number | yes | |
fSy | number | yes | |
mx | number | yes | Plate bending + twisting moments per metre (N.mm/m): Mx, My, Mxy. |
mxy | number | yes | |
my | number | yes |
Result: RaftReo
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
astXBottom | number | null | Bottom/top steel in the X and Y directions, mm^2/m. None = the section cannot carry that moment. | |
astXTop | number | null | ||
astYBottom | number | null | ||
astYTop | number | null | ||
design | WoodArmer | yes | The 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<f64> (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 {"error": "mesh: ..."} - a NotDetermined refusal, never a fake mesh; a JSON parse failure returns {"error": "Parse error: ..."}, mirroring footing_fe_pressure above. Neither error path panics on degenerate input.
rust
raft_fe_design(json_input: &str) -> StringInput json_input: WasmRaftFeInput
| Field | Type | Required | Description |
|---|---|---|---|
columns | ColumnLoad[] | yes | |
dEff | number | yes | |
eConcrete | number | Default: 30000000000. | |
fPrimeC | number | yes | |
fSy | number | yes | |
fidelity | MeshFidelity | Default: "light". | |
holes | number[][][] | Default: []. | |
ks | number | yes | |
ksHi | number | yes | |
ksLo | number | yes | |
nu | number | Default: 0.2. | |
outer | number[][] | yes | |
selfWeight | number | Default: 0. | |
thickness | number | yes |
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) -> StringInput json_input: RaftFeInput
| Field | Type | Required | Description |
|---|---|---|---|
columns | ColumnLoad[] | yes | |
e_concrete | number | yes | |
ks | number | yes | |
nu | number | yes | |
poly | Polygon | yes | |
self_weight | number | yes | |
sizing | SizingField | yes | |
thickness | number | yes |
Result: RaftFeResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
applied_load | number | yes | |
converged | boolean | yes | |
equilibrium_error | number | yes | |
mesh | Mesh2d | yes | |
mx_nodes | number[] | yes | |
mxy_nodes | number[] | yes | |
my_nodes | number[] | yes | |
q_max | number | yes | |
q_min | number | yes | |
q_nodes | number[] | yes | |
sum_reaction | number | yes | |
uz_nodes | number[] | yes | |
vx_nodes | number[] | yes | |
vy_nodes | number[] | yes | |
warnings | string[] | 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) -> StringInput json_input: WasmRetainingWallInput
| Field | Type | Required | Description |
|---|---|---|---|
baseThickness | number | yes | |
baseWidth | number | yes | |
cover | number | yes | |
fPrimeC | number | yes | |
fSy | number | yes | |
gammaSoil | number | yes | |
gamma_conc | number | Default: 24. | |
ka | number | yes | |
phi_base_deg | number | Default: 30. | |
qAllowable | number | yes | |
stemThicknessBase | number | yes | |
stemThicknessTop | number | yes | |
toeLength | number | yes | |
wallHeight | number | yes |
Result: WasmRetainingWallResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
eccentricity | number | yes | |
governing | string | yes | |
heelAst | number | yes | |
heelMoment | number | yes | |
overturningMoment | number | yes | |
pa | number | yes | |
paHeight | number | yes | |
qMax | number | yes | |
qMin | number | yes | |
restoringMoment | number | yes | |
resultantX | number | yes | |
slidingResistance | number | yes | |
stemAst | number | yes | |
stemMoment | number | yes | |
utilBearing | number | yes | |
utilHeel | number | yes | |
utilMax | number | yes | |
utilOverturning | number | yes | |
utilSliding | number | yes | |
utilStem | number | yes |
settlement_design
Shallow-foundation settlement: immediate (elastic) plus primary consolidation, from the soil profile given.
rust
settlement_design(json_input: &str) -> StringInput json_input: SettlementInput
| Field | Type | Required | Description |
|---|---|---|---|
b | number | yes | Footing plan dimensions (m). The least dimension is used as B in the elastic formula. |
cc | number | yes | Compression index Cc (virgin line slope). |
cr | number | yes | Recompression index Cr (unload-reload slope). 0 falls back to Cc when overconsolidated. |
depthFactor | number | yes | Embedment (depth) correction factor I_F (<= 1), Fox's correction. 1.0 (default/conservative) ignores the reduction from founding below the surface. |
e0 | number | yes | Initial void ratio e0. |
eSoil | number | yes | Soil drained (long-term) or undrained elastic modulus for the immediate part (kPa). |
hLayer | number | yes | Compressible layer thickness (m). <= 0 means "no consolidation layer" -> ConsolState::NotComputed. |
l | number | yes | |
nuSoil | number | yes | Soil Poisson's ratio (-). |
qNet | number | yes | Net applied bearing pressure at founding level (kPa) - the pressure ABOVE the pre-existing overburden, which is what drives settlement. |
sigmaPc | number | yes | Preconsolidation pressure sigma'_p (kPa). <= sigma'_0 is treated as normally consolidated. |
sigmaV0 | number | yes | Initial vertical effective stress at mid-layer, sigma'_0 (kPa). |
zToMid | number | yes | Depth from founding level to the MIDDLE of the compressible layer (m), where the representative stress increase is evaluated. |
Result: SettlementResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
consolState | ConsolState | yes | Which e-log(sigma') branch was used (or NotComputed). |
consolidation | number | yes | Primary consolidation settlement (mm); 0 with state NotComputed when there is no layer. |
deltaSigmaMid | number | yes | Stress increase at mid-layer from the 2:1 spread, delta-sigma (kPa). |
immediate | number | yes | Immediate (elastic) settlement (mm). |
total | number | yes | Total 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) -> StringInput json_input: WasmStripFootingInput
| Field | Type | Required | Description |
|---|---|---|---|
asLongProvided | number | Longitudinal steel provided EACH face, mm^2 (0 = check against max(required, minimum)). Default: 0. | |
asProvided | number | Default: 0. | |
barDiameter | number | Default: 0. | |
bearingBasis | string | Default: "allowable". | |
cover | number | yes | |
fPrimeC | number | yes | |
fSy | number | yes | |
longitudinalBarDiameter | number | Default: 0. | |
longitudinalSpan | number | Length of lost support the strip spans along the wall, m (0 = not designed). Default: 0. | |
mService | number | Default: 0. | |
mStar | number | Default: 0. | |
nService | number | Default: 0. | |
nStar | number | yes | |
qBearing | number | yes | |
reinforced | boolean | false = an unreinforced strip, checked to AS 3600 Section 20 across its width. Default: true. | |
selfWeight | number | Default: 0. | |
standard | FootingCode | Default: "as3600". | |
stripThickness | number | yes | |
stripWidth | number | yes | |
wallThickness | number | yes |
Result: WasmStripFootingResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
aStMin | number | yes | |
aStReq | number | yes | |
checksRefused | string[] | yes | |
contactState | string | yes | |
dEff | number | yes | |
developmentDetail | string | yes | |
developmentLst | number | yes | |
governing | string | yes | |
kUo | number | yes | |
longitudinal | WasmStripLongitudinal | null | The design along the wall, present only when a span of lost support was given. | |
mDesign | number | yes | |
note | string | null | ||
phiBending | number | yes | |
phiVUc | number | yes | |
plain | WasmPlainConcreteCheck | null | The Section 20 checks, present only for an unreinforced strip. | |
qAllowable | number | yes | |
qMax | number | yes | |
qMin | number | yes | |
utilBearing | number | yes | |
utilDevelopment | number | yes | |
utilMax | number | yes | |
utilMoment | number | yes | |
utilShear | number | yes | |
vDesign | number | yes |
Loads, wind and seismic
as1170_1_imposed
AS/NZS 1170.1:2002 Table 3.1 lookup: { category, use } (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) -> StringInput json_input: WasmImposedInput
| Field | Type | Required | Description |
|---|---|---|---|
category | string | yes | |
use | string | Default: "". |
Result: ImposedRow
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
category | string | yes | |
note | string | yes | |
point_kn | number | null | ||
udl_kpa | number | null | ||
use_ | string | yes |
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) -> StringInput json_input: WasmSpectrumInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | null | Default: null. | |
location | string | null | Default: null. | |
mu | number | null | Default: null. | |
soil | string | Default: "". | |
sp | number | null | Default: null. | |
system | string | null | Default: null. | |
z | number | null | Default: 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) -> StringInput json_input: WasmDynamicFloorInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | null | Default: null. | |
height_m | number | yes | |
kt | number | null | Eq 6.2(7) inputs: kt and the structure height hn, metres. Default: null. | |
location | string | null | Default: null. | |
mu | number | null | Default: null. | |
soil | string | Default: "". | |
sp | number | null | Default: null. | |
system | string | null | Default: null. | |
v_dynamic | number | yes | The base shear the dynamic analysis produced, newtons. |
weight | number | yes | Seismic weight Wt, newtons - the same mass the dynamic analysis used. |
z | number | null | Default: 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) -> StringInput json_input: WasmOpenWindInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_deg | number | Default: 0. | |
b | number | Default: 0. | |
blockage | number | Default: 0. | |
c | number | Default: 0. | |
case | string | Default: "". | |
cp_e | number | Default: 0. | |
d | number | Default: 0. | |
enclosure | string | Default: "". | |
friction | string | Default: "". | |
h | number | Default: 0. | |
hc | number | Default: 0. | |
k_l | number | Default: 1. | |
kind | string | yes | |
m_d | number | Default: 1. | |
m_s | number | Default: 1. | |
m_t | number | Default: 1. | |
parallel | boolean | Default: false. | |
parapet_hp | number | null | Default: null. | |
region | string | Default: "A". | |
return_corner | boolean | Default: false. | |
return_period_years | number | Default: 500. | |
roof | string | Default: "". | |
slope_deg | number | Default: 0. | |
solidity | number | Default: 1. | |
terrain | string | Default: "TC2". | |
tributary_area_m2 | number | Default: 10. | |
wc | number | Default: 0. | |
wind | string | Default: "". |
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() -> StringResult: 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) -> StringInput json_input: WasmPartInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | null | ||
ductility | string | "flexible-ductile", "rigid", "non-ductile" or "connection" (Cl 8.2). Default: "". | |
floor_acceleration | number | null | Cl 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_m | number | null | Cl 8.3: total height of the structure above the structural base, metres. Default: null. | |
hx_m | number | null | Cl 8.3: height at which the component is attached above the structural base, metres. Default: null. | |
importance | string | "importance-level-4", "life-safety-critical" or "other" (Cl 8.2). Default: "". | |
location | string | null | Table 3.2 location name, or pass z directly from Figure 3.2. Default: null. | |
mechanical_or_electrical | boolean | Cl 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. | |
method | string | Default: "". | |
mounting | string | "flexible-spring-mechanical" or "other" (Cl 8.2). Default: "". | |
soil | string | yes | Site sub-soil class Ae to Ee; Table 6.4's BRACKETED Ch(0) is the one Section 8 uses. |
weight_n | number | yes | W_c, the component's seismic weight, in NEWTONS. |
z | number | null | Default: null. |
Result: WasmPartResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
a_c | number | yes | |
a_floor | number | yes | |
acceleration_floored | boolean | yes | |
bound | string | yes | "computed", "lower" (0.05 W_c governed) or "upper" (0.5 W_c governed). |
clause | string | yes | |
force_n | number | yes | |
height_amplification | number | null | ||
i_c | number | yes | |
r_c | number | yes | |
unbounded_n | number | yes | |
vertical_n | number | null | Cl 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) -> StringInput json_input: WasmPortalWindInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_deg | number | Default: 0. | |
b | number | yes | |
d | number | yes | |
h_e | number | yes | |
m_d | number | Default: 1. | |
m_s | number | Default: 1. | |
m_t | number | Default: 1. | |
open_ratio | number | Default: 0. | |
opening | DominantOpening | null | Default: null. | |
region | string | yes | |
return_period_years | number | Default: 500. | |
roof | string | Default: "". | |
terrain | string | yes | |
trib | number | Default: 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) -> StringInput json_input: WasmSeismicInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | null | ||
height_m | number | null | Default: null. | |
kt | number | null | Default: null. | |
location | string | null | Default: null. | |
mu | number | null | Default: null. | |
period | number | null | Default: null. | |
r_u | number | null | Default: null. | |
s_p | number | null | Default: null. | |
soil | string | yes | |
sp | number | null | Default: null. | |
system | string | null | Default: null. | |
weight | number | yes | |
z | number | null | Default: null. | |
zone | string | null | Default: null. |
Result: WasmSeismicResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_h | number | yes | |
cd | number | yes | |
citation | string | yes | |
floored | boolean | yes | |
kp | number | yes | |
kp_z_used | number | yes | |
mu | number | yes | |
sp | number | yes | |
t1 | number | yes | |
v | number | yes | |
z | number | yes |
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) -> StringInput json_input: WasmSnowInput
| Field | Type | Required | Description |
|---|---|---|---|
altitude_m | number | Height above the Australian Height Datum or New Zealand mean sea level, metres. Default: 0. | |
annual_probability | number | null | Annual probability of exceedance, as a fraction: 1/500 is 0.002 (Table 5.1). Default: null. | |
exposure | string | sheltered, semi-sheltered or windswept (Cl 4.2.2). Default: "". | |
location | string | null | A named Table 5.2 site, which this build does not carry: refused by name if given. Default: null. | |
region | string | AS/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_deg | number | null | The second slope of a duo-pitched roof; absent for a mono-pitched one. Default: null. | |
roof_pitch_deg | number | Roof slope, degrees. Default: 0. | |
terrain_factor | number | null | Terrain classification factor kt, Australian ALPINE regions only: 0.7, 1.0 or 1.3 (Cl 5.3). Default: null. |
Result: RoofSnow
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
balanced_only | boolean | yes | |
cases | SnowCase[] | yes | |
ce | number | yes | |
citation | string | yes | |
equation | string | yes | |
gamma_kn_m3 | number | yes | |
kp | number | yes | |
overhang_kn_m | number | yes | Cl 4.2.3: the edge overhang load, kN per metre of eave, from the peak case. |
peak_kpa | number | yes | The largest load any case puts on any slope, kPa - the number a first pass sizes to. |
sg_kpa | number | yes |
as1170_tables
The engine's AS/NZS 1170 tables, for the ledger. Extended by later tasks.
rust
as1170_tables() -> StringResult: 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) -> StringInput json_input: WasmWindDesignInput
| Field | Type | Required | Description |
|---|---|---|---|
alpha_deg | number | Default: 0. | |
b | number | yes | |
d | number | yes | |
h_e | number | yes | |
m_d | number | Default: 1. | |
m_s | number | Default: 1. | |
m_t | number | Default: 1. | |
open_ratio | number | Default: 0. | |
region | string | yes | |
return_period_years | number | Default: 500. | |
roof | string | Default: "". | |
terrain | string | yes |
Result: WindDesign
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
standard | string | yes | |
surfaces | SurfacePressure[] | yes | |
tables | TableStatus[] | yes | Per-table verification, the adapter's own statement (WindStandard::table_status). |
trace | Step[] | yes | |
verified | boolean | yes | ALWAYS false until an engineer cross-checks the coefficient tables against the standard. |
warnings | string[] | 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) -> StringInput json_input: WasmWindInput
| Field | Type | Required | Description |
|---|---|---|---|
height | number | yes | |
region | string | yes | |
return_period_factor | number | Default: 1. | |
terrain | string | yes |
Result: WasmWindResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
mC | number | yes | |
mZcat | number | yes | |
p | number | yes | |
q | number | yes | |
vDes | number | yes | |
vR | number | yes |
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() -> StringResult: 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) -> StringInput json_input: WasmAsce7RoofCpInput
| Field | Type | Required | Description |
|---|---|---|---|
dist_from_windward_edge_over_h | number | Distance 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. | |
face | string | yes | "windward", "leeward" or "parallel" (wind parallel to the ridge). |
h_over_l | number | yes | h/L - mean roof height over the plan dimension along the wind. |
theta_deg | number | yes | Roof angle theta, degrees from horizontal. |
Result: WasmAsce7CpResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_p | number | yes | |
c_p_b | number | null | Design 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. | |
clause | string | yes | |
uses | string | yes | "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) -> StringInput json_input: WasmAsce7SurfacePressureInput
| Field | Type | Required | Description |
|---|---|---|---|
c_p | number | yes | |
g | number | yes | Gust-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_pa | number | yes | q_h, Pa - the velocity pressure at mean roof height. |
q_z_pa | number | yes | q_z, Pa - the velocity pressure at the height of the point considered. |
uses | string | yes | "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
| Field | Type | Required | Description |
|---|---|---|---|
c_p | number | yes | |
clause | string | yes | |
g | number | yes | |
p_pa | number | yes | p = q G C_p, Pa. Positive acts toward the surface, negative away from it. |
q_source | string | yes | |
q_used_pa | number | yes |
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) -> StringInput json_input: WasmAsce7VelocityPressureInput
| Field | Type | Required | Description |
|---|---|---|---|
basic_wind_speed_ms | number | yes | Basic wind speed V, m/s (Section 26.5 hazard maps). |
exposure | string | yes | Exposure category letter: "B", "C" or "D" (Section 26.7). |
ground_elevation_m | number | Ground elevation above mean sea level, m, for K_e. NOT the terrain gradient height. Default: 0. | |
k_d | number | yes | Wind directionality factor K_d, Table 26.6-1. 0.85 for buildings. |
k_zt | number | Topographic factor K_zt, Section 26.8.2. 1.0 on flat terrain. Default: 1. | |
z_m | number | yes | Height above ground, m. |
Result: WasmAsce7VelocityPressureResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
clause | string | yes | |
k_d | number | yes | |
k_e | number | yes | |
k_z | number | yes | |
k_zt | number | yes | |
q_pa | number | yes | |
z_used_m | number | yes |
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) -> StringInput json_input: WasmAsce7WallCpInput
| Field | Type | Required | Description |
|---|---|---|---|
face | string | yes | "windward", "side" or "leeward". |
l_over_b | number | yes | L/B - plan dimension along the wind over the dimension across it. |
Result: WasmAsce7CpResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_p | number | yes | |
c_p_b | number | null | Design 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. | |
clause | string | yes | |
uses | string | yes | "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) -> StringInput json_input: WasmSeismicDistributionInput
| Field | Type | Required | Description |
|---|---|---|---|
baseShear | number | yes | |
direction | number[] | yes | |
distribution | DistributionRule | Which 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". | |
eccentricityFraction | number | AS 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. | |
loadCaseId | integer | yes | |
model | WasmModel | yes | |
period | number | yes | |
storeys | WasmStoreyDefinition[] | Default: []. | |
vertical_axis | string | null | Default: null. |
Result: WasmSeismicDistributionResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
k | number | yes | |
nodalLoads | WasmNodalLoad[] | yes | |
storeyForces | WasmStoreyForce[] | yes | |
sumForces | number | yes | |
totalBaseShear | number | yes |
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) -> StringInput json_input: WasmEc1PeakVelocityPressureInput
| Field | Type | Required | Description |
|---|---|---|---|
c_0 | number | Orography factor c_0(z). 1.0 where orography is not significant. Default: 1. | |
k_i | number | Turbulence factor k_I. A National Annex parameter; the EN recommends 1.0. Default: 1. | |
rho_kg_m3 | number | Air density, kg/m3. A NATIONAL ANNEX parameter; the EN recommends 1.25. Default: 1.25. | |
terrain | string | yes | Terrain category label: "0", "I", "II", "III" or "IV" (Table 4.1). |
v_b_ms | number | yes | Basic wind velocity v_b, m/s, from the national map (Section 4.2). |
z_m | number | yes | Height above ground, m. |
Result: WasmEc1PeakVelocityPressureResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_0 | number | yes | |
c_e | number | yes | q_p / q_b, EN's exposure factor c_e(z) - the number an engineer recognises at a glance. |
c_r | number | yes | |
clause | string | yes | |
i_v | number | yes | |
q_b_pa | number | yes | |
q_p_pa | number | yes | |
v_m_ms | number | yes | |
z_used_m | number | yes |
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) -> StringInput json_input: WasmRobustnessInput
| Field | Type | Required | Description |
|---|---|---|---|
class | string | yes | |
column_storey_reaction_kn | number | Default: 0. | |
construction | string | Default: "". | |
gk_kpa | number | Default: 0. | |
psi | number | Default: 1. | |
qk_kpa | number | Default: 0. | |
storeys | integer | Default: 1. | |
tie_spacing_m | number | Default: 0. | |
tie_span_m | number | Default: 0. | |
wall_clear_height_m | number | Default: 0. | |
wall_plan_area_mm2 | number | Default: 0. | |
wall_thickness_m | number | Default: 0. | |
z_m | number | Default: 0. |
Result: RobustnessResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
class | ConsequencesClass | yes | |
class_examples | string | yes | |
class_label | string | yes | |
construction | Construction | yes | |
f_t | number | null | A6.2: F_t (kN/m or kN), None for framed construction. | |
horizontal_ties_required | boolean | yes | Whether the strategy asks for horizontal ties at all (Class 2 and above). |
key_element_ad_kpa | number | yes | A9: the key-element accidental design action A_d (kN/m2), horizontal and vertical, one at a time. |
notional_removal_damage_limit | number | yes | A5(c): the admissible local damage on notional removal, 15 percent of the floor in each of two adjacent storeys. |
standard | string | yes | |
steps | Step[] | yes | |
strategy | string | yes | |
t_internal | number | yes | A6.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_perimeter | number | yes | |
t_vertical | number | null | A7: 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_units | string | yes | |
tie_units | string | yes | The unit the horizontal tie forces are in: "kN" (framed) or "kN/m, kN" (wall internal, peripheral). |
verified | boolean | yes | |
vertical_ties_required | boolean | yes | Whether the strategy asks for vertical ties or the notional-removal alternative (Class 2b). |
warnings | string[] | yes |
en1991_1_7_tables
Every constant en1991_1_7.rs carries, for the ledger check.
rust
en1991_1_7_tables() -> StringResult: 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) -> StringInput json_input: WasmCraneInput
| Field | Type | Required | Description |
|---|---|---|---|
bridge_weight_kn | number | yes | |
buffer_stiffness_kn_m | number | Default: 0. | |
buffer_xi | number | Default: 0.5. | |
crab_weight_kn | number | Default: 0. | |
driven_wheels | integer | Default: 2. | |
fatigue_class | integer | null | Default: null. | |
friction | number | Default: 0.2. | |
guide_spacing_m | number | Default: 0. | |
hoist_load_kn | number | yes | |
hoisting_class | integer | Default: 2. | |
hoisting_speed_ms | number | Default: 0.1. | |
min_approach_m | number | Default: 1. | |
phi_5 | number | Default: 1.5. | |
skew_angle_rad | number | Default: 0.015. | |
span_m | number | yes | |
travel_speed_ms | number | Default: 0. | |
wheel_pair_distances_m | number[] | Default: []. | |
wheel_spacings_m | number[] | Default: [3]. | |
wheels_per_rail | integer | Default: 2. |
Result: CraneResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
axle_spacings_m | number[] | yes | |
axle_weights_kn | number[] | yes | The axle train for the runway beam: the group 1 wheel loads on rail 1 at the wheel spacings. |
buffer_h_b1_kn | number | yes | Buffer forces (kN): H_B,1 from the crane's kinetic energy, H_B,2 from the crab. |
buffer_h_b2_kn | number | yes | |
drive_force_kn | number | yes | Drive force K (kN), the lever l_s (m), the moment M (kNm). |
drive_moment_knm | number | yes | |
fatigue_q_e_normal_kn | number | null | Fatigue damage-equivalent wheel loads (kN per wheel), normal and shear, if a class was given. | |
fatigue_q_e_shear_kn | number | null | ||
groups | LoadGroup[] | yes | |
l_s_m | number | yes | |
phi_1 | number[] | yes | |
phi_2 | number | yes | |
phi_4 | number | yes | |
phi_5 | number | yes | |
phi_7 | number | yes | |
q_r_max_acc_static | number | yes | |
q_r_max_kn | number | yes | The characteristic maximum wheel load (group 1, phi_1 = 1.1 and phi_2), kN per wheel. |
q_r_max_static | number | yes | Static 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_static | number | yes | |
q_r_min_kn | number | yes | The characteristic minimum wheel load (unloaded crane, phi_1 = 0.9), kN per wheel. |
q_r_min_static | number | yes | |
skew_f | number | yes | Skewing: f, S (kN), and the transverse wheel forces per wheel pair on rails 1 and 2 (kN). |
skew_h_t_rail1_kn | number[] | yes | |
skew_h_t_rail2_kn | number[] | yes | |
skew_s_kn | number | yes | |
standard | string | yes | |
steps | Step[] | yes | |
verified | boolean | yes | |
warnings | string[] | yes | |
xi_1 | number | yes |
en1991_3_tables
Every constant crane_en1991_3.rs carries, for the ledger check.
rust
en1991_3_tables() -> StringResult: 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) -> StringInput json_input: WasmComboGenInput
| Field | Type | Required | Description |
|---|---|---|---|
code | string | Which code's combination set: "asnzs" (default) | "asce7" | "eurocode". Default: "". | |
load_cases | WasmLoadCase[] | yes | |
occupancy | string | null | AS/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_q | number | null | Default: null. | |
psi0_s | number | null | Default: null. | |
psi0_w | number | null | Default: null. | |
psi1_q | number | null | Default: null. | |
psi2_q | number | null | Default: null. | |
psi_c | number | null | Default: null. | |
psi_e | number | null | AS/NZS 1170.0 Table 4.1 earthquake combination factor. Default: null. | |
psi_l | number | null | Default: null. | |
psi_s | number | null | Default: null. |
Result: WasmComboGenOutput
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
combinations | WasmLoadCombination[] | 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) -> StringInput json_input: WasmNzDesignCoefficientInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | yes | |
mu | number | yes | Structural ductility factor mu, Cl 4.3. |
n_max | number | null | Default: null. | |
near_fault_km | number | null | Default: null. | |
period | number | yes | T1, the largest translational period in the direction considered (Cl 4.1). |
soil | string | yes | |
sp | number | yes | Structural performance factor Sp, Cl 4.4. |
z | number | yes |
Result: WasmNzDesignCoefficientResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_t | number | yes | |
cd | number | yes | |
cd_unfloored | number | yes | |
clause | string | yes | |
floor | number | yes | |
floor_governs | boolean | yes | True when Eq 5.2(2)'s floor decided the answer. |
k_mu | number | yes | |
r | number | yes | |
r_capped | boolean | yes | |
sp | number | yes |
nzs1170_design_spectrum
NZS 1170.5 design spectrum for a site.
rust
nzs1170_design_spectrum(json_input: &str) -> StringInput json_input: WasmNzDesignSpectrumInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | yes | |
mu | number | yes | Structural ductility factor mu, Cl 4.3. |
n_max | number | null | Default: null. | |
near_fault_km | number | null | Default: null. | |
soil | string | yes | |
sp | number | yes | Structural performance factor Sp, Cl 4.4. |
z | number | yes |
Result: WasmNzDesignSpectrumResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
citation | string | yes | The same sentence the UI prints beside the numbers, so the reading travels with them. |
clause | string | yes | |
floored | boolean | yes | True when the floor decided at least one ordinate, for a one-line caveat. |
floored_periods | number[] | yes | The periods where Eq 5.2(2)'s floor decided the ordinate rather than Eq 5.2(1). |
mu | number | yes | |
points | [number, number][] | yes | (period s, Cd) pairs, one per Table 3.1 period, ascending. |
r | number | yes | |
r_capped | boolean | yes | |
sp | number | yes | |
z | number | yes |
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) -> StringInput json_input: WasmNzEquivalentStaticInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | yes | |
levels | [number, number][] | yes | (seismic weight N, height above base m) per level, in any order. |
mu | number | yes | |
n_max | number | null | Default: null. | |
near_fault_km | number | null | Default: null. | |
period | number | yes | |
soil | string | yes | |
sp | number | yes | |
weight | number | null | Seismic weight Wt, newtons (Cl 4.2). Omit to have it summed from levels. Default: null. | |
z | number | yes |
Result: WasmNzEquivalentStaticResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
base_shear | number | yes | |
cd | number | yes | |
cd_unfloored | number | yes | |
clause | string | yes | |
floor_governs | boolean | yes | |
k_mu | number | yes | |
levels | WasmNzStoreyForce[] | yes | |
seismic_weight | number | yes |
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) -> StringInput json_input: WasmNzPartInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | yes | |
cph | number | yes | Part horizontal response factor C_ph, Table 8.2. |
hi | number | yes | Height of the part's attachment above the base, m. Below ground floor reads as ground floor. |
hn | number | yes | Height from the base to the uppermost seismic mass, m. |
n_max | number | null | Default: null. | |
near_fault_km | number | null | Default: null. | |
rp | number | yes | Part risk factor R_p, Table 8.1. |
soil | string | yes | |
tp | number | yes | Period of the part itself, seconds (Cl 8.4). |
wp | number | yes | Weight of the part, newtons. |
z | number | yes |
Result: WasmNzPartResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_hi | number | yes | |
c_i | number | yes | |
c_zero | number | yes | C(0), from Table 3.1's BRACKETED column - not the general spectrum at zero period. |
capped | boolean | yes | True when 3.6 W_p decided the answer. |
clause | string | yes | |
cp | number | yes | |
force | number | yes | F_ph, newtons, after Eq 8.5(1)'s 3.6 W_p cap. |
unbounded | number | yes |
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) -> StringInput json_input: WasmNzSiteHazardInput
| Field | Type | Required | Description |
|---|---|---|---|
annual_probability | number | yes | Annual probability of exceedance, as a fraction: 1/500 is 0.002 (Table 3.5). |
n_max | number | null | Nmax(T) from Table 3.7, which this build does not carry. Default: null. | |
near_fault_km | number | null | Shortest distance to a Table 3.6 fault, km. With n_max, drives Cl 3.1.6. Default: null. | |
period | number | yes | Period T, seconds. Table 3.1 stops at 4.5 s and so does this. |
soil | string | yes | Site subsoil class A, B, C, D or E (Cl 3.1.3). A and B are one column of Table 3.1. |
z | number | yes | Hazard factor Z (Cl 3.1.4, Table 3.3). |
Result: WasmNzSiteHazardResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
c_t | number | yes | |
ch_t | number | yes | |
clause | string | yes | |
n_t_d | number | yes | |
r | number | yes | |
r_capped | boolean | yes | True when Cl 3.1.1's cap held Z R down to 0.7. |
r_table | number | yes | |
z | number | yes |
p354_floor_vibration
Floor vibration response to walking (SCI P354) from the modal result.
rust
p354_floor_vibration(json_input: &str) -> StringInput json_input: WasmFloorVibrationInput
| Field | Type | Required | Description |
|---|---|---|---|
cutoff_hz | number | null | Default: null. | |
damping | string | Default: "". | |
damping_ratio | number | null | Default: null. | |
floor | string | Default: "". | |
limit | number | Default: 8. | |
modes | FloorMode[] | yes | |
pace_max_hz | number | Default: 2.2. | |
pace_min_hz | number | Default: 1.8. | |
person_weight_n | number | Default: 746. | |
vertical | boolean | Default: true. | |
walking_path_m | number | null | Default: null. | |
weighting | string | Default: "". |
Result: FloorVibrationResult
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
base_value | number | yes | |
cutoff_hz | number | yes | |
damping_ratio | number | yes | |
floor_class | string | yes | "low" or "high", by Table 6.1. |
fundamental_hz | number | yes | |
governing | string | yes | |
governing_pace_hz | number | yes | |
limit | number | yes | |
ok | boolean | yes | |
response_factor | number | yes | The governing response factor (the larger of steady-state and transient) and where it came from. |
standard | string | yes | |
steady_state | SteadyStateResult | null | ||
steps | Step[] | yes | |
transient | TransientResult | yes | |
verified | boolean | yes | |
warnings | string[] | yes | |
weighting | Weighting | yes |
p354_tables
Every constant floor_vibration.rs carries, for the ledger check.
rust
p354_tables() -> StringResult: 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) -> StringInput json_input: WasmAs1720Input
| Field | Type | Required | Description |
|---|---|---|---|
a_t | number | null | Net tension area (mm²) when holes reduce it; defaults to the gross area. Default: null. | |
b | number | Breadth of ONE board (mm). Stability uses it; area and Z use n_boards · b. Default: 0. | |
category | integer | Application category 1, 2 or 3 (Table 2.1). Default: 2. | |
d | number | Default: 0. | |
g13x | number | Effective length factors g13 about x (major) and y (minor), Table 3.2. Default: 1. | |
g13y | number | Default: 1. | |
grade | string | Default: "F17". | |
high_temp | boolean | Seasoned timber in Queensland north of 25°S or elsewhere north of 16°S: k6 = 0.9. Default: false. | |
k1 | number | Default: 1. | |
k12 | number | null | Default: null. | |
k12c | number | null | Default: null. | |
k4 | number | null | Default: null. | |
k6 | number | null | Default: null. | |
k9 | number | null | Default: null. | |
la_phi | number | null | Spacing of torsional restraints (only for TensionAndTorsional). Default: null. | |
la_y | number | null | Spacing of restraints against lateral (minor-axis) displacement, for S1 and S4. Defaults to length. Default: null. | |
le_bending | number | Default: 0. | |
le_compression | number | Default: 0. | |
length | number | null | Member length L (mm): the span for k9 and the length for column buckling. Default: null. | |
m_star | number | Default: 0. | |
n_boards | integer | Boards nailed or screwed side by side (a "2/190x35" is 2). Default: 1. | |
n_members | integer | Members in the parallel system for k9 (1 = single member) and their spacing (mm). Default: 1. | |
n_star | number | Default: 0. | |
nt_star | number | Default: 0. | |
partial_seasoning | boolean | Unseasoned timber that will partly season in service: k4 by least dimension (Table 2.5). Default: false. | |
r | number | Ratio of temporary to total design action effect (Appendix E2); ≤ 0 is taken as 0.25. Default: 0.25. | |
restraint_edge | RestraintEdge | Default: "compression". | |
seasoned | boolean | Default: true. | |
spacing | number | Default: 0. | |
species | Species | Default: "softwood". | |
v_star | number | Default: 0. |
Result: WasmAs1720Result
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
E | number | yes | |
S1 | number | yes | |
S3 | number | yes | |
S4 | number | yes | |
continuousRestraint | boolean | yes | |
fB | number | yes | |
fC | number | yes | |
fS | number | yes | |
fT | number | yes | |
governing | string | yes | |
k1 | number | yes | |
k12 | number | yes | |
k12c | number | yes | |
k12x | number | yes | |
k12y | number | yes | |
k4 | number | yes | |
k6 | number | yes | |
k9 | number | yes | |
phi | number | yes | |
phiM | number | yes | |
phiN | number | yes | Compression capacity, the smaller of the two axes. |
phiNcx | number | yes | |
phiNcy | number | yes | |
phiNt | number | yes | |
phiV | number | yes | |
rhoB | number | yes | |
rhoC | number | yes | |
stabilityAssessed | boolean | yes | |
utilM | number | yes | |
utilMax | number | yes | |
utilN | number | yes | |
utilNt | number | yes | |
utilV | number | yes |