@theerapat-s28/ts-structural-eng-tools 3.1.0 → 3.2.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 +33 -1
- package/README.md +284 -127
- package/dist/core/errors/fea.error.d.ts +47 -0
- package/dist/{esm/core/errors/frame-analysis.error.js → core/errors/fea.error.js} +14 -5
- package/dist/core/errors/fea.error.js.map +1 -0
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.js +8 -4
- package/dist/core/index.js.map +1 -1
- package/dist/{core/errors/frame-analysis.error.js → esm/core/errors/fea.error.js} +10 -9
- package/dist/esm/core/errors/fea.error.js.map +1 -0
- package/dist/esm/core/index.js +3 -1
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/fea/analysis/index.js +6 -0
- package/dist/esm/fea/analysis/index.js.map +1 -0
- package/dist/esm/fea/{frame → analysis}/mesh/expand-model.js +12 -6
- package/dist/esm/fea/analysis/mesh/expand-model.js.map +1 -0
- package/dist/esm/fea/{frame → analysis}/post/demand-envelope.js +4 -4
- package/dist/esm/fea/analysis/post/demand-envelope.js.map +1 -0
- package/dist/esm/fea/analysis/post/envelope.js.map +1 -0
- package/dist/esm/fea/{frame → analysis}/post/present-state.js +4 -4
- package/dist/esm/fea/analysis/post/present-state.js.map +1 -0
- package/dist/esm/fea/{frame/solver/frame-system.js → analysis/solver/analysis-system.js} +17 -90
- package/dist/esm/fea/analysis/solver/analysis-system.js.map +1 -0
- package/dist/esm/fea/{frame/solver/analyze-frame.js → analysis/solver/analyze.js} +20 -18
- package/dist/esm/fea/analysis/solver/analyze.js.map +1 -0
- package/dist/esm/fea/{frame → analysis}/solver/combinations.js +8 -8
- package/dist/esm/fea/analysis/solver/combinations.js.map +1 -0
- package/dist/esm/fea/analysis/solver/distribute-area-loads.js +25 -0
- package/dist/esm/fea/analysis/solver/distribute-area-loads.js.map +1 -0
- package/dist/esm/fea/analysis/solver/load-case-solver.js +103 -0
- package/dist/esm/fea/analysis/solver/load-case-solver.js.map +1 -0
- package/dist/esm/fea/analysis/types/model.type.js +2 -0
- package/dist/esm/fea/analysis/types/model.type.js.map +1 -0
- package/dist/esm/fea/analysis/types/results.type.js +2 -0
- package/dist/esm/fea/analysis/types/results.type.js.map +1 -0
- package/dist/esm/fea/analysis/validation/validate-model.js +263 -0
- package/dist/esm/fea/analysis/validation/validate-model.js.map +1 -0
- package/dist/esm/fea/deprecated.js +9 -0
- package/dist/esm/fea/deprecated.js.map +1 -0
- package/dist/esm/fea/frame/area/{distribute-area-loads.js → area-member-loads.js} +7 -28
- package/dist/esm/fea/frame/area/area-member-loads.js.map +1 -0
- package/dist/esm/fea/frame/area/edge-members.js.map +1 -1
- package/dist/esm/fea/frame/elements/end-releases.js +2 -6
- package/dist/esm/fea/frame/elements/end-releases.js.map +1 -1
- package/dist/esm/fea/frame/elements/fixed-end-forces.js +5 -5
- package/dist/esm/fea/frame/elements/fixed-end-forces.js.map +1 -1
- package/dist/esm/fea/frame/elements/static-condensation.js +3 -3
- package/dist/esm/fea/frame/elements/static-condensation.js.map +1 -1
- package/dist/esm/fea/frame/index.js +1 -4
- package/dist/esm/fea/frame/index.js.map +1 -1
- package/dist/esm/fea/frame/post/member-diagram.js.map +1 -1
- package/dist/esm/fea/frame/solver/{global-assembly.js → member-assembly.js} +2 -10
- package/dist/esm/fea/frame/solver/member-assembly.js.map +1 -0
- package/dist/esm/fea/frame/solver/member-loads.js +141 -0
- package/dist/esm/fea/frame/solver/member-loads.js.map +1 -0
- package/dist/esm/fea/frame/solver/system-member.js +66 -0
- package/dist/esm/fea/frame/solver/system-member.js.map +1 -0
- package/dist/esm/fea/frame/transformation/coordinate-transform.js +3 -3
- package/dist/esm/fea/frame/transformation/coordinate-transform.js.map +1 -1
- package/dist/esm/fea/frame/validation/validate-members.js +160 -0
- package/dist/esm/fea/frame/validation/validate-members.js.map +1 -0
- package/dist/esm/fea/frame/validation/validate-null-areas.js +88 -0
- package/dist/esm/fea/frame/validation/validate-null-areas.js.map +1 -0
- package/dist/esm/fea/index.js +4 -1
- package/dist/esm/fea/index.js.map +1 -1
- package/dist/esm/fea/shared/index.js +2 -0
- package/dist/esm/fea/shared/index.js.map +1 -0
- package/dist/esm/fea/shared/solver/auto-restraint.js.map +1 -0
- package/dist/esm/fea/{frame → shared}/solver/boundary-conditions.js +5 -1
- package/dist/esm/fea/shared/solver/boundary-conditions.js.map +1 -0
- package/dist/esm/fea/shared/solver/global-assembly.js +10 -0
- package/dist/esm/fea/shared/solver/global-assembly.js.map +1 -0
- package/dist/esm/fea/shared/types/model.type.js +2 -0
- package/dist/esm/fea/shared/types/model.type.js.map +1 -0
- package/dist/esm/fea/shared/validation/issues.js +32 -0
- package/dist/esm/fea/shared/validation/issues.js.map +1 -0
- package/dist/esm/fea/{frame/elements/shell → shell/elements}/dkq-plate.js +1 -1
- package/dist/esm/fea/shell/elements/dkq-plate.js.map +1 -0
- package/dist/esm/fea/{frame/elements/shell → shell/elements}/flat-shell.js +1 -1
- package/dist/esm/fea/shell/elements/flat-shell.js.map +1 -0
- package/dist/esm/fea/{frame/elements/shell → shell/elements}/membrane-quad.js +2 -2
- package/dist/esm/fea/shell/elements/membrane-quad.js.map +1 -0
- package/dist/esm/fea/shell/elements/quad-geometry.js.map +1 -0
- package/dist/esm/fea/shell/elements/rigidity.js.map +1 -0
- package/dist/esm/fea/{frame/elements/shell → shell/elements}/shell-axes.js +1 -1
- package/dist/esm/fea/shell/elements/shell-axes.js.map +1 -0
- package/dist/esm/fea/shell/index.js +2 -0
- package/dist/esm/fea/shell/index.js.map +1 -0
- package/dist/esm/fea/{frame → shell}/mesh/mesh-shells.js +1 -1
- package/dist/esm/fea/shell/mesh/mesh-shells.js.map +1 -0
- package/dist/esm/fea/{frame → shell}/post/shell-forces.js +4 -4
- package/dist/esm/fea/{frame → shell}/post/shell-forces.js.map +1 -1
- package/dist/esm/fea/shell/solver/shell-loads.js +53 -0
- package/dist/esm/fea/shell/solver/shell-loads.js.map +1 -0
- package/dist/esm/fea/shell/solver/system-shell.js +37 -0
- package/dist/esm/fea/shell/solver/system-shell.js.map +1 -0
- package/dist/esm/fea/shell/types/model.type.js +2 -0
- package/dist/esm/fea/shell/types/model.type.js.map +1 -0
- package/dist/esm/fea/shell/types/results.type.js +2 -0
- package/dist/esm/fea/shell/types/results.type.js.map +1 -0
- package/dist/esm/fea/shell/validation/validate-shells.js +98 -0
- package/dist/esm/fea/shell/validation/validate-shells.js.map +1 -0
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/fea/analysis/index.d.ts +8 -0
- package/dist/fea/analysis/index.js +14 -0
- package/dist/fea/analysis/index.js.map +1 -0
- package/dist/fea/{frame → analysis}/mesh/expand-model.d.ts +9 -7
- package/dist/fea/{frame → analysis}/mesh/expand-model.js +12 -6
- package/dist/fea/analysis/mesh/expand-model.js.map +1 -0
- package/dist/fea/{frame → analysis}/post/demand-envelope.d.ts +5 -5
- package/dist/fea/{frame → analysis}/post/demand-envelope.js +4 -4
- package/dist/fea/analysis/post/demand-envelope.js.map +1 -0
- package/dist/fea/{frame → analysis}/post/envelope.d.ts +2 -2
- package/dist/fea/analysis/post/envelope.js.map +1 -0
- package/dist/fea/{frame → analysis}/post/present-state.d.ts +6 -5
- package/dist/fea/{frame → analysis}/post/present-state.js +5 -5
- package/dist/fea/analysis/post/present-state.js.map +1 -0
- package/dist/fea/analysis/solver/analysis-system.d.ts +46 -0
- package/dist/fea/{frame/solver/frame-system.js → analysis/solver/analysis-system.js} +22 -95
- package/dist/fea/analysis/solver/analysis-system.js.map +1 -0
- package/dist/fea/{frame/solver/analyze-frame.d.ts → analysis/solver/analyze.d.ts} +23 -20
- package/dist/fea/{frame/solver/analyze-frame.js → analysis/solver/analyze.js} +25 -23
- package/dist/fea/analysis/solver/analyze.js.map +1 -0
- package/dist/fea/{frame → analysis}/solver/combinations.d.ts +1 -1
- package/dist/fea/{frame → analysis}/solver/combinations.js +8 -8
- package/dist/fea/analysis/solver/combinations.js.map +1 -0
- package/dist/fea/{frame/area → analysis/solver}/distribute-area-loads.d.ts +6 -15
- package/dist/fea/analysis/solver/distribute-area-loads.js +29 -0
- package/dist/fea/analysis/solver/distribute-area-loads.js.map +1 -0
- package/dist/fea/{frame → analysis}/solver/load-case-solver.d.ts +9 -13
- package/dist/fea/analysis/solver/load-case-solver.js +108 -0
- package/dist/fea/analysis/solver/load-case-solver.js.map +1 -0
- package/dist/fea/analysis/types/model.type.d.ts +80 -0
- package/dist/fea/analysis/types/model.type.js +3 -0
- package/dist/fea/analysis/types/model.type.js.map +1 -0
- package/dist/fea/analysis/types/results.type.d.ts +113 -0
- package/dist/fea/analysis/types/results.type.js +3 -0
- package/dist/fea/analysis/types/results.type.js.map +1 -0
- package/dist/fea/analysis/validation/validate-model.d.ts +12 -0
- package/dist/fea/analysis/validation/validate-model.js +267 -0
- package/dist/fea/analysis/validation/validate-model.js.map +1 -0
- package/dist/fea/deprecated.d.ts +27 -0
- package/dist/fea/deprecated.js +12 -0
- package/dist/fea/deprecated.js.map +1 -0
- package/dist/fea/frame/area/area-member-loads.d.ts +19 -0
- package/dist/fea/frame/area/{distribute-area-loads.js → area-member-loads.js} +8 -30
- package/dist/fea/frame/area/area-member-loads.js.map +1 -0
- package/dist/fea/frame/area/edge-members.d.ts +5 -4
- package/dist/fea/frame/area/edge-members.js.map +1 -1
- package/dist/fea/frame/elements/end-releases.d.ts +1 -6
- package/dist/fea/frame/elements/end-releases.js +4 -8
- package/dist/fea/frame/elements/end-releases.js.map +1 -1
- package/dist/fea/frame/elements/fixed-end-forces.d.ts +1 -1
- package/dist/fea/frame/elements/fixed-end-forces.js +5 -5
- package/dist/fea/frame/elements/fixed-end-forces.js.map +1 -1
- package/dist/fea/frame/elements/static-condensation.d.ts +1 -1
- package/dist/fea/frame/elements/static-condensation.js +3 -3
- package/dist/fea/frame/elements/static-condensation.js.map +1 -1
- package/dist/fea/frame/index.d.ts +2 -8
- package/dist/fea/frame/index.js +2 -10
- package/dist/fea/frame/index.js.map +1 -1
- package/dist/fea/frame/post/member-diagram.d.ts +3 -3
- package/dist/fea/frame/post/member-diagram.js.map +1 -1
- package/dist/fea/frame/solver/{global-assembly.d.ts → member-assembly.d.ts} +0 -11
- package/dist/fea/frame/solver/{global-assembly.js → member-assembly.js} +4 -13
- package/dist/fea/frame/solver/member-assembly.js.map +1 -0
- package/dist/fea/frame/solver/member-loads.d.ts +21 -0
- package/dist/fea/frame/solver/member-loads.js +146 -0
- package/dist/fea/frame/solver/member-loads.js.map +1 -0
- package/dist/fea/frame/solver/system-member.d.ts +50 -0
- package/dist/fea/frame/solver/system-member.js +70 -0
- package/dist/fea/frame/solver/system-member.js.map +1 -0
- package/dist/fea/frame/transformation/coordinate-transform.d.ts +1 -1
- package/dist/fea/frame/transformation/coordinate-transform.js +3 -3
- package/dist/fea/frame/transformation/coordinate-transform.js.map +1 -1
- package/dist/fea/frame/types/model.type.d.ts +10 -175
- package/dist/fea/frame/types/results.type.d.ts +4 -159
- package/dist/fea/frame/validation/validate-members.d.ts +30 -0
- package/dist/fea/frame/validation/validate-members.js +165 -0
- package/dist/fea/frame/validation/validate-members.js.map +1 -0
- package/dist/fea/frame/validation/validate-null-areas.d.ts +38 -0
- package/dist/fea/frame/validation/validate-null-areas.js +93 -0
- package/dist/fea/frame/validation/validate-null-areas.js.map +1 -0
- package/dist/fea/index.d.ts +4 -0
- package/dist/fea/index.js +4 -1
- package/dist/fea/index.js.map +1 -1
- package/dist/fea/shared/index.d.ts +1 -0
- package/dist/fea/shared/index.js +3 -0
- package/dist/fea/shared/index.js.map +1 -0
- package/dist/fea/shared/solver/auto-restraint.js.map +1 -0
- package/dist/fea/{frame → shared}/solver/boundary-conditions.d.ts +5 -0
- package/dist/fea/{frame → shared}/solver/boundary-conditions.js +7 -3
- package/dist/fea/shared/solver/boundary-conditions.js.map +1 -0
- package/dist/fea/shared/solver/global-assembly.d.ts +12 -0
- package/dist/fea/shared/solver/global-assembly.js +14 -0
- package/dist/fea/shared/solver/global-assembly.js.map +1 -0
- package/dist/fea/shared/types/model.type.d.ts +34 -0
- package/dist/fea/shared/types/model.type.js +3 -0
- package/dist/fea/shared/types/model.type.js.map +1 -0
- package/dist/fea/shared/validation/issues.d.ts +9 -0
- package/dist/fea/shared/validation/issues.js +38 -0
- package/dist/fea/shared/validation/issues.js.map +1 -0
- package/dist/fea/{frame/elements/shell → shell/elements}/dkq-plate.d.ts +1 -1
- package/dist/fea/{frame/elements/shell → shell/elements}/dkq-plate.js +1 -1
- package/dist/fea/shell/elements/dkq-plate.js.map +1 -0
- package/dist/fea/{frame/elements/shell → shell/elements}/flat-shell.d.ts +1 -1
- package/dist/fea/{frame/elements/shell → shell/elements}/flat-shell.js +1 -1
- package/dist/fea/shell/elements/flat-shell.js.map +1 -0
- package/dist/fea/{frame/elements/shell → shell/elements}/membrane-quad.d.ts +1 -1
- package/dist/fea/{frame/elements/shell → shell/elements}/membrane-quad.js +2 -2
- package/dist/fea/shell/elements/membrane-quad.js.map +1 -0
- package/dist/fea/shell/elements/quad-geometry.js.map +1 -0
- package/dist/fea/{frame/elements/shell → shell/elements}/rigidity.d.ts +1 -1
- package/dist/fea/shell/elements/rigidity.js.map +1 -0
- package/dist/fea/{frame/elements/shell → shell/elements}/shell-axes.d.ts +1 -1
- package/dist/fea/{frame/elements/shell → shell/elements}/shell-axes.js +1 -1
- package/dist/fea/shell/elements/shell-axes.js.map +1 -0
- package/dist/fea/shell/index.d.ts +2 -0
- package/dist/fea/shell/index.js +3 -0
- package/dist/fea/shell/index.js.map +1 -0
- package/dist/fea/{frame → shell}/mesh/mesh-shells.d.ts +7 -6
- package/dist/fea/{frame → shell}/mesh/mesh-shells.js +1 -1
- package/dist/fea/shell/mesh/mesh-shells.js.map +1 -0
- package/dist/fea/{frame → shell}/post/shell-forces.d.ts +1 -1
- package/dist/fea/{frame → shell}/post/shell-forces.js +4 -4
- package/dist/fea/{frame → shell}/post/shell-forces.js.map +1 -1
- package/dist/fea/shell/solver/shell-loads.d.ts +17 -0
- package/dist/fea/shell/solver/shell-loads.js +57 -0
- package/dist/fea/shell/solver/shell-loads.js.map +1 -0
- package/dist/fea/shell/solver/system-shell.d.ts +29 -0
- package/dist/fea/shell/solver/system-shell.js +41 -0
- package/dist/fea/shell/solver/system-shell.js.map +1 -0
- package/dist/fea/shell/types/model.type.d.ts +57 -0
- package/dist/fea/shell/types/model.type.js +3 -0
- package/dist/fea/shell/types/model.type.js.map +1 -0
- package/dist/fea/shell/types/results.type.d.ts +47 -0
- package/dist/fea/shell/types/results.type.js +3 -0
- package/dist/fea/shell/types/results.type.js.map +1 -0
- package/dist/fea/shell/validation/validate-shells.d.ts +21 -0
- package/dist/fea/shell/validation/validate-shells.js +103 -0
- package/dist/fea/shell/validation/validate-shells.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/errors/frame-analysis.error.d.ts +0 -37
- package/dist/core/errors/frame-analysis.error.js.map +0 -1
- package/dist/esm/core/errors/frame-analysis.error.js.map +0 -1
- package/dist/esm/fea/frame/area/distribute-area-loads.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/dkq-plate.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/flat-shell.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/membrane-quad.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/quad-geometry.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/rigidity.js.map +0 -1
- package/dist/esm/fea/frame/elements/shell/shell-axes.js.map +0 -1
- package/dist/esm/fea/frame/mesh/expand-model.js.map +0 -1
- package/dist/esm/fea/frame/mesh/mesh-shells.js.map +0 -1
- package/dist/esm/fea/frame/post/demand-envelope.js.map +0 -1
- package/dist/esm/fea/frame/post/envelope.js.map +0 -1
- package/dist/esm/fea/frame/post/present-state.js.map +0 -1
- package/dist/esm/fea/frame/solver/analyze-frame.js.map +0 -1
- package/dist/esm/fea/frame/solver/auto-restraint.js.map +0 -1
- package/dist/esm/fea/frame/solver/boundary-conditions.js.map +0 -1
- package/dist/esm/fea/frame/solver/combinations.js.map +0 -1
- package/dist/esm/fea/frame/solver/frame-system.js.map +0 -1
- package/dist/esm/fea/frame/solver/global-assembly.js.map +0 -1
- package/dist/esm/fea/frame/solver/load-case-solver.js +0 -255
- package/dist/esm/fea/frame/solver/load-case-solver.js.map +0 -1
- package/dist/esm/fea/frame/validation/validate-model.js +0 -529
- package/dist/esm/fea/frame/validation/validate-model.js.map +0 -1
- package/dist/fea/frame/area/distribute-area-loads.js.map +0 -1
- package/dist/fea/frame/elements/shell/dkq-plate.js.map +0 -1
- package/dist/fea/frame/elements/shell/flat-shell.js.map +0 -1
- package/dist/fea/frame/elements/shell/membrane-quad.js.map +0 -1
- package/dist/fea/frame/elements/shell/quad-geometry.js.map +0 -1
- package/dist/fea/frame/elements/shell/rigidity.js.map +0 -1
- package/dist/fea/frame/elements/shell/shell-axes.js.map +0 -1
- package/dist/fea/frame/mesh/expand-model.js.map +0 -1
- package/dist/fea/frame/mesh/mesh-shells.js.map +0 -1
- package/dist/fea/frame/post/demand-envelope.js.map +0 -1
- package/dist/fea/frame/post/envelope.js.map +0 -1
- package/dist/fea/frame/post/present-state.js.map +0 -1
- package/dist/fea/frame/solver/analyze-frame.js.map +0 -1
- package/dist/fea/frame/solver/auto-restraint.js.map +0 -1
- package/dist/fea/frame/solver/boundary-conditions.js.map +0 -1
- package/dist/fea/frame/solver/combinations.js.map +0 -1
- package/dist/fea/frame/solver/frame-system.d.ts +0 -89
- package/dist/fea/frame/solver/frame-system.js.map +0 -1
- package/dist/fea/frame/solver/global-assembly.js.map +0 -1
- package/dist/fea/frame/solver/load-case-solver.js +0 -260
- package/dist/fea/frame/solver/load-case-solver.js.map +0 -1
- package/dist/fea/frame/validation/validate-model.d.ts +0 -19
- package/dist/fea/frame/validation/validate-model.js +0 -535
- package/dist/fea/frame/validation/validate-model.js.map +0 -1
- /package/dist/esm/fea/{frame → analysis}/post/envelope.js +0 -0
- /package/dist/esm/fea/{frame → shared}/solver/auto-restraint.js +0 -0
- /package/dist/esm/fea/{frame/elements/shell → shell/elements}/quad-geometry.js +0 -0
- /package/dist/esm/fea/{frame/elements/shell → shell/elements}/rigidity.js +0 -0
- /package/dist/fea/{frame → analysis}/post/envelope.js +0 -0
- /package/dist/fea/{frame → shared}/solver/auto-restraint.d.ts +0 -0
- /package/dist/fea/{frame → shared}/solver/auto-restraint.js +0 -0
- /package/dist/fea/{frame/elements/shell → shell/elements}/quad-geometry.d.ts +0 -0
- /package/dist/fea/{frame/elements/shell → shell/elements}/quad-geometry.js +0 -0
- /package/dist/fea/{frame/elements/shell → shell/elements}/rigidity.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"present-state.js","sourceRoot":"","sources":["../../../../src/fea/analysis/post/present-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type MemberGroup, type SystemMember } from "../../frame/solver/system-member";
|
|
2
|
+
import { type AutoRestraint } from "../../shared/solver/auto-restraint";
|
|
3
|
+
import { type BoundaryConditions } from "../../shared/solver/boundary-conditions";
|
|
4
|
+
import type { FeaId, FeaNode } from "../../shared/types/model.type";
|
|
5
|
+
import { type SystemShell } from "../../shell/solver/system-shell";
|
|
6
|
+
import { type SkylineMatrix } from "../../../utils/skyline";
|
|
7
|
+
import type { FeaModel } from "../types/model.type";
|
|
8
|
+
/** The load-independent part of an analysis: geometry, stiffness and its factorisation. */
|
|
9
|
+
export interface AnalysisSystem {
|
|
10
|
+
nodes: FeaNode[];
|
|
11
|
+
nodeIndex: Map<FeaId, number>;
|
|
12
|
+
/** Index into `memberGroups` of each model member. */
|
|
13
|
+
memberIndex: Map<FeaId, number>;
|
|
14
|
+
/** Model members, in model order. */
|
|
15
|
+
memberGroups: MemberGroup[];
|
|
16
|
+
/** The pieces that are assembled: one per member unless the shell mesh splits it. */
|
|
17
|
+
members: SystemMember[];
|
|
18
|
+
shellIndex: Map<FeaId, number>;
|
|
19
|
+
/** Element indices of each shell area. */
|
|
20
|
+
shellsByArea: Map<FeaId, number[]>;
|
|
21
|
+
shells: SystemShell[];
|
|
22
|
+
dofCount: number;
|
|
23
|
+
boundary: BoundaryConditions;
|
|
24
|
+
/** Equation number of each global DOF in the factorised system, −1 for a fixed DOF. */
|
|
25
|
+
equation: Int32Array;
|
|
26
|
+
/** Global DOF of each equation. */
|
|
27
|
+
free: number[];
|
|
28
|
+
/** Joint rotations held because nothing resists them (see `findAutoRestraints`). */
|
|
29
|
+
autoRestraints: AutoRestraint[];
|
|
30
|
+
/** Skyline Cholesky factor of the free stiffness including springs; null when nothing is free. */
|
|
31
|
+
factor: SkylineMatrix | null;
|
|
32
|
+
/** Stored entries of the factor (a measure of bandwidth, memory and work). */
|
|
33
|
+
profileSize: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builds the member and shell matrices of a model that passed `validateModel`, assembles
|
|
37
|
+
* the free stiffness in skyline storage with nodes in reverse Cuthill–McKee order, and
|
|
38
|
+
* factorises it once for all load cases. Joint rotations that nothing resists (e.g. at truss
|
|
39
|
+
* joints) are held by a spring along each null direction, which carries no force.
|
|
40
|
+
*
|
|
41
|
+
* @throws {FeaError} 328 if a node connected only to shells has a translation that
|
|
42
|
+
* nothing resists (a membrane's out-of-plane or a plate's in-plane direction), with `nodeId`,
|
|
43
|
+
* `shellId` and `dof`; 304 if the structure is a mechanism; `details` names a node and a DOF
|
|
44
|
+
* involved in it
|
|
45
|
+
*/
|
|
46
|
+
export declare const prepareAnalysisSystem: (model: FeaModel) => AnalysisSystem;
|
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.prepareAnalysisSystem = void 0;
|
|
4
4
|
const frame_constant_1 = require("../../../core/constants/frame.constant");
|
|
5
|
-
const
|
|
5
|
+
const fea_error_1 = require("../../../core/errors/fea.error");
|
|
6
|
+
const member_assembly_1 = require("../../frame/solver/member-assembly");
|
|
7
|
+
const system_member_1 = require("../../frame/solver/system-member");
|
|
8
|
+
const auto_restraint_1 = require("../../shared/solver/auto-restraint");
|
|
9
|
+
const boundary_conditions_1 = require("../../shared/solver/boundary-conditions");
|
|
10
|
+
const global_assembly_1 = require("../../shared/solver/global-assembly");
|
|
11
|
+
const issues_1 = require("../../shared/validation/issues");
|
|
12
|
+
const system_shell_1 = require("../../shell/solver/system-shell");
|
|
6
13
|
const skyline_1 = require("../../../utils/skyline");
|
|
7
|
-
const beam_3d_stiffness_1 = require("../elements/beam-3d-stiffness");
|
|
8
|
-
const end_releases_1 = require("../elements/end-releases");
|
|
9
|
-
const flat_shell_1 = require("../elements/shell/flat-shell");
|
|
10
|
-
const quad_geometry_1 = require("../elements/shell/quad-geometry");
|
|
11
|
-
const static_condensation_1 = require("../elements/static-condensation");
|
|
12
|
-
const coordinate_transform_1 = require("../transformation/coordinate-transform");
|
|
13
|
-
const validate_model_1 = require("../validation/validate-model");
|
|
14
|
-
const auto_restraint_1 = require("./auto-restraint");
|
|
15
|
-
const boundary_conditions_1 = require("./boundary-conditions");
|
|
16
|
-
const global_assembly_1 = require("./global-assembly");
|
|
17
14
|
const DOF_NAMES = ["ux", "uy", "uz", "rx", "ry", "rz"];
|
|
18
15
|
/**
|
|
19
|
-
* Builds the member and shell matrices of a model that passed `
|
|
16
|
+
* Builds the member and shell matrices of a model that passed `validateModel`, assembles
|
|
20
17
|
* the free stiffness in skyline storage with nodes in reverse Cuthill–McKee order, and
|
|
21
18
|
* factorises it once for all load cases. Joint rotations that nothing resists (e.g. at truss
|
|
22
19
|
* joints) are held by a spring along each null direction, which carries no force.
|
|
23
20
|
*
|
|
24
|
-
* @throws {
|
|
21
|
+
* @throws {FeaError} 328 if a node connected only to shells has a translation that
|
|
25
22
|
* nothing resists (a membrane's out-of-plane or a plate's in-plane direction), with `nodeId`,
|
|
26
23
|
* `shellId` and `dof`; 304 if the structure is a mechanism; `details` names a node and a DOF
|
|
27
24
|
* involved in it
|
|
28
25
|
*/
|
|
29
|
-
const
|
|
30
|
-
const { nodes, members, restraints } = model;
|
|
26
|
+
const prepareAnalysisSystem = (model) => {
|
|
27
|
+
const { nodes, members = [], restraints } = model;
|
|
31
28
|
// shell elements: after `expandModel` they carry their area's id
|
|
32
29
|
const shells = (model.shells ?? []);
|
|
33
30
|
const nodeIndex = new Map(nodes.map((n, i) => [n.id, i]));
|
|
@@ -35,78 +32,8 @@ const prepareFrameSystem = (model) => {
|
|
|
35
32
|
const shellIndex = new Map(shells.map((sh, i) => [sh.id, i]));
|
|
36
33
|
const dofCount = 6 * nodes.length;
|
|
37
34
|
const boundary = (0, boundary_conditions_1.buildBoundaryConditions)(restraints, nodeIndex, dofCount);
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
return [n.x, n.y, n.z];
|
|
41
|
-
};
|
|
42
|
-
const systemMembers = [];
|
|
43
|
-
const memberGroups = members.map((member) => {
|
|
44
|
-
// pieces between the member's ends and the mesh nodes inside it (see `expandModel`)
|
|
45
|
-
const chain = [member.startNodeId, ...(member.through ?? []), member.endNodeId];
|
|
46
|
-
const whole = (0, coordinate_transform_1.memberAxes)(point(member.startNodeId), point(member.endNodeId), member.angle ?? 0);
|
|
47
|
-
const { E, G, A, I22, I33, J } = member.section;
|
|
48
|
-
const pieces = [];
|
|
49
|
-
let offset = 0;
|
|
50
|
-
for (let k = 0; k + 1 < chain.length; k++) {
|
|
51
|
-
const { length, lambda } = chain.length === 2
|
|
52
|
-
? whole
|
|
53
|
-
: (0, coordinate_transform_1.memberAxes)(point(chain[k]), point(chain[k + 1]), member.angle ?? 0);
|
|
54
|
-
// releases only at the member's own ends
|
|
55
|
-
const releases = (0, end_releases_1.memberEndReleases)({
|
|
56
|
-
start: k === 0 ? member.releases?.start : undefined,
|
|
57
|
-
end: k === chain.length - 2 ? member.releases?.end : undefined,
|
|
58
|
-
});
|
|
59
|
-
const condensed = (0, static_condensation_1.condenseMember)((0, beam_3d_stiffness_1.beam3dLocalStiffnessRightHanded)(E, G, A, I22, I33, J, length), releases);
|
|
60
|
-
pieces.push(systemMembers.length);
|
|
61
|
-
systemMembers.push({
|
|
62
|
-
id: member.id,
|
|
63
|
-
offset,
|
|
64
|
-
section: member.section,
|
|
65
|
-
startIndex: nodeIndex.get(chain[k]),
|
|
66
|
-
endIndex: nodeIndex.get(chain[k + 1]),
|
|
67
|
-
T: (0, coordinate_transform_1.transformationMatrix)(lambda),
|
|
68
|
-
k: condensed.k,
|
|
69
|
-
hasReleases: releases.length > 0,
|
|
70
|
-
condenseFixedEndForces: condensed.condenseFixedEndForces,
|
|
71
|
-
memberEndDisplacements: condensed.memberEndDisplacements,
|
|
72
|
-
length,
|
|
73
|
-
lambda,
|
|
74
|
-
});
|
|
75
|
-
offset += length;
|
|
76
|
-
}
|
|
77
|
-
return {
|
|
78
|
-
id: member.id,
|
|
79
|
-
pieces,
|
|
80
|
-
section: member.section,
|
|
81
|
-
length: whole.length,
|
|
82
|
-
lambda: whole.lambda,
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
|
-
const systemShells = shells.map((shell) => {
|
|
86
|
-
const nodeIndices = shell.nodeIds.map((id) => nodeIndex.get(id));
|
|
87
|
-
const points = nodeIndices.map((n) => [nodes[n].x, nodes[n].y, nodes[n].z]);
|
|
88
|
-
const { thickness, E, nu } = shell.section;
|
|
89
|
-
const m = shell.modifiers ?? {};
|
|
90
|
-
const type = shell.type ?? "shell";
|
|
91
|
-
const element = (0, flat_shell_1.flatShellElement)(points, {
|
|
92
|
-
E,
|
|
93
|
-
nu,
|
|
94
|
-
t: thickness,
|
|
95
|
-
type,
|
|
96
|
-
membraneModifiers: [m.f11 ?? 1, m.f22 ?? 1, m.f12 ?? 1],
|
|
97
|
-
bendingModifiers: [m.m11 ?? 1, m.m22 ?? 1, m.m12 ?? 1],
|
|
98
|
-
}, shell.angle ?? 0);
|
|
99
|
-
return {
|
|
100
|
-
id: shell.id,
|
|
101
|
-
areaId: shell.areaId ?? shell.id,
|
|
102
|
-
nodeIndices,
|
|
103
|
-
type,
|
|
104
|
-
section: shell.section,
|
|
105
|
-
modifiers: m,
|
|
106
|
-
element,
|
|
107
|
-
cornerAreas: (0, quad_geometry_1.cornerAreas)(element.axes.corners),
|
|
108
|
-
};
|
|
109
|
-
});
|
|
35
|
+
const { pieces: systemMembers, groups: memberGroups } = (0, system_member_1.prepareSystemMembers)(members, nodes, nodeIndex);
|
|
36
|
+
const systemShells = (0, system_shell_1.prepareSystemShells)(shells, nodes, nodeIndex);
|
|
110
37
|
const shellsByArea = new Map();
|
|
111
38
|
systemShells.forEach((sh, s) => {
|
|
112
39
|
const list = shellsByArea.get(sh.areaId);
|
|
@@ -118,7 +45,7 @@ const prepareFrameSystem = (model) => {
|
|
|
118
45
|
// Everything that adds stiffness, as elements over 6 DOFs per node; members have 2 nodes
|
|
119
46
|
const memberElements = systemMembers.map((m) => ({
|
|
120
47
|
nodes: [m.startIndex, m.endIndex],
|
|
121
|
-
kGlobal: (0,
|
|
48
|
+
kGlobal: (0, member_assembly_1.memberGlobalStiffness)(m),
|
|
122
49
|
}));
|
|
123
50
|
const shellElements = systemShells.map((sh) => ({
|
|
124
51
|
nodes: sh.nodeIndices,
|
|
@@ -131,9 +58,9 @@ const prepareFrameSystem = (model) => {
|
|
|
131
58
|
const unresisted = (0, auto_restraint_1.findUnresistedTranslations)([...shellOnlyNodes].sort((a, b) => a - b), // issues in model order
|
|
132
59
|
shellElements, boundary);
|
|
133
60
|
if (unresisted.length > 0) {
|
|
134
|
-
(0,
|
|
61
|
+
(0, issues_1.throwIssues)(unresisted.map(({ node, axis }) => {
|
|
135
62
|
const lead = axis.reduce((best, c, i) => (Math.abs(c) > Math.abs(axis[best]) ? i : best), 0);
|
|
136
|
-
return (0,
|
|
63
|
+
return (0, issues_1.modelIssue)(fea_error_1.FeaErrors.SHELL_DOF_UNSUPPORTED, {
|
|
137
64
|
nodeId: nodes[node].id,
|
|
138
65
|
shellId: systemShells.find((sh) => sh.nodeIndices.includes(node))?.id,
|
|
139
66
|
dof: DOF_NAMES[lead],
|
|
@@ -220,8 +147,8 @@ const prepareFrameSystem = (model) => {
|
|
|
220
147
|
const result = (0, skyline_1.skylineFactor)(K, frame_constant_1.SINGULARITY_TOLERANCE);
|
|
221
148
|
if (!result.ok) {
|
|
222
149
|
const dof = free[result.failedPivot];
|
|
223
|
-
(0,
|
|
224
|
-
(0,
|
|
150
|
+
(0, issues_1.throwIssues)([
|
|
151
|
+
(0, issues_1.modelIssue)(fea_error_1.FeaErrors.STRUCTURE_UNSTABLE, {
|
|
225
152
|
nodeId: nodes[Math.floor(dof / 6)].id,
|
|
226
153
|
dof: DOF_NAMES[dof % 6],
|
|
227
154
|
}),
|
|
@@ -247,5 +174,5 @@ const prepareFrameSystem = (model) => {
|
|
|
247
174
|
profileSize: factor ? (0, skyline_1.skylineSize)(factor) : 0,
|
|
248
175
|
};
|
|
249
176
|
};
|
|
250
|
-
exports.
|
|
251
|
-
//# sourceMappingURL=
|
|
177
|
+
exports.prepareAnalysisSystem = prepareAnalysisSystem;
|
|
178
|
+
//# sourceMappingURL=analysis-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis-system.js","sourceRoot":"","sources":["../../../../src/fea/analysis/solver/analysis-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
1
|
+
import type { MemberDiagram } from "../../frame/types/results.type";
|
|
2
|
+
import type { FeaId } from "../../shared/types/model.type";
|
|
3
|
+
import type { FeaModel } from "../types/model.type";
|
|
4
|
+
import type { FeaResult } from "../types/results.type";
|
|
5
|
+
export interface AnalyzeOptions {
|
|
4
6
|
/** Number of evenly spaced stations per member diagram (default 21). */
|
|
5
7
|
stations?: number;
|
|
6
8
|
/**
|
|
7
9
|
* `"full"` (default) returns every member diagram with its `stations`; `"extremes"` keeps
|
|
8
10
|
* each diagram's `extremes` (so the envelope and `memberDemandEnvelope` still work) but leaves
|
|
9
11
|
* `stations` empty, which makes large results far smaller. Full diagrams are then available on
|
|
10
|
-
* demand from `
|
|
12
|
+
* demand from `createAnalysis(...).memberDiagram`.
|
|
11
13
|
*/
|
|
12
14
|
diagrams?: "full" | "extremes";
|
|
13
15
|
}
|
|
14
16
|
/** An analysed model whose member diagrams can be computed on demand. */
|
|
15
|
-
export interface
|
|
16
|
-
/** The same result `
|
|
17
|
-
result:
|
|
17
|
+
export interface Analysis {
|
|
18
|
+
/** The same result `analyze` returns. */
|
|
19
|
+
result: FeaResult;
|
|
18
20
|
/**
|
|
19
21
|
* The full diagram (stations and extremes) of one member for one load case or combination,
|
|
20
22
|
* computed from the stored solution without re-analysing.
|
|
@@ -24,27 +26,28 @@ export interface FrameAnalysis {
|
|
|
24
26
|
* @param stations - Evenly spaced stations (default: the analysis option, else 21)
|
|
25
27
|
* @throws {Error} if either id is not in the model
|
|
26
28
|
*/
|
|
27
|
-
memberDiagram: (resultId: string, memberId:
|
|
29
|
+
memberDiagram: (resultId: string, memberId: FeaId, stations?: number) => MemberDiagram;
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
|
-
* Analyses a
|
|
32
|
+
* Analyses a model like `analyze` and keeps the solution, so that full member diagrams
|
|
31
33
|
* can be requested later one member at a time — e.g. analyse with `diagrams: "extremes"` and
|
|
32
34
|
* draw a member's diagram when the user selects it. Run it in a Web Worker for large models.
|
|
33
35
|
*
|
|
34
|
-
* @param model - Nodes, members, restraints, load cases, loads tagged with their load
|
|
35
|
-
* null areas, and combinations
|
|
36
|
+
* @param model - Nodes, members, shells, restraints, load cases, loads tagged with their load
|
|
37
|
+
* case, null areas, and combinations
|
|
36
38
|
* @param options - Diagram station count and detail
|
|
37
39
|
* @returns `{ result, memberDiagram }`
|
|
38
|
-
* @throws {
|
|
40
|
+
* @throws {FeaError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
39
41
|
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
40
42
|
* to shells, 304 for an unstable structure
|
|
41
43
|
*/
|
|
42
|
-
export declare const
|
|
44
|
+
export declare const createAnalysis: (model: FeaModel, options?: AnalyzeOptions) => Analysis;
|
|
43
45
|
/**
|
|
44
|
-
* Analyses a 3D frame by the direct stiffness method
|
|
45
|
-
* for every load case, then forms every load combination
|
|
46
|
+
* Analyses a 3D structure of frame members, shell areas or both by the direct stiffness method
|
|
47
|
+
* (linear elastic, small displacements) for every load case, then forms every load combination
|
|
48
|
+
* by superposition.
|
|
46
49
|
*
|
|
47
|
-
* The model is validated first (`
|
|
50
|
+
* The model is validated first (`validateModel`). The stiffness matrix is assembled once
|
|
48
51
|
* in skyline storage with the nodes in reverse Cuthill–McKee order and factorised once; each
|
|
49
52
|
* load case is a separate solve. A combination is the factored sum of its load cases (nested
|
|
50
53
|
* combinations are expanded), and its member diagrams are rebuilt from the combined end forces
|
|
@@ -62,13 +65,13 @@ export declare const createFrameAnalysis: (model: FrameModel, options?: AnalyzeF
|
|
|
62
65
|
*
|
|
63
66
|
* Model and result are plain data (JSON-serialisable), so the analysis can run in a Web Worker.
|
|
64
67
|
*
|
|
65
|
-
* @param model - Nodes, members, restraints, load cases, loads tagged with their load
|
|
66
|
-
* null areas, and combinations
|
|
68
|
+
* @param model - Nodes, members, shells, restraints, load cases, loads tagged with their load
|
|
69
|
+
* case, null areas, and combinations
|
|
67
70
|
* @param options - Diagram station count and detail
|
|
68
71
|
* @returns `cases` and `combinations` keyed by id, `envelope` over the combinations,
|
|
69
72
|
* `calculationDetails`, `units` and `warnings`
|
|
70
|
-
* @throws {
|
|
73
|
+
* @throws {FeaError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
71
74
|
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
72
75
|
* to shells, 304 for an unstable structure
|
|
73
76
|
*/
|
|
74
|
-
export declare const
|
|
77
|
+
export declare const analyze: (model: FeaModel, options?: AnalyzeOptions) => FeaResult;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.analyze = exports.createAnalysis = void 0;
|
|
4
|
+
const area_member_loads_1 = require("../../frame/area/area-member-loads");
|
|
5
|
+
const issues_1 = require("../../shared/validation/issues");
|
|
4
6
|
const math_1 = require("../../../utils/math");
|
|
5
|
-
const distribute_area_loads_1 = require("../area/distribute-area-loads");
|
|
6
7
|
const envelope_1 = require("../post/envelope");
|
|
7
8
|
const present_state_1 = require("../post/present-state");
|
|
8
|
-
const validate_model_1 = require("../validation/validate-model");
|
|
9
9
|
const expand_model_1 = require("../mesh/expand-model");
|
|
10
|
+
const validate_model_1 = require("../validation/validate-model");
|
|
10
11
|
const combinations_1 = require("./combinations");
|
|
11
|
-
const
|
|
12
|
+
const analysis_system_1 = require("./analysis-system");
|
|
12
13
|
const load_case_solver_1 = require("./load-case-solver");
|
|
13
14
|
const ROTATION_DOFS = ["rx", "ry", "rz"];
|
|
14
15
|
/** The presented form of the joint rotations held by the solver. */
|
|
@@ -34,28 +35,28 @@ const groupByCase = (loads = []) => {
|
|
|
34
35
|
return groups;
|
|
35
36
|
};
|
|
36
37
|
/**
|
|
37
|
-
* Analyses a
|
|
38
|
+
* Analyses a model like `analyze` and keeps the solution, so that full member diagrams
|
|
38
39
|
* can be requested later one member at a time — e.g. analyse with `diagrams: "extremes"` and
|
|
39
40
|
* draw a member's diagram when the user selects it. Run it in a Web Worker for large models.
|
|
40
41
|
*
|
|
41
|
-
* @param model - Nodes, members, restraints, load cases, loads tagged with their load
|
|
42
|
-
* null areas, and combinations
|
|
42
|
+
* @param model - Nodes, members, shells, restraints, load cases, loads tagged with their load
|
|
43
|
+
* case, null areas, and combinations
|
|
43
44
|
* @param options - Diagram station count and detail
|
|
44
45
|
* @returns `{ result, memberDiagram }`
|
|
45
|
-
* @throws {
|
|
46
|
+
* @throws {FeaError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
46
47
|
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
47
48
|
* to shells, 304 for an unstable structure
|
|
48
49
|
*/
|
|
49
|
-
const
|
|
50
|
-
const issues = (0, validate_model_1.
|
|
50
|
+
const createAnalysis = (model, options = {}) => {
|
|
51
|
+
const issues = (0, validate_model_1.validateModel)(model);
|
|
51
52
|
if (issues.length > 0)
|
|
52
|
-
(0,
|
|
53
|
+
(0, issues_1.throwIssues)(issues);
|
|
53
54
|
const expanded = (0, expand_model_1.expandModel)(model);
|
|
54
|
-
const system = (0,
|
|
55
|
+
const system = (0, analysis_system_1.prepareAnalysisSystem)(expanded.model);
|
|
55
56
|
const combinations = model.combinations ?? [];
|
|
56
57
|
const resolved = (0, combinations_1.resolveCombinations)(combinations, new Set(model.loadCases.map((c) => c.id)));
|
|
57
58
|
const withStations = (options.diagrams ?? "full") === "full";
|
|
58
|
-
const fromAreas = (0,
|
|
59
|
+
const fromAreas = (0, area_member_loads_1.areaMemberLoads)(model);
|
|
59
60
|
const states = new Map();
|
|
60
61
|
const cases = {};
|
|
61
62
|
const nodalByCase = groupByCase(model.nodalLoads);
|
|
@@ -132,12 +133,13 @@ const createFrameAnalysis = (model, options = {}) => {
|
|
|
132
133
|
},
|
|
133
134
|
};
|
|
134
135
|
};
|
|
135
|
-
exports.
|
|
136
|
+
exports.createAnalysis = createAnalysis;
|
|
136
137
|
/**
|
|
137
|
-
* Analyses a 3D frame by the direct stiffness method
|
|
138
|
-
* for every load case, then forms every load combination
|
|
138
|
+
* Analyses a 3D structure of frame members, shell areas or both by the direct stiffness method
|
|
139
|
+
* (linear elastic, small displacements) for every load case, then forms every load combination
|
|
140
|
+
* by superposition.
|
|
139
141
|
*
|
|
140
|
-
* The model is validated first (`
|
|
142
|
+
* The model is validated first (`validateModel`). The stiffness matrix is assembled once
|
|
141
143
|
* in skyline storage with the nodes in reverse Cuthill–McKee order and factorised once; each
|
|
142
144
|
* load case is a separate solve. A combination is the factored sum of its load cases (nested
|
|
143
145
|
* combinations are expanded), and its member diagrams are rebuilt from the combined end forces
|
|
@@ -155,15 +157,15 @@ exports.createFrameAnalysis = createFrameAnalysis;
|
|
|
155
157
|
*
|
|
156
158
|
* Model and result are plain data (JSON-serialisable), so the analysis can run in a Web Worker.
|
|
157
159
|
*
|
|
158
|
-
* @param model - Nodes, members, restraints, load cases, loads tagged with their load
|
|
159
|
-
* null areas, and combinations
|
|
160
|
+
* @param model - Nodes, members, shells, restraints, load cases, loads tagged with their load
|
|
161
|
+
* case, null areas, and combinations
|
|
160
162
|
* @param options - Diagram station count and detail
|
|
161
163
|
* @returns `cases` and `combinations` keyed by id, `envelope` over the combinations,
|
|
162
164
|
* `calculationDetails`, `units` and `warnings`
|
|
163
|
-
* @throws {
|
|
165
|
+
* @throws {FeaError} 301–317, 326 and 327 for an invalid model (with `details` and
|
|
164
166
|
* every problem in `issues`), 328 for a translation nothing resists at a node connected only
|
|
165
167
|
* to shells, 304 for an unstable structure
|
|
166
168
|
*/
|
|
167
|
-
const
|
|
168
|
-
exports.
|
|
169
|
-
//# sourceMappingURL=analyze
|
|
169
|
+
const analyze = (model, options = {}) => (0, exports.createAnalysis)(model, options).result;
|
|
170
|
+
exports.analyze = analyze;
|
|
171
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/fea/analysis/solver/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import type { LoadCombination } from "../types/model.type";
|
|
|
5
5
|
* @param combinations - Model combinations
|
|
6
6
|
* @param caseIds - Ids of the model's load cases
|
|
7
7
|
* @returns For each combination id, the net factor on each load case it uses
|
|
8
|
-
* @throws {
|
|
8
|
+
* @throws {FeaError} 309 for an unknown or missing reference, 310 for a loop,
|
|
9
9
|
* 311 for a non-finite factor or an empty combination
|
|
10
10
|
*/
|
|
11
11
|
export declare const resolveCombinations: (combinations: LoadCombination[], caseIds: Set<string>) => Map<string, Map<string, number>>;
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveCombinations = void 0;
|
|
4
|
-
const
|
|
4
|
+
const fea_error_1 = require("../../../core/errors/fea.error");
|
|
5
5
|
/**
|
|
6
6
|
* Expands every combination into net factors on load cases, following nested combinations.
|
|
7
7
|
*
|
|
8
8
|
* @param combinations - Model combinations
|
|
9
9
|
* @param caseIds - Ids of the model's load cases
|
|
10
10
|
* @returns For each combination id, the net factor on each load case it uses
|
|
11
|
-
* @throws {
|
|
11
|
+
* @throws {FeaError} 309 for an unknown or missing reference, 310 for a loop,
|
|
12
12
|
* 311 for a non-finite factor or an empty combination
|
|
13
13
|
*/
|
|
14
14
|
const resolveCombinations = (combinations, caseIds) => {
|
|
15
15
|
const byId = new Map(combinations.map((c) => [c.id, c]));
|
|
16
16
|
for (const combination of combinations) {
|
|
17
17
|
if (!Array.isArray(combination.terms) || combination.terms.length === 0) {
|
|
18
|
-
throw new
|
|
18
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.INVALID_LOAD_FACTOR, {
|
|
19
19
|
combinationId: combination.id,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
for (const term of combination.terms) {
|
|
23
23
|
if (!Number.isFinite(term.factor))
|
|
24
|
-
throw new
|
|
24
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.INVALID_LOAD_FACTOR, {
|
|
25
25
|
combinationId: combination.id,
|
|
26
26
|
});
|
|
27
27
|
const isCase = "case" in term && term.case !== undefined;
|
|
28
28
|
const isCombination = "combination" in term && term.combination !== undefined;
|
|
29
29
|
if (isCase === isCombination)
|
|
30
|
-
throw new
|
|
30
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.UNKNOWN_LOAD_CASE, {
|
|
31
31
|
combinationId: combination.id,
|
|
32
32
|
});
|
|
33
33
|
if (isCase && !caseIds.has(term.case)) {
|
|
34
|
-
throw new
|
|
34
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.UNKNOWN_LOAD_CASE, {
|
|
35
35
|
combinationId: combination.id,
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
if (isCombination && !byId.has(term.combination)) {
|
|
39
|
-
throw new
|
|
39
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.UNKNOWN_LOAD_CASE, {
|
|
40
40
|
combinationId: combination.id,
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -49,7 +49,7 @@ const resolveCombinations = (combinations, caseIds) => {
|
|
|
49
49
|
if (done)
|
|
50
50
|
return done;
|
|
51
51
|
if (visiting.has(id)) {
|
|
52
|
-
throw new
|
|
52
|
+
throw new fea_error_1.FeaError(fea_error_1.FeaErrors.CIRCULAR_COMBINATION, { combinationId: id });
|
|
53
53
|
}
|
|
54
54
|
visiting.add(id);
|
|
55
55
|
const factors = new Map();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinations.js","sourceRoot":"","sources":["../../../../src/fea/analysis/solver/combinations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import type { Warnings } from "../../../core/types/output-message.type";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
* Turns the area loads of a model into member loads, assuming the model is valid (as
|
|
5
|
-
* `validateFrameModel` checks): each area's edge profiles are built once, then scaled for each
|
|
6
|
-
* of its loads and split into global X, Y and Z trapezoidal loads (plus torques for a cantilever).
|
|
7
|
-
* Everything is linear in `q`, so load-case superposition still holds.
|
|
8
|
-
*/
|
|
9
|
-
export declare const areaMemberLoads: (model: FrameModel) => {
|
|
10
|
-
memberLoads: MemberLoad[];
|
|
11
|
-
warnings: Warnings;
|
|
12
|
-
};
|
|
2
|
+
import type { MemberLoad } from "../../frame/types/model.type";
|
|
3
|
+
import type { FeaModel } from "../types/model.type";
|
|
13
4
|
/**
|
|
14
5
|
* The member loads that a model's null areas send to the members along their edges — what
|
|
15
|
-
* `
|
|
6
|
+
* `analyze` adds to `memberLoads` — so they can be checked or previewed.
|
|
16
7
|
*
|
|
17
8
|
* Two-way areas send each point to the nearest edge (corner-bisector split); one-way areas
|
|
18
9
|
* split strips parallel to their unsupported edges half to each end; cantilever areas send
|
|
@@ -21,11 +12,11 @@ export declare const areaMemberLoads: (model: FrameModel) => {
|
|
|
21
12
|
* `projected` load is first converted, `q · |n · direction|`) and come out as trapezoidal loads
|
|
22
13
|
* per member length in global X, Y and Z (and torques), each tagged with its load case.
|
|
23
14
|
*
|
|
24
|
-
* @param model - The
|
|
15
|
+
* @param model - The model, validated first
|
|
25
16
|
* @returns `memberLoads` and `warnings` (a one-way support edge parallel to the span)
|
|
26
|
-
* @throws {
|
|
17
|
+
* @throws {FeaError} 301–317 for an invalid model, with every problem in `issues`
|
|
27
18
|
*/
|
|
28
|
-
export declare const distributeAreaLoads: (model:
|
|
19
|
+
export declare const distributeAreaLoads: (model: FeaModel) => {
|
|
29
20
|
memberLoads: MemberLoad[];
|
|
30
21
|
warnings: Warnings;
|
|
31
22
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distributeAreaLoads = void 0;
|
|
4
|
+
const area_member_loads_1 = require("../../frame/area/area-member-loads");
|
|
5
|
+
const issues_1 = require("../../shared/validation/issues");
|
|
6
|
+
const validate_model_1 = require("../validation/validate-model");
|
|
7
|
+
/**
|
|
8
|
+
* The member loads that a model's null areas send to the members along their edges — what
|
|
9
|
+
* `analyze` adds to `memberLoads` — so they can be checked or previewed.
|
|
10
|
+
*
|
|
11
|
+
* Two-way areas send each point to the nearest edge (corner-bisector split); one-way areas
|
|
12
|
+
* split strips parallel to their unsupported edges half to each end; cantilever areas send
|
|
13
|
+
* `q · c` and a torque `q · c² / 2` per unit length to their support edge (c = depth). Edges
|
|
14
|
+
* split by intermediate nodes are cut at those nodes. Loads are per unit true area (a
|
|
15
|
+
* `projected` load is first converted, `q · |n · direction|`) and come out as trapezoidal loads
|
|
16
|
+
* per member length in global X, Y and Z (and torques), each tagged with its load case.
|
|
17
|
+
*
|
|
18
|
+
* @param model - The model, validated first
|
|
19
|
+
* @returns `memberLoads` and `warnings` (a one-way support edge parallel to the span)
|
|
20
|
+
* @throws {FeaError} 301–317 for an invalid model, with every problem in `issues`
|
|
21
|
+
*/
|
|
22
|
+
const distributeAreaLoads = (model) => {
|
|
23
|
+
const issues = (0, validate_model_1.validateModel)(model);
|
|
24
|
+
if (issues.length > 0)
|
|
25
|
+
(0, issues_1.throwIssues)(issues);
|
|
26
|
+
return (0, area_member_loads_1.areaMemberLoads)(model);
|
|
27
|
+
};
|
|
28
|
+
exports.distributeAreaLoads = distributeAreaLoads;
|
|
29
|
+
//# sourceMappingURL=distribute-area-loads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distribute-area-loads.js","sourceRoot":"","sources":["../../../../src/fea/analysis/solver/distribute-area-loads.ts"],"names":[],"mappings":";;;AACA,6EAAwE;AAExE,8DAAgE;AAGhE,iEAA6D;AAE7D;;;;;;;;;;;;;;GAcG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAe,EACoC,EAAE;IACrD,MAAM,MAAM,GAAG,IAAA,8BAAa,EAAC,KAAK,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAA,mCAAe,EAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AANW,QAAA,mBAAmB,uBAM9B"}
|