@ferscloud/fers-calculation-web 0.2.39 → 0.2.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -11
- package/fers-models.d.ts +2500 -0
- package/fers_calculations.d.ts +7 -2
- package/fers_calculations_bg.js +7 -4
- package/fers_calculations_bg.wasm +0 -0
- package/package.json +3 -2
package/fers-models.d.ts
ADDED
|
@@ -0,0 +1,2500 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type paths = Record<string, never>;
|
|
7
|
+
export type webhooks = Record<string, never>;
|
|
8
|
+
export interface components {
|
|
9
|
+
schemas: {
|
|
10
|
+
/**
|
|
11
|
+
* @description How a member force is reduced to a single value along the member.
|
|
12
|
+
* Internally tagged (`{"type": …}`) so every variant is an object — a mixed
|
|
13
|
+
* bare-string/object `oneOf` breaks the cloud TS generator.
|
|
14
|
+
*/
|
|
15
|
+
Aggregation: {
|
|
16
|
+
/** @enum {string} */
|
|
17
|
+
type: "MaxAbs";
|
|
18
|
+
} | {
|
|
19
|
+
/** @enum {string} */
|
|
20
|
+
type: "Max";
|
|
21
|
+
} | {
|
|
22
|
+
/** @enum {string} */
|
|
23
|
+
type: "Min";
|
|
24
|
+
} | {
|
|
25
|
+
/** Format: double */
|
|
26
|
+
fraction: number;
|
|
27
|
+
/** @enum {string} */
|
|
28
|
+
type: "AtFraction";
|
|
29
|
+
} | {
|
|
30
|
+
/** @enum {string} */
|
|
31
|
+
type: "Start";
|
|
32
|
+
} | {
|
|
33
|
+
/** @enum {string} */
|
|
34
|
+
type: "End";
|
|
35
|
+
};
|
|
36
|
+
/** @description Everything that defines a run of the solver against a [`super::model::Model`]. */
|
|
37
|
+
Analysis: {
|
|
38
|
+
buckling?: null | components["schemas"]["BucklingAnalysisSettings"];
|
|
39
|
+
/** @default [] */
|
|
40
|
+
imperfection_cases: components["schemas"]["ImperfectionCase"][];
|
|
41
|
+
/** @default [] */
|
|
42
|
+
load_cases: components["schemas"]["LoadCase"][];
|
|
43
|
+
/** @default [] */
|
|
44
|
+
load_combinations: components["schemas"]["LoadCombination"][];
|
|
45
|
+
modal?: null | components["schemas"]["ModalAnalysisSettings"];
|
|
46
|
+
/** @description Solver options (first/second order, tolerances, self-weight, gravity, …). */
|
|
47
|
+
options: components["schemas"]["AnalysisOptions"];
|
|
48
|
+
seismic?: null | components["schemas"]["SeismicAnalysisSettings"];
|
|
49
|
+
/**
|
|
50
|
+
* @description Post-processing unity checks evaluated against the results.
|
|
51
|
+
* @default []
|
|
52
|
+
*/
|
|
53
|
+
unity_checks: components["schemas"]["UnityCheckDefinition"][];
|
|
54
|
+
};
|
|
55
|
+
/** @description Solver options for an analysis run: analysis order (first/second), tolerances, rigid-member strategy, self-weight and gravity. */
|
|
56
|
+
AnalysisOptions: {
|
|
57
|
+
/** Format: double */
|
|
58
|
+
axial_slack?: number;
|
|
59
|
+
dimensionality: components["schemas"]["Dimensionality"];
|
|
60
|
+
/**
|
|
61
|
+
* @description When true, the engine generates self-weight (dead load) for every member
|
|
62
|
+
* from its material density and cross-sectional area, collected into a
|
|
63
|
+
* self-weight load case (see `self_weight_load_case_id`). Cable members
|
|
64
|
+
* carry their weight intrinsically in the catenary formulation and are
|
|
65
|
+
* therefore excluded from the generated self-weight load.
|
|
66
|
+
* @default false
|
|
67
|
+
*/
|
|
68
|
+
enable_self_weight: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* @description Global gravity direction as a vector (normalized to a unit vector at use).
|
|
71
|
+
* Default `(0, -1, 0)` — gravity acting in the negative Y direction.
|
|
72
|
+
* @default [
|
|
73
|
+
* 0,
|
|
74
|
+
* -1,
|
|
75
|
+
* 0
|
|
76
|
+
* ]
|
|
77
|
+
*/
|
|
78
|
+
gravity_direction: components["schemas"]["Vector3"];
|
|
79
|
+
/**
|
|
80
|
+
* Format: double
|
|
81
|
+
* @description Signed gravitational acceleration magnitude in **m/s² (SI)**, the same in
|
|
82
|
+
* every unit system (it is NOT rescaled with the model's length unit).
|
|
83
|
+
* Default `-9.81`. Self-weight per unit length is
|
|
84
|
+
* `w = density · area · |gravity_factor|` applied along `gravity_direction`,
|
|
85
|
+
* and a member `weight` override maps to modal mass as `weight / |gravity_factor|`.
|
|
86
|
+
* @default -9.81
|
|
87
|
+
*/
|
|
88
|
+
gravity_factor: number;
|
|
89
|
+
/**
|
|
90
|
+
* @description When true, each member result carries a sampled deflected-shape polyline
|
|
91
|
+
* (`member_displacements`): the member's global displacement at evenly-spaced
|
|
92
|
+
* stations, from cubic-Hermite interpolation of the end-node translations +
|
|
93
|
+
* rotations. Off by default to keep the result payload lean.
|
|
94
|
+
* @default false
|
|
95
|
+
*/
|
|
96
|
+
include_member_deflected_shape: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* @description When true, the solver embeds the single consolidated unity-check HTML
|
|
99
|
+
* report in `results.report_html`. Default false (keeps results JSON lean;
|
|
100
|
+
* the CLI `--report` flag writes the report to a file instead).
|
|
101
|
+
* @default false
|
|
102
|
+
*/
|
|
103
|
+
include_report_html: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* @description When false, suppresses shear-center eccentricity coupling (T^T·K·T
|
|
106
|
+
* transformation) by clearing y_s/z_s for all sections. Some commercial
|
|
107
|
+
* solvers do not apply this coupling; disabling it improves agreement.
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
110
|
+
include_shear_center_coupling: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* @description When false, forces shear deformation factor φ=0 (Euler-Bernoulli) for all elements.
|
|
113
|
+
* @default true
|
|
114
|
+
*/
|
|
115
|
+
include_shear_deformation: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* @description When false, ignores warping constant Iw and uses pure GJ/L torsion for all elements.
|
|
118
|
+
* @default true
|
|
119
|
+
*/
|
|
120
|
+
include_warping: boolean;
|
|
121
|
+
/** Format: int32 */
|
|
122
|
+
max_iterations?: number | null;
|
|
123
|
+
/**
|
|
124
|
+
* @description Controls the nonlinear solver formulation (P_DELTA or COROTATIONAL).
|
|
125
|
+
* Only affects second-order (nonlinear) analysis.
|
|
126
|
+
*/
|
|
127
|
+
nonlinear_method?: components["schemas"]["NonlinearMethod"];
|
|
128
|
+
order: components["schemas"]["AnalysisOrder"];
|
|
129
|
+
/**
|
|
130
|
+
* @description Controls the geometric stiffness matrix formulation for P-Delta analysis.
|
|
131
|
+
* `Consistent` (default) uses full Przemieniecki K_g; `Simplified` uses
|
|
132
|
+
* P/L-only diagonal terms matching commercial solvers.
|
|
133
|
+
*/
|
|
134
|
+
pdelta_formulation?: components["schemas"]["PdeltaFormulation"];
|
|
135
|
+
/**
|
|
136
|
+
* @description High-level P-Delta strategy. `Full` (default) amplifies all directions.
|
|
137
|
+
* `InPlaneOnly` auto-detects the out-of-plane axis from the model's
|
|
138
|
+
* bounding box and suppresses it, matching commercial solver behavior.
|
|
139
|
+
* Overrides `pdelta_suppress_axes` when set to `InPlaneOnly`.
|
|
140
|
+
*/
|
|
141
|
+
pdelta_mode?: components["schemas"]["PdeltaMode"];
|
|
142
|
+
/**
|
|
143
|
+
* @description Global translational axes to exclude from P-Delta amplification.
|
|
144
|
+
*
|
|
145
|
+
* When a structure is near buckling in an out-of-plane direction,
|
|
146
|
+
* the consistent P-Delta amplification can produce forces that differ
|
|
147
|
+
* significantly from commercial solvers which
|
|
148
|
+
* typically only amplify in-plane sway.
|
|
149
|
+
*
|
|
150
|
+
* Set to `["Z"]` for in-plane racks/portal frames where Z is out-of-plane,
|
|
151
|
+
* or `["X","Z"]` to limit P-Delta to Y-sway only. Empty (default) means
|
|
152
|
+
* all translational directions are amplified.
|
|
153
|
+
*
|
|
154
|
+
* Maps to global DOFs: "X"→0,7 "Y"→1,8 "Z"→2,9 per element.
|
|
155
|
+
*/
|
|
156
|
+
pdelta_suppress_axes?: string[];
|
|
157
|
+
/**
|
|
158
|
+
* @description When true, fill each unity check's per-entity `rendered_report` from its
|
|
159
|
+
* `report_template` (rendered against the entity's computed trace). Default
|
|
160
|
+
* false for speed; orthogonal to `include_report_html` — narratives appear in
|
|
161
|
+
* the consolidated HTML only when this is also true.
|
|
162
|
+
* @default false
|
|
163
|
+
*/
|
|
164
|
+
render_unity_reports: boolean;
|
|
165
|
+
rigid_strategy: components["schemas"]["RigidStrategy"];
|
|
166
|
+
/**
|
|
167
|
+
* Format: int32
|
|
168
|
+
* @description Target load case id that generated self-weight loads are injected into.
|
|
169
|
+
* When set, the loads are added to that (typically empty "G") load case so
|
|
170
|
+
* combinations can factor it (e.g. 1.35·G). When `None` and self-weight is
|
|
171
|
+
* enabled, a new load case is created automatically.
|
|
172
|
+
*/
|
|
173
|
+
self_weight_load_case_id?: number | null;
|
|
174
|
+
solve_loadcases: boolean;
|
|
175
|
+
/** Format: double */
|
|
176
|
+
tolerance: number;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* @description Python:
|
|
180
|
+
* class AnalysisOrder(Enum):
|
|
181
|
+
* LINEAR = "LINEAR"
|
|
182
|
+
* NONLINEAR = "NONLINEAR"
|
|
183
|
+
* @enum {string}
|
|
184
|
+
*/
|
|
185
|
+
AnalysisOrder: "LINEAR" | "NONLINEAR";
|
|
186
|
+
/**
|
|
187
|
+
* @description A global coordinate axis.
|
|
188
|
+
* @enum {string}
|
|
189
|
+
*/
|
|
190
|
+
Axis: "X" | "Y" | "Z";
|
|
191
|
+
/**
|
|
192
|
+
* @description Request for a linear (eigenvalue) buckling analysis: solve
|
|
193
|
+
* `K·φ = λ·(−K_g)·φ` where `K_g` is the geometric stiffness from the
|
|
194
|
+
* reference load's first-order stress state. Reports the lowest positive
|
|
195
|
+
* critical load factors `α_cr = λ` and their buckling mode shapes.
|
|
196
|
+
*/
|
|
197
|
+
BucklingAnalysisSettings: {
|
|
198
|
+
/**
|
|
199
|
+
* Format: int32
|
|
200
|
+
* @description Maximum subspace-iteration sweeps. Defaults to 100 when omitted.
|
|
201
|
+
*/
|
|
202
|
+
max_iterations?: number | null;
|
|
203
|
+
/**
|
|
204
|
+
* Format: int32
|
|
205
|
+
* @description Number of buckling modes (lowest positive critical factors) to extract.
|
|
206
|
+
*/
|
|
207
|
+
num_modes: number;
|
|
208
|
+
/**
|
|
209
|
+
* @description Reference load whose first-order stress state drives the geometric
|
|
210
|
+
* stiffness `K_g`.
|
|
211
|
+
*/
|
|
212
|
+
reference: components["schemas"]["EigenLoadRef"];
|
|
213
|
+
/**
|
|
214
|
+
* Format: double
|
|
215
|
+
* @description Eigen convergence tolerance (relative change in the tracked eigenvalues
|
|
216
|
+
* between subspace sweeps). Defaults to 1e-6 when omitted.
|
|
217
|
+
*/
|
|
218
|
+
tolerance?: number | null;
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* @description Eurocode buckling curve (EN 1993-1-1 Table 6.1/6.2). Maps to imperfection
|
|
222
|
+
* factor α: a0=0.13, a=0.21, b=0.34, c=0.49, d=0.76.
|
|
223
|
+
* @enum {string}
|
|
224
|
+
*/
|
|
225
|
+
BucklingCurve: "A0" | "A" | "B" | "C" | "D";
|
|
226
|
+
/** @description A single linear buckling mode. */
|
|
227
|
+
BucklingMode: {
|
|
228
|
+
/**
|
|
229
|
+
* Format: double
|
|
230
|
+
* @description Critical load factor `α_cr = λ`. The structure buckles when the reference
|
|
231
|
+
* load is scaled by this factor (EN 1993-1-1 §5.2.1).
|
|
232
|
+
*/
|
|
233
|
+
critical_load_factor: number;
|
|
234
|
+
/**
|
|
235
|
+
* @description Buckling mode shape: per-node displacement pattern (normalized so the
|
|
236
|
+
* largest translational component is 1).
|
|
237
|
+
*/
|
|
238
|
+
displacements: {
|
|
239
|
+
[key: string]: components["schemas"]["NodeDisplacement"];
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Format: int32
|
|
243
|
+
* @description 1-based mode number (1 = lowest critical load factor).
|
|
244
|
+
*/
|
|
245
|
+
mode: number;
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* @description A buckling restraint located at a node along a member set (one physical beam).
|
|
249
|
+
*
|
|
250
|
+
* Restraints are named by the local member axis they hold (not strong/weak,
|
|
251
|
+
* which depends on the section orientation). The spacing between consecutive
|
|
252
|
+
* nodes that restrain a given local direction yields the unrestrained length
|
|
253
|
+
* used for the corresponding buckling check; restraining twist gives a
|
|
254
|
+
* lateral-torsional restraint. The actual buckling-length computation is
|
|
255
|
+
* performed by the design-check module; this struct only carries the restraint
|
|
256
|
+
* definition through the model.
|
|
257
|
+
*/
|
|
258
|
+
BucklingRestraint: {
|
|
259
|
+
/**
|
|
260
|
+
* Format: int32
|
|
261
|
+
* @description Node (on one of the member set's members) where the restraint acts.
|
|
262
|
+
*/
|
|
263
|
+
node_id: number;
|
|
264
|
+
/** @description Restrains displacement along the member's local y axis. */
|
|
265
|
+
restrains_local_y?: boolean;
|
|
266
|
+
/** @description Restrains displacement along the member's local z axis. */
|
|
267
|
+
restrains_local_z?: boolean;
|
|
268
|
+
/**
|
|
269
|
+
* @description Restrains twist (rotation about the local x axis), i.e. a
|
|
270
|
+
* lateral-torsional restraint.
|
|
271
|
+
*/
|
|
272
|
+
restrains_torsion?: boolean;
|
|
273
|
+
};
|
|
274
|
+
/**
|
|
275
|
+
* @description Results of a linear (eigenvalue) buckling analysis: the lowest positive
|
|
276
|
+
* critical load factors and their buckling mode shapes.
|
|
277
|
+
*/
|
|
278
|
+
BucklingResults: {
|
|
279
|
+
modes: components["schemas"]["BucklingMode"][];
|
|
280
|
+
};
|
|
281
|
+
/**
|
|
282
|
+
* @description One line of the transparent hand-calc: a symbolic formula, the same formula
|
|
283
|
+
* with real numbers substituted, and the resulting value + unit (display units).
|
|
284
|
+
*/
|
|
285
|
+
CalcStep: {
|
|
286
|
+
formula: string;
|
|
287
|
+
label: string;
|
|
288
|
+
substituted: string;
|
|
289
|
+
unit: string;
|
|
290
|
+
/** Format: double */
|
|
291
|
+
value: number;
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* @description The evaluator kind. Open union — new codes (AISC, …) add variants; the
|
|
295
|
+
* result/report/colour layer is identical for every variant.
|
|
296
|
+
*/
|
|
297
|
+
CheckSpec: {
|
|
298
|
+
Generic: components["schemas"]["GenericSpec"];
|
|
299
|
+
} | {
|
|
300
|
+
Ec3Steel: components["schemas"]["Ec3SteelSpec"];
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* @description Physical dimension a [`QuantitySource::DimensionedConstant`] carries, so its
|
|
304
|
+
* trace value is scaled + labelled consistently with the quantities it is
|
|
305
|
+
* compared against. Serialized in the input schema (unlike runtime [`Dimension`]).
|
|
306
|
+
* @enum {string}
|
|
307
|
+
*/
|
|
308
|
+
ConstantDimension: "Length" | "Force" | "Moment" | "Stress" | "Area" | "Angle";
|
|
309
|
+
/**
|
|
310
|
+
* @description Transverse deflection component, measured relative to the entity's end-to-end
|
|
311
|
+
* chord (local-frame axes perpendicular to the chord).
|
|
312
|
+
* @enum {string}
|
|
313
|
+
*/
|
|
314
|
+
DeflectionComponent: "LocalY" | "LocalZ" | "Magnitude";
|
|
315
|
+
/** @enum {string} */
|
|
316
|
+
DensityUnit: "kg/m3" | "kg/mm3";
|
|
317
|
+
/**
|
|
318
|
+
* @description Python:
|
|
319
|
+
* class Dimensionality(Enum):
|
|
320
|
+
* TWO_DIMENSIONAL = "2D"
|
|
321
|
+
* THREE_DIMENSIONAL = "3D"
|
|
322
|
+
* @enum {string}
|
|
323
|
+
*/
|
|
324
|
+
Dimensionality: "2D" | "3D";
|
|
325
|
+
/**
|
|
326
|
+
* @description Directional combination rule across excitation directions.
|
|
327
|
+
* @enum {string}
|
|
328
|
+
*/
|
|
329
|
+
DirectionalCombination: "SRSS" | "PERCENT30";
|
|
330
|
+
/**
|
|
331
|
+
* @description Nodal displacement component.
|
|
332
|
+
* @enum {string}
|
|
333
|
+
*/
|
|
334
|
+
DispComponent: "Dx" | "Dy" | "Dz" | "Rx" | "Ry" | "Rz" | "Magnitude";
|
|
335
|
+
/** @description A linearly varying distributed load applied along a member over a fractional span (start/end magnitudes). */
|
|
336
|
+
DistributedLoad: {
|
|
337
|
+
direction: components["schemas"]["Vector3"];
|
|
338
|
+
/** Format: double */
|
|
339
|
+
end_frac: number;
|
|
340
|
+
/** Format: double */
|
|
341
|
+
end_magnitude: number;
|
|
342
|
+
/** Format: int32 */
|
|
343
|
+
id: number;
|
|
344
|
+
/** Format: double */
|
|
345
|
+
magnitude: number;
|
|
346
|
+
/** Format: int32 */
|
|
347
|
+
member: number;
|
|
348
|
+
/** Format: double */
|
|
349
|
+
start_frac: number;
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* @description EN 1993-1-1 (steel) design parameters for a section. Engineer-supplied
|
|
353
|
+
* (we don't auto-classify — flange/web geometry isn't stored). Namespaced under
|
|
354
|
+
* `Section.ec3` so other codes (e.g. AISC) can add their own block without
|
|
355
|
+
* polluting the universal section properties.
|
|
356
|
+
*/
|
|
357
|
+
Ec3SectionParams: {
|
|
358
|
+
/**
|
|
359
|
+
* Format: double
|
|
360
|
+
* @description Effective area for class 4 sections (EN 1993-1-5 §4.3), in the model's
|
|
361
|
+
* area unit. Required together with `wel_y_eff` to run EC3 checks on a
|
|
362
|
+
* class 4 section.
|
|
363
|
+
*/
|
|
364
|
+
a_eff?: number | null;
|
|
365
|
+
buckling_curve_lt?: null | components["schemas"]["BucklingCurve"];
|
|
366
|
+
buckling_curve_y?: null | components["schemas"]["BucklingCurve"];
|
|
367
|
+
buckling_curve_z?: null | components["schemas"]["BucklingCurve"];
|
|
368
|
+
/**
|
|
369
|
+
* Format: int32
|
|
370
|
+
* @description Cross-section class 1–4 (EN 1993-1-1 §5.5). Class 4 needs effective
|
|
371
|
+
* properties (currently a limitation — see the EC3 evaluator).
|
|
372
|
+
*/
|
|
373
|
+
section_class?: number | null;
|
|
374
|
+
/**
|
|
375
|
+
* Format: double
|
|
376
|
+
* @description Effective elastic section modulus about y (major axis) for class 4
|
|
377
|
+
* sections (EN 1993-1-5), in the model's section-modulus unit.
|
|
378
|
+
*/
|
|
379
|
+
wel_y_eff?: number | null;
|
|
380
|
+
/**
|
|
381
|
+
* Format: double
|
|
382
|
+
* @description Effective elastic section modulus about z (minor axis) for class 4
|
|
383
|
+
* sections (EN 1993-1-5), in the model's section-modulus unit.
|
|
384
|
+
*/
|
|
385
|
+
wel_z_eff?: number | null;
|
|
386
|
+
/**
|
|
387
|
+
* Format: double
|
|
388
|
+
* @description Mono-symmetry parameter `z_j` (EN 1993-1-1 / NCCI SN030) in the model's
|
|
389
|
+
* length unit; 0 for doubly-symmetric sections. Enables the general LTB
|
|
390
|
+
* `M_cr` (used with the spec's C2/C3/z_g).
|
|
391
|
+
*/
|
|
392
|
+
z_j?: number | null;
|
|
393
|
+
};
|
|
394
|
+
/** @description Built-in EN 1993-1-1 steel member check (§6.2 cross-section + §6.3 buckling). */
|
|
395
|
+
Ec3SteelSpec: {
|
|
396
|
+
/**
|
|
397
|
+
* Format: double
|
|
398
|
+
* @description LTB moment-distribution factor C1. When omitted it is computed from the
|
|
399
|
+
* member's actual moment diagram (NCCI SN003 quarter-point formula); set it
|
|
400
|
+
* explicitly to override (e.g. 1.0 = conservative uniform moment).
|
|
401
|
+
*/
|
|
402
|
+
c1?: number | null;
|
|
403
|
+
/**
|
|
404
|
+
* Format: double
|
|
405
|
+
* @description LTB factors C2 / C3 for the general `M_cr` (load height / mono-symmetry).
|
|
406
|
+
* Default 0.0 → the doubly-symmetric form (no load-height or z_j term).
|
|
407
|
+
* @default 0
|
|
408
|
+
*/
|
|
409
|
+
c2: number;
|
|
410
|
+
/**
|
|
411
|
+
* Format: double
|
|
412
|
+
* @default 0
|
|
413
|
+
*/
|
|
414
|
+
c3: number;
|
|
415
|
+
/**
|
|
416
|
+
* Format: double
|
|
417
|
+
* @default 1
|
|
418
|
+
*/
|
|
419
|
+
gamma_m0: number;
|
|
420
|
+
/**
|
|
421
|
+
* Format: double
|
|
422
|
+
* @default 1
|
|
423
|
+
*/
|
|
424
|
+
gamma_m1: number;
|
|
425
|
+
/** @default true */
|
|
426
|
+
include_buckling: boolean;
|
|
427
|
+
/** @default true */
|
|
428
|
+
include_ltb: boolean;
|
|
429
|
+
interaction_method?: components["schemas"]["InteractionMethod"];
|
|
430
|
+
/**
|
|
431
|
+
* Format: double
|
|
432
|
+
* @description Transverse-load application height `z_g` above the shear centre (model
|
|
433
|
+
* length units). Positive = destabilising (load above shear centre).
|
|
434
|
+
* Default 0.0 (load at the shear centre).
|
|
435
|
+
* @default 0
|
|
436
|
+
*/
|
|
437
|
+
z_g: number;
|
|
438
|
+
};
|
|
439
|
+
/**
|
|
440
|
+
* @description Which load drives the reference stress state for a linear buckling analysis.
|
|
441
|
+
* Its first-order member axial forces scale linearly with the load, so the
|
|
442
|
+
* returned eigenvalue is the critical load factor `α_cr` directly.
|
|
443
|
+
*/
|
|
444
|
+
EigenLoadRef: {
|
|
445
|
+
/**
|
|
446
|
+
* Format: int32
|
|
447
|
+
* @description Reference a load case by id.
|
|
448
|
+
*/
|
|
449
|
+
LoadCase: number;
|
|
450
|
+
} | {
|
|
451
|
+
/**
|
|
452
|
+
* Format: int32
|
|
453
|
+
* @description Reference a load combination by id.
|
|
454
|
+
*/
|
|
455
|
+
LoadCombination: number;
|
|
456
|
+
};
|
|
457
|
+
/**
|
|
458
|
+
* @description Generic, calculation-agnostic grouping of model entities for UI /
|
|
459
|
+
* visualization. Metadata only — ignored by the solver, surfaced in the
|
|
460
|
+
* OpenAPI schema for consumers (mirrors `WorkPlane`/`WorkAxis`). A group may
|
|
461
|
+
* reference any mix of entity kinds via the typed id lists below; each list
|
|
462
|
+
* defaults to empty.
|
|
463
|
+
*/
|
|
464
|
+
EntityGroup: {
|
|
465
|
+
/** Format: int32 */
|
|
466
|
+
id: number;
|
|
467
|
+
member_ids?: number[];
|
|
468
|
+
member_set_ids?: number[];
|
|
469
|
+
name?: string;
|
|
470
|
+
node_ids?: number[];
|
|
471
|
+
/** @description Generated plate finite elements. */
|
|
472
|
+
plate_element_ids?: number[];
|
|
473
|
+
/** @description Modeled plate surfaces. */
|
|
474
|
+
plate_surface_ids?: number[];
|
|
475
|
+
support_ids?: number[];
|
|
476
|
+
work_axis_ids?: number[];
|
|
477
|
+
work_plane_ids?: number[];
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* @description A node named relative to the entity (member) being checked — its own ends, or,
|
|
481
|
+
* via the member's `reference_member` / `reference_node`, a paired member/node.
|
|
482
|
+
* Lets a check compare against the member it points at, reusably by classification
|
|
483
|
+
* (each member carries its own reference).
|
|
484
|
+
* @enum {string}
|
|
485
|
+
*/
|
|
486
|
+
EntityNodeRef: "Start" | "End" | "ReferenceMemberStart" | "ReferenceMemberEnd" | "ReferenceNode";
|
|
487
|
+
/**
|
|
488
|
+
* @description Which entity a result belongs to. A tagged union (`{"type": …, "<kind>_id": …}`)
|
|
489
|
+
* so exactly one target kind is set — consistent with `EntitySelector` and
|
|
490
|
+
* `PlatePressureTarget`.
|
|
491
|
+
*/
|
|
492
|
+
EntityRef: {
|
|
493
|
+
/** Format: int32 */
|
|
494
|
+
member_id: number;
|
|
495
|
+
/** @enum {string} */
|
|
496
|
+
type: "Member";
|
|
497
|
+
} | {
|
|
498
|
+
/** Format: int32 */
|
|
499
|
+
memberset_id: number;
|
|
500
|
+
/** @enum {string} */
|
|
501
|
+
type: "MemberSet";
|
|
502
|
+
} | {
|
|
503
|
+
/** Format: int32 */
|
|
504
|
+
plate_element_id: number;
|
|
505
|
+
/** @enum {string} */
|
|
506
|
+
type: "PlateElement";
|
|
507
|
+
} | {
|
|
508
|
+
/** Format: int32 */
|
|
509
|
+
plate_surface_id: number;
|
|
510
|
+
/** @enum {string} */
|
|
511
|
+
type: "PlateSurface";
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* @description Which entities a check applies to. Internally tagged (`{"type": …}`) so every
|
|
515
|
+
* variant is an object (a mixed bare-string/object `oneOf` breaks the cloud TS
|
|
516
|
+
* generator).
|
|
517
|
+
*/
|
|
518
|
+
EntitySelector: {
|
|
519
|
+
/** @enum {string} */
|
|
520
|
+
type: "AllMembers";
|
|
521
|
+
} | {
|
|
522
|
+
ids: number[];
|
|
523
|
+
/** @enum {string} */
|
|
524
|
+
type: "Members";
|
|
525
|
+
} | {
|
|
526
|
+
ids: number[];
|
|
527
|
+
/** @enum {string} */
|
|
528
|
+
type: "MemberSets";
|
|
529
|
+
} | {
|
|
530
|
+
/** @enum {string} */
|
|
531
|
+
type: "MemberClassification";
|
|
532
|
+
value: string;
|
|
533
|
+
} | {
|
|
534
|
+
/** @enum {string} */
|
|
535
|
+
type: "AllPlates";
|
|
536
|
+
} | {
|
|
537
|
+
ids: number[];
|
|
538
|
+
/** @enum {string} */
|
|
539
|
+
type: "PlateSurfaces";
|
|
540
|
+
} | {
|
|
541
|
+
ids: number[];
|
|
542
|
+
/** @enum {string} */
|
|
543
|
+
type: "PlateElements";
|
|
544
|
+
};
|
|
545
|
+
/**
|
|
546
|
+
* @description Which member a property/force quantity resolves against: the entity itself, or
|
|
547
|
+
* the member named by its `reference_member`. Defaults to the entity (so existing
|
|
548
|
+
* checks are unchanged).
|
|
549
|
+
* @enum {string}
|
|
550
|
+
*/
|
|
551
|
+
EntityTarget: "SelfEntity" | "ReferenceMember";
|
|
552
|
+
/** @description The result of one check for one entity, enveloped over the applicable combos. */
|
|
553
|
+
EntityUnityResult: {
|
|
554
|
+
/** Format: double */
|
|
555
|
+
capacity?: number | null;
|
|
556
|
+
/** Format: double */
|
|
557
|
+
demand: number;
|
|
558
|
+
entity: components["schemas"]["EntityRef"];
|
|
559
|
+
/** Format: int32 */
|
|
560
|
+
governing_combination_id?: number | null;
|
|
561
|
+
/** Format: double */
|
|
562
|
+
location_x_frac?: number | null;
|
|
563
|
+
message?: string | null;
|
|
564
|
+
/** @description Rendered narrative report (from the check's `report_template`), if any. */
|
|
565
|
+
rendered_report?: string | null;
|
|
566
|
+
status: components["schemas"]["UnityStatus"];
|
|
567
|
+
/**
|
|
568
|
+
* @description Transparent hand-calc trace (symbolic + substituted) in display units.
|
|
569
|
+
* @default []
|
|
570
|
+
*/
|
|
571
|
+
trace: components["schemas"]["CalcStep"][];
|
|
572
|
+
/** Format: double */
|
|
573
|
+
utilization: number;
|
|
574
|
+
};
|
|
575
|
+
/**
|
|
576
|
+
* @description Per-result solver diagnostics. `errors` mark results that are present but not
|
|
577
|
+
* trustworthy (e.g. a second-order load that meets or exceeds the elastic
|
|
578
|
+
* critical/buckling load); `warnings` are advisory. Empty in the common case.
|
|
579
|
+
*/
|
|
580
|
+
ErrorsAndWarnings: {
|
|
581
|
+
/** @default [] */
|
|
582
|
+
errors: components["schemas"]["SolverMessage"][];
|
|
583
|
+
/** @default [] */
|
|
584
|
+
warnings: components["schemas"]["SolverMessage"][];
|
|
585
|
+
};
|
|
586
|
+
/** @description Root FERS document: settings, the structural model, the analysis to run, and (after solving) results. */
|
|
587
|
+
FERS: {
|
|
588
|
+
/** @description The analysis definition: solver options + load/imperfection cases. */
|
|
589
|
+
analysis: components["schemas"]["Analysis"];
|
|
590
|
+
/** @description The structural model: geometry, topology, materials, workspace. */
|
|
591
|
+
model: components["schemas"]["Model"];
|
|
592
|
+
results?: null | components["schemas"]["ResultsBundle"];
|
|
593
|
+
/**
|
|
594
|
+
* Format: int32
|
|
595
|
+
* @description Schema contract version (see [`SCHEMA_VERSION`]). Defaults to the current
|
|
596
|
+
* version when omitted so older documents still parse.
|
|
597
|
+
* @default 2
|
|
598
|
+
*/
|
|
599
|
+
schema_version: number;
|
|
600
|
+
/** @description Units + general info (analysis solver options live on `analysis.options`). */
|
|
601
|
+
settings: components["schemas"]["Settings"];
|
|
602
|
+
};
|
|
603
|
+
/** @enum {string} */
|
|
604
|
+
ForceUnit: "N" | "kN";
|
|
605
|
+
/** @description Project metadata (name, author, version) shown in reports. */
|
|
606
|
+
GeneralInfo: {
|
|
607
|
+
author: string;
|
|
608
|
+
project_name: string;
|
|
609
|
+
version: string;
|
|
610
|
+
};
|
|
611
|
+
/**
|
|
612
|
+
* @description A user-authored, templated-formula check. `utilization = demand / capacity`,
|
|
613
|
+
* both evaluated in SI; the report shows each step filled in with real numbers.
|
|
614
|
+
*/
|
|
615
|
+
GenericSpec: {
|
|
616
|
+
/** @description Capacity (resistance) expression, e.g. `"fy"`. */
|
|
617
|
+
capacity: string;
|
|
618
|
+
/**
|
|
619
|
+
* @description Demand (action effect) expression, e.g.
|
|
620
|
+
* `"bending_moment * fibre_distance / second_moment_of_area"`.
|
|
621
|
+
*/
|
|
622
|
+
demand: string;
|
|
623
|
+
/**
|
|
624
|
+
* @description Named variables referenced by `demand`/`capacity` (and, via the computed
|
|
625
|
+
* trace, by the check's `report_template`).
|
|
626
|
+
* @default []
|
|
627
|
+
*/
|
|
628
|
+
variables: components["schemas"]["VarBinding"][];
|
|
629
|
+
};
|
|
630
|
+
/**
|
|
631
|
+
* @description A geometric quantity.
|
|
632
|
+
* @enum {string}
|
|
633
|
+
*/
|
|
634
|
+
GeometryProperty: "Length";
|
|
635
|
+
/**
|
|
636
|
+
* @description EN 1998-1 ground type (Table 3.1) selecting the spectrum shape parameters.
|
|
637
|
+
* @enum {string}
|
|
638
|
+
*/
|
|
639
|
+
GroundType: "A" | "B" | "C" | "D" | "E";
|
|
640
|
+
/** @description Geometric imperfections (sway/translation) applied for a set of load combinations. */
|
|
641
|
+
ImperfectionCase: {
|
|
642
|
+
/** Format: int32 */
|
|
643
|
+
imperfection_case_id: number;
|
|
644
|
+
load_combinations: number[];
|
|
645
|
+
sway_imperfections: components["schemas"]["SwayImperfection"][];
|
|
646
|
+
translation_imperfections: components["schemas"]["TranslationImperfection"][];
|
|
647
|
+
};
|
|
648
|
+
/**
|
|
649
|
+
* @description k_ij interaction-factor method for EN 1993-1-1 §6.3.3.
|
|
650
|
+
* @enum {string}
|
|
651
|
+
*/
|
|
652
|
+
InteractionMethod: "AnnexA" | "AnnexB";
|
|
653
|
+
/** @description Lateral-force (equivalent static) method results (§4.3.3.2). */
|
|
654
|
+
LateralForceResults: {
|
|
655
|
+
combined: components["schemas"]["Results"];
|
|
656
|
+
per_direction: components["schemas"]["SeismicDirectionResult"][];
|
|
657
|
+
};
|
|
658
|
+
/** @enum {string} */
|
|
659
|
+
LengthUnit: "mm" | "cm" | "m";
|
|
660
|
+
/** @enum {string} */
|
|
661
|
+
LimitState: "SLS" | "ULS" | "FLS" | "ALS";
|
|
662
|
+
/**
|
|
663
|
+
* @description The coordinate frame a member point load/moment direction is expressed in.
|
|
664
|
+
* @enum {string}
|
|
665
|
+
*/
|
|
666
|
+
LoadAxes: "global" | "local";
|
|
667
|
+
/** @description A named collection of loads (nodal, distributed, surface, member point loads/moments, plate pressures, imperfections). */
|
|
668
|
+
LoadCase: {
|
|
669
|
+
/** @default [] */
|
|
670
|
+
distributed_loads: components["schemas"]["DistributedLoad"][];
|
|
671
|
+
/** Format: int32 */
|
|
672
|
+
id: number;
|
|
673
|
+
/** @default [] */
|
|
674
|
+
member_point_loads: components["schemas"]["MemberPointLoad"][];
|
|
675
|
+
/** @default [] */
|
|
676
|
+
member_point_moments: components["schemas"]["MemberPointMoment"][];
|
|
677
|
+
name: string;
|
|
678
|
+
/** @default [] */
|
|
679
|
+
nodal_loads: components["schemas"]["NodalLoad"][];
|
|
680
|
+
/** @default [] */
|
|
681
|
+
nodal_moments: components["schemas"]["NodalMoment"][];
|
|
682
|
+
/** @default [] */
|
|
683
|
+
plate_pressures: components["schemas"]["PlatePressure"][];
|
|
684
|
+
/** @default [] */
|
|
685
|
+
surface_loads: components["schemas"]["SurfaceLoad"][];
|
|
686
|
+
};
|
|
687
|
+
/** @description One `(load case, factor)` term of a load combination. */
|
|
688
|
+
LoadCaseFactor: {
|
|
689
|
+
/** Format: double */
|
|
690
|
+
factor: number;
|
|
691
|
+
/** Format: int32 */
|
|
692
|
+
load_case_id: number;
|
|
693
|
+
};
|
|
694
|
+
/** @description A factored combination of load cases for a given limit state (SLS/ULS/FLS/ALS). */
|
|
695
|
+
LoadCombination: {
|
|
696
|
+
check: string;
|
|
697
|
+
/** Format: int32 */
|
|
698
|
+
id: number;
|
|
699
|
+
limit_state?: null | components["schemas"]["LimitState"];
|
|
700
|
+
load_case_factors: components["schemas"]["LoadCaseFactor"][];
|
|
701
|
+
name: string;
|
|
702
|
+
situation?: string | null;
|
|
703
|
+
};
|
|
704
|
+
/**
|
|
705
|
+
* @description Distinguishes a concentrated force from a concentrated moment at a node.
|
|
706
|
+
* @enum {string}
|
|
707
|
+
*/
|
|
708
|
+
LoadType: "force" | "moment";
|
|
709
|
+
/**
|
|
710
|
+
* @description Mass-matrix formulation for modal (natural-frequency) analysis.
|
|
711
|
+
*
|
|
712
|
+
* - **Consistent** (default): full Przemieniecki element mass matrix that
|
|
713
|
+
* couples translations and rotations. More accurate, matches the consistent
|
|
714
|
+
* stiffness matrix, and is positive-definite on translational + rotational
|
|
715
|
+
* DOFs.
|
|
716
|
+
* - **Lumped**: diagonal mass matrix (HRZ-style half-mass at each node for the
|
|
717
|
+
* translational DOFs only). Simpler and cheaper; rotational/warping DOFs
|
|
718
|
+
* carry no inertia, so the mass matrix is only positive-semidefinite. The
|
|
719
|
+
* subspace-iteration eigensolver handles the massless DOFs.
|
|
720
|
+
*
|
|
721
|
+
* Python:
|
|
722
|
+
* class MassFormulation(Enum):
|
|
723
|
+
* CONSISTENT = "CONSISTENT"
|
|
724
|
+
* LUMPED = "LUMPED"
|
|
725
|
+
* @enum {string}
|
|
726
|
+
*/
|
|
727
|
+
MassFormulation: "CONSISTENT" | "LUMPED";
|
|
728
|
+
/** @description An isotropic material (E, G, density, yield strength) with optional orthotropic plate properties. */
|
|
729
|
+
Material: {
|
|
730
|
+
/** Format: double */
|
|
731
|
+
density: number;
|
|
732
|
+
/** Format: double */
|
|
733
|
+
e_mod: number;
|
|
734
|
+
/** Format: double */
|
|
735
|
+
g_mod: number;
|
|
736
|
+
/** Format: int32 */
|
|
737
|
+
id: number;
|
|
738
|
+
name: string;
|
|
739
|
+
orthotropic_plate?: null | components["schemas"]["OrthotropicPlateMaterial"];
|
|
740
|
+
/** Format: double */
|
|
741
|
+
yield_stress: number;
|
|
742
|
+
};
|
|
743
|
+
/**
|
|
744
|
+
* @description A material property.
|
|
745
|
+
* @enum {string}
|
|
746
|
+
*/
|
|
747
|
+
MaterialProperty: "E" | "G" | "Fy" | "Density";
|
|
748
|
+
/** @description A finite-element member between two nodes, with a section, member type and optional end hinges/offsets. */
|
|
749
|
+
Member: {
|
|
750
|
+
/**
|
|
751
|
+
* Format: double
|
|
752
|
+
* @description Optional user-supplied buckling reduction factor χ (EN 1993-1-1 §6.3).
|
|
753
|
+
* Currently informational: the EC3 unity-check evaluator computes its own χ
|
|
754
|
+
* from the section's buckling curve and does not yet read this override.
|
|
755
|
+
*/
|
|
756
|
+
chi?: number | null;
|
|
757
|
+
/**
|
|
758
|
+
* @description Free-text grouping key used to target this member in unity checks
|
|
759
|
+
* (`EntitySelector::MemberClassification`). `None` = unclassified.
|
|
760
|
+
*/
|
|
761
|
+
classification?: string | null;
|
|
762
|
+
/** Format: int32 */
|
|
763
|
+
end_hinge?: number | null;
|
|
764
|
+
/** Format: int32 */
|
|
765
|
+
end_node_id: number;
|
|
766
|
+
end_offset?: null | components["schemas"]["MemberEndOffset"];
|
|
767
|
+
/** Format: int32 */
|
|
768
|
+
id: number;
|
|
769
|
+
member_type: components["schemas"]["MemberType"];
|
|
770
|
+
/**
|
|
771
|
+
* @description When true, the cross-section is mirrored: shear-center offsets y_s and
|
|
772
|
+
* z_s are negated, and the shape_path geometry is flipped.
|
|
773
|
+
*/
|
|
774
|
+
mirror?: boolean;
|
|
775
|
+
/**
|
|
776
|
+
* Format: double
|
|
777
|
+
* @description Initial cable tension (force units) for `Cable` members. Used to derive
|
|
778
|
+
* the unstretched length when `unstretched_length` is not given directly:
|
|
779
|
+
* `L₀ = L_chord / (1 + pretension/EA)`. Ignored for non-cable members.
|
|
780
|
+
*/
|
|
781
|
+
pretension?: number | null;
|
|
782
|
+
/**
|
|
783
|
+
* Format: int32
|
|
784
|
+
* @description Reference member used by the modeler/UI to define this member's orientation
|
|
785
|
+
* or grouping. Not used by the solver; preserved for consumers/unity checks.
|
|
786
|
+
*/
|
|
787
|
+
reference_member?: number | null;
|
|
788
|
+
/**
|
|
789
|
+
* Format: int32
|
|
790
|
+
* @description Reference node used by the modeler/UI (e.g. orientation reference). Not used
|
|
791
|
+
* by the solver; preserved for consumers/unity checks.
|
|
792
|
+
*/
|
|
793
|
+
reference_node?: number | null;
|
|
794
|
+
/** Format: double */
|
|
795
|
+
rotation_angle: number;
|
|
796
|
+
/** Format: int32 */
|
|
797
|
+
section?: number | null;
|
|
798
|
+
/** Format: int32 */
|
|
799
|
+
start_hinge?: number | null;
|
|
800
|
+
/** Format: int32 */
|
|
801
|
+
start_node_id: number;
|
|
802
|
+
start_offset?: null | components["schemas"]["MemberEndOffset"];
|
|
803
|
+
/**
|
|
804
|
+
* Format: double
|
|
805
|
+
* @description Explicit unstretched (natural) length L₀ (length units) for `Cable`
|
|
806
|
+
* members. Takes precedence over `pretension`. When neither is set, the
|
|
807
|
+
* cable's unstretched length defaults to the straight chord length.
|
|
808
|
+
*/
|
|
809
|
+
unstretched_length?: number | null;
|
|
810
|
+
/**
|
|
811
|
+
* Format: double
|
|
812
|
+
* @description Optional self-weight override as a gravity load **per unit length**, in the
|
|
813
|
+
* model's force/length units (already including g). When non-zero it replaces
|
|
814
|
+
* the computed `density · area · g` self-weight for this member (see
|
|
815
|
+
* `append_self_weight_loads`); `0.0` means "use the computed value".
|
|
816
|
+
*/
|
|
817
|
+
weight: number;
|
|
818
|
+
};
|
|
819
|
+
/**
|
|
820
|
+
* @description One sampled point on a member's deflected shape: the global displacement
|
|
821
|
+
* `[dx, dy, dz]` at fractional position `x_frac ∈ [0, 1]` along the member
|
|
822
|
+
* (0 = start node, 1 = end node).
|
|
823
|
+
*/
|
|
824
|
+
MemberDisplacementSample: {
|
|
825
|
+
/** @description Global displacement `[dx, dy, dz]` at this station, in model length units. */
|
|
826
|
+
displacement: components["schemas"]["Vector3"];
|
|
827
|
+
/**
|
|
828
|
+
* Format: double
|
|
829
|
+
* @description Fractional position along the member, 0 (start) … 1 (end).
|
|
830
|
+
*/
|
|
831
|
+
x_frac: number;
|
|
832
|
+
};
|
|
833
|
+
/**
|
|
834
|
+
* @description A rigid offset between a member end and its node, in the **global** frame
|
|
835
|
+
* (`X`, `Y`, `Z`).
|
|
836
|
+
*/
|
|
837
|
+
MemberEndOffset: {
|
|
838
|
+
/** Format: double */
|
|
839
|
+
X?: number;
|
|
840
|
+
/** Format: double */
|
|
841
|
+
Y?: number;
|
|
842
|
+
/** Format: double */
|
|
843
|
+
Z?: number;
|
|
844
|
+
};
|
|
845
|
+
/**
|
|
846
|
+
* @description Local member force component (member local axes). Used by member unity checks
|
|
847
|
+
* (`QuantitySource::MemberForce`) and member-hinge stiffness curves. Distinct
|
|
848
|
+
* from [`crate::models::stiffness_curve::SupportForceComponent`], whose global
|
|
849
|
+
* `Fx/Fy/Fz` reaction names apply to support stiffness curves.
|
|
850
|
+
* @enum {string}
|
|
851
|
+
*/
|
|
852
|
+
MemberForceComponent: "N" | "Vy" | "Vz" | "Mx" | "My" | "Mz" | "Bimoment";
|
|
853
|
+
/** @description A member end release / spring: translational and rotational stiffnesses with optional nonlinear curves. */
|
|
854
|
+
MemberHinge: {
|
|
855
|
+
/**
|
|
856
|
+
* @description Free-text label for human readability only (e.g. `"Column base"`,
|
|
857
|
+
* `"SPRING_YZ"`). The solver ignores this field — actual hinge behavior is
|
|
858
|
+
* driven entirely by the release/stiffness fields below. Not a constrained
|
|
859
|
+
* value set, so intentionally a `String` rather than an enum.
|
|
860
|
+
*/
|
|
861
|
+
hinge_type: string;
|
|
862
|
+
/** Format: int32 */
|
|
863
|
+
id: number;
|
|
864
|
+
/** Format: double */
|
|
865
|
+
max_bimoment_warp?: number | null;
|
|
866
|
+
/** Format: double */
|
|
867
|
+
max_moment_mx?: number | null;
|
|
868
|
+
/** Format: double */
|
|
869
|
+
max_moment_my?: number | null;
|
|
870
|
+
/** Format: double */
|
|
871
|
+
max_moment_mz?: number | null;
|
|
872
|
+
/** Format: double */
|
|
873
|
+
max_tension_vx?: number | null;
|
|
874
|
+
/** Format: double */
|
|
875
|
+
max_tension_vy?: number | null;
|
|
876
|
+
/** Format: double */
|
|
877
|
+
max_tension_vz?: number | null;
|
|
878
|
+
/** Format: double */
|
|
879
|
+
rotational_release_mx?: number | null;
|
|
880
|
+
/** Format: double */
|
|
881
|
+
rotational_release_my?: number | null;
|
|
882
|
+
/** Format: double */
|
|
883
|
+
rotational_release_mz?: number | null;
|
|
884
|
+
/** Format: double */
|
|
885
|
+
rotational_release_warp?: number | null;
|
|
886
|
+
stiffness_curve_mx?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
887
|
+
stiffness_curve_my?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
888
|
+
stiffness_curve_mz?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
889
|
+
stiffness_curve_vx?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
890
|
+
stiffness_curve_vy?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
891
|
+
stiffness_curve_vz?: null | components["schemas"]["MemberStiffnessCurve"];
|
|
892
|
+
/** Format: double */
|
|
893
|
+
translational_release_vx?: number | null;
|
|
894
|
+
/** Format: double */
|
|
895
|
+
translational_release_vy?: number | null;
|
|
896
|
+
/** Format: double */
|
|
897
|
+
translational_release_vz?: number | null;
|
|
898
|
+
};
|
|
899
|
+
/** @description A concentrated force applied at a fractional position along a member. */
|
|
900
|
+
MemberPointLoad: {
|
|
901
|
+
/**
|
|
902
|
+
* @description Coordinate frame the `direction` is expressed in.
|
|
903
|
+
* @default global
|
|
904
|
+
*/
|
|
905
|
+
axes: components["schemas"]["LoadAxes"];
|
|
906
|
+
/** @description Load direction unit vector (global or local axes). */
|
|
907
|
+
direction: components["schemas"]["Vector3"];
|
|
908
|
+
/** Format: int32 */
|
|
909
|
+
id: number;
|
|
910
|
+
/** Format: double */
|
|
911
|
+
magnitude: number;
|
|
912
|
+
/** Format: int32 */
|
|
913
|
+
member: number;
|
|
914
|
+
/**
|
|
915
|
+
* Format: double
|
|
916
|
+
* @description Fractional position along the member (0.0 = start, 1.0 = end).
|
|
917
|
+
*/
|
|
918
|
+
position: number;
|
|
919
|
+
};
|
|
920
|
+
/** @description A concentrated moment applied at a fractional position along a member. */
|
|
921
|
+
MemberPointMoment: {
|
|
922
|
+
/**
|
|
923
|
+
* @description Coordinate frame the `direction` is expressed in.
|
|
924
|
+
* @default global
|
|
925
|
+
*/
|
|
926
|
+
axes: components["schemas"]["LoadAxes"];
|
|
927
|
+
/** @description Load direction unit vector (global or local axes). */
|
|
928
|
+
direction: components["schemas"]["Vector3"];
|
|
929
|
+
/** Format: int32 */
|
|
930
|
+
id: number;
|
|
931
|
+
/** Format: double */
|
|
932
|
+
magnitude: number;
|
|
933
|
+
/** Format: int32 */
|
|
934
|
+
member: number;
|
|
935
|
+
/**
|
|
936
|
+
* Format: double
|
|
937
|
+
* @description Fractional position along the member (0.0 = start, 1.0 = end).
|
|
938
|
+
*/
|
|
939
|
+
position: number;
|
|
940
|
+
};
|
|
941
|
+
/**
|
|
942
|
+
* @description Per-member result: local/global end forces, envelope maxima/minima, and section forces.
|
|
943
|
+
*
|
|
944
|
+
* ## Sign convention (see also `compute_section_forces` in `functions/results.rs`)
|
|
945
|
+
*
|
|
946
|
+
* - **Frames.** `start_node_forces` / `end_node_forces` are in the **global** frame.
|
|
947
|
+
* `local_*` fields and `section_forces` are in the member's **local centroidal**
|
|
948
|
+
* frame. For geometrically-nonlinear (corotational) results the local frame is the
|
|
949
|
+
* **corotated (deformed-element) frame**, so the bending moment stays in one
|
|
950
|
+
* component along a co-linear member chain and section forces interpolate correctly.
|
|
951
|
+
* - **Start vs end node.** The two member ends report forces in the static-equilibrium
|
|
952
|
+
* ("nodal reaction") convention, so the **end node is the Newton's-3rd-law opposite**
|
|
953
|
+
* of the start node and the interior `section_forces`. Plotting
|
|
954
|
+
* `[start, …section_forces…, end]` raw therefore draws a `value → −value` sawtooth;
|
|
955
|
+
* use [`MemberResult::internal_force_series`] (which negates the end node) for a
|
|
956
|
+
* continuous diagram, or negate `local_end_forces` yourself.
|
|
957
|
+
* - **Components.** Axial `fx` is **tension-positive**; `fy`/`fz` are shears, `mx` is
|
|
958
|
+
* torsion, `my`/`mz` are bending moments, `bw` is the warping bimoment.
|
|
959
|
+
*/
|
|
960
|
+
MemberResult: {
|
|
961
|
+
/**
|
|
962
|
+
* @description Member-end force at the end node, in the **global** frame (Newton's-3rd-law
|
|
963
|
+
* opposite of the start-node internal force).
|
|
964
|
+
*/
|
|
965
|
+
end_node_forces: components["schemas"]["NodeForces"];
|
|
966
|
+
/**
|
|
967
|
+
* @description Continuous, ready-to-plot internal force diagram from `x_frac = 0` (start) to
|
|
968
|
+
* `x_frac = 1` (end), in the local frame: `local_start_forces`, then
|
|
969
|
+
* `section_forces`, then the **negated** `local_end_forces` (converted from the
|
|
970
|
+
* Newton's-3rd-law node reaction to the internal-force convention) so the series
|
|
971
|
+
* is continuous with no sawtooth across shared nodes.
|
|
972
|
+
*/
|
|
973
|
+
internal_force_series?: components["schemas"]["SectionForce"][];
|
|
974
|
+
local_displacement_end_node: components["schemas"]["NodeDisplacement"];
|
|
975
|
+
local_displacement_start_node: components["schemas"]["NodeDisplacement"];
|
|
976
|
+
/**
|
|
977
|
+
* @description Internal force at the end node, in the member **local centroidal** frame.
|
|
978
|
+
* This is the nodal-reaction convention, i.e. the Newton's-3rd-law opposite of
|
|
979
|
+
* the internal force at the end — negate it to get the continuous internal value.
|
|
980
|
+
*/
|
|
981
|
+
local_end_forces: components["schemas"]["NodeForces"];
|
|
982
|
+
/** @description Per-component maxima over the member, in the local frame. */
|
|
983
|
+
local_maximums: components["schemas"]["NodeForces"];
|
|
984
|
+
/** @description Per-component minima over the member, in the local frame. */
|
|
985
|
+
local_minimums: components["schemas"]["NodeForces"];
|
|
986
|
+
/**
|
|
987
|
+
* @description Internal force at the start node, in the member **local centroidal** frame
|
|
988
|
+
* (corotated frame for nonlinear results). Equals `internal_force_series[0]`.
|
|
989
|
+
*/
|
|
990
|
+
local_start_forces: components["schemas"]["NodeForces"];
|
|
991
|
+
/** @description Per-component maxima over the member (global frame). */
|
|
992
|
+
maximums: components["schemas"]["NodeForces"];
|
|
993
|
+
/**
|
|
994
|
+
* @description Optional sampled deflected shape: the member's global displacement at
|
|
995
|
+
* evenly-spaced stations from `x_frac = 0` to `1`, reconstructed by
|
|
996
|
+
* cubic-Hermite interpolation of the end-node translations + rotations.
|
|
997
|
+
* Empty unless `AnalysisOptions::include_member_deflected_shape` is enabled.
|
|
998
|
+
* The interpolation is the end-DOF homogeneous cubic — exact for members with
|
|
999
|
+
* no span load; under a member UDL the true shape is quartic, so mid-span sag
|
|
1000
|
+
* is slightly under-rendered (matching client-side Hermite reconstructions).
|
|
1001
|
+
*/
|
|
1002
|
+
member_displacements?: components["schemas"]["MemberDisplacementSample"][];
|
|
1003
|
+
/** @description Per-component minima over the member (global frame). */
|
|
1004
|
+
minimums: components["schemas"]["NodeForces"];
|
|
1005
|
+
/**
|
|
1006
|
+
* @description Continuous internal forces at evenly-spaced **interior** fractions
|
|
1007
|
+
* (`0 < x_frac < 1`), in the local frame. These already follow the internal-force
|
|
1008
|
+
* convention (no end-node flip). For a ready-to-plot 0→1 diagram including the
|
|
1009
|
+
* endpoints use [`MemberResult::internal_force_series`].
|
|
1010
|
+
*/
|
|
1011
|
+
section_forces: components["schemas"]["SectionForce"][];
|
|
1012
|
+
/** @description Member-end force at the start node, in the **global** frame. */
|
|
1013
|
+
start_node_forces: components["schemas"]["NodeForces"];
|
|
1014
|
+
};
|
|
1015
|
+
/**
|
|
1016
|
+
* @description A member set represents one physical beam: the ordered chain of collinear
|
|
1017
|
+
* finite-element members that together form a single continuous structural
|
|
1018
|
+
* member. Members are referenced by id; the member objects themselves live in
|
|
1019
|
+
* the top-level `FERS.members` list.
|
|
1020
|
+
*/
|
|
1021
|
+
MemberSet: {
|
|
1022
|
+
/**
|
|
1023
|
+
* Format: double
|
|
1024
|
+
* @description Buckling-length overrides for code checks (EN 1993-1-1 §6.3). When absent,
|
|
1025
|
+
* the unity-check evaluator derives L_cr from `buckling_restraints` spacing.
|
|
1026
|
+
* Explicit lengths (m) take precedence over the factors.
|
|
1027
|
+
*/
|
|
1028
|
+
buckling_length_y?: number | null;
|
|
1029
|
+
/** Format: double */
|
|
1030
|
+
buckling_length_z?: number | null;
|
|
1031
|
+
/**
|
|
1032
|
+
* @description Node-based buckling restraints along the beam (replaces scalar l_y/l_z).
|
|
1033
|
+
* @default []
|
|
1034
|
+
*/
|
|
1035
|
+
buckling_restraints: components["schemas"]["BucklingRestraint"][];
|
|
1036
|
+
/**
|
|
1037
|
+
* @description Free-text label for the modeler/UI (e.g. "Upright", "Beam"); not used by
|
|
1038
|
+
* the solver.
|
|
1039
|
+
*/
|
|
1040
|
+
classification?: string | null;
|
|
1041
|
+
/**
|
|
1042
|
+
* Format: double
|
|
1043
|
+
* @description Effective-length factor K_y (L_cr,y = K_y · L) when no explicit length given.
|
|
1044
|
+
*/
|
|
1045
|
+
effective_length_factor_y?: number | null;
|
|
1046
|
+
/** Format: double */
|
|
1047
|
+
effective_length_factor_z?: number | null;
|
|
1048
|
+
/** Format: int32 */
|
|
1049
|
+
id: number;
|
|
1050
|
+
/**
|
|
1051
|
+
* Format: double
|
|
1052
|
+
* @description Unrestrained length for lateral-torsional buckling (m).
|
|
1053
|
+
*/
|
|
1054
|
+
ltb_length?: number | null;
|
|
1055
|
+
/** @description Ids of the members (in `FERS.members`) that make up this beam. */
|
|
1056
|
+
member_ids: number[];
|
|
1057
|
+
};
|
|
1058
|
+
/**
|
|
1059
|
+
* @description A **member-hinge** spring stiffness that varies with a member-local force.
|
|
1060
|
+
*
|
|
1061
|
+
* `points` is a sorted list of `[force_value, stiffness]` pairs and `depends_on`
|
|
1062
|
+
* is the member-local force component driving the interpolation. `Bimoment` is
|
|
1063
|
+
* not a valid curve driver (no slot in the member-end force array).
|
|
1064
|
+
*/
|
|
1065
|
+
MemberStiffnessCurve: {
|
|
1066
|
+
/** @description Which member-local force component the stiffness depends on. */
|
|
1067
|
+
depends_on: components["schemas"]["MemberStiffnessCurveDriver"];
|
|
1068
|
+
/** @description Sorted `[force_value, stiffness]` pairs (≥ 2 points, positive stiffness). */
|
|
1069
|
+
points: [
|
|
1070
|
+
number,
|
|
1071
|
+
number
|
|
1072
|
+
][];
|
|
1073
|
+
/**
|
|
1074
|
+
* @description When `true`, the curve is driven by the SIGNED force, so tension and
|
|
1075
|
+
* compression can have different stiffness (points may span negative
|
|
1076
|
+
* force). When `false` (default), the curve is driven by `|force|`
|
|
1077
|
+
* (symmetric in tension/compression — the legacy behaviour).
|
|
1078
|
+
*/
|
|
1079
|
+
signed?: boolean;
|
|
1080
|
+
};
|
|
1081
|
+
/**
|
|
1082
|
+
* @description Which member-local force component a **member-hinge** stiffness curve depends on.
|
|
1083
|
+
*
|
|
1084
|
+
* A subset of [`crate::models::unitychecks::quantities::MemberForceComponent`]:
|
|
1085
|
+
* the six member-end force/moment components, excluding `Bimoment` (which has no
|
|
1086
|
+
* slot in the member-end force array and cannot drive a curve). Keeping a
|
|
1087
|
+
* dedicated driver enum makes the schema express exactly what is valid.
|
|
1088
|
+
* @enum {string}
|
|
1089
|
+
*/
|
|
1090
|
+
MemberStiffnessCurveDriver: "N" | "Vy" | "Vz" | "Mx" | "My" | "Mz";
|
|
1091
|
+
/** @enum {string} */
|
|
1092
|
+
MemberType: "Normal" | "Truss" | "Tension" | "Compression" | "Rigid" | "Cable";
|
|
1093
|
+
/**
|
|
1094
|
+
* @description Request for a modal (natural-frequency) analysis: solve `K·φ = ω²·M·φ` and
|
|
1095
|
+
* report the lowest `num_modes` natural frequencies and mode shapes. Mass comes
|
|
1096
|
+
* from the structural self-mass (`density · area`), honoring the per-member
|
|
1097
|
+
* `weight` override (a gravity force per unit length, so mass/length =
|
|
1098
|
+
* `weight / |gravity_factor|`).
|
|
1099
|
+
*/
|
|
1100
|
+
ModalAnalysisSettings: {
|
|
1101
|
+
/** @description Mass-matrix formulation (Consistent default, Lumped optional). */
|
|
1102
|
+
mass_formulation?: components["schemas"]["MassFormulation"];
|
|
1103
|
+
/**
|
|
1104
|
+
* Format: int32
|
|
1105
|
+
* @description Maximum subspace-iteration sweeps. Defaults to 100 when omitted.
|
|
1106
|
+
*/
|
|
1107
|
+
max_iterations?: number | null;
|
|
1108
|
+
/**
|
|
1109
|
+
* Format: int32
|
|
1110
|
+
* @description Number of natural modes (lowest frequencies) to extract.
|
|
1111
|
+
*/
|
|
1112
|
+
num_modes: number;
|
|
1113
|
+
/**
|
|
1114
|
+
* Format: double
|
|
1115
|
+
* @description Eigen convergence tolerance (relative change in the tracked eigenvalues
|
|
1116
|
+
* between subspace sweeps). Defaults to 1e-6 when omitted.
|
|
1117
|
+
*/
|
|
1118
|
+
tolerance?: number | null;
|
|
1119
|
+
};
|
|
1120
|
+
/**
|
|
1121
|
+
* @description Modal combination rule for MRSA.
|
|
1122
|
+
* @enum {string}
|
|
1123
|
+
*/
|
|
1124
|
+
ModalCombination: "CQC" | "SRSS";
|
|
1125
|
+
/**
|
|
1126
|
+
* @description Results of a modal (natural-frequency) analysis: the lowest natural modes of
|
|
1127
|
+
* the structure, sorted by ascending frequency.
|
|
1128
|
+
*
|
|
1129
|
+
* All quantities are SI / time-based and therefore independent of the model's
|
|
1130
|
+
* length and force units: frequencies in hertz, periods in seconds, masses in
|
|
1131
|
+
* kilograms. Mode shapes are normalized so the largest translational component
|
|
1132
|
+
* equals 1 (a unit-free shape); the generalized mass and effective modal mass
|
|
1133
|
+
* are reported separately for response-spectrum / participation work.
|
|
1134
|
+
*/
|
|
1135
|
+
ModalResults: {
|
|
1136
|
+
modes: components["schemas"]["ModeShape"][];
|
|
1137
|
+
};
|
|
1138
|
+
/** @description A single natural vibration mode. */
|
|
1139
|
+
ModeShape: {
|
|
1140
|
+
/**
|
|
1141
|
+
* Format: double
|
|
1142
|
+
* @description Angular frequency `ω` (rad/s).
|
|
1143
|
+
*/
|
|
1144
|
+
angular_frequency: number;
|
|
1145
|
+
/**
|
|
1146
|
+
* @description Mode shape: per-node displacement pattern (normalized so the largest
|
|
1147
|
+
* translational component is 1).
|
|
1148
|
+
*/
|
|
1149
|
+
displacements: {
|
|
1150
|
+
[key: string]: components["schemas"]["NodeDisplacement"];
|
|
1151
|
+
};
|
|
1152
|
+
/**
|
|
1153
|
+
* @description Effective modal mass per global direction `[X, Y, Z, RX, RY, RZ]`
|
|
1154
|
+
* (`Γ² / (φᵀ·M·φ)`, in kg). The sum across modes approaches the total
|
|
1155
|
+
* free mass of the structure in each direction.
|
|
1156
|
+
*/
|
|
1157
|
+
effective_mass: number[];
|
|
1158
|
+
/**
|
|
1159
|
+
* Format: double
|
|
1160
|
+
* @description Eigenvalue `ω²` (rad²/s²).
|
|
1161
|
+
*/
|
|
1162
|
+
eigenvalue: number;
|
|
1163
|
+
/**
|
|
1164
|
+
* Format: double
|
|
1165
|
+
* @description Generalized (modal) mass `φᵀ·M·φ` (kg) for the reported, max-translation
|
|
1166
|
+
* normalized shape.
|
|
1167
|
+
*/
|
|
1168
|
+
modal_mass: number;
|
|
1169
|
+
/**
|
|
1170
|
+
* Format: int32
|
|
1171
|
+
* @description 1-based mode number (1 = lowest frequency).
|
|
1172
|
+
*/
|
|
1173
|
+
mode: number;
|
|
1174
|
+
/**
|
|
1175
|
+
* Format: double
|
|
1176
|
+
* @description Natural frequency `f = ω / 2π` (Hz).
|
|
1177
|
+
*/
|
|
1178
|
+
natural_frequency: number;
|
|
1179
|
+
/**
|
|
1180
|
+
* @description Modal participation factor per global direction
|
|
1181
|
+
* `[X, Y, Z, RX, RY, RZ]` (`Γ = φᵀ·M·r`).
|
|
1182
|
+
*/
|
|
1183
|
+
participation_factors: number[];
|
|
1184
|
+
/**
|
|
1185
|
+
* Format: double
|
|
1186
|
+
* @description Period `T = 1 / f` (s).
|
|
1187
|
+
*/
|
|
1188
|
+
period: number;
|
|
1189
|
+
};
|
|
1190
|
+
/**
|
|
1191
|
+
* @description The structural model: nodes, members, plates and their supporting
|
|
1192
|
+
* definitions (materials, sections, supports, hinges, shape paths).
|
|
1193
|
+
*/
|
|
1194
|
+
Model: {
|
|
1195
|
+
materials: components["schemas"]["Material"][];
|
|
1196
|
+
/** @default [] */
|
|
1197
|
+
member_hinges: components["schemas"]["MemberHinge"][];
|
|
1198
|
+
member_sets: components["schemas"]["MemberSet"][];
|
|
1199
|
+
/** @description Single source of truth for member objects. Member sets reference these by id. */
|
|
1200
|
+
members: components["schemas"]["Member"][];
|
|
1201
|
+
nodal_supports: components["schemas"]["NodalSupport"][];
|
|
1202
|
+
nodes: components["schemas"]["Node"][];
|
|
1203
|
+
/** @default [] */
|
|
1204
|
+
plate_elements: components["schemas"]["PlateElement"][];
|
|
1205
|
+
/** @default [] */
|
|
1206
|
+
plate_surfaces: components["schemas"]["PlateSurface"][];
|
|
1207
|
+
sections: components["schemas"]["Section"][];
|
|
1208
|
+
/** @default [] */
|
|
1209
|
+
shape_paths: components["schemas"]["ShapePath"][];
|
|
1210
|
+
/** @default {} */
|
|
1211
|
+
workspace: components["schemas"]["Workspace"];
|
|
1212
|
+
};
|
|
1213
|
+
/** @description Modal response spectrum analysis results (§4.3.3.3). */
|
|
1214
|
+
MrsaResults: {
|
|
1215
|
+
/** @description Final envelope after directional combination. */
|
|
1216
|
+
combined: components["schemas"]["Results"];
|
|
1217
|
+
/** @description Per excitation direction (base shear, modal-mass table, per-direction envelope). */
|
|
1218
|
+
per_direction: components["schemas"]["SeismicDirectionResult"][];
|
|
1219
|
+
};
|
|
1220
|
+
/** @description A concentrated force applied at a node. */
|
|
1221
|
+
NodalLoad: {
|
|
1222
|
+
direction: components["schemas"]["Vector3"];
|
|
1223
|
+
/** Format: int32 */
|
|
1224
|
+
id: number;
|
|
1225
|
+
load_type: components["schemas"]["LoadType"];
|
|
1226
|
+
/** Format: double */
|
|
1227
|
+
magnitude: number;
|
|
1228
|
+
/** Format: int32 */
|
|
1229
|
+
node: number;
|
|
1230
|
+
};
|
|
1231
|
+
/** @description A concentrated moment applied at a node. */
|
|
1232
|
+
NodalMoment: {
|
|
1233
|
+
direction: components["schemas"]["Vector3"];
|
|
1234
|
+
/** Format: int32 */
|
|
1235
|
+
id: number;
|
|
1236
|
+
load_type: components["schemas"]["LoadType"];
|
|
1237
|
+
/** Format: double */
|
|
1238
|
+
magnitude: number;
|
|
1239
|
+
/** Format: int32 */
|
|
1240
|
+
node: number;
|
|
1241
|
+
};
|
|
1242
|
+
/**
|
|
1243
|
+
* @description Boundary conditions at a node: per-axis translation/rotation conditions plus
|
|
1244
|
+
* optional warping. Each condition is in the **global** frame; an absent
|
|
1245
|
+
* (`None`) field means that DOF is free.
|
|
1246
|
+
*/
|
|
1247
|
+
NodalSupport: {
|
|
1248
|
+
RX?: null | components["schemas"]["SupportCondition"];
|
|
1249
|
+
RY?: null | components["schemas"]["SupportCondition"];
|
|
1250
|
+
RZ?: null | components["schemas"]["SupportCondition"];
|
|
1251
|
+
X?: null | components["schemas"]["SupportCondition"];
|
|
1252
|
+
Y?: null | components["schemas"]["SupportCondition"];
|
|
1253
|
+
Z?: null | components["schemas"]["SupportCondition"];
|
|
1254
|
+
/** @description Free-text label for the modeler/UI; not used by the solver. */
|
|
1255
|
+
classification?: string | null;
|
|
1256
|
+
/** Format: int32 */
|
|
1257
|
+
id: number;
|
|
1258
|
+
warping_condition?: null | components["schemas"]["SupportCondition"];
|
|
1259
|
+
};
|
|
1260
|
+
/** @description A model node with global coordinates and an optional support. */
|
|
1261
|
+
Node: {
|
|
1262
|
+
/** Format: double */
|
|
1263
|
+
X: number;
|
|
1264
|
+
/** Format: double */
|
|
1265
|
+
Y: number;
|
|
1266
|
+
/** Format: double */
|
|
1267
|
+
Z: number;
|
|
1268
|
+
/** Format: int32 */
|
|
1269
|
+
id: number;
|
|
1270
|
+
/** Format: int32 */
|
|
1271
|
+
nodal_support?: number | null;
|
|
1272
|
+
};
|
|
1273
|
+
/** @description Nodal displacement result (translations, rotations and warping). */
|
|
1274
|
+
NodeDisplacement: {
|
|
1275
|
+
/** Format: double */
|
|
1276
|
+
dx: number;
|
|
1277
|
+
/** Format: double */
|
|
1278
|
+
dy: number;
|
|
1279
|
+
/** Format: double */
|
|
1280
|
+
dz: number;
|
|
1281
|
+
/** Format: double */
|
|
1282
|
+
rx: number;
|
|
1283
|
+
/** Format: double */
|
|
1284
|
+
ry: number;
|
|
1285
|
+
/** Format: double */
|
|
1286
|
+
rz: number;
|
|
1287
|
+
/** Format: double */
|
|
1288
|
+
warp?: number;
|
|
1289
|
+
};
|
|
1290
|
+
/**
|
|
1291
|
+
* @description A 6-DOF force/moment set (plus warping bimoment) in a given frame (global or
|
|
1292
|
+
* member-local, set by the field that owns it). Axial is tension-positive.
|
|
1293
|
+
*/
|
|
1294
|
+
NodeForces: {
|
|
1295
|
+
/**
|
|
1296
|
+
* Format: double
|
|
1297
|
+
* @description Warping bimoment ([F·L²]).
|
|
1298
|
+
*/
|
|
1299
|
+
bw?: number;
|
|
1300
|
+
/**
|
|
1301
|
+
* Format: double
|
|
1302
|
+
* @description Axial force (tension-positive).
|
|
1303
|
+
*/
|
|
1304
|
+
fx: number;
|
|
1305
|
+
/**
|
|
1306
|
+
* Format: double
|
|
1307
|
+
* @description Shear force about the local/global y axis.
|
|
1308
|
+
*/
|
|
1309
|
+
fy: number;
|
|
1310
|
+
/**
|
|
1311
|
+
* Format: double
|
|
1312
|
+
* @description Shear force about the local/global z axis.
|
|
1313
|
+
*/
|
|
1314
|
+
fz: number;
|
|
1315
|
+
/**
|
|
1316
|
+
* Format: double
|
|
1317
|
+
* @description Torsional moment about the x axis.
|
|
1318
|
+
*/
|
|
1319
|
+
mx: number;
|
|
1320
|
+
/**
|
|
1321
|
+
* Format: double
|
|
1322
|
+
* @description Bending moment about the y axis.
|
|
1323
|
+
*/
|
|
1324
|
+
my: number;
|
|
1325
|
+
/**
|
|
1326
|
+
* Format: double
|
|
1327
|
+
* @description Bending moment about the z axis.
|
|
1328
|
+
*/
|
|
1329
|
+
mz: number;
|
|
1330
|
+
};
|
|
1331
|
+
/** @description A node's global coordinates within a result. */
|
|
1332
|
+
NodeLocation: {
|
|
1333
|
+
/** Format: double */
|
|
1334
|
+
X: number;
|
|
1335
|
+
/** Format: double */
|
|
1336
|
+
Y: number;
|
|
1337
|
+
/** Format: double */
|
|
1338
|
+
Z: number;
|
|
1339
|
+
};
|
|
1340
|
+
/**
|
|
1341
|
+
* @description Controls the nonlinear formulation used for second-order analysis.
|
|
1342
|
+
*
|
|
1343
|
+
* - **PDelta**: Total-Lagrangian P-Δ. Geometric stiffness is added to the
|
|
1344
|
+
* original-frame elastic stiffness. This is the approach used by most
|
|
1345
|
+
* commercial solvers. Accurate for moderate
|
|
1346
|
+
* rotations (< ~10°) but increasingly approximate for larger rotations.
|
|
1347
|
+
*
|
|
1348
|
+
* - **Corotational** (default): Load-incremental corotational Newton-Raphson.
|
|
1349
|
+
* The element frame tracks the deformed geometry, so internal forces and
|
|
1350
|
+
* equilibrium are self-consistent even for large rotations (> 15°).
|
|
1351
|
+
* For small rotations the results converge to P-Delta.
|
|
1352
|
+
*
|
|
1353
|
+
* Python:
|
|
1354
|
+
* class NonlinearMethod(Enum):
|
|
1355
|
+
* P_DELTA = "P_DELTA"
|
|
1356
|
+
* COROTATIONAL = "COROTATIONAL"
|
|
1357
|
+
* @enum {string}
|
|
1358
|
+
*/
|
|
1359
|
+
NonlinearMethod: "P_DELTA" | "COROTATIONAL";
|
|
1360
|
+
/**
|
|
1361
|
+
* @description Orthotropic in-plane/bending material properties for plates, expressed in the
|
|
1362
|
+
* plate's local axes (x = `local_x_direction`, y in-plane perpendicular).
|
|
1363
|
+
*/
|
|
1364
|
+
OrthotropicPlateMaterial: {
|
|
1365
|
+
/**
|
|
1366
|
+
* Format: double
|
|
1367
|
+
* @description Young's modulus along local x.
|
|
1368
|
+
*/
|
|
1369
|
+
e_x: number;
|
|
1370
|
+
/**
|
|
1371
|
+
* Format: double
|
|
1372
|
+
* @description Young's modulus along local y.
|
|
1373
|
+
*/
|
|
1374
|
+
e_y: number;
|
|
1375
|
+
/**
|
|
1376
|
+
* Format: double
|
|
1377
|
+
* @description In-plane shear modulus.
|
|
1378
|
+
*/
|
|
1379
|
+
g_xy: number;
|
|
1380
|
+
/**
|
|
1381
|
+
* Format: double
|
|
1382
|
+
* @description Transverse shear modulus (x–z); used by Mindlin/thick plates.
|
|
1383
|
+
*/
|
|
1384
|
+
g_xz?: number | null;
|
|
1385
|
+
/**
|
|
1386
|
+
* Format: double
|
|
1387
|
+
* @description Transverse shear modulus (y–z); used by Mindlin/thick plates.
|
|
1388
|
+
*/
|
|
1389
|
+
g_yz?: number | null;
|
|
1390
|
+
/**
|
|
1391
|
+
* Format: double
|
|
1392
|
+
* @description Major Poisson's ratio (ν_xy); ν_yx is derived from `e_x·ν_yx = e_y·ν_xy`.
|
|
1393
|
+
*/
|
|
1394
|
+
nu_xy: number;
|
|
1395
|
+
};
|
|
1396
|
+
/**
|
|
1397
|
+
* @description The kind of drawing operation a [`ShapeCommand`] performs.
|
|
1398
|
+
* @enum {string}
|
|
1399
|
+
*/
|
|
1400
|
+
PathCommand: "moveTo" | "lineTo" | "arcTo" | "closePath";
|
|
1401
|
+
/**
|
|
1402
|
+
* @description Controls the geometric stiffness (K_g) formulation for P-Delta analysis.
|
|
1403
|
+
*
|
|
1404
|
+
* - **Consistent** (default): Full Przemieniecki K_g with 6/5·P/L translation
|
|
1405
|
+
* terms, bending-axial rotational coupling (P/10, PL/15, PL/30), and
|
|
1406
|
+
* Wagner torsion. Most accurate near buckling and for lateral-torsional
|
|
1407
|
+
* stability; captures both global P-Δ and local P-δ effects.
|
|
1408
|
+
*
|
|
1409
|
+
* - **Simplified**: Diagonal P/L terms for transverse translations only —
|
|
1410
|
+
* no rotational coupling, no Wagner torsion. Matches the P-Delta
|
|
1411
|
+
* formulation used by most commercial solvers.
|
|
1412
|
+
* Captures global P-Δ (sway) but not local P-δ (member curvature).
|
|
1413
|
+
*
|
|
1414
|
+
* Python:
|
|
1415
|
+
* class PdeltaFormulation(Enum):
|
|
1416
|
+
* CONSISTENT = "CONSISTENT"
|
|
1417
|
+
* SIMPLIFIED = "SIMPLIFIED"
|
|
1418
|
+
* @enum {string}
|
|
1419
|
+
*/
|
|
1420
|
+
PdeltaFormulation: "CONSISTENT" | "SIMPLIFIED";
|
|
1421
|
+
/**
|
|
1422
|
+
* @description Controls the P-Delta amplification strategy.
|
|
1423
|
+
*
|
|
1424
|
+
* - **Full** (default): All 3D translational directions are amplified by
|
|
1425
|
+
* geometric stiffness. Most rigorous for general 3D structures.
|
|
1426
|
+
*
|
|
1427
|
+
* - **InPlaneOnly**: Automatically detects the structural plane from the
|
|
1428
|
+
* model's bounding box and suppresses P-Delta amplification in the
|
|
1429
|
+
* thinnest (out-of-plane) direction. Matches the in-plane-only sway
|
|
1430
|
+
* approach used by most commercial solvers.
|
|
1431
|
+
* If the model is truly 3D (all three axes have similar extent), no
|
|
1432
|
+
* axis is suppressed.
|
|
1433
|
+
*
|
|
1434
|
+
* Python:
|
|
1435
|
+
* class PdeltaMode(Enum):
|
|
1436
|
+
* FULL = "FULL"
|
|
1437
|
+
* IN_PLANE_ONLY = "IN_PLANE_ONLY"
|
|
1438
|
+
* @enum {string}
|
|
1439
|
+
*/
|
|
1440
|
+
PdeltaMode: "FULL" | "IN_PLANE_ONLY";
|
|
1441
|
+
/**
|
|
1442
|
+
* @description In-plane (membrane) constitutive assumption.
|
|
1443
|
+
* @enum {string}
|
|
1444
|
+
*/
|
|
1445
|
+
PlaneState: "PlaneStress" | "PlaneStrain";
|
|
1446
|
+
/**
|
|
1447
|
+
* @description Structural behavior of a plate.
|
|
1448
|
+
*
|
|
1449
|
+
* - `Shell` (default): in-plane (membrane) + out-of-plane (bending) behavior.
|
|
1450
|
+
* - `Membrane`: in-plane only; useful for panels, diaphragms, or fabric-like
|
|
1451
|
+
* surfaces. Bending stiffness and bending resultants are suppressed.
|
|
1452
|
+
* @enum {string}
|
|
1453
|
+
*/
|
|
1454
|
+
PlateBehavior: "Shell" | "Membrane";
|
|
1455
|
+
/** @description A generated finite element of a plate mesh (3-node triangle or 4-node quad). */
|
|
1456
|
+
PlateElement: {
|
|
1457
|
+
/** @default Shell */
|
|
1458
|
+
behavior: components["schemas"]["PlateBehavior"];
|
|
1459
|
+
/** Format: int32 */
|
|
1460
|
+
id: number;
|
|
1461
|
+
local_x_direction?: components["schemas"]["Vector3"];
|
|
1462
|
+
/** Format: int32 */
|
|
1463
|
+
material: number;
|
|
1464
|
+
/** @description Element connectivity: 3 nodes (triangle) or 4 nodes (quad). */
|
|
1465
|
+
node_ids: number[];
|
|
1466
|
+
/**
|
|
1467
|
+
* Format: double
|
|
1468
|
+
* @description Distance from the reference surface along the local plate normal.
|
|
1469
|
+
* @default 0
|
|
1470
|
+
*/
|
|
1471
|
+
offset: number;
|
|
1472
|
+
/**
|
|
1473
|
+
* @description In-plane constitutive assumption (plane stress/strain).
|
|
1474
|
+
* @default PlaneStress
|
|
1475
|
+
*/
|
|
1476
|
+
plane_state: components["schemas"]["PlaneState"];
|
|
1477
|
+
/**
|
|
1478
|
+
* Format: int32
|
|
1479
|
+
* @description The `PlateSurface` this element was meshed from, if any.
|
|
1480
|
+
*/
|
|
1481
|
+
source_surface_id?: number | null;
|
|
1482
|
+
stiffness_modifiers?: null | components["schemas"]["PlateStiffnessModifiers"];
|
|
1483
|
+
/**
|
|
1484
|
+
* @description Finite-element theory (thin/thick/auto).
|
|
1485
|
+
* @default Auto
|
|
1486
|
+
*/
|
|
1487
|
+
theory: components["schemas"]["PlateTheory"];
|
|
1488
|
+
/** Format: double */
|
|
1489
|
+
thickness: number;
|
|
1490
|
+
};
|
|
1491
|
+
/**
|
|
1492
|
+
* @description Preferred generated element shape when meshing a [`super::platesurface::PlateSurface`].
|
|
1493
|
+
* @enum {string}
|
|
1494
|
+
*/
|
|
1495
|
+
PlateElementShape: "Auto" | "Triangle" | "Quad";
|
|
1496
|
+
/** @description Division counts for a structured (u, v) mesh. */
|
|
1497
|
+
PlateMeshDivisions: {
|
|
1498
|
+
/** Format: int32 */
|
|
1499
|
+
u: number;
|
|
1500
|
+
/** Format: int32 */
|
|
1501
|
+
v: number;
|
|
1502
|
+
};
|
|
1503
|
+
/**
|
|
1504
|
+
* @description Meshing algorithm for a plate surface.
|
|
1505
|
+
*
|
|
1506
|
+
* - `Auto`: solver chooses (currently Delaunay).
|
|
1507
|
+
* - `Structured`: transfinite quad grid; requires a 4-edge boundary and
|
|
1508
|
+
* [`PlateMeshDivisions`].
|
|
1509
|
+
* - `Unstructured`: force the Delaunay mesher.
|
|
1510
|
+
* @enum {string}
|
|
1511
|
+
*/
|
|
1512
|
+
PlateMeshMethod: "Auto" | "Structured" | "Unstructured";
|
|
1513
|
+
/** @description Mesh generation settings for a plate surface. */
|
|
1514
|
+
PlateMeshSettings: {
|
|
1515
|
+
divisions?: null | components["schemas"]["PlateMeshDivisions"];
|
|
1516
|
+
/** @default Auto */
|
|
1517
|
+
element_shape: components["schemas"]["PlateElementShape"];
|
|
1518
|
+
/** @default Auto */
|
|
1519
|
+
method: components["schemas"]["PlateMeshMethod"];
|
|
1520
|
+
/**
|
|
1521
|
+
* Format: double
|
|
1522
|
+
* @description Target element edge length. `None` meshes the boundary as-is (no interior
|
|
1523
|
+
* refinement).
|
|
1524
|
+
*/
|
|
1525
|
+
target_size?: number | null;
|
|
1526
|
+
};
|
|
1527
|
+
/**
|
|
1528
|
+
* @description A hole in a plate surface. The mesher generates elements around it; the
|
|
1529
|
+
* opening's boundary is part of the original surface geometry, not the elements.
|
|
1530
|
+
*/
|
|
1531
|
+
PlateOpening: {
|
|
1532
|
+
/** @description Hole boundary (≥ 3 existing model nodes). */
|
|
1533
|
+
boundary_node_ids: number[];
|
|
1534
|
+
/** Format: int32 */
|
|
1535
|
+
id: number;
|
|
1536
|
+
};
|
|
1537
|
+
/**
|
|
1538
|
+
* @description A pressure load applied directly to a modeled plate surface or a single
|
|
1539
|
+
* generated plate element. Distinct from [`super::surfaceload::SurfaceLoad`],
|
|
1540
|
+
* which applies a load over an arbitrary polygon.
|
|
1541
|
+
*/
|
|
1542
|
+
PlatePressure: {
|
|
1543
|
+
direction: components["schemas"]["Vector3"];
|
|
1544
|
+
/** Format: int32 */
|
|
1545
|
+
id: number;
|
|
1546
|
+
/** Format: double */
|
|
1547
|
+
magnitude: number;
|
|
1548
|
+
/**
|
|
1549
|
+
* @description When true the pressure acts on the area projected onto `direction`
|
|
1550
|
+
* (e.g. snow), otherwise on the true element area.
|
|
1551
|
+
* @default false
|
|
1552
|
+
*/
|
|
1553
|
+
projected: boolean;
|
|
1554
|
+
/** @description What the pressure is applied to — exactly one of a surface or an element. */
|
|
1555
|
+
target: components["schemas"]["PlatePressureTarget"];
|
|
1556
|
+
};
|
|
1557
|
+
/**
|
|
1558
|
+
* @description The target of a [`PlatePressure`]. A tagged union so exactly one target kind
|
|
1559
|
+
* is set (replaces the previous pair of nullable ids).
|
|
1560
|
+
*/
|
|
1561
|
+
PlatePressureTarget: {
|
|
1562
|
+
/** @enum {string} */
|
|
1563
|
+
kind: "Surface";
|
|
1564
|
+
/** Format: int32 */
|
|
1565
|
+
surface_id: number;
|
|
1566
|
+
} | {
|
|
1567
|
+
/** @enum {string} */
|
|
1568
|
+
kind: "Element";
|
|
1569
|
+
/** Format: int32 */
|
|
1570
|
+
plate_element_id: number;
|
|
1571
|
+
};
|
|
1572
|
+
/** @description Per-plate-element result (stress resultants). */
|
|
1573
|
+
PlateResult: {
|
|
1574
|
+
centroid: components["schemas"]["NodeLocation"];
|
|
1575
|
+
centroid_displacement_global: components["schemas"]["NodeDisplacement"];
|
|
1576
|
+
centroid_displacement_local: components["schemas"]["NodeDisplacement"];
|
|
1577
|
+
nodal_forces_global: {
|
|
1578
|
+
[key: string]: components["schemas"]["NodeForces"];
|
|
1579
|
+
};
|
|
1580
|
+
/** Format: int32 */
|
|
1581
|
+
plate_id: number;
|
|
1582
|
+
resultants: components["schemas"]["PlateResultants"];
|
|
1583
|
+
};
|
|
1584
|
+
/** @description Plate stress resultants: membrane forces, bending moments and transverse shears. */
|
|
1585
|
+
PlateResultants: {
|
|
1586
|
+
/** Format: double */
|
|
1587
|
+
mx: number;
|
|
1588
|
+
/** Format: double */
|
|
1589
|
+
mxy: number;
|
|
1590
|
+
/** Format: double */
|
|
1591
|
+
my: number;
|
|
1592
|
+
/** Format: double */
|
|
1593
|
+
nx: number;
|
|
1594
|
+
/** Format: double */
|
|
1595
|
+
nxy: number;
|
|
1596
|
+
/** Format: double */
|
|
1597
|
+
ny: number;
|
|
1598
|
+
/** Format: double */
|
|
1599
|
+
qx: number;
|
|
1600
|
+
/** Format: double */
|
|
1601
|
+
qy: number;
|
|
1602
|
+
};
|
|
1603
|
+
/**
|
|
1604
|
+
* @description Optional per-plate stiffness scale factors (e.g. cracked-concrete, composite
|
|
1605
|
+
* or reduced-stiffness modeling). Each defaults to `1.0` (unmodified).
|
|
1606
|
+
*/
|
|
1607
|
+
PlateStiffnessModifiers: {
|
|
1608
|
+
/** Format: double */
|
|
1609
|
+
bending?: number;
|
|
1610
|
+
/** Format: double */
|
|
1611
|
+
membrane?: number;
|
|
1612
|
+
/** Format: double */
|
|
1613
|
+
shear?: number;
|
|
1614
|
+
};
|
|
1615
|
+
/**
|
|
1616
|
+
* @description A plate-element stress measure (FEM/plate checks).
|
|
1617
|
+
* @enum {string}
|
|
1618
|
+
*/
|
|
1619
|
+
PlateStressMeasure: "VonMises" | "PrincipalMax" | "PrincipalMin";
|
|
1620
|
+
/**
|
|
1621
|
+
* @description A user-modeled plate surface (slab / wall / panel) that is meshed into
|
|
1622
|
+
* [`super::plateelement::PlateElement`]s by the solver.
|
|
1623
|
+
*/
|
|
1624
|
+
PlateSurface: {
|
|
1625
|
+
/** @default Shell */
|
|
1626
|
+
behavior: components["schemas"]["PlateBehavior"];
|
|
1627
|
+
/** @description Outer boundary, referencing existing model nodes (counter-clockwise). */
|
|
1628
|
+
boundary_node_ids: number[];
|
|
1629
|
+
classification?: string | null;
|
|
1630
|
+
/**
|
|
1631
|
+
* @description Ids of the plate elements generated from this surface. Populated by the
|
|
1632
|
+
* mesher; any input value is ignored (derived from element
|
|
1633
|
+
* `source_surface_id`).
|
|
1634
|
+
* @default []
|
|
1635
|
+
*/
|
|
1636
|
+
readonly generated_plate_element_ids: number[];
|
|
1637
|
+
/** Format: int32 */
|
|
1638
|
+
id: number;
|
|
1639
|
+
local_x_direction?: components["schemas"]["Vector3"];
|
|
1640
|
+
/** Format: int32 */
|
|
1641
|
+
material: number;
|
|
1642
|
+
mesh?: null | components["schemas"]["PlateMeshSettings"];
|
|
1643
|
+
/**
|
|
1644
|
+
* Format: int32
|
|
1645
|
+
* @description Surfaces sharing a `mesh_group_id` are meshed together so coincident
|
|
1646
|
+
* boundary nodes are shared between them.
|
|
1647
|
+
*/
|
|
1648
|
+
mesh_group_id?: number | null;
|
|
1649
|
+
name?: string | null;
|
|
1650
|
+
/**
|
|
1651
|
+
* Format: double
|
|
1652
|
+
* @description Distance from the reference surface along the local plate normal.
|
|
1653
|
+
* @default 0
|
|
1654
|
+
*/
|
|
1655
|
+
offset: number;
|
|
1656
|
+
/**
|
|
1657
|
+
* @description Holes in the surface; the mesher generates elements around them.
|
|
1658
|
+
* @default []
|
|
1659
|
+
*/
|
|
1660
|
+
openings: components["schemas"]["PlateOpening"][];
|
|
1661
|
+
/**
|
|
1662
|
+
* @description In-plane constitutive assumption (plane stress/strain).
|
|
1663
|
+
* @default PlaneStress
|
|
1664
|
+
*/
|
|
1665
|
+
plane_state: components["schemas"]["PlaneState"];
|
|
1666
|
+
stiffness_modifiers?: null | components["schemas"]["PlateStiffnessModifiers"];
|
|
1667
|
+
/**
|
|
1668
|
+
* @description Finite-element theory (thin/thick/auto).
|
|
1669
|
+
* @default Auto
|
|
1670
|
+
*/
|
|
1671
|
+
theory: components["schemas"]["PlateTheory"];
|
|
1672
|
+
/** Format: double */
|
|
1673
|
+
thickness: number;
|
|
1674
|
+
};
|
|
1675
|
+
/**
|
|
1676
|
+
* @description Plate finite-element theory.
|
|
1677
|
+
*
|
|
1678
|
+
* - `Kirchhoff`: thin-plate (no transverse shear deformation). Current default
|
|
1679
|
+
* formulation (DKT bending element).
|
|
1680
|
+
* - `Mindlin`: thick-plate (Reissner–Mindlin, includes transverse shear).
|
|
1681
|
+
* - `Auto`: the solver chooses based on span/thickness.
|
|
1682
|
+
* @enum {string}
|
|
1683
|
+
*/
|
|
1684
|
+
PlateTheory: "Auto" | "Mindlin" | "Kirchhoff";
|
|
1685
|
+
/** @enum {string} */
|
|
1686
|
+
PressureUnit: "Pa" | "kPa" | "MPa" | "GPa";
|
|
1687
|
+
/** @description A bindable quantity — the source of a `{{variable}}` in a unity-check formula. */
|
|
1688
|
+
QuantitySource: {
|
|
1689
|
+
/**
|
|
1690
|
+
* @description A local member force, reduced by `aggregation` and enveloped over the
|
|
1691
|
+
* check's applicable load combinations.
|
|
1692
|
+
*/
|
|
1693
|
+
MemberForce: {
|
|
1694
|
+
aggregation?: components["schemas"]["Aggregation"];
|
|
1695
|
+
component: components["schemas"]["MemberForceComponent"];
|
|
1696
|
+
of?: components["schemas"]["EntityTarget"];
|
|
1697
|
+
};
|
|
1698
|
+
} | {
|
|
1699
|
+
/** @description A nodal displacement of the entity (member end / governing node). */
|
|
1700
|
+
Displacement: {
|
|
1701
|
+
component: components["schemas"]["DispComponent"];
|
|
1702
|
+
};
|
|
1703
|
+
} | {
|
|
1704
|
+
/**
|
|
1705
|
+
* @description Displacement (or rotation) of a node named relative to the entity — its own
|
|
1706
|
+
* ends, or the paired member/node via `reference_member` / `reference_node`.
|
|
1707
|
+
* Compose two of these for relative drift / differential settlement.
|
|
1708
|
+
*/
|
|
1709
|
+
NodeDisplacement: {
|
|
1710
|
+
at: components["schemas"]["EntityNodeRef"];
|
|
1711
|
+
component: components["schemas"]["DispComponent"];
|
|
1712
|
+
};
|
|
1713
|
+
} | {
|
|
1714
|
+
/**
|
|
1715
|
+
* @description Deflected position (undeformed coordinate + displacement) of a node named
|
|
1716
|
+
* relative to the entity, along a global axis. For clearance / "below a line"
|
|
1717
|
+
* checks: compare two positions to get the deflected gap.
|
|
1718
|
+
*/
|
|
1719
|
+
NodePosition: {
|
|
1720
|
+
at: components["schemas"]["EntityNodeRef"];
|
|
1721
|
+
axis: components["schemas"]["Axis"];
|
|
1722
|
+
};
|
|
1723
|
+
} | {
|
|
1724
|
+
/**
|
|
1725
|
+
* @description Transverse deflection relative to the entity's end-to-end chord
|
|
1726
|
+
* (support-to-support for a member-set). Removes support settlement and rigid
|
|
1727
|
+
* chord rotation, leaving the member's own sag — the quantity SLS deflection
|
|
1728
|
+
* limits (e.g. `span/200`) are written against. The deflected shape is
|
|
1729
|
+
* reconstructed by cubic Hermite interpolation and reduced by `aggregation`.
|
|
1730
|
+
*/
|
|
1731
|
+
MemberDeflection: {
|
|
1732
|
+
aggregation?: components["schemas"]["Aggregation"];
|
|
1733
|
+
component: components["schemas"]["DeflectionComponent"];
|
|
1734
|
+
};
|
|
1735
|
+
} | {
|
|
1736
|
+
/** @description A property of the entity's (or its reference member's) section. */
|
|
1737
|
+
Section: {
|
|
1738
|
+
of?: components["schemas"]["EntityTarget"];
|
|
1739
|
+
property: components["schemas"]["SectionProperty"];
|
|
1740
|
+
};
|
|
1741
|
+
} | {
|
|
1742
|
+
/** @description A property of the entity's (or its reference member's) material. */
|
|
1743
|
+
Material: {
|
|
1744
|
+
of?: components["schemas"]["EntityTarget"];
|
|
1745
|
+
property: components["schemas"]["MaterialProperty"];
|
|
1746
|
+
};
|
|
1747
|
+
} | {
|
|
1748
|
+
/** @description A geometric quantity of the entity (or its reference member). */
|
|
1749
|
+
Geometry: {
|
|
1750
|
+
of?: components["schemas"]["EntityTarget"];
|
|
1751
|
+
property: components["schemas"]["GeometryProperty"];
|
|
1752
|
+
};
|
|
1753
|
+
} | {
|
|
1754
|
+
/** @description A plate-element stress measure (for plate-targeted checks). */
|
|
1755
|
+
PlateStress: {
|
|
1756
|
+
measure: components["schemas"]["PlateStressMeasure"];
|
|
1757
|
+
};
|
|
1758
|
+
} | {
|
|
1759
|
+
/**
|
|
1760
|
+
* Format: double
|
|
1761
|
+
* @description A literal, dimensionless constant — rendered raw (no unit, no scaling) in
|
|
1762
|
+
* the report trace. Use [`QuantitySource::DimensionedConstant`] instead when
|
|
1763
|
+
* the constant is compared against a dimensioned quantity (a moment capacity,
|
|
1764
|
+
* a deflection limit, …) so the trace stays unit-consistent.
|
|
1765
|
+
*/
|
|
1766
|
+
Constant: number;
|
|
1767
|
+
} | {
|
|
1768
|
+
/**
|
|
1769
|
+
* @description A literal constant tagged with its physical [`ConstantDimension`]. The
|
|
1770
|
+
* `value` is given in **SI** units for that dimension; the report trace then
|
|
1771
|
+
* scales and labels it exactly like the quantities it is compared against, so
|
|
1772
|
+
* the `substituted` arithmetic stays consistent with the computed value and
|
|
1773
|
+
* both sides of a demand/capacity ratio share a unit. (A moment capacity of
|
|
1774
|
+
* 2 kN·m → `{ value: 2000.0, dimension: "Moment" }`.)
|
|
1775
|
+
*/
|
|
1776
|
+
DimensionedConstant: {
|
|
1777
|
+
dimension: components["schemas"]["ConstantDimension"];
|
|
1778
|
+
/** Format: double */
|
|
1779
|
+
value: number;
|
|
1780
|
+
};
|
|
1781
|
+
};
|
|
1782
|
+
/** @description Support reaction at a node (forces, location and support id). */
|
|
1783
|
+
ReactionNodeResult: {
|
|
1784
|
+
location: components["schemas"]["NodeLocation"];
|
|
1785
|
+
nodal_forces: components["schemas"]["NodeForces"];
|
|
1786
|
+
/** Format: int32 */
|
|
1787
|
+
support_id: number;
|
|
1788
|
+
};
|
|
1789
|
+
/**
|
|
1790
|
+
* @description Design response spectrum definition. Externally tagged: exactly one of the
|
|
1791
|
+
* three variants.
|
|
1792
|
+
*/
|
|
1793
|
+
ResponseSpectrum: {
|
|
1794
|
+
/**
|
|
1795
|
+
* @description EN 1998-1 parametric: shape parameters (S, Tb, Tc, Td) are looked up from
|
|
1796
|
+
* the ground type + spectrum type, scaled by `ag` and the behaviour factor
|
|
1797
|
+
* `q`.
|
|
1798
|
+
*/
|
|
1799
|
+
EurocodeParametric: {
|
|
1800
|
+
/**
|
|
1801
|
+
* Format: double
|
|
1802
|
+
* @description Design ground acceleration on type-A ground, `a_g = γ_I·a_gR` [m/s²].
|
|
1803
|
+
*/
|
|
1804
|
+
ag: number;
|
|
1805
|
+
/**
|
|
1806
|
+
* Format: double
|
|
1807
|
+
* @description Lower-bound factor `β` for the design spectrum (default 0.2).
|
|
1808
|
+
*/
|
|
1809
|
+
beta?: number;
|
|
1810
|
+
ground_type: components["schemas"]["GroundType"];
|
|
1811
|
+
/**
|
|
1812
|
+
* Format: double
|
|
1813
|
+
* @description Behaviour factor `q` (≥ 1).
|
|
1814
|
+
*/
|
|
1815
|
+
q: number;
|
|
1816
|
+
spectrum_type: components["schemas"]["SpectrumType"];
|
|
1817
|
+
};
|
|
1818
|
+
} | {
|
|
1819
|
+
/** @description Direct spectrum parameters (no preset lookup); national-annex agnostic. */
|
|
1820
|
+
DirectParameters: {
|
|
1821
|
+
/** Format: double */
|
|
1822
|
+
ag: number;
|
|
1823
|
+
/** Format: double */
|
|
1824
|
+
beta?: number;
|
|
1825
|
+
/** Format: double */
|
|
1826
|
+
q: number;
|
|
1827
|
+
/** Format: double */
|
|
1828
|
+
s: number;
|
|
1829
|
+
/** Format: double */
|
|
1830
|
+
tb: number;
|
|
1831
|
+
/** Format: double */
|
|
1832
|
+
tc: number;
|
|
1833
|
+
/** Format: double */
|
|
1834
|
+
td: number;
|
|
1835
|
+
};
|
|
1836
|
+
} | {
|
|
1837
|
+
/**
|
|
1838
|
+
* @description Arbitrary `(period, spectral_acceleration)` table [s, m/s²], linearly
|
|
1839
|
+
* interpolated (clamped beyond the ends).
|
|
1840
|
+
*/
|
|
1841
|
+
CustomPoints: {
|
|
1842
|
+
points: number[][];
|
|
1843
|
+
};
|
|
1844
|
+
};
|
|
1845
|
+
ResultType: {
|
|
1846
|
+
/** Format: int32 */
|
|
1847
|
+
Loadcase: number;
|
|
1848
|
+
} | {
|
|
1849
|
+
/** Format: int32 */
|
|
1850
|
+
Loadcombination: number;
|
|
1851
|
+
};
|
|
1852
|
+
/** @description Results for a single load case or combination: displacements, reactions, member and plate results. */
|
|
1853
|
+
Results: {
|
|
1854
|
+
displacement_nodes: {
|
|
1855
|
+
[key: string]: components["schemas"]["NodeDisplacement"];
|
|
1856
|
+
};
|
|
1857
|
+
/**
|
|
1858
|
+
* @description Solver diagnostics (errors/warnings) for this load case/combination.
|
|
1859
|
+
* Empty in the common case.
|
|
1860
|
+
*/
|
|
1861
|
+
errors_and_warnings?: components["schemas"]["ErrorsAndWarnings"];
|
|
1862
|
+
member_results: {
|
|
1863
|
+
[key: string]: components["schemas"]["MemberResult"];
|
|
1864
|
+
};
|
|
1865
|
+
name: string;
|
|
1866
|
+
plate_results?: {
|
|
1867
|
+
[key: string]: components["schemas"]["PlateResult"];
|
|
1868
|
+
};
|
|
1869
|
+
reaction_nodes: {
|
|
1870
|
+
[key: string]: components["schemas"]["ReactionNodeResult"];
|
|
1871
|
+
};
|
|
1872
|
+
result_type: components["schemas"]["ResultType"];
|
|
1873
|
+
/**
|
|
1874
|
+
* @description How the solve for this load case/combination ran (iterations, time,
|
|
1875
|
+
* convergence). See [`SolverDiagnostics`].
|
|
1876
|
+
*/
|
|
1877
|
+
solver_diagnostics?: components["schemas"]["SolverDiagnostics"];
|
|
1878
|
+
summary: components["schemas"]["ResultsSummary"];
|
|
1879
|
+
};
|
|
1880
|
+
/** @description All analysis results: per load case, per load combination, unity-check results and the optional HTML report. */
|
|
1881
|
+
ResultsBundle: {
|
|
1882
|
+
buckling?: null | components["schemas"]["BucklingResults"];
|
|
1883
|
+
loadcases: {
|
|
1884
|
+
[key: string]: components["schemas"]["Results"];
|
|
1885
|
+
};
|
|
1886
|
+
loadcombinations: {
|
|
1887
|
+
[key: string]: components["schemas"]["Results"];
|
|
1888
|
+
};
|
|
1889
|
+
modal?: null | components["schemas"]["ModalResults"];
|
|
1890
|
+
/**
|
|
1891
|
+
* @description Optional single consolidated HTML report (populated only when requested
|
|
1892
|
+
* via the CLI `--report` flag or `AnalysisOptions.include_report_html`).
|
|
1893
|
+
*/
|
|
1894
|
+
report_html?: string | null;
|
|
1895
|
+
seismic?: null | components["schemas"]["SeismicResults"];
|
|
1896
|
+
/**
|
|
1897
|
+
* @description Unity-check results (one entry per check definition), enveloped over the
|
|
1898
|
+
* applicable load combinations.
|
|
1899
|
+
* @default []
|
|
1900
|
+
*/
|
|
1901
|
+
unity_check_results: components["schemas"]["UnityCheckResult"][];
|
|
1902
|
+
};
|
|
1903
|
+
/** @description Counts of the result quantities produced (displacements, reactions, member/plate forces). */
|
|
1904
|
+
ResultsSummary: {
|
|
1905
|
+
total_displacements: number;
|
|
1906
|
+
total_member_forces: number;
|
|
1907
|
+
total_plate_forces?: number;
|
|
1908
|
+
total_reaction_forces: number;
|
|
1909
|
+
};
|
|
1910
|
+
/** @enum {string} */
|
|
1911
|
+
RigidStrategy: "LinearMpc" | "RigidMember";
|
|
1912
|
+
/** @description A cross-section: area, second moments, torsion/warping constants, shear areas, optional section moduli and EC3 design parameters. */
|
|
1913
|
+
Section: {
|
|
1914
|
+
/**
|
|
1915
|
+
* Format: double
|
|
1916
|
+
* @description Effective shear area in Y-direction (m²). None = no shear deformation (Euler-Bernoulli).
|
|
1917
|
+
*/
|
|
1918
|
+
a_sy?: number | null;
|
|
1919
|
+
/**
|
|
1920
|
+
* Format: double
|
|
1921
|
+
* @description Effective shear area in Z-direction (m²). None = no shear deformation (Euler-Bernoulli).
|
|
1922
|
+
*/
|
|
1923
|
+
a_sz?: number | null;
|
|
1924
|
+
/** Format: double */
|
|
1925
|
+
area: number;
|
|
1926
|
+
/** Format: double */
|
|
1927
|
+
b?: number | null;
|
|
1928
|
+
/**
|
|
1929
|
+
* Format: double
|
|
1930
|
+
* @description Centroid Y-coordinate within the shape path coordinate system (mm).
|
|
1931
|
+
* Used by the viewer to offset shape-path extrusions so the centroid
|
|
1932
|
+
* aligns with the member node. Not used by the solver.
|
|
1933
|
+
*/
|
|
1934
|
+
centroid_y?: number | null;
|
|
1935
|
+
/**
|
|
1936
|
+
* Format: double
|
|
1937
|
+
* @description Centroid Z-coordinate within the shape path coordinate system (mm).
|
|
1938
|
+
*/
|
|
1939
|
+
centroid_z?: number | null;
|
|
1940
|
+
ec3?: null | components["schemas"]["Ec3SectionParams"];
|
|
1941
|
+
/** Format: double */
|
|
1942
|
+
h?: number | null;
|
|
1943
|
+
/**
|
|
1944
|
+
* Format: double
|
|
1945
|
+
* @description Warping constant (m⁶). None = no warping (pure St. Venant torsion).
|
|
1946
|
+
*/
|
|
1947
|
+
i_w?: number | null;
|
|
1948
|
+
/** Format: double */
|
|
1949
|
+
i_y: number;
|
|
1950
|
+
/**
|
|
1951
|
+
* Format: double
|
|
1952
|
+
* @description Product of inertia about centroidal axes (mm⁴ in JSON, scaled to m⁴ by solver).
|
|
1953
|
+
* Non-zero for asymmetric sections (e.g. angle, C-channel with unequal flanges).
|
|
1954
|
+
* When present and non-zero, the solver auto-detects whether `i_y`/`i_z`
|
|
1955
|
+
* are centroidal or principal values (by checking angle consistency) and
|
|
1956
|
+
* applies or skips the principal-axis rotation accordingly.
|
|
1957
|
+
*/
|
|
1958
|
+
i_yz?: number | null;
|
|
1959
|
+
/** Format: double */
|
|
1960
|
+
i_z: number;
|
|
1961
|
+
/** Format: int32 */
|
|
1962
|
+
id: number;
|
|
1963
|
+
/** Format: double */
|
|
1964
|
+
j: number;
|
|
1965
|
+
/** Format: int32 */
|
|
1966
|
+
material: number;
|
|
1967
|
+
name: string;
|
|
1968
|
+
/**
|
|
1969
|
+
* Format: double
|
|
1970
|
+
* @description Angle (degrees) from centroidal to principal axes.
|
|
1971
|
+
* When `i_yz` is absent or zero, this angle is used to rotate the
|
|
1972
|
+
* stiffness matrix from principal to centroidal frame. When `i_yz`
|
|
1973
|
+
* is present, the solver checks whether `i_y`/`i_z` are centroidal
|
|
1974
|
+
* (angle matches formula) or principal (rotation applied).
|
|
1975
|
+
* Positive = counter-clockwise. Default 0.
|
|
1976
|
+
*/
|
|
1977
|
+
principal_axis_angle?: number | null;
|
|
1978
|
+
/** Format: int32 */
|
|
1979
|
+
shape_path?: number | null;
|
|
1980
|
+
/**
|
|
1981
|
+
* Format: double
|
|
1982
|
+
* @description Wagner coefficient for lateral-torsional buckling.
|
|
1983
|
+
*/
|
|
1984
|
+
wagner_coeff?: number | null;
|
|
1985
|
+
/**
|
|
1986
|
+
* Format: double
|
|
1987
|
+
* @description Elastic section modulus about the y (major) axis (m³). Universal property
|
|
1988
|
+
* (≡ AISC `S_x`); used by unity checks for bending capacity.
|
|
1989
|
+
*/
|
|
1990
|
+
wel_y?: number | null;
|
|
1991
|
+
/**
|
|
1992
|
+
* Format: double
|
|
1993
|
+
* @description Elastic section modulus about the z (minor) axis (m³).
|
|
1994
|
+
*/
|
|
1995
|
+
wel_z?: number | null;
|
|
1996
|
+
/**
|
|
1997
|
+
* Format: double
|
|
1998
|
+
* @description Plastic section modulus about the y (major) axis (m³, ≡ AISC `Z_x`).
|
|
1999
|
+
*/
|
|
2000
|
+
wpl_y?: number | null;
|
|
2001
|
+
/**
|
|
2002
|
+
* Format: double
|
|
2003
|
+
* @description Plastic section modulus about the z (minor) axis (m³).
|
|
2004
|
+
*/
|
|
2005
|
+
wpl_z?: number | null;
|
|
2006
|
+
/**
|
|
2007
|
+
* Format: double
|
|
2008
|
+
* @description Shear center Y-coordinate relative to centroid (m).
|
|
2009
|
+
*/
|
|
2010
|
+
y_s?: number | null;
|
|
2011
|
+
/**
|
|
2012
|
+
* Format: double
|
|
2013
|
+
* @description Shear center Z-coordinate relative to centroid (m).
|
|
2014
|
+
*/
|
|
2015
|
+
z_s?: number | null;
|
|
2016
|
+
};
|
|
2017
|
+
/** @description Forces at an intermediate cross-section along a member, in local member axes. */
|
|
2018
|
+
SectionForce: {
|
|
2019
|
+
/** @description Internal forces at this section, in the member local centroidal frame. */
|
|
2020
|
+
forces: components["schemas"]["NodeForces"];
|
|
2021
|
+
/**
|
|
2022
|
+
* Format: double
|
|
2023
|
+
* @description Fractional position along the member from the start node, in `[0, 1]`.
|
|
2024
|
+
*/
|
|
2025
|
+
x_frac: number;
|
|
2026
|
+
};
|
|
2027
|
+
/**
|
|
2028
|
+
* @description A section property (universal; see [`crate::models::members::section::Section`]).
|
|
2029
|
+
* @enum {string}
|
|
2030
|
+
*/
|
|
2031
|
+
SectionProperty: "Area" | "Iy" | "Iz" | "J" | "Iw" | "WelY" | "WelZ" | "WplY" | "WplZ" | "H" | "B" | "Asy" | "Asz";
|
|
2032
|
+
/** @description Request for a seismic analysis (MRSA and/or lateral force). */
|
|
2033
|
+
SeismicAnalysisSettings: {
|
|
2034
|
+
/**
|
|
2035
|
+
* Format: double
|
|
2036
|
+
* @description Viscous damping ratio `ξ` for the CQC correlation (default 0.05).
|
|
2037
|
+
* @default 0.05
|
|
2038
|
+
*/
|
|
2039
|
+
damping: number;
|
|
2040
|
+
/** @description Directional combination rule (default SRSS). */
|
|
2041
|
+
directional_combination?: components["schemas"]["DirectionalCombination"];
|
|
2042
|
+
/** @description Excitation directions to analyze (default `[X, Y]`). */
|
|
2043
|
+
directions?: components["schemas"]["SeismicDirection"][];
|
|
2044
|
+
/**
|
|
2045
|
+
* @description Include structural self-mass (density·area + weight override) in the
|
|
2046
|
+
* seismic mass. Default true.
|
|
2047
|
+
* @default true
|
|
2048
|
+
*/
|
|
2049
|
+
include_structural_mass: boolean;
|
|
2050
|
+
/** @description Structural mass-matrix formulation (Consistent default, Lumped optional). */
|
|
2051
|
+
mass_formulation?: components["schemas"]["MassFormulation"];
|
|
2052
|
+
/** @description Gravity load cases converted to seismic mass (`ΣG + ψE·Q`). */
|
|
2053
|
+
mass_sources?: components["schemas"]["SeismicMassSource"][];
|
|
2054
|
+
/**
|
|
2055
|
+
* Format: int32
|
|
2056
|
+
* @description Maximum subspace-iteration sweeps (default 100).
|
|
2057
|
+
*/
|
|
2058
|
+
max_iterations?: number | null;
|
|
2059
|
+
method: components["schemas"]["SeismicMethod"];
|
|
2060
|
+
/** @description Modal combination rule (default CQC). */
|
|
2061
|
+
modal_combination?: components["schemas"]["ModalCombination"];
|
|
2062
|
+
/**
|
|
2063
|
+
* Format: int32
|
|
2064
|
+
* @description Number of vibration modes to extract for MRSA.
|
|
2065
|
+
*/
|
|
2066
|
+
num_modes: number;
|
|
2067
|
+
/** @description Design spectrum for the X excitation direction. */
|
|
2068
|
+
spectrum_x: components["schemas"]["ResponseSpectrum"];
|
|
2069
|
+
spectrum_y?: null | components["schemas"]["ResponseSpectrum"];
|
|
2070
|
+
spectrum_z?: null | components["schemas"]["ResponseSpectrum"];
|
|
2071
|
+
/**
|
|
2072
|
+
* Format: double
|
|
2073
|
+
* @description Eigen convergence tolerance (default 1e-6).
|
|
2074
|
+
*/
|
|
2075
|
+
tolerance?: number | null;
|
|
2076
|
+
};
|
|
2077
|
+
/**
|
|
2078
|
+
* @description A global excitation direction.
|
|
2079
|
+
* @enum {string}
|
|
2080
|
+
*/
|
|
2081
|
+
SeismicDirection: "X" | "Y" | "Z";
|
|
2082
|
+
/** @description Seismic response for a single excitation direction. */
|
|
2083
|
+
SeismicDirectionResult: {
|
|
2084
|
+
/**
|
|
2085
|
+
* Format: double
|
|
2086
|
+
* @description Combined base shear in this direction (force units).
|
|
2087
|
+
*/
|
|
2088
|
+
base_shear: number;
|
|
2089
|
+
/** @description Combined response for this direction alone (before directional combination). */
|
|
2090
|
+
combined: components["schemas"]["Results"];
|
|
2091
|
+
direction: components["schemas"]["SeismicDirection"];
|
|
2092
|
+
/** @description Per-mode contributions (empty for the lateral-force method). */
|
|
2093
|
+
modes?: components["schemas"]["SeismicModeContribution"][];
|
|
2094
|
+
/**
|
|
2095
|
+
* Format: double
|
|
2096
|
+
* @description Σ effective modal mass / total mass — the EN 1998-1 §4.3.3.3.1(3) ≥0.90
|
|
2097
|
+
* check (1.0 for the lateral-force method).
|
|
2098
|
+
*/
|
|
2099
|
+
participating_mass_ratio: number;
|
|
2100
|
+
/**
|
|
2101
|
+
* Format: double
|
|
2102
|
+
* @description Total seismic mass excited in this direction (kg).
|
|
2103
|
+
*/
|
|
2104
|
+
total_seismic_mass: number;
|
|
2105
|
+
};
|
|
2106
|
+
/**
|
|
2107
|
+
* @description A gravity load case that contributes to the seismic mass with a combination
|
|
2108
|
+
* factor (`ψE,i` for variable actions, `1.0` for permanent `G`).
|
|
2109
|
+
*/
|
|
2110
|
+
SeismicMassSource: {
|
|
2111
|
+
/** Format: int32 */
|
|
2112
|
+
load_case_id: number;
|
|
2113
|
+
/**
|
|
2114
|
+
* Format: double
|
|
2115
|
+
* @description Combination factor `ψE` (EN 1998-1 §3.2.4 / §4.2.4). Use 1.0 for permanent loads.
|
|
2116
|
+
*/
|
|
2117
|
+
psi: number;
|
|
2118
|
+
};
|
|
2119
|
+
/**
|
|
2120
|
+
* @description Which seismic method(s) to run.
|
|
2121
|
+
* @enum {string}
|
|
2122
|
+
*/
|
|
2123
|
+
SeismicMethod: "MODAL_RESPONSE_SPECTRUM" | "LATERAL_FORCE" | "BOTH";
|
|
2124
|
+
/** @description A single mode's contribution to the response in one direction. */
|
|
2125
|
+
SeismicModeContribution: {
|
|
2126
|
+
/**
|
|
2127
|
+
* Format: double
|
|
2128
|
+
* @description Modal base shear `Γ²·Sd(T)` (force units).
|
|
2129
|
+
*/
|
|
2130
|
+
base_shear: number;
|
|
2131
|
+
/**
|
|
2132
|
+
* Format: double
|
|
2133
|
+
* @description Effective modal mass `Γ²` (kg).
|
|
2134
|
+
*/
|
|
2135
|
+
effective_mass: number;
|
|
2136
|
+
/**
|
|
2137
|
+
* Format: double
|
|
2138
|
+
* @description Effective modal mass / total seismic mass in this direction.
|
|
2139
|
+
*/
|
|
2140
|
+
effective_mass_ratio: number;
|
|
2141
|
+
/** Format: int32 */
|
|
2142
|
+
mode: number;
|
|
2143
|
+
/**
|
|
2144
|
+
* Format: double
|
|
2145
|
+
* @description Modal participation factor `Γ = φ̂ᵀ·M·r` for this direction (mass-normalized `φ̂`).
|
|
2146
|
+
*/
|
|
2147
|
+
participation_factor: number;
|
|
2148
|
+
/**
|
|
2149
|
+
* Format: double
|
|
2150
|
+
* @description Natural period `T = 2π/ω` (s).
|
|
2151
|
+
*/
|
|
2152
|
+
period: number;
|
|
2153
|
+
/**
|
|
2154
|
+
* Format: double
|
|
2155
|
+
* @description Design spectral acceleration `Sd(T)` (m/s²).
|
|
2156
|
+
*/
|
|
2157
|
+
spectral_acceleration: number;
|
|
2158
|
+
};
|
|
2159
|
+
/**
|
|
2160
|
+
* @description Seismic analysis results (EN 1998-1): modal response spectrum and/or
|
|
2161
|
+
* lateral-force outputs. Forces/displacements/reactions are in the model's
|
|
2162
|
+
* units; periods in seconds, spectral accelerations in m/s², masses in kg.
|
|
2163
|
+
*/
|
|
2164
|
+
SeismicResults: {
|
|
2165
|
+
lateral_force?: null | components["schemas"]["LateralForceResults"];
|
|
2166
|
+
modal_response_spectrum?: null | components["schemas"]["MrsaResults"];
|
|
2167
|
+
};
|
|
2168
|
+
/** @description Top-level settings: general project info and the unit system. */
|
|
2169
|
+
Settings: {
|
|
2170
|
+
general_info: components["schemas"]["GeneralInfo"];
|
|
2171
|
+
unit_settings: components["schemas"]["UnitSettings"];
|
|
2172
|
+
};
|
|
2173
|
+
/** @description A single command in a cross-section shape path (move/line/arc). */
|
|
2174
|
+
ShapeCommand: {
|
|
2175
|
+
/** Format: double */
|
|
2176
|
+
center_y?: number | null;
|
|
2177
|
+
/** Format: double */
|
|
2178
|
+
center_z?: number | null;
|
|
2179
|
+
command: components["schemas"]["PathCommand"];
|
|
2180
|
+
/** Format: double */
|
|
2181
|
+
r?: number | null;
|
|
2182
|
+
/** Format: double */
|
|
2183
|
+
theta0?: number | null;
|
|
2184
|
+
/** Format: double */
|
|
2185
|
+
theta1?: number | null;
|
|
2186
|
+
/** Format: double */
|
|
2187
|
+
y?: number | null;
|
|
2188
|
+
/** Format: double */
|
|
2189
|
+
z?: number | null;
|
|
2190
|
+
};
|
|
2191
|
+
/** @description A 2-D cross-section outline (a sequence of shape commands) used for visualization. */
|
|
2192
|
+
ShapePath: {
|
|
2193
|
+
/** Format: int32 */
|
|
2194
|
+
id: number;
|
|
2195
|
+
name: string;
|
|
2196
|
+
shape_commands: components["schemas"]["ShapeCommand"][];
|
|
2197
|
+
};
|
|
2198
|
+
/**
|
|
2199
|
+
* @description Per-result solver run diagnostics: how the solve for this load case /
|
|
2200
|
+
* combination actually ran. Populated best-effort; fields that are not
|
|
2201
|
+
* meaningful for a given solve path are left `None`.
|
|
2202
|
+
*/
|
|
2203
|
+
SolverDiagnostics: {
|
|
2204
|
+
/**
|
|
2205
|
+
* @description Effective analysis method used for this result: `"Linear"`,
|
|
2206
|
+
* `"P_DELTA"`, or `"COROTATIONAL"`.
|
|
2207
|
+
*/
|
|
2208
|
+
analysis_method?: string | null;
|
|
2209
|
+
/** @description Whether the solve converged. Linear solves report `true`. */
|
|
2210
|
+
converged?: boolean;
|
|
2211
|
+
/**
|
|
2212
|
+
* Format: int32
|
|
2213
|
+
* @description Total nonlinear (Newton-Raphson / corotational) iterations actually
|
|
2214
|
+
* executed, summed across load steps and active-set/correction outer
|
|
2215
|
+
* loops. `None` for purely linear (first-order) solves.
|
|
2216
|
+
*/
|
|
2217
|
+
iterations?: number | null;
|
|
2218
|
+
/**
|
|
2219
|
+
* Format: double
|
|
2220
|
+
* @description Final relative residual norm at convergence (nonlinear solves). `None`
|
|
2221
|
+
* for linear solves where no residual is iterated.
|
|
2222
|
+
*/
|
|
2223
|
+
residual_norm?: number | null;
|
|
2224
|
+
/**
|
|
2225
|
+
* Format: double
|
|
2226
|
+
* @description Wall-clock solve time for this result, in milliseconds. `None` when the
|
|
2227
|
+
* time is not individually attributable (e.g. a batch first-order solve
|
|
2228
|
+
* that shares one factorization across many load cases).
|
|
2229
|
+
*/
|
|
2230
|
+
solve_time_ms?: number | null;
|
|
2231
|
+
};
|
|
2232
|
+
/**
|
|
2233
|
+
* @description A single solver diagnostic: a stable machine-readable `code` plus a
|
|
2234
|
+
* human-readable `message`. Severity is given by the list it belongs to
|
|
2235
|
+
* (`ErrorsAndWarnings::errors` vs `ErrorsAndWarnings::warnings`).
|
|
2236
|
+
*/
|
|
2237
|
+
SolverMessage: {
|
|
2238
|
+
code: string;
|
|
2239
|
+
message: string;
|
|
2240
|
+
};
|
|
2241
|
+
/**
|
|
2242
|
+
* @description EN 1998-1 spectrum type: Type 1 (Ms ≥ 5.5, Table 3.2) or Type 2 (Table 3.3).
|
|
2243
|
+
* @enum {string}
|
|
2244
|
+
*/
|
|
2245
|
+
SpectrumType: "TYPE1" | "TYPE2";
|
|
2246
|
+
/** @description A single boundary condition (fixed/free/spring) with optional stiffness or stiffness curve. */
|
|
2247
|
+
SupportCondition: {
|
|
2248
|
+
condition_type: components["schemas"]["SupportConditionType"];
|
|
2249
|
+
/** Format: double */
|
|
2250
|
+
stiffness?: number | null;
|
|
2251
|
+
stiffness_curve?: null | components["schemas"]["SupportStiffnessCurve"];
|
|
2252
|
+
};
|
|
2253
|
+
/** @enum {string} */
|
|
2254
|
+
SupportConditionType: "Fixed" | "Free" | "Spring" | "PositiveOnly" | "NegativeOnly";
|
|
2255
|
+
/**
|
|
2256
|
+
* @description Which global reaction component a **support** stiffness curve depends on.
|
|
2257
|
+
*
|
|
2258
|
+
* Supports react in the global coordinate system, so the names are the global
|
|
2259
|
+
* reaction components `Fx/Fy/Fz` (forces) and `Mx/My/Mz` (moments). Distinct
|
|
2260
|
+
* from [`MemberStiffnessCurveDriver`], whose member-local names (`N/Vy/Vz/…`)
|
|
2261
|
+
* apply to member-hinge stiffness curves.
|
|
2262
|
+
* @enum {string}
|
|
2263
|
+
*/
|
|
2264
|
+
SupportForceComponent: "Fx" | "Fy" | "Fz" | "Mx" | "My" | "Mz";
|
|
2265
|
+
/**
|
|
2266
|
+
* @description A **support** spring stiffness that varies with a global reaction component.
|
|
2267
|
+
*
|
|
2268
|
+
* `points` is a sorted list of `[force_value, stiffness]` pairs and `depends_on`
|
|
2269
|
+
* is the global reaction component driving the interpolation.
|
|
2270
|
+
*/
|
|
2271
|
+
SupportStiffnessCurve: {
|
|
2272
|
+
/** @description Which global reaction component the stiffness depends on. */
|
|
2273
|
+
depends_on: components["schemas"]["SupportForceComponent"];
|
|
2274
|
+
/** @description Sorted `[force_value, stiffness]` pairs (≥ 2 points, positive stiffness). */
|
|
2275
|
+
points: [
|
|
2276
|
+
number,
|
|
2277
|
+
number
|
|
2278
|
+
][];
|
|
2279
|
+
/**
|
|
2280
|
+
* @description When `true`, the curve is driven by the SIGNED reaction, so tension and
|
|
2281
|
+
* compression can have different stiffness (points may span negative
|
|
2282
|
+
* force). When `false` (default), the curve is driven by `|force|`
|
|
2283
|
+
* (symmetric — the legacy behaviour).
|
|
2284
|
+
*/
|
|
2285
|
+
signed?: boolean;
|
|
2286
|
+
};
|
|
2287
|
+
/** @description A pressure load over an arbitrary polygon, distributed onto the underlying members/plates. */
|
|
2288
|
+
SurfaceLoad: {
|
|
2289
|
+
direction: components["schemas"]["Vector3"];
|
|
2290
|
+
distribution_direction?: components["schemas"]["Vector3"];
|
|
2291
|
+
/** Format: int32 */
|
|
2292
|
+
id: number;
|
|
2293
|
+
/** Format: double */
|
|
2294
|
+
magnitude: number;
|
|
2295
|
+
polygon: components["schemas"]["SurfaceLoadVertex"][];
|
|
2296
|
+
};
|
|
2297
|
+
/** @description A vertex of a surface-load polygon, in the **global** frame (`X`, `Y`, `Z`). */
|
|
2298
|
+
SurfaceLoadVertex: {
|
|
2299
|
+
/** Format: double */
|
|
2300
|
+
X: number;
|
|
2301
|
+
/** Format: double */
|
|
2302
|
+
Y: number;
|
|
2303
|
+
/** Format: double */
|
|
2304
|
+
Z: number;
|
|
2305
|
+
};
|
|
2306
|
+
/**
|
|
2307
|
+
* @description A geometric sway (out-of-plumb) imperfection, applied to the whole model as
|
|
2308
|
+
* imperfect initial geometry.
|
|
2309
|
+
*
|
|
2310
|
+
* `magnitude` is the lean angle in **radians** about `axis`. Every node leans
|
|
2311
|
+
* toward the sway direction `axis × height_direction` by
|
|
2312
|
+
* `magnitude · (height above reference_point)`, where height is measured along
|
|
2313
|
+
* `height_direction`. The `height_direction` component is never displaced, so
|
|
2314
|
+
* nodes on the reference plane stay put (no base lift).
|
|
2315
|
+
*
|
|
2316
|
+
* It applies to the entire model for the load combinations its
|
|
2317
|
+
* [`crate::models::imperfections::imperfectioncase::ImperfectionCase`] targets —
|
|
2318
|
+
* there is no per-member targeting; subdividing or grouping members does not
|
|
2319
|
+
* change the result.
|
|
2320
|
+
*/
|
|
2321
|
+
SwayImperfection: {
|
|
2322
|
+
/** @description Rotation axis. The sway direction is `axis × height_direction`. */
|
|
2323
|
+
axis: components["schemas"]["Vector3"];
|
|
2324
|
+
/**
|
|
2325
|
+
* @description Direction along which height is measured and which is never displaced
|
|
2326
|
+
* (the structure's "up"). Defaults to global +Y.
|
|
2327
|
+
*/
|
|
2328
|
+
height_direction?: components["schemas"]["Vector3"];
|
|
2329
|
+
/**
|
|
2330
|
+
* Format: double
|
|
2331
|
+
* @description Sway (lean) angle in **radians**, applied about `axis`.
|
|
2332
|
+
*/
|
|
2333
|
+
magnitude: number;
|
|
2334
|
+
/**
|
|
2335
|
+
* @description A point on the zero-sway plane: the lean is proportional to a node's
|
|
2336
|
+
* height above this point (along `height_direction`). Only a measurement
|
|
2337
|
+
* reference, not a pivot. Defaults to the origin.
|
|
2338
|
+
*/
|
|
2339
|
+
reference_point?: components["schemas"]["Vector3"];
|
|
2340
|
+
};
|
|
2341
|
+
/** @description A translational geometric imperfection along an axis, applied to member sets. */
|
|
2342
|
+
TranslationImperfection: {
|
|
2343
|
+
axis: components["schemas"]["Vector3"];
|
|
2344
|
+
/** Format: double */
|
|
2345
|
+
magnitude: number;
|
|
2346
|
+
memberset_ids: number[];
|
|
2347
|
+
};
|
|
2348
|
+
/** @description The model's unit system (length, force, density, pressure) for input and results. */
|
|
2349
|
+
UnitSettings: {
|
|
2350
|
+
densityUnit?: components["schemas"]["DensityUnit"];
|
|
2351
|
+
forceUnit?: components["schemas"]["ForceUnit"];
|
|
2352
|
+
lengthUnit?: components["schemas"]["LengthUnit"];
|
|
2353
|
+
pressureUnit?: components["schemas"]["PressureUnit"];
|
|
2354
|
+
system?: components["schemas"]["UnitSystem"];
|
|
2355
|
+
};
|
|
2356
|
+
/**
|
|
2357
|
+
* @description The unit system a model is expressed in.
|
|
2358
|
+
* @enum {string}
|
|
2359
|
+
*/
|
|
2360
|
+
UnitSystem: "metric" | "imperial";
|
|
2361
|
+
/** @description One unity check the engineer defines. */
|
|
2362
|
+
UnityCheckDefinition: {
|
|
2363
|
+
applies_to: components["schemas"]["EntitySelector"];
|
|
2364
|
+
description?: string | null;
|
|
2365
|
+
id: string;
|
|
2366
|
+
limit_state?: null | components["schemas"]["LimitState"];
|
|
2367
|
+
/**
|
|
2368
|
+
* @description Restrict to these combination ids (empty = all matching `limit_state`).
|
|
2369
|
+
* @default []
|
|
2370
|
+
*/
|
|
2371
|
+
load_combination_ids: number[];
|
|
2372
|
+
name: string;
|
|
2373
|
+
/**
|
|
2374
|
+
* @description Optional narrative report template (authored HTML/markdown). Placeholders are
|
|
2375
|
+
* filled from each entity's computed trace: `{{label}}` → that step's display
|
|
2376
|
+
* string (number + unit) and `{{= expr}}` → `expr` evaluated over the trace
|
|
2377
|
+
* values (display units). Rendered into each `EntityUnityResult.rendered_report`
|
|
2378
|
+
* only when `analysis.options.render_unity_reports` is true.
|
|
2379
|
+
*/
|
|
2380
|
+
report_template?: string | null;
|
|
2381
|
+
spec: components["schemas"]["CheckSpec"];
|
|
2382
|
+
/**
|
|
2383
|
+
* @description Utilization colour boundaries [green→yellow, yellow→orange, orange→red].
|
|
2384
|
+
* @default [
|
|
2385
|
+
* 0.8,
|
|
2386
|
+
* 0.95,
|
|
2387
|
+
* 1
|
|
2388
|
+
* ]
|
|
2389
|
+
*/
|
|
2390
|
+
thresholds: number[];
|
|
2391
|
+
};
|
|
2392
|
+
/** @description All entity results for one check + the governing (worst) one. */
|
|
2393
|
+
UnityCheckResult: {
|
|
2394
|
+
check_id: string;
|
|
2395
|
+
governing?: null | components["schemas"]["EntityUnityResult"];
|
|
2396
|
+
limit_state?: null | components["schemas"]["LimitState"];
|
|
2397
|
+
/** Format: double */
|
|
2398
|
+
max_utilization: number;
|
|
2399
|
+
name: string;
|
|
2400
|
+
/** @default [] */
|
|
2401
|
+
per_entity: components["schemas"]["EntityUnityResult"][];
|
|
2402
|
+
status: components["schemas"]["UnityStatus"];
|
|
2403
|
+
};
|
|
2404
|
+
/**
|
|
2405
|
+
* @description 4-colour utilization status. Derived from utilization vs the check's
|
|
2406
|
+
* thresholds `[green→yellow, yellow→orange, orange→red]`.
|
|
2407
|
+
* @enum {string}
|
|
2408
|
+
*/
|
|
2409
|
+
UnityStatus: "Green" | "Yellow" | "Orange" | "Red";
|
|
2410
|
+
/** @description Binds a friendly placeholder name (used in `{{name}}`) to a value source. */
|
|
2411
|
+
VarBinding: {
|
|
2412
|
+
name: string;
|
|
2413
|
+
source: components["schemas"]["VarSource"];
|
|
2414
|
+
};
|
|
2415
|
+
/**
|
|
2416
|
+
* @description The source of a named formula variable: a catalog quantity, or a
|
|
2417
|
+
* sub-expression over previously-declared variables/quantities.
|
|
2418
|
+
*/
|
|
2419
|
+
VarSource: {
|
|
2420
|
+
Quantity: components["schemas"]["QuantitySource"];
|
|
2421
|
+
} | {
|
|
2422
|
+
/** @description An expression string (may reference earlier variable names + functions). */
|
|
2423
|
+
Expression: string;
|
|
2424
|
+
};
|
|
2425
|
+
/**
|
|
2426
|
+
* @description A 3-component vector `[x, y, z]`.
|
|
2427
|
+
*
|
|
2428
|
+
* Shared schema referenced (via `#[schema(value_type = Vector3)]`) by every
|
|
2429
|
+
* direction/axis field so the OpenAPI defines one reusable component instead of
|
|
2430
|
+
* repeating the inline array. The Rust model keeps plain `(f64, f64, f64)`
|
|
2431
|
+
* tuples and the JSON shape is unchanged.
|
|
2432
|
+
*/
|
|
2433
|
+
Vector3: [
|
|
2434
|
+
number,
|
|
2435
|
+
number,
|
|
2436
|
+
number
|
|
2437
|
+
];
|
|
2438
|
+
/** @description A construction axis (origin + direction) for the UI/CAD workspace. */
|
|
2439
|
+
WorkAxis: {
|
|
2440
|
+
/** Format: double */
|
|
2441
|
+
direction_x: number;
|
|
2442
|
+
/** Format: double */
|
|
2443
|
+
direction_y: number;
|
|
2444
|
+
/** Format: double */
|
|
2445
|
+
direction_z: number;
|
|
2446
|
+
/** Format: int32 */
|
|
2447
|
+
id: number;
|
|
2448
|
+
name?: string;
|
|
2449
|
+
/** Format: double */
|
|
2450
|
+
origin_x: number;
|
|
2451
|
+
/** Format: double */
|
|
2452
|
+
origin_y: number;
|
|
2453
|
+
/** Format: double */
|
|
2454
|
+
origin_z: number;
|
|
2455
|
+
};
|
|
2456
|
+
/** @description A construction plane (origin + normal) for the UI/CAD workspace. */
|
|
2457
|
+
WorkPlane: {
|
|
2458
|
+
/** Format: int32 */
|
|
2459
|
+
id: number;
|
|
2460
|
+
name?: string;
|
|
2461
|
+
/** Format: double */
|
|
2462
|
+
normal_x: number;
|
|
2463
|
+
/** Format: double */
|
|
2464
|
+
normal_y: number;
|
|
2465
|
+
/** Format: double */
|
|
2466
|
+
normal_z: number;
|
|
2467
|
+
/** Format: double */
|
|
2468
|
+
origin_x: number;
|
|
2469
|
+
/** Format: double */
|
|
2470
|
+
origin_y: number;
|
|
2471
|
+
/** Format: double */
|
|
2472
|
+
origin_z: number;
|
|
2473
|
+
};
|
|
2474
|
+
/**
|
|
2475
|
+
* @description Calculation-agnostic visualization / CAD helpers (not part of the structural
|
|
2476
|
+
* FE model, but useful for the UI and for grouping entities).
|
|
2477
|
+
*/
|
|
2478
|
+
Workspace: {
|
|
2479
|
+
/**
|
|
2480
|
+
* @description Generic, calculation-agnostic entity groups for UI/visualization.
|
|
2481
|
+
* @default []
|
|
2482
|
+
*/
|
|
2483
|
+
entity_groups: components["schemas"]["EntityGroup"][];
|
|
2484
|
+
/** @default [] */
|
|
2485
|
+
work_axes: components["schemas"]["WorkAxis"][];
|
|
2486
|
+
/** @default [] */
|
|
2487
|
+
work_planes: components["schemas"]["WorkPlane"][];
|
|
2488
|
+
};
|
|
2489
|
+
};
|
|
2490
|
+
responses: never;
|
|
2491
|
+
parameters: never;
|
|
2492
|
+
requestBodies: never;
|
|
2493
|
+
headers: never;
|
|
2494
|
+
pathItems: never;
|
|
2495
|
+
}
|
|
2496
|
+
export type $defs = Record<string, never>;
|
|
2497
|
+
export type operations = Record<string, never>;
|
|
2498
|
+
|
|
2499
|
+
export type FERS = components['schemas']['FERS'];
|
|
2500
|
+
export type ResultsBundle = components['schemas']['ResultsBundle'];
|