@theerapat-s28/ts-structural-eng-tools 2.2.0 → 3.0.0
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/CHANGELOG.md +35 -1
- package/README.md +8 -5
- package/dist/core/constants/frame.constant.d.ts +15 -0
- package/dist/core/constants/frame.constant.js +16 -1
- package/dist/core/constants/frame.constant.js.map +1 -1
- package/dist/core/errors/frame-analysis.error.d.ts +1 -0
- package/dist/core/errors/frame-analysis.error.js +18 -2
- package/dist/core/errors/frame-analysis.error.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/esm/core/constants/frame.constant.js +15 -0
- package/dist/esm/core/constants/frame.constant.js.map +1 -1
- package/dist/esm/core/errors/frame-analysis.error.js +18 -2
- package/dist/esm/core/errors/frame-analysis.error.js.map +1 -1
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/fea/frame/area/distribute-area-loads.js +10 -5
- package/dist/esm/fea/frame/area/distribute-area-loads.js.map +1 -1
- package/dist/esm/fea/frame/elements/shell/dkq-plate.js +109 -0
- package/dist/esm/fea/frame/elements/shell/dkq-plate.js.map +1 -0
- package/dist/esm/fea/frame/elements/shell/flat-shell.js +111 -0
- package/dist/esm/fea/frame/elements/shell/flat-shell.js.map +1 -0
- package/dist/esm/fea/frame/elements/shell/membrane-quad.js +107 -0
- package/dist/esm/fea/frame/elements/shell/membrane-quad.js.map +1 -0
- package/dist/esm/fea/frame/elements/shell/quad-geometry.js +127 -0
- package/dist/esm/fea/frame/elements/shell/quad-geometry.js.map +1 -0
- package/dist/esm/fea/frame/elements/shell/rigidity.js +19 -0
- package/dist/esm/fea/frame/elements/shell/rigidity.js.map +1 -0
- package/dist/esm/fea/frame/elements/shell/shell-axes.js +97 -0
- package/dist/esm/fea/frame/elements/shell/shell-axes.js.map +1 -0
- package/dist/esm/fea/frame/mesh/expand-model.js +129 -0
- package/dist/esm/fea/frame/mesh/expand-model.js.map +1 -0
- package/dist/esm/fea/frame/mesh/mesh-shells.js +239 -0
- package/dist/esm/fea/frame/mesh/mesh-shells.js.map +1 -0
- package/dist/esm/fea/frame/post/envelope.js +38 -1
- package/dist/esm/fea/frame/post/envelope.js.map +1 -1
- package/dist/esm/fea/frame/post/member-diagram.js +51 -2
- package/dist/esm/fea/frame/post/member-diagram.js.map +1 -1
- package/dist/esm/fea/frame/post/present-state.js +34 -16
- package/dist/esm/fea/frame/post/present-state.js.map +1 -1
- package/dist/esm/fea/frame/post/shell-forces.js +111 -0
- package/dist/esm/fea/frame/post/shell-forces.js.map +1 -0
- package/dist/esm/fea/frame/solver/analyze-frame.js +27 -7
- package/dist/esm/fea/frame/solver/analyze-frame.js.map +1 -1
- package/dist/esm/fea/frame/solver/auto-restraint.js +58 -10
- package/dist/esm/fea/frame/solver/auto-restraint.js.map +1 -1
- package/dist/esm/fea/frame/solver/frame-system.js +148 -40
- package/dist/esm/fea/frame/solver/frame-system.js.map +1 -1
- package/dist/esm/fea/frame/solver/global-assembly.js +5 -3
- package/dist/esm/fea/frame/solver/global-assembly.js.map +1 -1
- package/dist/esm/fea/frame/solver/load-case-solver.js +111 -11
- package/dist/esm/fea/frame/solver/load-case-solver.js.map +1 -1
- package/dist/esm/fea/frame/validation/validate-model.js +133 -3
- package/dist/esm/fea/frame/validation/validate-model.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/fea/frame/area/distribute-area-loads.d.ts +3 -2
- package/dist/fea/frame/area/distribute-area-loads.js +10 -5
- package/dist/fea/frame/area/distribute-area-loads.js.map +1 -1
- package/dist/fea/frame/elements/shell/dkq-plate.d.ts +50 -0
- package/dist/fea/frame/elements/shell/dkq-plate.js +115 -0
- package/dist/fea/frame/elements/shell/dkq-plate.js.map +1 -0
- package/dist/fea/frame/elements/shell/flat-shell.d.ts +63 -0
- package/dist/fea/frame/elements/shell/flat-shell.js +118 -0
- package/dist/fea/frame/elements/shell/flat-shell.js.map +1 -0
- package/dist/fea/frame/elements/shell/membrane-quad.d.ts +61 -0
- package/dist/fea/frame/elements/shell/membrane-quad.js +113 -0
- package/dist/fea/frame/elements/shell/membrane-quad.js.map +1 -0
- package/dist/fea/frame/elements/shell/quad-geometry.d.ts +71 -0
- package/dist/fea/frame/elements/shell/quad-geometry.js +136 -0
- package/dist/fea/frame/elements/shell/quad-geometry.js.map +1 -0
- package/dist/fea/frame/elements/shell/rigidity.d.ts +14 -0
- package/dist/fea/frame/elements/shell/rigidity.js +23 -0
- package/dist/fea/frame/elements/shell/rigidity.js.map +1 -0
- package/dist/fea/frame/elements/shell/shell-axes.d.ts +43 -0
- package/dist/fea/frame/elements/shell/shell-axes.js +102 -0
- package/dist/fea/frame/elements/shell/shell-axes.js.map +1 -0
- package/dist/fea/frame/index.d.ts +2 -2
- package/dist/fea/frame/mesh/expand-model.d.ts +29 -0
- package/dist/fea/frame/mesh/expand-model.js +133 -0
- package/dist/fea/frame/mesh/expand-model.js.map +1 -0
- package/dist/fea/frame/mesh/mesh-shells.d.ts +38 -0
- package/dist/fea/frame/mesh/mesh-shells.js +244 -0
- package/dist/fea/frame/mesh/mesh-shells.js.map +1 -0
- package/dist/fea/frame/post/envelope.js +38 -1
- package/dist/fea/frame/post/envelope.js.map +1 -1
- package/dist/fea/frame/post/member-diagram.d.ts +21 -1
- package/dist/fea/frame/post/member-diagram.js +53 -3
- package/dist/fea/frame/post/member-diagram.js.map +1 -1
- package/dist/fea/frame/post/present-state.d.ts +3 -2
- package/dist/fea/frame/post/present-state.js +33 -15
- package/dist/fea/frame/post/present-state.js.map +1 -1
- package/dist/fea/frame/post/shell-forces.d.ts +27 -0
- package/dist/fea/frame/post/shell-forces.js +116 -0
- package/dist/fea/frame/post/shell-forces.js.map +1 -0
- package/dist/fea/frame/solver/analyze-frame.d.ts +8 -4
- package/dist/fea/frame/solver/analyze-frame.js +27 -7
- package/dist/fea/frame/solver/analyze-frame.js.map +1 -1
- package/dist/fea/frame/solver/auto-restraint.d.ts +23 -10
- package/dist/fea/frame/solver/auto-restraint.js +60 -11
- package/dist/fea/frame/solver/auto-restraint.js.map +1 -1
- package/dist/fea/frame/solver/frame-system.d.ts +47 -8
- package/dist/fea/frame/solver/frame-system.js +146 -38
- package/dist/fea/frame/solver/frame-system.js.map +1 -1
- package/dist/fea/frame/solver/global-assembly.d.ts +11 -0
- package/dist/fea/frame/solver/global-assembly.js +7 -4
- package/dist/fea/frame/solver/global-assembly.js.map +1 -1
- package/dist/fea/frame/solver/load-case-solver.d.ts +11 -1
- package/dist/fea/frame/solver/load-case-solver.js +109 -9
- package/dist/fea/frame/solver/load-case-solver.js.map +1 -1
- package/dist/fea/frame/types/model.type.d.ts +95 -3
- package/dist/fea/frame/types/results.type.d.ts +61 -1
- package/dist/fea/frame/validation/validate-model.d.ts +3 -2
- package/dist/fea/frame/validation/validate-model.js +133 -3
- package/dist/fea/frame/validation/validate-model.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present-state.js","sourceRoot":"","sources":["../../../../src/fea/frame/post/present-state.ts"],"names":[],"mappings":";;;AAAA,uEAA2E;AAE3E,0CAAuD;AACvD,8CAA2C;AAE3C,mEAA8D;AAE9D,+DAAuD;AAQvD,
|
|
1
|
+
{"version":3,"file":"present-state.js","sourceRoot":"","sources":["../../../../src/fea/frame/post/present-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SystemShell } from "../solver/frame-system";
|
|
2
|
+
import type { ShellCornerForces, ShellElementForces } from "../types/results.type";
|
|
3
|
+
/** Raw components per corner: F11 F22 F12 (N/mm), M11 M22 M12 (N·mm/mm), V13 V23 (N/mm). */
|
|
4
|
+
export declare const SHELL_FORCE_COMPONENTS = 8;
|
|
5
|
+
/**
|
|
6
|
+
* Unrounded forces per unit width at the four corners of a shell, in its local axes 1, 2, from
|
|
7
|
+
* the global displacements `U` (N and mm): 8 values per corner in `nodeIds` order.
|
|
8
|
+
*
|
|
9
|
+
* - Membrane forces `n = D_m·ε` and moments are evaluated at the 2×2 Gauss points and
|
|
10
|
+
* extrapolated bilinearly to the corners.
|
|
11
|
+
* - Moments follow the member convention: M11 is positive when it puts the −3 face in tension
|
|
12
|
+
* (sagging with local 3 up), so M = −∫ z·σ dz.
|
|
13
|
+
* - The plate has no shear strain, so V13, V23 come from moment equilibrium,
|
|
14
|
+
* `V13 = −(∂M11/∂x₁ + ∂M12/∂x₂)` and `V23 = −(∂M12/∂x₁ + ∂M22/∂x₂)` (as V2 = −dM3/dx for a
|
|
15
|
+
* member), on the bilinear field through the Gauss-point moments. They are coarser than the
|
|
16
|
+
* moments.
|
|
17
|
+
*
|
|
18
|
+
* Everything is linear in `U`, so load combinations superpose it.
|
|
19
|
+
*/
|
|
20
|
+
export declare const shellRawForces: (shell: SystemShell, U: number[]) => number[];
|
|
21
|
+
/**
|
|
22
|
+
* The presented forces of one shell: kN/m, kN·m/m and kN/m per corner, with the face stresses
|
|
23
|
+
* `σ = F/t ∓ 6M/t²` in MPa (top = +3 face).
|
|
24
|
+
*
|
|
25
|
+
* @param raw - From `shellRawForces`, or a factored sum of them
|
|
26
|
+
*/
|
|
27
|
+
export declare const presentShellForces: (shell: SystemShell, nodeIds: ShellCornerForces["nodeId"][], raw: number[]) => ShellElementForces;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.presentShellForces = exports.shellRawForces = exports.SHELL_FORCE_COMPONENTS = void 0;
|
|
4
|
+
const math_1 = require("../../../utils/math");
|
|
5
|
+
const matrix_1 = require("../../../utils/matrix");
|
|
6
|
+
const dkq_plate_1 = require("../elements/shell/dkq-plate");
|
|
7
|
+
const membrane_quad_1 = require("../elements/shell/membrane-quad");
|
|
8
|
+
const quad_geometry_1 = require("../elements/shell/quad-geometry");
|
|
9
|
+
const global_assembly_1 = require("../solver/global-assembly");
|
|
10
|
+
/** Raw components per corner: F11 F22 F12 (N/mm), M11 M22 M12 (N·mm/mm), V13 V23 (N/mm). */
|
|
11
|
+
exports.SHELL_FORCE_COMPONENTS = 8;
|
|
12
|
+
const FORCE_DECIMALS = 4;
|
|
13
|
+
const ROOT3 = Math.sqrt(3);
|
|
14
|
+
const CORNERS = [
|
|
15
|
+
[-1, -1],
|
|
16
|
+
[1, -1],
|
|
17
|
+
[1, 1],
|
|
18
|
+
[-1, 1],
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Bilinear functions through the 2×2 Gauss points (in `GAUSS_2X2` order), evaluated at each
|
|
22
|
+
* corner: the corner is at ±√3 in the Gauss points' own coordinates, ξ' = √3·ξ.
|
|
23
|
+
*/
|
|
24
|
+
const atCorners = CORNERS.map(([xi, eta]) => (0, quad_geometry_1.bilinearShape)(ROOT3 * xi, ROOT3 * eta));
|
|
25
|
+
/**
|
|
26
|
+
* Unrounded forces per unit width at the four corners of a shell, in its local axes 1, 2, from
|
|
27
|
+
* the global displacements `U` (N and mm): 8 values per corner in `nodeIds` order.
|
|
28
|
+
*
|
|
29
|
+
* - Membrane forces `n = D_m·ε` and moments are evaluated at the 2×2 Gauss points and
|
|
30
|
+
* extrapolated bilinearly to the corners.
|
|
31
|
+
* - Moments follow the member convention: M11 is positive when it puts the −3 face in tension
|
|
32
|
+
* (sagging with local 3 up), so M = −∫ z·σ dz.
|
|
33
|
+
* - The plate has no shear strain, so V13, V23 come from moment equilibrium,
|
|
34
|
+
* `V13 = −(∂M11/∂x₁ + ∂M12/∂x₂)` and `V23 = −(∂M12/∂x₁ + ∂M22/∂x₂)` (as V2 = −dM3/dx for a
|
|
35
|
+
* member), on the bilinear field through the Gauss-point moments. They are coarser than the
|
|
36
|
+
* moments.
|
|
37
|
+
*
|
|
38
|
+
* Everything is linear in `U`, so load combinations superpose it.
|
|
39
|
+
*/
|
|
40
|
+
const shellRawForces = (shell, U) => {
|
|
41
|
+
const { element, type, section, modifiers: m } = shell;
|
|
42
|
+
const dofs = (0, global_assembly_1.elementDofs)(shell.nodeIndices);
|
|
43
|
+
// local DOFs [u₁ u₂ u₃ r₁ r₂ r₃] of each projected corner
|
|
44
|
+
const local = element.transforms.map((T, i) => (0, matrix_1.matVec)(T, dofs.slice(6 * i, 6 * i + 6).map((d) => U[d])));
|
|
45
|
+
const { corners } = element.axes;
|
|
46
|
+
const properties = { E: section.E, nu: section.nu, t: section.thickness };
|
|
47
|
+
const out = new Array(4 * exports.SHELL_FORCE_COMPONENTS).fill(0);
|
|
48
|
+
const extrapolate = (atGauss, first) => {
|
|
49
|
+
atCorners.forEach(({ N }, c) => {
|
|
50
|
+
for (let k = 0; k < 3; k++) {
|
|
51
|
+
out[exports.SHELL_FORCE_COMPONENTS * c + first + k] = N.reduce((sum, w, g) => sum + w * atGauss[g][k], 0);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
if (type !== "plate") {
|
|
56
|
+
const D = (0, membrane_quad_1.membraneRigidity)({ ...properties, modifiers: [m.f11 ?? 1, m.f22 ?? 1, m.f12 ?? 1] });
|
|
57
|
+
const u = local.flatMap((d) => [d[0], d[1], d[5]]);
|
|
58
|
+
extrapolate(quad_geometry_1.GAUSS_2X2.map(({ xi, eta }) => (0, matrix_1.matVec)(D, (0, matrix_1.matVec)((0, membrane_quad_1.membraneStrainRows)(corners, xi, eta).B, u))), 0);
|
|
59
|
+
}
|
|
60
|
+
if (type !== "membrane") {
|
|
61
|
+
const D = (0, dkq_plate_1.plateRigidity)({ ...properties, modifiers: [m.m11 ?? 1, m.m22 ?? 1, m.m12 ?? 1] });
|
|
62
|
+
const w = local.flatMap((d) => [d[2], d[3], d[4]]);
|
|
63
|
+
const moments = quad_geometry_1.GAUSS_2X2.map(({ xi, eta }) => (0, matrix_1.matVec)(D, (0, matrix_1.matVec)((0, dkq_plate_1.dkqCurvatureRows)(corners, xi, eta).B, w)).map((v) => -v));
|
|
64
|
+
extrapolate(moments, 3);
|
|
65
|
+
CORNERS.forEach(([xi, eta], c) => {
|
|
66
|
+
const { dXi, dEta } = atCorners[c];
|
|
67
|
+
const { dX, dY } = (0, quad_geometry_1.cartesianDerivatives)((0, quad_geometry_1.quadJacobian)(corners, xi, eta), {
|
|
68
|
+
dXi: dXi.map((v) => ROOT3 * v),
|
|
69
|
+
dEta: dEta.map((v) => ROOT3 * v),
|
|
70
|
+
});
|
|
71
|
+
const d = (weights, k) => weights.reduce((sum, v, g) => sum + v * moments[g][k], 0);
|
|
72
|
+
out[exports.SHELL_FORCE_COMPONENTS * c + 6] = -(d(dX, 0) + d(dY, 2));
|
|
73
|
+
out[exports.SHELL_FORCE_COMPONENTS * c + 7] = -(d(dX, 2) + d(dY, 1));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
};
|
|
78
|
+
exports.shellRawForces = shellRawForces;
|
|
79
|
+
const round = (value) => (0, math_1.roundToDecimalPlaces)(value, FORCE_DECIMALS) + 0; // + 0: no −0
|
|
80
|
+
/**
|
|
81
|
+
* The presented forces of one shell: kN/m, kN·m/m and kN/m per corner, with the face stresses
|
|
82
|
+
* `σ = F/t ∓ 6M/t²` in MPa (top = +3 face).
|
|
83
|
+
*
|
|
84
|
+
* @param raw - From `shellRawForces`, or a factored sum of them
|
|
85
|
+
*/
|
|
86
|
+
const presentShellForces = (shell, nodeIds, raw) => {
|
|
87
|
+
const t = shell.section.thickness;
|
|
88
|
+
return {
|
|
89
|
+
shellId: shell.id,
|
|
90
|
+
areaId: shell.areaId,
|
|
91
|
+
corners: nodeIds.map((nodeId, c) => {
|
|
92
|
+
const [F11, F22, F12, M11, M22, M12, V13, V23] = raw.slice(exports.SHELL_FORCE_COMPONENTS * c, exports.SHELL_FORCE_COMPONENTS * (c + 1));
|
|
93
|
+
// N/mm ÷ mm and N·mm/mm ÷ mm² are MPa
|
|
94
|
+
const face = (F, M, side) => round(F / t - (side * 6 * M) / t ** 2);
|
|
95
|
+
return {
|
|
96
|
+
nodeId,
|
|
97
|
+
F11: round(F11), // N/mm = kN/m
|
|
98
|
+
F22: round(F22),
|
|
99
|
+
F12: round(F12),
|
|
100
|
+
M11: round(M11 * 1e-3), // N·mm/mm = 10⁻³ kN·m/m
|
|
101
|
+
M22: round(M22 * 1e-3),
|
|
102
|
+
M12: round(M12 * 1e-3),
|
|
103
|
+
V13: round(V13),
|
|
104
|
+
V23: round(V23),
|
|
105
|
+
S11Top: face(F11, M11, 1),
|
|
106
|
+
S22Top: face(F22, M22, 1),
|
|
107
|
+
S12Top: face(F12, M12, 1),
|
|
108
|
+
S11Bot: face(F11, M11, -1),
|
|
109
|
+
S22Bot: face(F22, M22, -1),
|
|
110
|
+
S12Bot: face(F12, M12, -1),
|
|
111
|
+
};
|
|
112
|
+
}),
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
exports.presentShellForces = presentShellForces;
|
|
116
|
+
//# sourceMappingURL=shell-forces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-forces.js","sourceRoot":"","sources":["../../../../src/fea/frame/post/shell-forces.ts"],"names":[],"mappings":";;;AAAA,0CAAuD;AACvD,8CAA2C;AAE3C,2DAA8E;AAC9E,mEAAuF;AACvF,mEAKyC;AAEzC,+DAAwD;AAGxD,4FAA4F;AAC/E,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO,GAAuB;IAClC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACR,CAAC;AAEF;;;GAGG;AACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAErF;;;;;;;;;;;;;;GAcG;AACI,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,CAAW,EAAY,EAAE;IAC1E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,IAAI,GAAG,IAAA,6BAAW,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,0DAA0D;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5C,IAAA,eAAM,EACJ,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CACF,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,8BAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,CAAC,OAAmB,EAAE,KAAa,EAAE,EAAE;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,GAAG,CAAC,8BAAsB,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAA,gCAAgB,EAAC,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,WAAW,CACT,yBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,EAAE,IAAA,eAAM,EAAC,IAAA,kCAAkB,EAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5F,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,IAAA,yBAAa,EAAC,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,yBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAC5C,IAAA,eAAM,EAAC,CAAC,EAAE,IAAA,eAAM,EAAC,IAAA,4BAAgB,EAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAC;QACF,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAA,oCAAoB,EAAC,IAAA,4BAAY,EAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;gBACtE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;aACjC,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,OAAiB,EAAE,CAAS,EAAE,EAAE,CACzC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,GAAG,CAAC,8BAAsB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,8BAAsB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AArDW,QAAA,cAAc,kBAqDzB;AAEF,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAA,2BAAoB,EAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;AAE/F;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAChC,KAAkB,EAClB,OAAsC,EACtC,GAAa,EACO,EAAE;IACtB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CACxD,8BAAsB,GAAG,CAAC,EAC1B,8BAAsB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACjC,CAAC;YACF,sCAAsC;YACtC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5F,OAAO;gBACL,MAAM;gBACN,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,cAAc;gBAC/B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;gBACf,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;gBACf,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,wBAAwB;gBAChD,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;gBACf,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;gBACf,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3B,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,kBAAkB,sBAmC7B"}
|
|
@@ -35,8 +35,9 @@ export interface FrameAnalysis {
|
|
|
35
35
|
* null areas, and combinations
|
|
36
36
|
* @param options - Diagram station count and detail
|
|
37
37
|
* @returns `{ result, memberDiagram }`
|
|
38
|
-
* @throws {FrameAnalysisError} 301–317 for an invalid model (with `details` and
|
|
39
|
-
* `issues`),
|
|
38
|
+
* @throws {FrameAnalysisError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
39
|
+
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
40
|
+
* to shells, 304 for an unstable structure
|
|
40
41
|
*/
|
|
41
42
|
export declare const createFrameAnalysis: (model: FrameModel, options?: AnalyzeFrameOptions) => FrameAnalysis;
|
|
42
43
|
/**
|
|
@@ -56,6 +57,8 @@ export declare const createFrameAnalysis: (model: FrameModel, options?: AnalyzeF
|
|
|
56
57
|
*
|
|
57
58
|
* Area loads on null areas (`areas`, `areaLoads`) are first turned into member loads on the
|
|
58
59
|
* members along each area's edges (see `distributeAreaLoads`); the areas add no stiffness.
|
|
60
|
+
* Shell areas (`shells`) are four-node flat shell elements with their own stiffness; area loads
|
|
61
|
+
* and self-weight on them act as forces at their corners.
|
|
59
62
|
*
|
|
60
63
|
* Model and result are plain data (JSON-serialisable), so the analysis can run in a Web Worker.
|
|
61
64
|
*
|
|
@@ -64,7 +67,8 @@ export declare const createFrameAnalysis: (model: FrameModel, options?: AnalyzeF
|
|
|
64
67
|
* @param options - Diagram station count and detail
|
|
65
68
|
* @returns `cases` and `combinations` keyed by id, `envelope` over the combinations,
|
|
66
69
|
* `calculationDetails`, `units` and `warnings`
|
|
67
|
-
* @throws {FrameAnalysisError} 301–317 for an invalid model (with `details` and
|
|
68
|
-
* `issues`),
|
|
70
|
+
* @throws {FrameAnalysisError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
71
|
+
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
72
|
+
* to shells, 304 for an unstable structure
|
|
69
73
|
*/
|
|
70
74
|
export declare const analyzeFrame: (model: FrameModel, options?: AnalyzeFrameOptions) => FrameResult;
|
|
@@ -6,6 +6,7 @@ const distribute_area_loads_1 = require("../area/distribute-area-loads");
|
|
|
6
6
|
const envelope_1 = require("../post/envelope");
|
|
7
7
|
const present_state_1 = require("../post/present-state");
|
|
8
8
|
const validate_model_1 = require("../validation/validate-model");
|
|
9
|
+
const expand_model_1 = require("../mesh/expand-model");
|
|
9
10
|
const combinations_1 = require("./combinations");
|
|
10
11
|
const frame_system_1 = require("./frame-system");
|
|
11
12
|
const load_case_solver_1 = require("./load-case-solver");
|
|
@@ -41,14 +42,16 @@ const groupByCase = (loads = []) => {
|
|
|
41
42
|
* null areas, and combinations
|
|
42
43
|
* @param options - Diagram station count and detail
|
|
43
44
|
* @returns `{ result, memberDiagram }`
|
|
44
|
-
* @throws {FrameAnalysisError} 301–317 for an invalid model (with `details` and
|
|
45
|
-
* `issues`),
|
|
45
|
+
* @throws {FrameAnalysisError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
46
|
+
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
47
|
+
* to shells, 304 for an unstable structure
|
|
46
48
|
*/
|
|
47
49
|
const createFrameAnalysis = (model, options = {}) => {
|
|
48
50
|
const issues = (0, validate_model_1.validateFrameModel)(model);
|
|
49
51
|
if (issues.length > 0)
|
|
50
52
|
(0, validate_model_1.throwIssues)(issues);
|
|
51
|
-
const
|
|
53
|
+
const expanded = (0, expand_model_1.expandModel)(model);
|
|
54
|
+
const system = (0, frame_system_1.prepareFrameSystem)(expanded.model);
|
|
52
55
|
const combinations = model.combinations ?? [];
|
|
53
56
|
const resolved = (0, combinations_1.resolveCombinations)(combinations, new Set(model.loadCases.map((c) => c.id)));
|
|
54
57
|
const withStations = (options.diagrams ?? "full") === "full";
|
|
@@ -60,10 +63,13 @@ const createFrameAnalysis = (model, options = {}) => {
|
|
|
60
63
|
...(model.memberLoads ?? []),
|
|
61
64
|
...fromAreas.memberLoads,
|
|
62
65
|
]);
|
|
66
|
+
// area loads on shells load the shell elements; those on null areas became member loads
|
|
67
|
+
const shellByCase = groupByCase((model.areaLoads ?? []).filter((load) => system.shellsByArea.has(load.areaId)));
|
|
63
68
|
for (const loadCase of model.loadCases) {
|
|
64
69
|
const state = (0, load_case_solver_1.solveLoadCase)(system, loadCase, {
|
|
65
70
|
nodalLoads: nodalByCase.get(loadCase.id) ?? [],
|
|
66
71
|
memberLoads: memberByCase.get(loadCase.id) ?? [],
|
|
72
|
+
shellLoads: shellByCase.get(loadCase.id) ?? [],
|
|
67
73
|
});
|
|
68
74
|
states.set(loadCase.id, state);
|
|
69
75
|
cases[loadCase.id] = (0, present_state_1.presentState)(system, state, { id: loadCase.id, kind: "case", name: loadCase.name, type: loadCase.type }, { stations: options.stations, withStations });
|
|
@@ -79,6 +85,7 @@ const createFrameAnalysis = (model, options = {}) => {
|
|
|
79
85
|
}
|
|
80
86
|
const warnings = [
|
|
81
87
|
...fromAreas.warnings,
|
|
88
|
+
...expanded.warnings,
|
|
82
89
|
...[...Object.values(cases), ...Object.values(combinationResults)].flatMap((r) => r.warnings.map((w) => ({
|
|
83
90
|
...w,
|
|
84
91
|
message: `${r.kind === "case" ? "Load case" : "Load combination"} "${r.id}": ${w.message}`,
|
|
@@ -89,9 +96,11 @@ const createFrameAnalysis = (model, options = {}) => {
|
|
|
89
96
|
cases,
|
|
90
97
|
combinations: combinationResults,
|
|
91
98
|
envelope: combinationList.length > 0 ? (0, envelope_1.buildEnvelope)(combinationList) : undefined,
|
|
99
|
+
...(expanded.mesh ? { mesh: expanded.mesh } : {}),
|
|
92
100
|
calculationDetails: {
|
|
93
101
|
nodeCount: system.nodes.length,
|
|
94
|
-
memberCount: system.
|
|
102
|
+
memberCount: system.memberGroups.length,
|
|
103
|
+
shellCount: system.shells.length,
|
|
95
104
|
dofCount: system.dofCount,
|
|
96
105
|
freeDofCount: system.free.length,
|
|
97
106
|
profileSize: system.profileSize,
|
|
@@ -99,7 +108,15 @@ const createFrameAnalysis = (model, options = {}) => {
|
|
|
99
108
|
combinationCount: combinations.length,
|
|
100
109
|
autoRestrainedDofs: autoRestrainedDofs(system),
|
|
101
110
|
},
|
|
102
|
-
units: {
|
|
111
|
+
units: {
|
|
112
|
+
force: "kN",
|
|
113
|
+
moment: "kN·m",
|
|
114
|
+
length: "mm",
|
|
115
|
+
rotation: "rad",
|
|
116
|
+
forcePerLength: "kN/m",
|
|
117
|
+
momentPerLength: "kN·m/m",
|
|
118
|
+
stress: "MPa",
|
|
119
|
+
},
|
|
103
120
|
warnings,
|
|
104
121
|
};
|
|
105
122
|
return {
|
|
@@ -133,6 +150,8 @@ exports.createFrameAnalysis = createFrameAnalysis;
|
|
|
133
150
|
*
|
|
134
151
|
* Area loads on null areas (`areas`, `areaLoads`) are first turned into member loads on the
|
|
135
152
|
* members along each area's edges (see `distributeAreaLoads`); the areas add no stiffness.
|
|
153
|
+
* Shell areas (`shells`) are four-node flat shell elements with their own stiffness; area loads
|
|
154
|
+
* and self-weight on them act as forces at their corners.
|
|
136
155
|
*
|
|
137
156
|
* Model and result are plain data (JSON-serialisable), so the analysis can run in a Web Worker.
|
|
138
157
|
*
|
|
@@ -141,8 +160,9 @@ exports.createFrameAnalysis = createFrameAnalysis;
|
|
|
141
160
|
* @param options - Diagram station count and detail
|
|
142
161
|
* @returns `cases` and `combinations` keyed by id, `envelope` over the combinations,
|
|
143
162
|
* `calculationDetails`, `units` and `warnings`
|
|
144
|
-
* @throws {FrameAnalysisError} 301–317 for an invalid model (with `details` and
|
|
145
|
-
* `issues`),
|
|
163
|
+
* @throws {FrameAnalysisError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
164
|
+
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
165
|
+
* to shells, 304 for an unstable structure
|
|
146
166
|
*/
|
|
147
167
|
const analyzeFrame = (model, options = {}) => (0, exports.createFrameAnalysis)(model, options).result;
|
|
148
168
|
exports.analyzeFrame = analyzeFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-frame.js","sourceRoot":"","sources":["../../../../src/fea/frame/solver/analyze-frame.ts"],"names":[],"mappings":";;;AACA,0CAAuD;AAEvD,yEAAgE;AAChE,+CAAiD;AACjD,yDAA2E;AAQ3E,iEAA+E;AAC/E,iDAAqD;AACrD,iDAAsE;AACtE,yDAAiF;AA8BjF,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAElD,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAuB,EAAE,CACtE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAoB,EAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAA6B,CAAC;IAC5F,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;QAC7B,IAAI,EAAE,OAAO;QACb,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,oFAAoF;AACpF,MAAM,WAAW,GAAG,CAAiC,QAAa,EAAE,EAAoB,EAAE;IACxF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"analyze-frame.js","sourceRoot":"","sources":["../../../../src/fea/frame/solver/analyze-frame.ts"],"names":[],"mappings":";;;AACA,0CAAuD;AAEvD,yEAAgE;AAChE,+CAAiD;AACjD,yDAA2E;AAQ3E,iEAA+E;AAC/E,uDAAmD;AACnD,iDAAqD;AACrD,iDAAsE;AACtE,yDAAiF;AA8BjF,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAElD,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAuB,EAAE,CACtE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAoB,EAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAA6B,CAAC;IAC5F,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;QAC7B,IAAI,EAAE,OAAO;QACb,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,oFAAoF;AACpF,MAAM,WAAW,GAAG,CAAiC,QAAa,EAAE,EAAoB,EAAE;IACxF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAiB,EACjB,UAA+B,EAAE,EAClB,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,mCAAkB,EAAC,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,IAAA,0BAAW,EAAC,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAA,iCAAkB,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAA,uCAAe,EAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,MAAM,WAAW,GAAG,WAAW,CAAY,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,WAAW,CAAa;QAC3C,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5B,GAAG,SAAS,CAAC,WAAW;KACzB,CAAC,CAAC;IACH,wFAAwF;IACxF,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC/E,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAA,gCAAa,EAAC,MAAM,EAAE,QAAQ,EAAE;YAC5C,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;YAC9C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;YAChD,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAA,4BAAY,EAC/B,MAAM,EACN,KAAK,EACL,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAC3E,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,MAAM,kBAAkB,GAAoC,EAAE,CAAC;IAC/D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,2DAA2D;QAC3D,MAAM,KAAK,GAAG,CAAC,GAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAyB,CAAC,CAAC,GAAG,CAC1E,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAa,EAAE,MAAM,EAAE,CAAC,CAC1E,CAAC;QACF,MAAM,KAAK,GAAG,IAAA,gCAAa,EAAC,KAAK,CAAC,CAAC;QACnC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAA,4BAAY,EAC/C,MAAM,EACN,KAAK,EACL,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EACnE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAa;QACzB,GAAG,SAAS,CAAC,QAAQ;QACrB,GAAG,QAAQ,CAAC,QAAQ;QACpB,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/E,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrB,GAAG,CAAC;YACJ,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE;SAC3F,CAAC,CAAC,CACJ;KACF,CAAC;IAEF,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAgB;QAC1B,KAAK;QACL,YAAY,EAAE,kBAAkB;QAChC,QAAQ,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB,EAAE;YAClB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC9B,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;YACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YACrC,gBAAgB,EAAE,YAAY,CAAC,MAAM;YACrC,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,CAAC;SAC/C;QACD,KAAK,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,MAAM;YACtB,eAAe,EAAE,QAAQ;YACzB,MAAM,EAAE,KAAK;SACd;QACD,QAAQ;KACT,CAAC;IAEF,OAAO;QACL,MAAM;QACN,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,wBAAwB,CAAC,CAAC;YAC3F,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YACxF,OAAO,IAAA,oCAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA3GW,QAAA,mBAAmB,uBA2G9B;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACI,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,UAA+B,EAAE,EAAe,EAAE,CAChG,IAAA,2BAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;AADhC,QAAA,YAAY,gBACoB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Matrix } from "../../../utils/matrix";
|
|
2
1
|
import type { BoundaryConditions } from "./boundary-conditions";
|
|
2
|
+
import type { StiffnessElement } from "./global-assembly";
|
|
3
3
|
/** A rotation direction at a node that no member, restraint or spring resists. */
|
|
4
4
|
export interface AutoRestraint {
|
|
5
5
|
node: number;
|
|
@@ -10,19 +10,32 @@ export interface AutoRestraint {
|
|
|
10
10
|
* Finds the joint rotations that nothing resists, so they can be held instead of making the
|
|
11
11
|
* stiffness singular — e.g. a truss joint where every member releases its end moments.
|
|
12
12
|
*
|
|
13
|
-
* For each node with
|
|
14
|
-
*
|
|
13
|
+
* For each node with elements, the free rotational block `B` (3×3, global) of the assembled
|
|
14
|
+
* element stiffness plus rotational springs is decomposed; every eigenvector whose eigenvalue
|
|
15
15
|
* is below `SINGULARITY_TOLERANCE` times the block's largest diagonal is a null direction `n`.
|
|
16
|
-
* Each
|
|
16
|
+
* Each element's global stiffness is positive semi-definite, so `nᵀ·B·n = 0` makes the whole
|
|
17
17
|
* stiffness column of `n` zero: the rotation along `n` is decoupled from every other DOF, and a
|
|
18
18
|
* spring `k·n·nᵀ` there carries no force unless a load has a moment component along `n`.
|
|
19
19
|
*
|
|
20
20
|
* @param nodeCount - Number of nodes
|
|
21
|
-
* @param
|
|
21
|
+
* @param elements - Node indices and global stiffness (6 DOFs per node) of every element, members
|
|
22
|
+
* included (N and mm)
|
|
22
23
|
* @param boundary - Fixed DOFs and spring stiffnesses
|
|
23
24
|
*/
|
|
24
|
-
export declare const findAutoRestraints: (nodeCount: number,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
export declare const findAutoRestraints: (nodeCount: number, elements: StiffnessElement[], boundary: BoundaryConditions) => AutoRestraint[];
|
|
26
|
+
/** A translation direction at a node that nothing resists. */
|
|
27
|
+
export interface UnresistedTranslation {
|
|
28
|
+
node: number;
|
|
29
|
+
axis: [number, number, number];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Finds the translations that nothing resists at the given nodes: the null directions of each
|
|
33
|
+
* node's free translational block (3×3, global) of the assembled element stiffness plus
|
|
34
|
+
* translational springs, by the same eigen-decomposition as `findAutoRestraints`. Such a
|
|
35
|
+
* direction is decoupled from every other DOF, so the structure is a mechanism there.
|
|
36
|
+
*
|
|
37
|
+
* @param nodes - Node indices to check, e.g. nodes connected only to shells
|
|
38
|
+
* @param elements - Node indices and global stiffness (6 DOFs per node) of every element
|
|
39
|
+
* @param boundary - Fixed DOFs and spring stiffnesses
|
|
40
|
+
*/
|
|
41
|
+
export declare const findUnresistedTranslations: (nodes: Iterable<number>, elements: StiffnessElement[], boundary: BoundaryConditions) => UnresistedTranslation[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findAutoRestraints = void 0;
|
|
3
|
+
exports.findUnresistedTranslations = exports.findAutoRestraints = void 0;
|
|
4
4
|
const frame_constant_1 = require("../../../core/constants/frame.constant");
|
|
5
5
|
/**
|
|
6
6
|
* Eigen-decomposition of a small symmetric matrix by cyclic Jacobi rotations.
|
|
@@ -55,26 +55,27 @@ const symmetricEigen = (M) => {
|
|
|
55
55
|
* Finds the joint rotations that nothing resists, so they can be held instead of making the
|
|
56
56
|
* stiffness singular — e.g. a truss joint where every member releases its end moments.
|
|
57
57
|
*
|
|
58
|
-
* For each node with
|
|
59
|
-
*
|
|
58
|
+
* For each node with elements, the free rotational block `B` (3×3, global) of the assembled
|
|
59
|
+
* element stiffness plus rotational springs is decomposed; every eigenvector whose eigenvalue
|
|
60
60
|
* is below `SINGULARITY_TOLERANCE` times the block's largest diagonal is a null direction `n`.
|
|
61
|
-
* Each
|
|
61
|
+
* Each element's global stiffness is positive semi-definite, so `nᵀ·B·n = 0` makes the whole
|
|
62
62
|
* stiffness column of `n` zero: the rotation along `n` is decoupled from every other DOF, and a
|
|
63
63
|
* spring `k·n·nᵀ` there carries no force unless a load has a moment component along `n`.
|
|
64
64
|
*
|
|
65
65
|
* @param nodeCount - Number of nodes
|
|
66
|
-
* @param
|
|
66
|
+
* @param elements - Node indices and global stiffness (6 DOFs per node) of every element, members
|
|
67
|
+
* included (N and mm)
|
|
67
68
|
* @param boundary - Fixed DOFs and spring stiffnesses
|
|
68
69
|
*/
|
|
69
|
-
const findAutoRestraints = (nodeCount,
|
|
70
|
+
const findAutoRestraints = (nodeCount, elements, boundary) => {
|
|
70
71
|
const blocks = new Array(nodeCount).fill(null);
|
|
71
|
-
for (const
|
|
72
|
-
|
|
72
|
+
for (const element of elements) {
|
|
73
|
+
element.nodes.forEach((node, position) => {
|
|
73
74
|
const block = (blocks[node] ?? (blocks[node] = [0, 1, 2].map(() => [0, 0, 0])));
|
|
74
|
-
const base = 6 *
|
|
75
|
+
const base = 6 * position + 3;
|
|
75
76
|
for (let i = 0; i < 3; i++) {
|
|
76
77
|
for (let j = 0; j < 3; j++)
|
|
77
|
-
block[i][j] +=
|
|
78
|
+
block[i][j] += element.kGlobal[base + i][base + j];
|
|
78
79
|
}
|
|
79
80
|
});
|
|
80
81
|
}
|
|
@@ -83,7 +84,7 @@ const findAutoRestraints = (nodeCount, members, boundary) => {
|
|
|
83
84
|
const restraints = [];
|
|
84
85
|
blocks.forEach((block, node) => {
|
|
85
86
|
if (!block)
|
|
86
|
-
return; // a node without
|
|
87
|
+
return; // a node without elements is a mechanism, left for the factorisation
|
|
87
88
|
const free = [0, 1, 2].filter((i) => !boundary.fixed[6 * node + 3 + i]);
|
|
88
89
|
if (free.length === 0)
|
|
89
90
|
return;
|
|
@@ -105,4 +106,52 @@ const findAutoRestraints = (nodeCount, members, boundary) => {
|
|
|
105
106
|
return restraints;
|
|
106
107
|
};
|
|
107
108
|
exports.findAutoRestraints = findAutoRestraints;
|
|
109
|
+
/**
|
|
110
|
+
* Finds the translations that nothing resists at the given nodes: the null directions of each
|
|
111
|
+
* node's free translational block (3×3, global) of the assembled element stiffness plus
|
|
112
|
+
* translational springs, by the same eigen-decomposition as `findAutoRestraints`. Such a
|
|
113
|
+
* direction is decoupled from every other DOF, so the structure is a mechanism there.
|
|
114
|
+
*
|
|
115
|
+
* @param nodes - Node indices to check, e.g. nodes connected only to shells
|
|
116
|
+
* @param elements - Node indices and global stiffness (6 DOFs per node) of every element
|
|
117
|
+
* @param boundary - Fixed DOFs and spring stiffnesses
|
|
118
|
+
*/
|
|
119
|
+
const findUnresistedTranslations = (nodes, elements, boundary) => {
|
|
120
|
+
const blocks = new Map();
|
|
121
|
+
for (const node of nodes)
|
|
122
|
+
blocks.set(node, [0, 1, 2].map(() => [0, 0, 0]));
|
|
123
|
+
for (const element of elements) {
|
|
124
|
+
element.nodes.forEach((node, position) => {
|
|
125
|
+
const block = blocks.get(node);
|
|
126
|
+
if (!block)
|
|
127
|
+
return;
|
|
128
|
+
const base = 6 * position;
|
|
129
|
+
for (let i = 0; i < 3; i++) {
|
|
130
|
+
for (let j = 0; j < 3; j++)
|
|
131
|
+
block[i][j] += element.kGlobal[base + i][base + j];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
const unresisted = [];
|
|
136
|
+
blocks.forEach((block, node) => {
|
|
137
|
+
const free = [0, 1, 2].filter((i) => !boundary.fixed[6 * node + i]);
|
|
138
|
+
if (free.length === 0)
|
|
139
|
+
return;
|
|
140
|
+
const sub = free.map((i) => free.map((j) => block[i][j] + (i === j ? boundary.spring[6 * node + i] : 0)));
|
|
141
|
+
const scale = Math.max(...sub.map((row, i) => Math.abs(row[i])));
|
|
142
|
+
const { values, vectors } = symmetricEigen(sub);
|
|
143
|
+
values.forEach((value, e) => {
|
|
144
|
+
if (scale > 0 && value > frame_constant_1.SINGULARITY_TOLERANCE * scale)
|
|
145
|
+
return;
|
|
146
|
+
const axis = [0, 0, 0];
|
|
147
|
+
free.forEach((i, k) => (axis[i] = vectors[e][k]));
|
|
148
|
+
const lead = axis.reduce((best, c, i) => (Math.abs(c) > Math.abs(axis[best]) ? i : best), 0);
|
|
149
|
+
if (axis[lead] < 0)
|
|
150
|
+
axis.forEach((c, i) => (axis[i] = -c));
|
|
151
|
+
unresisted.push({ node, axis });
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
return unresisted;
|
|
155
|
+
};
|
|
156
|
+
exports.findUnresistedTranslations = findUnresistedTranslations;
|
|
108
157
|
//# sourceMappingURL=auto-restraint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-restraint.js","sourceRoot":"","sources":["../../../../src/fea/frame/solver/auto-restraint.ts"],"names":[],"mappings":";;;AAAA,uEAA2E;
|
|
1
|
+
{"version":3,"file":"auto-restraint.js","sourceRoot":"","sources":["../../../../src/fea/frame/solver/auto-restraint.ts"],"names":[],"mappings":"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"}
|