@ferscloud/fers-calculation-web 0.2.55 → 0.2.58

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/fers-models.d.ts CHANGED
@@ -471,6 +471,11 @@ export interface components {
471
471
  * @enum {string}
472
472
  */
473
473
  ConstantDimension: "Length" | "Force" | "Moment" | "Stress" | "Area" | "Angle";
474
+ /**
475
+ * @description What a connector does beyond the end of its tabulated diagram.
476
+ * @enum {string}
477
+ */
478
+ CurveEndBehaviour: "Continuous" | "Stop" | "Yielding" | "Failure";
474
479
  /**
475
480
  * @description Transverse deflection component, measured relative to the entity's end-to-end
476
481
  * chord (local-frame axes perpendicular to the chord).
@@ -1137,20 +1142,63 @@ export interface components {
1137
1142
  hinge_type: string;
1138
1143
  /** Format: int32 */
1139
1144
  id: number;
1140
- /** Format: double */
1145
+ /**
1146
+ * Format: double
1147
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1148
+ */
1141
1149
  max_bimoment_warp?: number | null;
1142
- /** Format: double */
1150
+ /**
1151
+ * Format: double
1152
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1153
+ */
1143
1154
  max_moment_mx?: number | null;
1144
- /** Format: double */
1155
+ /**
1156
+ * Format: double
1157
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1158
+ */
1145
1159
  max_moment_my?: number | null;
1146
- /** Format: double */
1160
+ /**
1161
+ * Format: double
1162
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1163
+ */
1147
1164
  max_moment_mz?: number | null;
1148
- /** Format: double */
1165
+ /**
1166
+ * Format: double
1167
+ * @description Connector **design capacities** — the connection's rated shear, moment and
1168
+ * bimoment resistance (e.g. an EN 15512 beam-end-connector test value).
1169
+ *
1170
+ * **The solver does not read these, deliberately.** They are inputs to code
1171
+ * checking, not to the analysis: a capacity is a resistance to compare a
1172
+ * demand against, not a stiffness. Nothing here caps, redistributes or warns
1173
+ * — a hinge carrying a capacity solves exactly as one without.
1174
+ *
1175
+ * To express a connector that actually *stops taking moment* during the
1176
+ * solve, give it a [`crate::models::moment_rotation::MomentRotationCurve`]
1177
+ * with `end: Yielding`; that is the analysis-side feature and it is
1178
+ * unrelated to these fields.
1179
+ *
1180
+ * Not yet reachable from a unity check either: `QuantitySource` can read a
1181
+ * `Section` or `Material` property but has no hinge source, so a check
1182
+ * cannot name one of these today. That is the work these fields are waiting
1183
+ * on — see `Feedback_Folder/member-hinge-secant-state-and-damping/`.
1184
+ *
1185
+ * Units follow the model's own (normalized to SI internally, like every
1186
+ * other force/moment quantity).
1187
+ */
1149
1188
  max_tension_vx?: number | null;
1150
- /** Format: double */
1189
+ /**
1190
+ * Format: double
1191
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1192
+ */
1151
1193
  max_tension_vy?: number | null;
1152
- /** Format: double */
1194
+ /**
1195
+ * Format: double
1196
+ * @description See [`Self::max_tension_vx`] — a design capacity, not read by the solver.
1197
+ */
1153
1198
  max_tension_vz?: number | null;
1199
+ moment_rotation_mx?: null | components["schemas"]["MomentRotationCurve"];
1200
+ moment_rotation_my?: null | components["schemas"]["MomentRotationCurve"];
1201
+ moment_rotation_mz?: null | components["schemas"]["MomentRotationCurve"];
1154
1202
  /** Format: double */
1155
1203
  rotational_release_mx?: number | null;
1156
1204
  /** Format: double */
@@ -1263,14 +1311,24 @@ export interface components {
1263
1311
  local_minimums?: null | components["schemas"]["NodeForces"];
1264
1312
  local_start_forces?: null | components["schemas"]["NodeForces"];
1265
1313
  maximums?: null | components["schemas"]["NodeForces"];
1314
+ member_displacement_peak?: null | components["schemas"]["MemberDisplacementSample"];
1266
1315
  /**
1267
1316
  * @description Optional sampled deflected shape: the member's global displacement at
1268
- * evenly-spaced stations from `x_frac = 0` to `1`, reconstructed by
1269
- * cubic-Hermite interpolation of the end-node translations + rotations.
1270
- * Empty unless `AnalysisOptions::include_member_deflected_shape` is enabled.
1271
- * The interpolation is the end-DOF homogeneous cubic — exact for members with
1272
- * no span load; under a member UDL the true shape is quartic, so mid-span sag
1273
- * is slightly under-rendered (matching client-side Hermite reconstructions).
1317
+ * stations running from `x_frac = 0` to `1`, load-exact rather than
1318
+ * interpolated. Empty unless `AnalysisOptions::include_member_deflected_shape`
1319
+ * is enabled.
1320
+ *
1321
+ * A member carrying span loads is reconstructed by integrating its own internal
1322
+ * force field (`u'' = −M/EI`, plus `V/GA_s` where the section has a shear area),
1323
+ * so the quartic mid-span sag under a UDL and the Timoshenko shear term are
1324
+ * both present. A member without span loads is the end-DOF cubic, which is
1325
+ * exact there — the two agree to machine precision.
1326
+ *
1327
+ * Stations are evenly spaced, **except** on a member that was split internally
1328
+ * at a mid-span point load: there each segment is evenly sampled over its own
1329
+ * share of the parent's `x_frac` range and the segments are concatenated, which
1330
+ * keeps the slope kink exactly on the split. `x_frac` is monotonically
1331
+ * increasing in every case.
1274
1332
  */
1275
1333
  member_displacements?: components["schemas"]["MemberDisplacementSample"][];
1276
1334
  minimums?: null | components["schemas"]["NodeForces"];
@@ -1483,9 +1541,14 @@ export interface components {
1483
1541
  participation_factors: number[];
1484
1542
  /**
1485
1543
  * Format: double
1486
- * @description Period `T = 1 / f` (s).
1544
+ * @description Period `T = 1 / f` (s), or `null` for a **rigid-body mode**.
1545
+ *
1546
+ * A free-free structure has zero-frequency modes whose period is infinite, and
1547
+ * JSON has no `Infinity`. This was an `f64` until 0.2.56, so the serializer
1548
+ * wrote `null` into a field that could not deserialize it and the engine
1549
+ * emitted documents it could not read back.
1487
1550
  */
1488
- period: number;
1551
+ period?: number | null;
1489
1552
  };
1490
1553
  /**
1491
1554
  * @description The structural model: nodes, members, plates and their supporting
@@ -1516,6 +1579,28 @@ export interface components {
1516
1579
  /** @default {} */
1517
1580
  workspace: components["schemas"]["Workspace"];
1518
1581
  };
1582
+ /** @description A beam-end connector's moment–rotation characteristic. */
1583
+ MomentRotationCurve: {
1584
+ /** @description Behaviour above the last tabulated point. */
1585
+ end?: components["schemas"]["CurveEndBehaviour"];
1586
+ /**
1587
+ * @description Sorted `[rotation, moment]` pairs (≥ 2 points): rotation in radians (the
1588
+ * model's length/force units never touch it), moment in the model's units.
1589
+ * Rotations must ascend strictly and moments must not decrease.
1590
+ */
1591
+ points: number[][];
1592
+ /**
1593
+ * @description Behaviour below the first tabulated point. Only reachable on an asymmetric
1594
+ * diagram — a symmetric one is read at `|M|` and so never runs off the bottom.
1595
+ */
1596
+ start?: components["schemas"]["CurveEndBehaviour"];
1597
+ /**
1598
+ * @description Mirror the diagram through the origin, so hogging and sagging behave
1599
+ * identically and the table only has to carry `φ ≥ 0`. The usual case, and the
1600
+ * default. Set `false` to tabulate an asymmetric connector across both signs.
1601
+ */
1602
+ symmetric?: boolean;
1603
+ };
1519
1604
  /** @description Modal response spectrum analysis results (§4.3.3.3). */
1520
1605
  MrsaResults: {
1521
1606
  /** @description Final envelope after directional combination. */
@@ -2546,9 +2631,10 @@ export interface components {
2546
2631
  participation_factor: number;
2547
2632
  /**
2548
2633
  * Format: double
2549
- * @description Natural period `T = 2π/ω` (s).
2634
+ * @description Natural period `T = 2π/ω` (s), or `null` for a zero-frequency (rigid-body)
2635
+ * mode — see [`crate::models::results::modalresult::ModeShape::period`].
2550
2636
  */
2551
- period: number;
2637
+ period?: number | null;
2552
2638
  /**
2553
2639
  * Format: double
2554
2640
  * @description Design spectral acceleration `Sd(T)` (m/s²).
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ferscloud/fers-calculation-web",
3
3
  "type": "module",
4
- "version": "0.2.55",
4
+ "version": "0.2.58",
5
5
  "license": "BSD-3-Clause",
6
6
  "repository": {
7
7
  "type": "git",