@theerapat-s28/ts-structural-eng-tools 3.1.0 → 3.3.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 +48 -1
- package/README.md +293 -131
- package/dist/core/constants/frame.constant.d.ts +8 -0
- package/dist/core/constants/frame.constant.js +9 -1
- package/dist/core/constants/frame.constant.js.map +1 -1
- 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 +5 -3
- package/dist/core/index.js +10 -4
- package/dist/core/index.js.map +1 -1
- package/dist/esm/core/constants/frame.constant.js +8 -0
- package/dist/esm/core/constants/frame.constant.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 +4 -2
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/fea/analysis/index.js +7 -0
- package/dist/esm/fea/analysis/index.js.map +1 -0
- package/dist/esm/fea/{frame → analysis}/mesh/expand-model.js +30 -41
- package/dist/esm/fea/analysis/mesh/expand-model.js.map +1 -0
- package/dist/esm/fea/analysis/mesh/member-connectivity.js +66 -0
- package/dist/esm/fea/analysis/mesh/member-connectivity.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 +6 -6
- 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} +28 -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 +4 -4
- 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/nodes-along-members.js +73 -0
- package/dist/esm/fea/frame/solver/nodes-along-members.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 +164 -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 +10 -0
- package/dist/fea/analysis/index.js +16 -0
- package/dist/fea/analysis/index.js.map +1 -0
- package/dist/fea/analysis/mesh/expand-model.d.ts +34 -0
- package/dist/fea/{frame → analysis}/mesh/expand-model.js +30 -41
- package/dist/fea/analysis/mesh/expand-model.js.map +1 -0
- package/dist/fea/analysis/mesh/member-connectivity.d.ts +43 -0
- package/dist/fea/analysis/mesh/member-connectivity.js +71 -0
- package/dist/fea/analysis/mesh/member-connectivity.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/analysis/post/present-state.d.ts +21 -0
- package/dist/fea/{frame → analysis}/post/present-state.js +7 -7
- 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} +29 -20
- package/dist/fea/{frame/solver/analyze-frame.js → analysis/solver/analyze.js} +33 -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 +123 -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 +8 -8
- package/dist/fea/frame/post/member-diagram.js +4 -4
- 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/nodes-along-members.d.ts +31 -0
- package/dist/fea/frame/solver/nodes-along-members.js +77 -0
- package/dist/fea/frame/solver/nodes-along-members.js.map +1 -0
- package/dist/fea/frame/solver/system-member.d.ts +51 -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 +16 -175
- package/dist/fea/frame/types/results.type.d.ts +17 -152
- package/dist/fea/frame/validation/validate-members.d.ts +30 -0
- package/dist/fea/frame/validation/validate-members.js +169 -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 +16 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- 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.d.ts +0 -29
- 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.d.ts +0 -20
- 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,30 @@
|
|
|
1
|
+
import { type FeaModelIssue } from "../../../core/errors/fea.error";
|
|
2
|
+
import type { FeaId, FeaNode } from "../../shared/types/model.type";
|
|
3
|
+
import type { Member, MemberLoad } from "../types/model.type";
|
|
4
|
+
/**
|
|
5
|
+
* Checks each member on its own: its end nodes, section, `angle`, `connectIntermediateNodes`
|
|
6
|
+
* and release values, a non-zero length, and end releases that leave it stable. Ends at nodes with invalid
|
|
7
|
+
* coordinates are not checked further; those are reported on the node.
|
|
8
|
+
*
|
|
9
|
+
* @param members - The model's members
|
|
10
|
+
* @param nodeById - Model nodes by id
|
|
11
|
+
* @param validNode - Ids of the nodes whose coordinates are valid
|
|
12
|
+
* @returns `issues` (codes 301, 302, 305, 307 and 314), in model order, with `memberId`, and the
|
|
13
|
+
* length (mm) of every member whose geometry is valid
|
|
14
|
+
*/
|
|
15
|
+
export declare const validateMembers: (members: Member[], nodeById: Map<FeaId, FeaNode>, validNode: Set<FeaId>) => {
|
|
16
|
+
issues: FeaModelIssue[];
|
|
17
|
+
memberLength: Map<FeaId, number>;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Checks member loads: their load case and member, `type`, direction and `projected`, finite
|
|
21
|
+
* intensities and positions, and an extent that lies within the member.
|
|
22
|
+
*
|
|
23
|
+
* @param loads - The model's member loads
|
|
24
|
+
* @param members - The model's members
|
|
25
|
+
* @param memberLength - Length of each member whose geometry is valid (from `validateMembers`)
|
|
26
|
+
* @param caseIds - Ids of the model's load cases
|
|
27
|
+
* @returns Every problem found (codes 302, 308, 309 and 314), in model order, with `memberId`
|
|
28
|
+
* and `loadCaseId`
|
|
29
|
+
*/
|
|
30
|
+
export declare const validateMemberLoads: (loads: MemberLoad[], members: Member[], memberLength: Map<FeaId, number>, caseIds: Set<string>) => FeaModelIssue[];
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateMemberLoads = exports.validateMembers = void 0;
|
|
4
|
+
const fea_error_1 = require("../../../core/errors/fea.error");
|
|
5
|
+
const issues_1 = require("../../shared/validation/issues");
|
|
6
|
+
const beam_3d_stiffness_1 = require("../elements/beam-3d-stiffness");
|
|
7
|
+
const end_releases_1 = require("../elements/end-releases");
|
|
8
|
+
const static_condensation_1 = require("../elements/static-condensation");
|
|
9
|
+
const SECTION_KEYS = ["E", "G", "A", "I22", "I33", "J"];
|
|
10
|
+
const DIRECTIONS = new Set(["1", "2", "3", "X", "Y", "Z"]);
|
|
11
|
+
const GLOBAL_DIRECTIONS = new Set(["X", "Y", "Z"]);
|
|
12
|
+
/**
|
|
13
|
+
* Checks each member on its own: its end nodes, section, `angle`, `connectIntermediateNodes`
|
|
14
|
+
* and release values, a non-zero length, and end releases that leave it stable. Ends at nodes with invalid
|
|
15
|
+
* coordinates are not checked further; those are reported on the node.
|
|
16
|
+
*
|
|
17
|
+
* @param members - The model's members
|
|
18
|
+
* @param nodeById - Model nodes by id
|
|
19
|
+
* @param validNode - Ids of the nodes whose coordinates are valid
|
|
20
|
+
* @returns `issues` (codes 301, 302, 305, 307 and 314), in model order, with `memberId`, and the
|
|
21
|
+
* length (mm) of every member whose geometry is valid
|
|
22
|
+
*/
|
|
23
|
+
const validateMembers = (members, nodeById, validNode) => {
|
|
24
|
+
const issues = [];
|
|
25
|
+
const add = (std, details = {}) => issues.push((0, issues_1.modelIssue)(std, details));
|
|
26
|
+
const memberLength = new Map(); // only for members whose geometry is valid
|
|
27
|
+
for (const member of members) {
|
|
28
|
+
const at = { memberId: member.id };
|
|
29
|
+
let geometryOk = true;
|
|
30
|
+
for (const field of ["startNodeId", "endNodeId"]) {
|
|
31
|
+
if (!nodeById.has(member[field])) {
|
|
32
|
+
add(fea_error_1.FeaErrors.UNKNOWN_NODE_REFERENCE, { ...at, field });
|
|
33
|
+
geometryOk = false;
|
|
34
|
+
}
|
|
35
|
+
else if (!validNode.has(member[field])) {
|
|
36
|
+
geometryOk = false; // reported on the node
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const section = member.section ?? {};
|
|
40
|
+
let sectionOk = true;
|
|
41
|
+
for (const field of SECTION_KEYS) {
|
|
42
|
+
const v = section[field];
|
|
43
|
+
if (!(0, issues_1.isFiniteNumber)(v) || v <= 0) {
|
|
44
|
+
add(fea_error_1.FeaErrors.INVALID_SECTION_PROPERTIES, { ...at, field });
|
|
45
|
+
sectionOk = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (section.unitWeight !== undefined &&
|
|
49
|
+
(!(0, issues_1.isFiniteNumber)(section.unitWeight) || section.unitWeight < 0)) {
|
|
50
|
+
add(fea_error_1.FeaErrors.INVALID_SECTION_PROPERTIES, { ...at, field: "unitWeight" });
|
|
51
|
+
}
|
|
52
|
+
if (member.angle !== undefined && !(0, issues_1.isFiniteNumber)(member.angle)) {
|
|
53
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "angle" });
|
|
54
|
+
}
|
|
55
|
+
if (member.connectIntermediateNodes !== undefined &&
|
|
56
|
+
typeof member.connectIntermediateNodes !== "boolean") {
|
|
57
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "connectIntermediateNodes" });
|
|
58
|
+
}
|
|
59
|
+
// each release value: true/false, or a spring stiffness ≥ 0 (0 = full release)
|
|
60
|
+
let releasesOk = true;
|
|
61
|
+
for (const end of ["start", "end"]) {
|
|
62
|
+
const release = member.releases?.[end];
|
|
63
|
+
if (release === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
for (const key of end_releases_1.RELEASE_KEYS) {
|
|
66
|
+
const v = release[key];
|
|
67
|
+
if (v === undefined || typeof v === "boolean" || ((0, issues_1.isFiniteNumber)(v) && v >= 0))
|
|
68
|
+
continue;
|
|
69
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: `releases.${end}.${key}` });
|
|
70
|
+
releasesOk = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!geometryOk)
|
|
74
|
+
continue;
|
|
75
|
+
const a = nodeById.get(member.startNodeId);
|
|
76
|
+
const b = nodeById.get(member.endNodeId);
|
|
77
|
+
const L = Math.hypot(b.x - a.x, b.y - a.y, b.z - a.z);
|
|
78
|
+
if (!(L > 0)) {
|
|
79
|
+
add(fea_error_1.FeaErrors.ZERO_LENGTH_MEMBER, at);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
memberLength.set(member.id, L);
|
|
83
|
+
const releases = releasesOk ? (0, end_releases_1.memberEndReleases)(member.releases) : [];
|
|
84
|
+
if (sectionOk && releases.length > 0) {
|
|
85
|
+
const { E, G, A, I22, I33, J } = section;
|
|
86
|
+
try {
|
|
87
|
+
(0, static_condensation_1.condenseMember)((0, beam_3d_stiffness_1.beam3dLocalStiffnessRightHanded)(E, G, A, I22, I33, J, L), releases);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
add(fea_error_1.FeaErrors.INVALID_RELEASE, at);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return { issues, memberLength };
|
|
95
|
+
};
|
|
96
|
+
exports.validateMembers = validateMembers;
|
|
97
|
+
/**
|
|
98
|
+
* Checks member loads: their load case and member, `type`, direction and `projected`, finite
|
|
99
|
+
* intensities and positions, and an extent that lies within the member.
|
|
100
|
+
*
|
|
101
|
+
* @param loads - The model's member loads
|
|
102
|
+
* @param members - The model's members
|
|
103
|
+
* @param memberLength - Length of each member whose geometry is valid (from `validateMembers`)
|
|
104
|
+
* @param caseIds - Ids of the model's load cases
|
|
105
|
+
* @returns Every problem found (codes 302, 308, 309 and 314), in model order, with `memberId`
|
|
106
|
+
* and `loadCaseId`
|
|
107
|
+
*/
|
|
108
|
+
const validateMemberLoads = (loads, members, memberLength, caseIds) => {
|
|
109
|
+
const issues = [];
|
|
110
|
+
const add = (std, details = {}) => issues.push((0, issues_1.modelIssue)(std, details));
|
|
111
|
+
for (const load of loads) {
|
|
112
|
+
const at = { loadCaseId: load.loadCase, memberId: load.memberId };
|
|
113
|
+
if (!caseIds.has(load.loadCase))
|
|
114
|
+
add(fea_error_1.FeaErrors.UNKNOWN_LOAD_CASE, { ...at, field: "loadCase" });
|
|
115
|
+
const memberKnown = members.some((m) => m.id === load.memberId);
|
|
116
|
+
if (!memberKnown)
|
|
117
|
+
add(fea_error_1.FeaErrors.UNKNOWN_NODE_REFERENCE, { ...at, field: "memberId" });
|
|
118
|
+
if (load.type !== "torque" && !DIRECTIONS.has(load.direction))
|
|
119
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "direction" });
|
|
120
|
+
// a projected length needs a distributed load in a global direction
|
|
121
|
+
const projected = load.projected;
|
|
122
|
+
if ((projected !== undefined && typeof projected !== "boolean") ||
|
|
123
|
+
(projected === true &&
|
|
124
|
+
((load.type !== "udl" && load.type !== "trapezoidal") ||
|
|
125
|
+
!GLOBAL_DIRECTIONS.has(load.direction)))) {
|
|
126
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "projected" });
|
|
127
|
+
}
|
|
128
|
+
const L = memberLength.get(load.memberId);
|
|
129
|
+
if (load.type === "udl" || load.type === "trapezoidal" || load.type === "torque") {
|
|
130
|
+
const intensities = load.type === "udl"
|
|
131
|
+
? { w: load.w }
|
|
132
|
+
: load.type === "trapezoidal"
|
|
133
|
+
? { w1: load.w1, w2: load.w2 }
|
|
134
|
+
: { t: load.t };
|
|
135
|
+
const extent = { start: load.start, end: load.end };
|
|
136
|
+
let ok = true;
|
|
137
|
+
for (const [field, v] of [...Object.entries(intensities), ...Object.entries(extent)]) {
|
|
138
|
+
if ((field in intensities || v !== undefined) && !(0, issues_1.isFiniteNumber)(v)) {
|
|
139
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field });
|
|
140
|
+
ok = false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (ok && L !== undefined) {
|
|
144
|
+
const start = load.start ?? 0;
|
|
145
|
+
const end = load.end ?? L;
|
|
146
|
+
if (!(start >= 0 && end <= L && start < end))
|
|
147
|
+
add(fea_error_1.FeaErrors.LOAD_OUTSIDE_MEMBER, at);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else if (load.type === "point") {
|
|
151
|
+
let ok = true;
|
|
152
|
+
for (const field of ["P", "a"]) {
|
|
153
|
+
if (!(0, issues_1.isFiniteNumber)(load[field])) {
|
|
154
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field });
|
|
155
|
+
ok = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (ok && L !== undefined && !(load.a >= 0 && load.a <= L)) {
|
|
159
|
+
add(fea_error_1.FeaErrors.LOAD_OUTSIDE_MEMBER, at);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "type" });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return issues;
|
|
167
|
+
};
|
|
168
|
+
exports.validateMemberLoads = validateMemberLoads;
|
|
169
|
+
//# sourceMappingURL=validate-members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-members.js","sourceRoot":"","sources":["../../../../src/fea/frame/validation/validate-members.ts"],"names":[],"mappings":";;;AAAA,0DAAiG;AAEjG,8DAA+E;AAE/E,qEAAgF;AAChF,2DAA2E;AAC3E,yEAAiE;AAGjE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAU,CAAC;AACjE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnD;;;;;;;;;;GAUG;AACI,MAAM,eAAe,GAAG,CAC7B,OAAiB,EACjB,QAA6B,EAC7B,SAAqB,EAC0C,EAAE;IACjE,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,GAAsC,EAAE,UAA2B,EAAE,EAAE,EAAE,CACpF,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiB,CAAC,CAAC,2CAA2C;IAC1F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,WAAW,CAAU,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,qBAAS,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxD,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,KAAK,CAAC,CAAC,uBAAuB;YAC7C,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAK,EAA4B,CAAC;QAChE,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAA,uBAAc,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,qBAAS,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5D,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QACD,IACE,OAAO,CAAC,UAAU,KAAK,SAAS;YAChC,CAAC,CAAC,IAAA,uBAAc,EAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAC/D,CAAC;YACD,GAAG,CAAC,qBAAS,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAA,uBAAc,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IACE,MAAM,CAAC,wBAAwB,KAAK,SAAS;YAC7C,OAAO,MAAM,CAAC,wBAAwB,KAAK,SAAS,EACpD,CAAC;YACD,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,+EAA+E;QAC/E,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAU,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YACpC,KAAK,MAAM,GAAG,IAAI,2BAAY,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAY,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,IAAA,uBAAc,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACzF,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/E,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACb,GAAG,CAAC,qBAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,gCAAiB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC;YACzC,IAAI,CAAC;gBACH,IAAA,oCAAc,EAAC,IAAA,mDAA+B,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACrF,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,qBAAS,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAClC,CAAC,CAAC;AAnFW,QAAA,eAAe,mBAmF1B;AAEF;;;;;;;;;;GAUG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAmB,EACnB,OAAiB,EACjB,YAAgC,EAChC,OAAoB,EACH,EAAE;IACnB,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,GAAsC,EAAE,UAA2B,EAAE,EAAE,EAAE,CACpF,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,qBAAS,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAChG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW;YAAE,GAAG,CAAC,qBAAS,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3D,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,oEAAoE;QACpE,MAAM,SAAS,GAAI,IAAgC,CAAC,SAAS,CAAC;QAC9D,IACE,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,SAAS,CAAC;YAC3D,CAAC,SAAS,KAAK,IAAI;gBACjB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;oBACnD,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAC5C,CAAC;YACD,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjF,MAAM,WAAW,GACf,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;gBACf,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa;oBAC3B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YACpD,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACrF,IAAI,CAAC,KAAK,IAAI,WAAW,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAA,uBAAc,EAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrD,EAAE,GAAG,KAAK,CAAC;gBACb,CAAC;YACH,CAAC;YACD,IAAI,EAAE,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC;oBAAE,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAU,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrD,EAAE,GAAG,KAAK,CAAC;gBACb,CAAC;YACH,CAAC;YACD,IAAI,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAjEW,QAAA,mBAAmB,uBAiE9B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type FeaModelIssue } from "../../../core/errors/fea.error";
|
|
2
|
+
import type { FeaId, FeaNode } from "../../shared/types/model.type";
|
|
3
|
+
import { type AreaPlane, type AreaSupports, type Vec3 } from "../area/area-geometry";
|
|
4
|
+
import type { Member, NullArea } from "../types/model.type";
|
|
5
|
+
/** A null area whose geometry and supports are valid, with its plane and loaded edges. */
|
|
6
|
+
export interface NullAreaInfo {
|
|
7
|
+
area: NullArea;
|
|
8
|
+
plane: AreaPlane;
|
|
9
|
+
supports: AreaSupports;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Checks each null area: its `distribution`, corners (3 or 4 known nodes, planar and convex; a
|
|
13
|
+
* rectangle for a cantilever), `supportEdges`, and members covering every edge that receives
|
|
14
|
+
* load. Corners at nodes with invalid coordinates are skipped; those are reported on the node.
|
|
15
|
+
*
|
|
16
|
+
* @param areas - The model's null areas
|
|
17
|
+
* @param members - The model's members
|
|
18
|
+
* @param memberLength - Length of each member whose geometry is valid (from `validateMembers`);
|
|
19
|
+
* only those can support an edge
|
|
20
|
+
* @param nodeById - Model nodes by id
|
|
21
|
+
* @param validNode - Ids of the nodes whose coordinates are valid
|
|
22
|
+
* @returns `issues` (codes 302, 314, 315, 316 and 317), in model order, with `areaId`, and the
|
|
23
|
+
* plane and supports of every area that passed
|
|
24
|
+
*/
|
|
25
|
+
export declare const validateNullAreas: (areas: NullArea[], members: Member[], memberLength: Map<FeaId, number>, nodeById: Map<FeaId, FeaNode>, validNode: Set<FeaId>) => {
|
|
26
|
+
issues: FeaModelIssue[];
|
|
27
|
+
areaInfo: Map<FeaId, NullAreaInfo>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Whether a load along global `direction` acts partly along the support edge of a cantilever
|
|
31
|
+
* area, which its distribution cannot carry: a cantilever sends its load to the support edge as
|
|
32
|
+
* a line load plus a torque about that edge, and a component along the edge would also need a
|
|
33
|
+
* distributed moment about the normal. Always false for other distributions.
|
|
34
|
+
*
|
|
35
|
+
* @param info - The area, as `validateNullAreas` returns it
|
|
36
|
+
* @param direction - The load's global direction (unit vector)
|
|
37
|
+
*/
|
|
38
|
+
export declare const loadsAlongCantileverSupport: (info: NullAreaInfo, direction: Vec3) => boolean;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadsAlongCantileverSupport = exports.validateNullAreas = void 0;
|
|
4
|
+
const frame_constant_1 = require("../../../core/constants/frame.constant");
|
|
5
|
+
const fea_error_1 = require("../../../core/errors/fea.error");
|
|
6
|
+
const issues_1 = require("../../shared/validation/issues");
|
|
7
|
+
const area_geometry_1 = require("../area/area-geometry");
|
|
8
|
+
const edge_members_1 = require("../area/edge-members");
|
|
9
|
+
const AREA_DISTRIBUTIONS = new Set(["twoWay", "oneWay", "cantilever"]);
|
|
10
|
+
/**
|
|
11
|
+
* Checks each null area: its `distribution`, corners (3 or 4 known nodes, planar and convex; a
|
|
12
|
+
* rectangle for a cantilever), `supportEdges`, and members covering every edge that receives
|
|
13
|
+
* load. Corners at nodes with invalid coordinates are skipped; those are reported on the node.
|
|
14
|
+
*
|
|
15
|
+
* @param areas - The model's null areas
|
|
16
|
+
* @param members - The model's members
|
|
17
|
+
* @param memberLength - Length of each member whose geometry is valid (from `validateMembers`);
|
|
18
|
+
* only those can support an edge
|
|
19
|
+
* @param nodeById - Model nodes by id
|
|
20
|
+
* @param validNode - Ids of the nodes whose coordinates are valid
|
|
21
|
+
* @returns `issues` (codes 302, 314, 315, 316 and 317), in model order, with `areaId`, and the
|
|
22
|
+
* plane and supports of every area that passed
|
|
23
|
+
*/
|
|
24
|
+
const validateNullAreas = (areas, members, memberLength, nodeById, validNode) => {
|
|
25
|
+
const issues = [];
|
|
26
|
+
const add = (std, details = {}) => issues.push((0, issues_1.modelIssue)(std, details));
|
|
27
|
+
const adjacency = (0, edge_members_1.memberAdjacency)(members.filter((m) => memberLength.has(m.id)));
|
|
28
|
+
const position = (id) => {
|
|
29
|
+
const node = nodeById.get(id);
|
|
30
|
+
return [node.x, node.y, node.z];
|
|
31
|
+
};
|
|
32
|
+
// only for areas whose geometry and supports are valid
|
|
33
|
+
const areaInfo = new Map();
|
|
34
|
+
for (const area of areas) {
|
|
35
|
+
const at = { areaId: area.id };
|
|
36
|
+
const distributionOk = AREA_DISTRIBUTIONS.has(area.distribution);
|
|
37
|
+
if (!distributionOk)
|
|
38
|
+
add(fea_error_1.FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "distribution" });
|
|
39
|
+
const ids = Array.isArray(area.nodeIds) ? area.nodeIds : [];
|
|
40
|
+
if (ids.length !== 3 && ids.length !== 4) {
|
|
41
|
+
add(fea_error_1.FeaErrors.INVALID_AREA_GEOMETRY, { ...at, field: "nodeIds" });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (ids.some((id) => !nodeById.has(id))) {
|
|
45
|
+
add(fea_error_1.FeaErrors.UNKNOWN_NODE_REFERENCE, { ...at, field: "nodeIds" });
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (!ids.every((id) => validNode.has(id)))
|
|
49
|
+
continue; // reported on the node
|
|
50
|
+
const plane = (0, area_geometry_1.areaPlane)(ids.map(position));
|
|
51
|
+
if ("problem" in plane) {
|
|
52
|
+
add(fea_error_1.FeaErrors.INVALID_AREA_GEOMETRY, { ...at, field: "nodeIds" });
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (!distributionOk)
|
|
56
|
+
continue;
|
|
57
|
+
if (area.distribution === "cantilever" && !(0, area_geometry_1.isRectangle)(plane)) {
|
|
58
|
+
add(fea_error_1.FeaErrors.INVALID_AREA_GEOMETRY, { ...at, field: "nodeIds" });
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const supports = (0, area_geometry_1.resolveAreaSupports)(plane, area.distribution, area.supportEdges);
|
|
62
|
+
if (!supports) {
|
|
63
|
+
add(fea_error_1.FeaErrors.INVALID_AREA_DISTRIBUTION, { ...at, field: "supportEdges" });
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
for (const edge of supports.loadedEdges) {
|
|
67
|
+
const chain = (0, edge_members_1.edgeMemberChain)(ids[edge], ids[(edge + 1) % ids.length], position, adjacency);
|
|
68
|
+
if (!chain)
|
|
69
|
+
add(fea_error_1.FeaErrors.AREA_EDGE_UNSUPPORTED, { ...at, edge });
|
|
70
|
+
}
|
|
71
|
+
areaInfo.set(area.id, { area, plane, supports });
|
|
72
|
+
}
|
|
73
|
+
return { issues, areaInfo };
|
|
74
|
+
};
|
|
75
|
+
exports.validateNullAreas = validateNullAreas;
|
|
76
|
+
/**
|
|
77
|
+
* Whether a load along global `direction` acts partly along the support edge of a cantilever
|
|
78
|
+
* area, which its distribution cannot carry: a cantilever sends its load to the support edge as
|
|
79
|
+
* a line load plus a torque about that edge, and a component along the edge would also need a
|
|
80
|
+
* distributed moment about the normal. Always false for other distributions.
|
|
81
|
+
*
|
|
82
|
+
* @param info - The area, as `validateNullAreas` returns it
|
|
83
|
+
* @param direction - The load's global direction (unit vector)
|
|
84
|
+
*/
|
|
85
|
+
const loadsAlongCantileverSupport = (info, direction) => {
|
|
86
|
+
if (info.area.distribution !== "cantilever")
|
|
87
|
+
return false;
|
|
88
|
+
const t = (0, area_geometry_1.edgeDirection)(info.plane, info.supports.loadedEdges[0]);
|
|
89
|
+
const along = direction[0] * t[0] + direction[1] * t[1] + direction[2] * t[2];
|
|
90
|
+
return Math.abs(along) > frame_constant_1.AREA_GEOMETRY_TOLERANCE;
|
|
91
|
+
};
|
|
92
|
+
exports.loadsAlongCantileverSupport = loadsAlongCantileverSupport;
|
|
93
|
+
//# sourceMappingURL=validate-null-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-null-areas.js","sourceRoot":"","sources":["../../../../src/fea/frame/validation/validate-null-areas.ts"],"names":[],"mappings":";;;AAAA,uEAA6E;AAC7E,0DAAiG;AAEjG,8DAA+D;AAE/D,yDAQ+B;AAC/B,uDAAwE;AAGxE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AASzF;;;;;;;;;;;;;GAaG;AACI,MAAM,iBAAiB,GAAG,CAC/B,KAAiB,EACjB,OAAiB,EACjB,YAAgC,EAChC,QAA6B,EAC7B,SAAqB,EAC4C,EAAE;IACnE,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,GAAsC,EAAE,UAA2B,EAAE,EAAE,EAAE,CACpF,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAA,8BAAe,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,CAAC,EAAS,EAAQ,EAAE;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,uDAAuD;IACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc;YAAE,GAAG,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAE1F,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,qBAAS,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,qBAAS,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAAE,SAAS,CAAC,uBAAuB;QAC5E,MAAM,KAAK,GAAG,IAAA,yBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACvB,GAAG,CAAC,qBAAS,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc;YAAE,SAAS;QAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,IAAA,2BAAW,EAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,qBAAS,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,mCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,qBAAS,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAA,8BAAe,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5F,IAAI,CAAC,KAAK;gBAAE,GAAG,CAAC,qBAAS,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC,CAAC;AAxDW,QAAA,iBAAiB,qBAwD5B;AAEF;;;;;;;;GAQG;AACI,MAAM,2BAA2B,GAAG,CAAC,IAAkB,EAAE,SAAe,EAAW,EAAE;IAC1F,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,wCAAuB,CAAC;AACnD,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC"}
|
package/dist/fea/index.d.ts
CHANGED
package/dist/fea/index.js
CHANGED
|
@@ -14,6 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
17
|
+
__exportStar(require("./shared"), exports);
|
|
18
|
+
__exportStar(require("./shell"), exports);
|
|
18
19
|
__exportStar(require("./frame"), exports);
|
|
20
|
+
__exportStar(require("./analysis"), exports);
|
|
21
|
+
__exportStar(require("./deprecated"), exports);
|
|
19
22
|
//# sourceMappingURL=index.js.map
|
package/dist/fea/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fea/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fea/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,+CAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { FeaId, FeaNode, DofRestraint, Restraint, AreaLoadDirection, AreaLoad, } from "./types/model.type";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fea/shared/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-restraint.js","sourceRoot":"","sources":["../../../../src/fea/shared/solver/auto-restraint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { Restraint } from "../types/model.type";
|
|
2
|
+
/**
|
|
3
|
+
* Spring stiffness unit conversion per DOF of one node or member end:
|
|
4
|
+
* kN/mm → N/mm for translations, kN·m/rad → N·mm/rad for rotations.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SPRING_UNIT_FACTOR: readonly [1000, 1000, 1000, 1000000, 1000000, 1000000];
|
|
2
7
|
export interface BoundaryConditions {
|
|
3
8
|
fixed: boolean[];
|
|
4
9
|
spring: number[];
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildBoundaryConditions = void 0;
|
|
4
|
-
const end_releases_1 = require("../elements/end-releases");
|
|
3
|
+
exports.buildBoundaryConditions = exports.SPRING_UNIT_FACTOR = void 0;
|
|
5
4
|
const DOF_KEYS = ["ux", "uy", "uz", "rx", "ry", "rz"];
|
|
5
|
+
/**
|
|
6
|
+
* Spring stiffness unit conversion per DOF of one node or member end:
|
|
7
|
+
* kN/mm → N/mm for translations, kN·m/rad → N·mm/rad for rotations.
|
|
8
|
+
*/
|
|
9
|
+
exports.SPRING_UNIT_FACTOR = [1e3, 1e3, 1e3, 1e6, 1e6, 1e6];
|
|
6
10
|
const parse = (value, factor) => {
|
|
7
11
|
if (value === true)
|
|
8
12
|
return { fixed: true, spring: 0 };
|
|
@@ -23,7 +27,7 @@ const buildBoundaryConditions = (restraints, nodeIndex, dofCount) => {
|
|
|
23
27
|
for (const restraint of restraints) {
|
|
24
28
|
const base = 6 * nodeIndex.get(restraint.nodeId);
|
|
25
29
|
DOF_KEYS.forEach((key, k) => {
|
|
26
|
-
const parsed = parse(restraint[key],
|
|
30
|
+
const parsed = parse(restraint[key], exports.SPRING_UNIT_FACTOR[k]);
|
|
27
31
|
if (parsed.fixed)
|
|
28
32
|
fixed[base + k] = true;
|
|
29
33
|
spring[base + k] = parsed.spring;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-conditions.js","sourceRoot":"","sources":["../../../../src/fea/shared/solver/boundary-conditions.ts"],"names":[],"mappings":";;;AAEA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAE/D;;;GAGG;AACU,QAAA,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAQ1E,MAAM,KAAK,GAAG,CACZ,KAA+B,EAC/B,MAAc,EACsB,EAAE;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;IAC5F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,uBAAuB,GAAG,CACrC,UAAuB,EACvB,SAA2C,EAC3C,QAAgB,EACI,EAAE;IACtB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAU,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,GAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAY,CAAC;QAC7D,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,MAAM,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Matrix } from "../../../utils/matrix";
|
|
2
|
+
/**
|
|
3
|
+
* A stiffness contribution to the global system: the nodes it connects and its stiffness over
|
|
4
|
+
* their DOFs (6 per node, in node order) in global axes. A member is a 2-node element; elements
|
|
5
|
+
* with more nodes assemble the same way.
|
|
6
|
+
*/
|
|
7
|
+
export interface StiffnessElement {
|
|
8
|
+
nodes: number[];
|
|
9
|
+
kGlobal: Matrix;
|
|
10
|
+
}
|
|
11
|
+
/** Global DOF numbers (6 per node, in node order) of an element connecting `nodes`. */
|
|
12
|
+
export declare const elementDofs: (nodes: readonly number[]) => number[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.elementDofs = void 0;
|
|
4
|
+
/** Global DOF numbers (6 per node, in node order) of an element connecting `nodes`. */
|
|
5
|
+
const elementDofs = (nodes) => {
|
|
6
|
+
const dofs = [];
|
|
7
|
+
for (const node of nodes) {
|
|
8
|
+
for (let k = 0; k < 6; k++)
|
|
9
|
+
dofs.push(6 * node + k);
|
|
10
|
+
}
|
|
11
|
+
return dofs;
|
|
12
|
+
};
|
|
13
|
+
exports.elementDofs = elementDofs;
|
|
14
|
+
//# sourceMappingURL=global-assembly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-assembly.js","sourceRoot":"","sources":["../../../../src/fea/shared/solver/global-assembly.ts"],"names":[],"mappings":";;;AAYA,uFAAuF;AAChF,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAY,EAAE;IAChE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type FeaId = string | number;
|
|
2
|
+
export interface FeaNode {
|
|
3
|
+
id: FeaId;
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
z: number;
|
|
7
|
+
}
|
|
8
|
+
/** A restrained DOF: `true` is fixed, a number is a spring stiffness, omitted/`false` is free. */
|
|
9
|
+
export type DofRestraint = boolean | number;
|
|
10
|
+
export interface Restraint {
|
|
11
|
+
nodeId: FeaId;
|
|
12
|
+
ux?: DofRestraint;
|
|
13
|
+
uy?: DofRestraint;
|
|
14
|
+
uz?: DofRestraint;
|
|
15
|
+
rx?: DofRestraint;
|
|
16
|
+
ry?: DofRestraint;
|
|
17
|
+
rz?: DofRestraint;
|
|
18
|
+
}
|
|
19
|
+
/** Area load direction: the area's local normal "3" or a global axis. */
|
|
20
|
+
export type AreaLoadDirection = "3" | "X" | "Y" | "Z";
|
|
21
|
+
/**
|
|
22
|
+
* Uniform load on a null area or a shell area. `q` is per unit true area, or with
|
|
23
|
+
* `projected: true` (global directions only) per unit area projected onto the plane normal to
|
|
24
|
+
* `direction`, e.g. per plan area on a ramp; it is then applied as `q · |n · direction|` on
|
|
25
|
+
* the true area. A null area sends it to the members along its edges; a shell area takes it
|
|
26
|
+
* as forces at its corners, each corner the share `∫ Nᵢ dA` of its area.
|
|
27
|
+
*/
|
|
28
|
+
export interface AreaLoad {
|
|
29
|
+
loadCase: string;
|
|
30
|
+
areaId: FeaId;
|
|
31
|
+
direction: AreaLoadDirection;
|
|
32
|
+
q: number;
|
|
33
|
+
projected?: boolean;
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.type.js","sourceRoot":"","sources":["../../../../src/fea/shared/types/model.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FeaErrorDetails, type FeaModelIssue } from "../../../core/errors/fea.error";
|
|
2
|
+
export declare const isFiniteNumber: (v: unknown) => v is number;
|
|
3
|
+
/** Builds an issue whose message names where the problem is. */
|
|
4
|
+
export declare const modelIssue: (std: {
|
|
5
|
+
code: number;
|
|
6
|
+
message: string;
|
|
7
|
+
}, details?: FeaErrorDetails) => FeaModelIssue;
|
|
8
|
+
/** Throws the first issue as a `FeaError` carrying all of them. */
|
|
9
|
+
export declare const throwIssues: (issues: FeaModelIssue[]) => never;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.throwIssues = exports.modelIssue = exports.isFiniteNumber = void 0;
|
|
4
|
+
const fea_error_1 = require("../../../core/errors/fea.error");
|
|
5
|
+
const isFiniteNumber = (v) => typeof v === "number" && Number.isFinite(v);
|
|
6
|
+
exports.isFiniteNumber = isFiniteNumber;
|
|
7
|
+
const describe = (d) => {
|
|
8
|
+
const parts = [];
|
|
9
|
+
if (d.nodeId !== undefined)
|
|
10
|
+
parts.push(`node "${String(d.nodeId)}"`);
|
|
11
|
+
if (d.memberId !== undefined)
|
|
12
|
+
parts.push(`member "${String(d.memberId)}"`);
|
|
13
|
+
if (d.areaId !== undefined)
|
|
14
|
+
parts.push(`area "${String(d.areaId)}"`);
|
|
15
|
+
if (d.shellId !== undefined)
|
|
16
|
+
parts.push(`shell "${String(d.shellId)}"`);
|
|
17
|
+
if (d.edge !== undefined)
|
|
18
|
+
parts.push(`edge ${d.edge}`);
|
|
19
|
+
if (d.loadCaseId !== undefined)
|
|
20
|
+
parts.push(`load case "${d.loadCaseId}"`);
|
|
21
|
+
if (d.combinationId !== undefined)
|
|
22
|
+
parts.push(`combination "${d.combinationId}"`);
|
|
23
|
+
if (d.field !== undefined)
|
|
24
|
+
parts.push(`field "${d.field}"`);
|
|
25
|
+
if (d.dof !== undefined)
|
|
26
|
+
parts.push(`DOF ${d.dof}`);
|
|
27
|
+
return parts.length > 0 ? ` [${parts.join(", ")}]` : "";
|
|
28
|
+
};
|
|
29
|
+
/** Builds an issue whose message names where the problem is. */
|
|
30
|
+
const modelIssue = (std, details = {}) => ({ code: std.code, message: std.message + describe(details), details });
|
|
31
|
+
exports.modelIssue = modelIssue;
|
|
32
|
+
/** Throws the first issue as a `FeaError` carrying all of them. */
|
|
33
|
+
const throwIssues = (issues) => {
|
|
34
|
+
const first = issues[0];
|
|
35
|
+
throw new fea_error_1.FeaError({ code: first.code, message: first.message }, first.details, issues);
|
|
36
|
+
};
|
|
37
|
+
exports.throwIssues = throwIssues;
|
|
38
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../src/fea/shared/validation/issues.ts"],"names":[],"mappings":";;;AAAA,0DAAgG;AAEzF,MAAM,cAAc,GAAG,CAAC,CAAU,EAAe,EAAE,CACxD,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AADjC,QAAA,cAAc,kBACmB;AAE9C,MAAM,QAAQ,GAAG,CAAC,CAAkB,EAAU,EAAE;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;IAClF,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,gEAAgE;AACzD,MAAM,UAAU,GAAG,CACxB,GAAsC,EACtC,UAA2B,EAAE,EACd,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAH/E,QAAA,UAAU,cAGqE;AAE5F,mEAAmE;AAC5D,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAS,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,oBAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1F,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Matrix } from "
|
|
1
|
+
import { type Matrix } from "../../../utils/matrix";
|
|
2
2
|
import { type Vec2 } from "./quad-geometry";
|
|
3
3
|
import { type RigidityModifiers } from "./rigidity";
|
|
4
4
|
/** Material and thickness of a plate: E in MPa, ν, t in mm. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.dkqPlateStiffness = exports.plateRigidity = exports.dkqCurvatureRows = void 0;
|
|
4
|
-
const matrix_1 = require("
|
|
4
|
+
const matrix_1 = require("../../../utils/matrix");
|
|
5
5
|
const quad_geometry_1 = require("./quad-geometry");
|
|
6
6
|
const rigidity_1 = require("./rigidity");
|
|
7
7
|
const edgeCoefficients = (corners) => [0, 1, 2, 3].map((k) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dkq-plate.js","sourceRoot":"","sources":["../../../../src/fea/shell/elements/dkq-plate.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,mDAAuF;AACvF,yCAAuE;AA2BvE,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAsB,EAAE,CACxE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IACrB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;QACV,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QACtB,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QACpC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;QACV,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;KACrC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,KAAyB,EAAE,CAAW,EAAkC,EAAE;IAC9F,MAAM,EAAE,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,mEAAmE;QACnE,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QACtC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACI,MAAM,gBAAgB,GAAG,CAC9B,OAAwB,EACxB,EAAU,EACV,GAAW,EACS,EAAE;IACtB,MAAM,QAAQ,GAAG,IAAA,4BAAY,EAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,gCAAgB,EAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClD,MAAM,CAAC,GAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B;AAEF;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAmB,EAAU,EAAE,CAChF,IAAA,4BAAiB,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AAD3D,QAAA,aAAa,iBAC8C;AAExE;;;;;;;;;;;;;GAaG;AACI,MAAM,iBAAiB,GAAG,CAC/B,OAAwB,EACxB,UAA2B,EACnB,EAAE;IACV,MAAM,CAAC,GAAG,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,IAAA,cAAK,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,yBAAS,EAAE,CAAC;QAC5C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;QAC5B,iBAAiB;QACjB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACvB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AApBW,QAAA,iBAAiB,qBAoB5B"}
|