@ferscloud/fers-calculation-web 0.2.58 → 0.2.60

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
@@ -56,6 +56,11 @@ export interface components {
56
56
  AnalysisOptions: {
57
57
  /** Format: double */
58
58
  axial_slack?: number;
59
+ /**
60
+ * @description Declarative only; the solver always assembles the full 3D formulation.
61
+ * A planar model must restrain its out-of-plane DOFs at every node itself
62
+ * — see [`Dimensionality`].
63
+ */
59
64
  dimensionality: components["schemas"]["Dimensionality"];
60
65
  /**
61
66
  * @description When true, the engine generates self-weight (dead load) for every member
@@ -225,6 +230,16 @@ export interface components {
225
230
  * results are reported in `results.buckling_runs` (with
226
231
  * `results.buckling` carrying the first successful run for backward
227
232
  * compatibility).
233
+ *
234
+ * **The eigenvalue is mesh-sensitive, unlike the rest of the bundle.**
235
+ * Reactions and the internal forces recovered along a member come out exact on
236
+ * one element for a straight prismatic member; α_cr does not. A buckling
237
+ * half-wave cannot form on a single cubic element — its consistent geometric
238
+ * stiffness gives `12EI/L²` against Euler's `π²EI/L²`, so α_cr comes out about
239
+ * **21 % high, which is unconservative**. Two elements per member are within
240
+ * 0.75 %, four within 0.05 %. Mesh compressed members into at least four
241
+ * elements; the solve stays in the millisecond range. A run left on one element
242
+ * raises `buckling_unrefined_mesh` in [`crate::models::results::modalresult::BucklingResults::warnings`].
228
243
  */
229
244
  BucklingAnalysisSettings: {
230
245
  /**
@@ -494,7 +509,21 @@ export interface components {
494
509
  */
495
510
  DensityUnit: "kg/m3" | "kg/mm3";
496
511
  /**
497
- * @description Python:
512
+ * @description **Declarative only — the solver does not branch on this.** The formulation
513
+ * is always the full 3D beam with 6 structural DOFs (plus warping) per node,
514
+ * whichever value is given.
515
+ *
516
+ * So a planar model is planar only because the caller made it so: it must
517
+ * restrain the out-of-plane DOFs — `Z`, `RX` and `RY` for an XY model — on
518
+ * **every node**, not just at the supports. Leave them free and the
519
+ * out-of-plane subsystem is unrestrained, which is either a singular stiffness
520
+ * matrix or, worse, a solve that succeeds with movement nobody asked for; see
521
+ * the `singular_model` diagnostic.
522
+ *
523
+ * The field is required because the payload has to carry something, and it is
524
+ * kept because dropping it would break every existing caller for no gain.
525
+ *
526
+ * Python:
498
527
  * class Dimensionality(Enum):
499
528
  * TWO_DIMENSIONAL = "2D"
500
529
  * THREE_DIMENSIONAL = "3D"
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.58",
4
+ "version": "0.2.60",
5
5
  "license": "BSD-3-Clause",
6
6
  "repository": {
7
7
  "type": "git",