@theerapat-s28/ts-structural-eng-tools 3.2.0 → 3.4.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.
Files changed (187) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +77 -18
  3. package/dist/core/constants/fea.constant.d.ts +21 -0
  4. package/dist/core/constants/fea.constant.js +26 -0
  5. package/dist/core/constants/fea.constant.js.map +1 -0
  6. package/dist/core/constants/frame.constant.d.ts +6 -32
  7. package/dist/core/constants/frame.constant.js +8 -33
  8. package/dist/core/constants/frame.constant.js.map +1 -1
  9. package/dist/core/constants/rc.constant.d.ts +8 -0
  10. package/dist/core/constants/rc.constant.js +10 -1
  11. package/dist/core/constants/rc.constant.js.map +1 -1
  12. package/dist/core/constants/shell.constant.d.ts +23 -0
  13. package/dist/core/constants/shell.constant.js +28 -0
  14. package/dist/core/constants/shell.constant.js.map +1 -0
  15. package/dist/core/errors/fea.error.d.ts +5 -0
  16. package/dist/core/errors/fea.error.js +9 -1
  17. package/dist/core/errors/fea.error.js.map +1 -1
  18. package/dist/core/index.d.ts +4 -2
  19. package/dist/core/index.js +18 -10
  20. package/dist/core/index.js.map +1 -1
  21. package/dist/esm/core/constants/fea.constant.js +23 -0
  22. package/dist/esm/core/constants/fea.constant.js.map +1 -0
  23. package/dist/esm/core/constants/frame.constant.js +7 -32
  24. package/dist/esm/core/constants/frame.constant.js.map +1 -1
  25. package/dist/esm/core/constants/rc.constant.js +9 -0
  26. package/dist/esm/core/constants/rc.constant.js.map +1 -1
  27. package/dist/esm/core/constants/shell.constant.js +25 -0
  28. package/dist/esm/core/constants/shell.constant.js.map +1 -0
  29. package/dist/esm/core/errors/fea.error.js +9 -1
  30. package/dist/esm/core/errors/fea.error.js.map +1 -1
  31. package/dist/esm/core/index.js +4 -2
  32. package/dist/esm/core/index.js.map +1 -1
  33. package/dist/esm/fea/analysis/index.js +1 -0
  34. package/dist/esm/fea/analysis/index.js.map +1 -1
  35. package/dist/esm/fea/analysis/mesh/expand-model.js +27 -44
  36. package/dist/esm/fea/analysis/mesh/expand-model.js.map +1 -1
  37. package/dist/esm/fea/analysis/mesh/member-connectivity.js +67 -0
  38. package/dist/esm/fea/analysis/mesh/member-connectivity.js.map +1 -0
  39. package/dist/esm/fea/analysis/post/envelope.js +70 -0
  40. package/dist/esm/fea/analysis/post/envelope.js.map +1 -1
  41. package/dist/esm/fea/analysis/post/present-state.js +11 -4
  42. package/dist/esm/fea/analysis/post/present-state.js.map +1 -1
  43. package/dist/esm/fea/analysis/post/wall-forces.js +299 -0
  44. package/dist/esm/fea/analysis/post/wall-forces.js.map +1 -0
  45. package/dist/esm/fea/analysis/post/wall-geometry.js +173 -0
  46. package/dist/esm/fea/analysis/post/wall-geometry.js.map +1 -0
  47. package/dist/esm/fea/analysis/solver/analysis-system.js +1 -1
  48. package/dist/esm/fea/analysis/solver/analysis-system.js.map +1 -1
  49. package/dist/esm/fea/analysis/solver/analyze.js +21 -5
  50. package/dist/esm/fea/analysis/solver/analyze.js.map +1 -1
  51. package/dist/esm/fea/analysis/solver/load-case-solver.js +4 -3
  52. package/dist/esm/fea/analysis/solver/load-case-solver.js.map +1 -1
  53. package/dist/esm/fea/analysis/validation/validate-model.js +20 -2
  54. package/dist/esm/fea/analysis/validation/validate-model.js.map +1 -1
  55. package/dist/esm/fea/analysis/validation/validate-walls.js +226 -0
  56. package/dist/esm/fea/analysis/validation/validate-walls.js.map +1 -0
  57. package/dist/esm/fea/frame/area/area-geometry.js +1 -1
  58. package/dist/esm/fea/frame/area/area-geometry.js.map +1 -1
  59. package/dist/esm/fea/frame/area/area-member-loads.js +1 -1
  60. package/dist/esm/fea/frame/area/area-member-loads.js.map +1 -1
  61. package/dist/esm/fea/frame/area/edge-members.js +1 -1
  62. package/dist/esm/fea/frame/area/edge-members.js.map +1 -1
  63. package/dist/esm/fea/frame/post/member-diagram.js +16 -4
  64. package/dist/esm/fea/frame/post/member-diagram.js.map +1 -1
  65. package/dist/esm/fea/frame/solver/nodes-along-members.js +73 -0
  66. package/dist/esm/fea/frame/solver/nodes-along-members.js.map +1 -0
  67. package/dist/esm/fea/frame/solver/system-member.js +4 -4
  68. package/dist/esm/fea/frame/solver/system-member.js.map +1 -1
  69. package/dist/esm/fea/frame/transformation/coordinate-transform.js +1 -1
  70. package/dist/esm/fea/frame/transformation/coordinate-transform.js.map +1 -1
  71. package/dist/esm/fea/frame/validation/validate-members.js +6 -2
  72. package/dist/esm/fea/frame/validation/validate-members.js.map +1 -1
  73. package/dist/esm/fea/frame/validation/validate-null-areas.js +1 -1
  74. package/dist/esm/fea/frame/validation/validate-null-areas.js.map +1 -1
  75. package/dist/esm/fea/shared/solver/auto-restraint.js +1 -1
  76. package/dist/esm/fea/shared/solver/auto-restraint.js.map +1 -1
  77. package/dist/esm/fea/shared/validation/issues.js +8 -0
  78. package/dist/esm/fea/shared/validation/issues.js.map +1 -1
  79. package/dist/esm/fea/shell/elements/membrane-quad.js +1 -1
  80. package/dist/esm/fea/shell/elements/shell-axes.js +2 -1
  81. package/dist/esm/fea/shell/elements/shell-axes.js.map +1 -1
  82. package/dist/esm/fea/shell/mesh/mesh-shells.js +1 -1
  83. package/dist/esm/fea/shell/mesh/mesh-shells.js.map +1 -1
  84. package/dist/esm/fea/shell/post/strip-forces.js +341 -0
  85. package/dist/esm/fea/shell/post/strip-forces.js.map +1 -0
  86. package/dist/esm/fea/shell/solver/shell-loads.js +3 -0
  87. package/dist/esm/fea/shell/solver/shell-loads.js.map +1 -1
  88. package/dist/esm/fea/shell/validation/validate-shells.js +9 -2
  89. package/dist/esm/fea/shell/validation/validate-shells.js.map +1 -1
  90. package/dist/esm/fea/shell/validation/validate-strips.js +99 -0
  91. package/dist/esm/fea/shell/validation/validate-strips.js.map +1 -0
  92. package/dist/esm/index.js +2 -2
  93. package/dist/esm/index.js.map +1 -1
  94. package/dist/esm/rc/rc-section-properties.js +1 -1
  95. package/dist/esm/rc/rc-section-properties.js.map +1 -1
  96. package/dist/fea/analysis/index.d.ts +4 -2
  97. package/dist/fea/analysis/index.js +3 -1
  98. package/dist/fea/analysis/index.js.map +1 -1
  99. package/dist/fea/analysis/mesh/expand-model.d.ts +10 -7
  100. package/dist/fea/analysis/mesh/expand-model.js +28 -45
  101. package/dist/fea/analysis/mesh/expand-model.js.map +1 -1
  102. package/dist/fea/analysis/mesh/member-connectivity.d.ts +43 -0
  103. package/dist/fea/analysis/mesh/member-connectivity.js +72 -0
  104. package/dist/fea/analysis/mesh/member-connectivity.js.map +1 -0
  105. package/dist/fea/analysis/post/envelope.js +70 -0
  106. package/dist/fea/analysis/post/envelope.js.map +1 -1
  107. package/dist/fea/analysis/post/present-state.d.ts +8 -1
  108. package/dist/fea/analysis/post/present-state.js +12 -5
  109. package/dist/fea/analysis/post/present-state.js.map +1 -1
  110. package/dist/fea/analysis/post/wall-forces.d.ts +65 -0
  111. package/dist/fea/analysis/post/wall-forces.js +305 -0
  112. package/dist/fea/analysis/post/wall-forces.js.map +1 -0
  113. package/dist/fea/analysis/post/wall-geometry.d.ts +73 -0
  114. package/dist/fea/analysis/post/wall-geometry.js +188 -0
  115. package/dist/fea/analysis/post/wall-geometry.js.map +1 -0
  116. package/dist/fea/analysis/solver/analysis-system.d.ts +1 -1
  117. package/dist/fea/analysis/solver/analysis-system.js +2 -2
  118. package/dist/fea/analysis/solver/analysis-system.js.map +1 -1
  119. package/dist/fea/analysis/solver/analyze.d.ts +12 -3
  120. package/dist/fea/analysis/solver/analyze.js +21 -5
  121. package/dist/fea/analysis/solver/analyze.js.map +1 -1
  122. package/dist/fea/analysis/solver/load-case-solver.d.ts +1 -0
  123. package/dist/fea/analysis/solver/load-case-solver.js +5 -4
  124. package/dist/fea/analysis/solver/load-case-solver.js.map +1 -1
  125. package/dist/fea/analysis/types/model.type.d.ts +58 -1
  126. package/dist/fea/analysis/types/results.type.d.ts +136 -2
  127. package/dist/fea/analysis/validation/validate-model.d.ts +1 -1
  128. package/dist/fea/analysis/validation/validate-model.js +20 -2
  129. package/dist/fea/analysis/validation/validate-model.js.map +1 -1
  130. package/dist/fea/analysis/validation/validate-walls.d.ts +35 -0
  131. package/dist/fea/analysis/validation/validate-walls.js +230 -0
  132. package/dist/fea/analysis/validation/validate-walls.js.map +1 -0
  133. package/dist/fea/frame/area/area-geometry.js +5 -5
  134. package/dist/fea/frame/area/area-geometry.js.map +1 -1
  135. package/dist/fea/frame/area/area-member-loads.js +7 -7
  136. package/dist/fea/frame/area/area-member-loads.js.map +1 -1
  137. package/dist/fea/frame/area/edge-members.js +2 -2
  138. package/dist/fea/frame/area/edge-members.js.map +1 -1
  139. package/dist/fea/frame/index.d.ts +1 -1
  140. package/dist/fea/frame/post/member-diagram.d.ts +14 -5
  141. package/dist/fea/frame/post/member-diagram.js +18 -5
  142. package/dist/fea/frame/post/member-diagram.js.map +1 -1
  143. package/dist/fea/frame/solver/nodes-along-members.d.ts +31 -0
  144. package/dist/fea/frame/solver/nodes-along-members.js +77 -0
  145. package/dist/fea/frame/solver/nodes-along-members.js.map +1 -0
  146. package/dist/fea/frame/solver/system-member.d.ts +6 -5
  147. package/dist/fea/frame/solver/system-member.js +4 -4
  148. package/dist/fea/frame/solver/system-member.js.map +1 -1
  149. package/dist/fea/frame/transformation/coordinate-transform.js +2 -2
  150. package/dist/fea/frame/transformation/coordinate-transform.js.map +1 -1
  151. package/dist/fea/frame/types/model.type.d.ts +6 -0
  152. package/dist/fea/frame/types/results.type.d.ts +20 -0
  153. package/dist/fea/frame/validation/validate-members.d.ts +2 -2
  154. package/dist/fea/frame/validation/validate-members.js +6 -2
  155. package/dist/fea/frame/validation/validate-members.js.map +1 -1
  156. package/dist/fea/frame/validation/validate-null-areas.js +2 -2
  157. package/dist/fea/frame/validation/validate-null-areas.js.map +1 -1
  158. package/dist/fea/shared/solver/auto-restraint.js +3 -3
  159. package/dist/fea/shared/solver/auto-restraint.js.map +1 -1
  160. package/dist/fea/shared/validation/issues.js +8 -0
  161. package/dist/fea/shared/validation/issues.js.map +1 -1
  162. package/dist/fea/shell/elements/membrane-quad.js +2 -2
  163. package/dist/fea/shell/elements/shell-axes.js +6 -5
  164. package/dist/fea/shell/elements/shell-axes.js.map +1 -1
  165. package/dist/fea/shell/index.d.ts +2 -2
  166. package/dist/fea/shell/mesh/mesh-shells.js +2 -2
  167. package/dist/fea/shell/mesh/mesh-shells.js.map +1 -1
  168. package/dist/fea/shell/post/strip-forces.d.ts +69 -0
  169. package/dist/fea/shell/post/strip-forces.js +349 -0
  170. package/dist/fea/shell/post/strip-forces.js.map +1 -0
  171. package/dist/fea/shell/solver/shell-loads.d.ts +3 -1
  172. package/dist/fea/shell/solver/shell-loads.js +3 -0
  173. package/dist/fea/shell/solver/shell-loads.js.map +1 -1
  174. package/dist/fea/shell/types/model.type.d.ts +31 -0
  175. package/dist/fea/shell/types/results.type.d.ts +54 -0
  176. package/dist/fea/shell/validation/validate-shells.d.ts +7 -2
  177. package/dist/fea/shell/validation/validate-shells.js +9 -2
  178. package/dist/fea/shell/validation/validate-shells.js.map +1 -1
  179. package/dist/fea/shell/validation/validate-strips.d.ts +11 -0
  180. package/dist/fea/shell/validation/validate-strips.js +103 -0
  181. package/dist/fea/shell/validation/validate-strips.js.map +1 -0
  182. package/dist/index.d.ts +3 -3
  183. package/dist/index.js +9 -2
  184. package/dist/index.js.map +1 -1
  185. package/dist/rc/rc-section-properties.js +4 -4
  186. package/dist/rc/rc-section-properties.js.map +1 -1
  187. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FrameErrors = exports.FrameAnalysisError = exports.FeaErrors = exports.FeaError = exports.Errors = exports.RCDesignError = exports.SHELL_WARPING_LIMIT = exports.AREA_GEOMETRY_TOLERANCE = exports.EQUILIBRIUM_TOLERANCE = exports.SINGULARITY_TOLERANCE = exports.VERTICAL_MEMBER_TOLERANCE = exports.COLUMN_INERTIA_MODIFIER = exports.BEAM_INERTIA_MODIFIER = exports.CONCRETE_UNIT_WEIGHT = exports.CONCRETE_POISSON_RATIO = exports.SIDE_PLATE_REDUCTION_FACTOR_PSI = exports.SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT = exports.PLATE_SHEAR_YIELD_COEFFICIENT = exports.MAX_PLATE_BOLT_SPACING = exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.hasSidePlate = exports.hasBottomPlate = exports.hasTopPlate = exports.isSinglyReinforced = void 0;
3
+ exports.FrameErrors = exports.FrameAnalysisError = exports.FeaErrors = exports.FeaError = exports.Errors = exports.RCDesignError = exports.STRIP_DEFAULT_DIVISIONS = exports.STRIP_PLANE_TOLERANCE = exports.SHELL_WARPING_LIMIT = exports.NODE_NEAR_MEMBER_MAX_DISTANCE = exports.NODE_NEAR_MEMBER_RATIO = exports.WALL_CUT_TOLERANCE = exports.WALL_VERTICAL_TOLERANCE = exports.AREA_GEOMETRY_TOLERANCE = exports.EQUILIBRIUM_TOLERANCE = exports.SINGULARITY_TOLERANCE = exports.VERTICAL_MEMBER_TOLERANCE = exports.COLUMN_INERTIA_MODIFIER = exports.BEAM_INERTIA_MODIFIER = exports.CONCRETE_UNIT_WEIGHT = exports.CONCRETE_POISSON_RATIO = exports.SIDE_PLATE_REDUCTION_FACTOR_PSI = exports.SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT = exports.PLATE_SHEAR_YIELD_COEFFICIENT = exports.MAX_PLATE_BOLT_SPACING = exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.hasSidePlate = exports.hasBottomPlate = exports.hasTopPlate = exports.isSinglyReinforced = void 0;
4
4
  var rc_beam_type_1 = require("./types/rc-beam.type");
5
5
  Object.defineProperty(exports, "isSinglyReinforced", { enumerable: true, get: function () { return rc_beam_type_1.isSinglyReinforced; } });
6
6
  var plate_jacketing_type_1 = require("./types/plate-jacketing.type");
@@ -17,16 +17,24 @@ Object.defineProperty(exports, "MAX_PLATE_BOLT_SPACING", { enumerable: true, get
17
17
  Object.defineProperty(exports, "PLATE_SHEAR_YIELD_COEFFICIENT", { enumerable: true, get: function () { return rc_constant_1.PLATE_SHEAR_YIELD_COEFFICIENT; } });
18
18
  Object.defineProperty(exports, "SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT", { enumerable: true, get: function () { return rc_constant_1.SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT; } });
19
19
  Object.defineProperty(exports, "SIDE_PLATE_REDUCTION_FACTOR_PSI", { enumerable: true, get: function () { return rc_constant_1.SIDE_PLATE_REDUCTION_FACTOR_PSI; } });
20
+ Object.defineProperty(exports, "CONCRETE_POISSON_RATIO", { enumerable: true, get: function () { return rc_constant_1.CONCRETE_POISSON_RATIO; } });
21
+ Object.defineProperty(exports, "CONCRETE_UNIT_WEIGHT", { enumerable: true, get: function () { return rc_constant_1.CONCRETE_UNIT_WEIGHT; } });
22
+ Object.defineProperty(exports, "BEAM_INERTIA_MODIFIER", { enumerable: true, get: function () { return rc_constant_1.BEAM_INERTIA_MODIFIER; } });
23
+ Object.defineProperty(exports, "COLUMN_INERTIA_MODIFIER", { enumerable: true, get: function () { return rc_constant_1.COLUMN_INERTIA_MODIFIER; } });
24
+ var fea_constant_1 = require("./constants/fea.constant");
25
+ Object.defineProperty(exports, "VERTICAL_MEMBER_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.VERTICAL_MEMBER_TOLERANCE; } });
26
+ Object.defineProperty(exports, "SINGULARITY_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.SINGULARITY_TOLERANCE; } });
27
+ Object.defineProperty(exports, "EQUILIBRIUM_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.EQUILIBRIUM_TOLERANCE; } });
28
+ Object.defineProperty(exports, "AREA_GEOMETRY_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.AREA_GEOMETRY_TOLERANCE; } });
29
+ Object.defineProperty(exports, "WALL_VERTICAL_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.WALL_VERTICAL_TOLERANCE; } });
30
+ Object.defineProperty(exports, "WALL_CUT_TOLERANCE", { enumerable: true, get: function () { return fea_constant_1.WALL_CUT_TOLERANCE; } });
20
31
  var frame_constant_1 = require("./constants/frame.constant");
21
- Object.defineProperty(exports, "CONCRETE_POISSON_RATIO", { enumerable: true, get: function () { return frame_constant_1.CONCRETE_POISSON_RATIO; } });
22
- Object.defineProperty(exports, "CONCRETE_UNIT_WEIGHT", { enumerable: true, get: function () { return frame_constant_1.CONCRETE_UNIT_WEIGHT; } });
23
- Object.defineProperty(exports, "BEAM_INERTIA_MODIFIER", { enumerable: true, get: function () { return frame_constant_1.BEAM_INERTIA_MODIFIER; } });
24
- Object.defineProperty(exports, "COLUMN_INERTIA_MODIFIER", { enumerable: true, get: function () { return frame_constant_1.COLUMN_INERTIA_MODIFIER; } });
25
- Object.defineProperty(exports, "VERTICAL_MEMBER_TOLERANCE", { enumerable: true, get: function () { return frame_constant_1.VERTICAL_MEMBER_TOLERANCE; } });
26
- Object.defineProperty(exports, "SINGULARITY_TOLERANCE", { enumerable: true, get: function () { return frame_constant_1.SINGULARITY_TOLERANCE; } });
27
- Object.defineProperty(exports, "EQUILIBRIUM_TOLERANCE", { enumerable: true, get: function () { return frame_constant_1.EQUILIBRIUM_TOLERANCE; } });
28
- Object.defineProperty(exports, "AREA_GEOMETRY_TOLERANCE", { enumerable: true, get: function () { return frame_constant_1.AREA_GEOMETRY_TOLERANCE; } });
29
- Object.defineProperty(exports, "SHELL_WARPING_LIMIT", { enumerable: true, get: function () { return frame_constant_1.SHELL_WARPING_LIMIT; } });
32
+ Object.defineProperty(exports, "NODE_NEAR_MEMBER_RATIO", { enumerable: true, get: function () { return frame_constant_1.NODE_NEAR_MEMBER_RATIO; } });
33
+ Object.defineProperty(exports, "NODE_NEAR_MEMBER_MAX_DISTANCE", { enumerable: true, get: function () { return frame_constant_1.NODE_NEAR_MEMBER_MAX_DISTANCE; } });
34
+ var shell_constant_1 = require("./constants/shell.constant");
35
+ Object.defineProperty(exports, "SHELL_WARPING_LIMIT", { enumerable: true, get: function () { return shell_constant_1.SHELL_WARPING_LIMIT; } });
36
+ Object.defineProperty(exports, "STRIP_PLANE_TOLERANCE", { enumerable: true, get: function () { return shell_constant_1.STRIP_PLANE_TOLERANCE; } });
37
+ Object.defineProperty(exports, "STRIP_DEFAULT_DIVISIONS", { enumerable: true, get: function () { return shell_constant_1.STRIP_DEFAULT_DIVISIONS; } });
30
38
  // Errors
31
39
  var rc_design_error_1 = require("./errors/rc-design.error");
32
40
  Object.defineProperty(exports, "RCDesignError", { enumerable: true, get: function () { return rc_design_error_1.RCDesignError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAWA,qDAA0D;AAAjD,kHAAA,kBAAkB,OAAA;AAW3B,qEAAyF;AAAhF,mHAAA,WAAW,OAAA;AAAE,sHAAA,cAAc,OAAA;AAAE,oHAAA,YAAY,OAAA;AAKlD,YAAY;AACZ,uDASiC;AAR/B,iIAAA,kCAAkC,OAAA;AAClC,uHAAA,wBAAwB,OAAA;AACxB,8HAAA,+BAA+B,OAAA;AAC/B,qIAAA,sCAAsC,OAAA;AACtC,qHAAA,sBAAsB,OAAA;AACtB,4HAAA,6BAA6B,OAAA;AAC7B,gIAAA,iCAAiC,OAAA;AACjC,8HAAA,+BAA+B,OAAA;AAGjC,6DAUoC;AATlC,wHAAA,sBAAsB,OAAA;AACtB,sHAAA,oBAAoB,OAAA;AACpB,uHAAA,qBAAqB,OAAA;AACrB,yHAAA,uBAAuB,OAAA;AACvB,2HAAA,yBAAyB,OAAA;AACzB,uHAAA,qBAAqB,OAAA;AACrB,uHAAA,qBAAqB,OAAA;AACrB,yHAAA,uBAAuB,OAAA;AACvB,qHAAA,mBAAmB,OAAA;AAGrB,SAAS;AACT,4DAAiE;AAAxD,gHAAA,aAAa,OAAA;AAAE,yGAAA,MAAM,OAAA;AAC9B,gDAAyD;AAAhD,qGAAA,QAAQ,OAAA;AAAE,sGAAA,SAAS,OAAA;AAE5B,qCAAqC;AACrC,gDAAqE;AAA5D,+GAAA,kBAAkB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAWA,qDAA0D;AAAjD,kHAAA,kBAAkB,OAAA;AAW3B,qEAAyF;AAAhF,mHAAA,WAAW,OAAA;AAAE,sHAAA,cAAc,OAAA;AAAE,oHAAA,YAAY,OAAA;AAKlD,YAAY;AACZ,uDAaiC;AAZ/B,iIAAA,kCAAkC,OAAA;AAClC,uHAAA,wBAAwB,OAAA;AACxB,8HAAA,+BAA+B,OAAA;AAC/B,qIAAA,sCAAsC,OAAA;AACtC,qHAAA,sBAAsB,OAAA;AACtB,4HAAA,6BAA6B,OAAA;AAC7B,gIAAA,iCAAiC,OAAA;AACjC,8HAAA,+BAA+B,OAAA;AAC/B,qHAAA,sBAAsB,OAAA;AACtB,mHAAA,oBAAoB,OAAA;AACpB,oHAAA,qBAAqB,OAAA;AACrB,sHAAA,uBAAuB,OAAA;AAGzB,yDAOkC;AANhC,yHAAA,yBAAyB,OAAA;AACzB,qHAAA,qBAAqB,OAAA;AACrB,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,uHAAA,uBAAuB,OAAA;AACvB,kHAAA,kBAAkB,OAAA;AAEpB,6DAAmG;AAA1F,wHAAA,sBAAsB,OAAA;AAAE,+HAAA,6BAA6B,OAAA;AAC9D,6DAIoC;AAHlC,qHAAA,mBAAmB,OAAA;AACnB,uHAAA,qBAAqB,OAAA;AACrB,yHAAA,uBAAuB,OAAA;AAGzB,SAAS;AACT,4DAAiE;AAAxD,gHAAA,aAAa,OAAA;AAAE,yGAAA,MAAM,OAAA;AAC9B,gDAAyD;AAAhD,qGAAA,QAAQ,OAAA;AAAE,sGAAA,SAAS,OAAA;AAE5B,qCAAqC;AACrC,gDAAqE;AAA5D,+GAAA,kBAAkB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
@@ -0,0 +1,23 @@
1
+ // Tolerances shared by the whole FEA model: members, shells and the solver.
2
+ /** A member is vertical when the horizontal projection of its unit axis is below this value. */
3
+ export const VERTICAL_MEMBER_TOLERANCE = 1e-6;
4
+ /** Smallest pivot, relative to its own diagonal term, accepted when factorising a stiffness matrix. */
5
+ export const SINGULARITY_TOLERANCE = 1e-9;
6
+ /** Relative global-equilibrium residual above which a warning is added. */
7
+ export const EQUILIBRIUM_TOLERANCE = 1e-6;
8
+ /**
9
+ * Relative tolerance for null-area geometry (planarity, corners in line, parallel or square
10
+ * edges, nodes lying on an edge): distances are compared with this times the longest edge.
11
+ */
12
+ export const AREA_GEOMETRY_TOLERANCE = 1e-6;
13
+ /**
14
+ * A shell area counts as vertical (a wall, for piers and spandrels) when the vertical
15
+ * component of its unit normal is at most this value (about 0.06°).
16
+ */
17
+ export const WALL_VERTICAL_TOLERANCE = 1e-3;
18
+ /**
19
+ * Relative tolerance for pier and spandrel cuts: a node lies on a cut when its distance from
20
+ * the cut plane is at most this times the extent of the pier or spandrel along the cut normal.
21
+ */
22
+ export const WALL_CUT_TOLERANCE = 1e-6;
23
+ //# sourceMappingURL=fea.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fea.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/fea.constant.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,gGAAgG;AAChG,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,uGAAuG;AACvG,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC"}
@@ -1,35 +1,10 @@
1
- /** Poisson's ratio of concrete, for G = E / (2(1 + ν)). */
2
- export const CONCRETE_POISSON_RATIO = 0.2;
3
- /** ACI 318-19 Table 6.6.3.1.1(a): effective I of beams for elastic analysis at factored load. */
4
- export const BEAM_INERTIA_MODIFIER = 0.35;
5
- /** ACI 318-19 Table 6.6.3.1.1(a): effective I of columns for elastic analysis at factored load. */
6
- export const COLUMN_INERTIA_MODIFIER = 0.7;
7
- /** Unit weight of reinforced concrete in kN/m³ — common design practice, not an ACI 318-19 value. */
8
- export const CONCRETE_UNIT_WEIGHT = 24;
9
- /** A member is vertical when the horizontal projection of its unit axis is below this value. */
10
- export const VERTICAL_MEMBER_TOLERANCE = 1e-6;
11
- /** Smallest pivot, relative to its own diagonal term, accepted when factorising a stiffness matrix. */
12
- export const SINGULARITY_TOLERANCE = 1e-9;
13
- /** Relative global-equilibrium residual above which a warning is added. */
14
- export const EQUILIBRIUM_TOLERANCE = 1e-6;
1
+ // Frame members (line elements).
15
2
  /**
16
- * Relative tolerance for null-area geometry (planarity, corners in line, parallel or square
17
- * edges, nodes lying on an edge): distances are compared with this times the longest edge.
3
+ * A model node that lies off a member's axis, between its ends, by no more than this fraction
4
+ * of the member's length (and at most `NODE_NEAR_MEMBER_MAX_DISTANCE`), but not on it, gets a
5
+ * warning: it is probably meant to be on the member, yet it is not connected to it.
18
6
  */
19
- export const AREA_GEOMETRY_TOLERANCE = 1e-6;
20
- /**
21
- * Penalty factor γ of the shell membrane's drilling rotation, as a multiple of the shear modulus
22
- * G: the term ½·γ·t·∫(θ − ω)² dA, integrated at the element centre, ties each element's rotation
23
- * about the shell normal θ to the in-plane rotation of the material ω = ½(v,x − u,y). γ = G
24
- * follows Ibrahimbegovic, Taylor & Wilson (1990); with the one-point rule the results change by
25
- * well under 1 % for γ between 0.01 G and 100 G.
26
- */
27
- export const DRILLING_PENALTY_RATIO = 1;
28
- /**
29
- * Largest warping of a shell element accepted, as the distance of its corners from their mean
30
- * plane relative to √A (A = projected area). Warped elements are built flat on the mean plane
31
- * and linked rigidly to their corners, which is accurate for mild warping (the MacNeal–Harder
32
- * twisted beam, 0.024, is within 0.5 %); beyond this the element is rejected (326).
33
- */
34
- export const SHELL_WARPING_LIMIT = 0.1;
7
+ export const NODE_NEAR_MEMBER_RATIO = 0.01;
8
+ /** Upper bound (mm) of the near-miss distance given by `NODE_NEAR_MEMBER_RATIO`. */
9
+ export const NODE_NEAR_MEMBER_MAX_DISTANCE = 100;
35
10
  //# sourceMappingURL=frame.constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/frame.constant.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,qGAAqG;AACrG,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,gGAAgG;AAChG,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,uGAAuG;AACvG,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"frame.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/frame.constant.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,oFAAoF;AACpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC"}
@@ -60,4 +60,13 @@ export const DEFAULT_SIDE_PLATE_ANGLE = 90; // degrees from the beam axis
60
60
  // Practical detailing limit on bolt pitch along a bonded strengthening plate,
61
61
  // so the plate is restrained against local buckling / peeling between fasteners
62
62
  export const MAX_PLATE_BOLT_SPACING = 300; // mm
63
+ // Concrete material and cracked-section values used to build member section properties
64
+ /** Poisson's ratio of concrete, for G = E / (2(1 + ν)). */
65
+ export const CONCRETE_POISSON_RATIO = 0.2;
66
+ /** ACI 318-19 Table 6.6.3.1.1(a): effective I of beams for elastic analysis at factored load. */
67
+ export const BEAM_INERTIA_MODIFIER = 0.35;
68
+ /** ACI 318-19 Table 6.6.3.1.1(a): effective I of columns for elastic analysis at factored load. */
69
+ export const COLUMN_INERTIA_MODIFIER = 0.7;
70
+ /** Unit weight of reinforced concrete in kN/m³ — common design practice, not an ACI 318-19 value. */
71
+ export const CONCRETE_UNIT_WEIGHT = 24;
63
72
  //# sourceMappingURL=rc.constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rc.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/rc.constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,qGAAqG;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC,CAAC,6BAA6B;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC,CAAC,KAAK;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAAC,iCAAiC;AAE/E,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC,CAAC,KAAK;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,uDAAuD;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC,CAAC,KAAK;AAEhD,yDAAyD;AACzD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD,gFAAgF;AAChF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,CAAC,MAAM;AAE9C,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,yFAAyF;AACzF,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC,CAAC,uBAAuB;AAE7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC,CAAC,KAAK;AACpD,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAC,CAAC,MAAM;AAElE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC,CAAC,KAAK;AACrD,MAAM,CAAC,MAAM,wCAAwC,GAAG,IAAI,CAAC,CAAC,MAAM;AAEpE,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAE3D,iDAAiD;AACjD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC,CAAC,MAAM;AAE1C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAEpD,uFAAuF;AACvF,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,CAAC,MAAM;AAE3D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD,+EAA+E;AAC/E,iCAAiC;AACjC,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC,CAAC,kBAAkB;AAE3E,gFAAgF;AAChF,mFAAmF;AACnF,qDAAqD;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AAEvD,8EAA8E;AAC9E,mFAAmF;AACnF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,iEAAiE;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC,CAAC,6BAA6B;AAEzE,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,KAAK"}
1
+ {"version":3,"file":"rc.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/rc.constant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ // Shell elements and strip forces.
2
+ /**
3
+ * Penalty factor γ of the shell membrane's drilling rotation, as a multiple of the shear modulus
4
+ * G: the term ½·γ·t·∫(θ − ω)² dA, integrated at the element centre, ties each element's rotation
5
+ * about the shell normal θ to the in-plane rotation of the material ω = ½(v,x − u,y). γ = G
6
+ * follows Ibrahimbegovic, Taylor & Wilson (1990); with the one-point rule the results change by
7
+ * well under 1 % for γ between 0.01 G and 100 G.
8
+ */
9
+ export const DRILLING_PENALTY_RATIO = 1;
10
+ /**
11
+ * Largest warping of a shell element accepted, as the distance of its corners from their mean
12
+ * plane relative to √A (A = projected area). Warped elements are built flat on the mean plane
13
+ * and linked rigidly to their corners, which is accurate for mild warping (the MacNeal–Harder
14
+ * twisted beam, 0.024, is within 0.5 %); beyond this the element is rejected (326).
15
+ */
16
+ export const SHELL_WARPING_LIMIT = 0.1;
17
+ /**
18
+ * A shell element counts as lying in a strip's plane when each of its corners is within this
19
+ * fraction of the element's longest side from that plane (1 mm on a 1 m element). The strip
20
+ * then integrates its forces; elements off the plane, such as walls, are ignored.
21
+ */
22
+ export const STRIP_PLANE_TOLERANCE = 1e-3;
23
+ /** Divisions of each strip segment when the strip gives no `maxSpacing`: 21 stations. */
24
+ export const STRIP_DEFAULT_DIVISIONS = 20;
25
+ //# sourceMappingURL=shell.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.constant.js","sourceRoot":"","sources":["../../../../src/core/constants/shell.constant.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,yFAAyF;AACzF,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC"}
@@ -20,7 +20,7 @@ export const FeaErrors = {
20
20
  },
21
21
  DUPLICATE_ID: {
22
22
  code: 303,
23
- message: "Node ids, member ids and restrained node ids must each be unique, area ids must be unique across null areas and shells, and load case and combination ids must be unique across both lists.",
23
+ message: "Node ids, member ids and restrained node ids must each be unique, area ids must be unique across null areas and shells, strip ids must be unique, and load case and combination ids must be unique across both lists.",
24
24
  },
25
25
  STRUCTURE_UNSTABLE: {
26
26
  code: 304,
@@ -94,6 +94,14 @@ export const FeaErrors = {
94
94
  code: 329,
95
95
  message: "Shell areas cannot be meshed: no division counts make the meshes of areas sharing edges meet node to node, a generated element is not a valid quadrilateral, or a generated id is already in use. Divide the areas so they meet edge to edge, or change their mesh sizes.",
96
96
  },
97
+ INVALID_STRIP_GEOMETRY: {
98
+ code: 330,
99
+ message: "A strip needs at least 2 points in one plane normal to its normal (default +Z), with no zero-length segment and no segment turning straight back on the previous one; its normal must not be zero, its widths must not be negative, and they must not both be zero.",
100
+ },
101
+ INVALID_PIER_GEOMETRY: {
102
+ code: 331,
103
+ message: "A pier or spandrel must list existing shell areas and members, each at most once and in no other pier (or spandrel); a pier needs at least one area or member, a spandrel at least one area. Pier areas must be vertical and pier members not horizontal; a spandrel's areas must lie in one vertical plane and its members must not be normal to its length. Every cut must lie within the group and on the mesh lines of its areas: divide an area that a cut crosses.",
104
+ },
97
105
  };
98
106
  // ---- Names before 3.2.0, kept as deprecated aliases until 4.0.0 ------------------------
99
107
  /** @deprecated Renamed `FeaError`; this alias is removed in 4.0.0. */
@@ -1 +1 @@
1
- {"version":3,"file":"fea.error.js","sourceRoot":"","sources":["../../../../src/core/errors/fea.error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fea.error.js","sourceRoot":"","sources":["../../../../src/core/errors/fea.error.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  export { isSinglyReinforced } from "./types/rc-beam.type.js";
2
2
  export { hasTopPlate, hasBottomPlate, hasSidePlate } from "./types/plate-jacketing.type.js";
3
3
  // Constants
4
- export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR, MAX_PLATE_BOLT_SPACING, PLATE_SHEAR_YIELD_COEFFICIENT, SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT, SIDE_PLATE_REDUCTION_FACTOR_PSI, } from "./constants/rc.constant.js";
5
- export { CONCRETE_POISSON_RATIO, CONCRETE_UNIT_WEIGHT, BEAM_INERTIA_MODIFIER, COLUMN_INERTIA_MODIFIER, VERTICAL_MEMBER_TOLERANCE, SINGULARITY_TOLERANCE, EQUILIBRIUM_TOLERANCE, AREA_GEOMETRY_TOLERANCE, SHELL_WARPING_LIMIT, } from "./constants/frame.constant.js";
4
+ export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR, MAX_PLATE_BOLT_SPACING, PLATE_SHEAR_YIELD_COEFFICIENT, SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT, SIDE_PLATE_REDUCTION_FACTOR_PSI, CONCRETE_POISSON_RATIO, CONCRETE_UNIT_WEIGHT, BEAM_INERTIA_MODIFIER, COLUMN_INERTIA_MODIFIER, } from "./constants/rc.constant.js";
5
+ export { VERTICAL_MEMBER_TOLERANCE, SINGULARITY_TOLERANCE, EQUILIBRIUM_TOLERANCE, AREA_GEOMETRY_TOLERANCE, WALL_VERTICAL_TOLERANCE, WALL_CUT_TOLERANCE, } from "./constants/fea.constant.js";
6
+ export { NODE_NEAR_MEMBER_RATIO, NODE_NEAR_MEMBER_MAX_DISTANCE } from "./constants/frame.constant.js";
7
+ export { SHELL_WARPING_LIMIT, STRIP_PLANE_TOLERANCE, STRIP_DEFAULT_DIVISIONS, } from "./constants/shell.constant.js";
6
8
  // Errors
7
9
  export { RCDesignError, Errors } from "./errors/rc-design.error.js";
8
10
  export { FeaError, FeaErrors } from "./errors/fea.error.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAW1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKzF,YAAY;AACZ,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,sCAAsC,EACtC,sBAAsB,EACtB,6BAA6B,EAC7B,iCAAiC,EACjC,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAEpC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qCAAqC;AACrC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAW1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKzF,YAAY;AACZ,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,sCAAsC,EACtC,sBAAsB,EACtB,6BAA6B,EAC7B,iCAAiC,EACjC,+BAA+B,EAC/B,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qCAAqC;AACrC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -3,4 +3,5 @@ export { analyze, createAnalysis } from "./solver/analyze.js";
3
3
  export { validateModel } from "./validation/validate-model.js";
4
4
  export { distributeAreaLoads } from "./solver/distribute-area-loads.js";
5
5
  export { memberDemandEnvelope } from "./post/demand-envelope.js";
6
+ export { memberConnectivity } from "./mesh/member-connectivity.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fea/analysis/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fea/analysis/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,6 +1,8 @@
1
- import { AREA_GEOMETRY_TOLERANCE } from "../../../core/constants/frame.constant.js";
1
+ import { AREA_GEOMETRY_TOLERANCE } from "../../../core/constants/fea.constant.js";
2
+ import { nodesAlongMembers } from "../../frame/solver/nodes-along-members.js";
2
3
  import { shellAxes } from "../../shell/elements/shell-axes.js";
3
4
  import { meshShells, pointOnSegment } from "../../shell/mesh/mesh-shells.js";
5
+ import { findMemberConnectivity } from "./member-connectivity.js";
4
6
  const DOF_KEYS = ["ux", "uy", "uz", "rx", "ry", "rz"];
5
7
  /**
6
8
  * Restraints of every node on each line restraint's segment (ends included), merged with the
@@ -68,68 +70,49 @@ const disconnectedNodes = (model, meshNodes) => {
68
70
  return warnings;
69
71
  };
70
72
  /**
71
- * The generated nodes lying strictly inside each member (a beam along a meshed edge), so the
72
- * member can be split there and share them with the shells.
73
+ * The nodes lying strictly inside each member, where the solver splits it: the generated mesh
74
+ * nodes (a beam along a meshed edge, so it shares them with the shells) and the model nodes it
75
+ * connects to (see `findMemberConnectivity`).
73
76
  */
74
77
  const splitMembers = (model, generated) => {
75
78
  const members = model.members ?? [];
76
- if (generated.length === 0)
77
- return members;
79
+ const { connected, connectivity } = findMemberConnectivity(model);
78
80
  const position = new Map(model.nodes.map((n) => [n.id, [n.x, n.y, n.z]]));
79
- return members.map((member) => {
80
- const [P, Q] = [position.get(member.startNodeId), position.get(member.endNodeId)];
81
- const lo = [0, 1, 2].map((k) => Math.min(P[k], Q[k]));
82
- const hi = [0, 1, 2].map((k) => Math.max(P[k], Q[k]));
83
- const slack = AREA_GEOMETRY_TOLERANCE * Math.hypot(Q[0] - P[0], Q[1] - P[1], Q[2] - P[2]);
84
- const through = [];
85
- for (const node of generated) {
86
- const x = [node.x, node.y, node.z];
87
- if (x.some((v, k) => v < lo[k] - slack || v > hi[k] + slack))
88
- continue;
89
- const t = pointOnSegment(x, P, Q);
90
- if (t !== null)
91
- through.push({ id: node.id, t });
92
- }
93
- return through.length === 0
94
- ? member
95
- : { ...member, through: through.sort((a, b) => a.t - b.t).map((h) => h.id) };
81
+ const meshed = nodesAlongMembers(members, (id) => position.get(id), generated, (_, L) => AREA_GEOMETRY_TOLERANCE * L);
82
+ const split = members.map((member, i) => {
83
+ const through = [...connected[i], ...meshed[i]].sort((a, b) => a.x - b.x).map((h) => h.nodeId);
84
+ return through.length === 0 ? member : { ...member, through };
96
85
  });
86
+ return { members: split, connectivity };
97
87
  };
98
88
  /**
99
- * Meshes a valid model's shell areas, spreads its line restraints and marks the members that
100
- * generated nodes split (see `meshShells`).
101
- * Without shells and line restraints the model is returned as it is.
89
+ * Meshes a valid model's shell areas, spreads its line restraints and marks where each member
90
+ * is split: at the generated mesh nodes and at the model nodes on it (see `meshShells` and
91
+ * `splitMembers`).
102
92
  */
103
93
  export const expandModel = (model) => {
104
94
  const shells = model.shells ?? [];
105
- if (shells.length === 0) {
106
- return {
107
- model: {
108
- ...model,
109
- members: model.members ?? [],
110
- shells: [],
111
- restraints: spreadLineRestraints(model, model.nodes),
112
- },
113
- mesh: undefined,
114
- warnings: [],
115
- };
116
- }
117
- const meshed = meshShells(model.nodes, shells);
118
- const nodes = [...model.nodes, ...meshed.nodes];
119
- const meshNodes = new Set(meshed.elements.flatMap((e) => e.nodeIds));
95
+ const meshed = shells.length > 0 ? meshShells(model.nodes, shells) : undefined;
96
+ const nodes = meshed ? [...model.nodes, ...meshed.nodes] : model.nodes;
97
+ const split = splitMembers(model, meshed?.nodes ?? []);
98
+ const meshNodes = new Set(meshed?.elements.flatMap((e) => e.nodeIds));
120
99
  return {
121
100
  model: {
122
101
  ...model,
123
102
  nodes,
124
- members: splitMembers(model, meshed.nodes),
125
- shells: meshed.elements,
103
+ members: split.members,
104
+ shells: meshed?.elements ?? [],
126
105
  restraints: spreadLineRestraints(model, nodes),
127
106
  },
128
- mesh: {
107
+ mesh: meshed && {
129
108
  nodes: meshed.nodes,
130
109
  shells: meshed.elements.map(({ id, areaId, nodeIds }) => ({ id, areaId, nodeIds })),
131
110
  },
132
- warnings: disconnectedNodes(model, meshNodes),
111
+ connectivity: split.connectivity,
112
+ warnings: [
113
+ ...split.connectivity.warnings,
114
+ ...(meshed ? disconnectedNodes(model, meshNodes) : []),
115
+ ],
133
116
  };
134
117
  };
135
118
  //# sourceMappingURL=expand-model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expand-model.js","sourceRoot":"","sources":["../../../../../src/fea/analysis/mesh/expand-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expand-model.js","sourceRoot":"","sources":["../../../../../src/fea/analysis/mesh/expand-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { AREA_GEOMETRY_TOLERANCE } from "../../../core/constants/fea.constant.js";
2
+ import { NODE_NEAR_MEMBER_MAX_DISTANCE, NODE_NEAR_MEMBER_RATIO, } from "../../../core/constants/frame.constant.js";
3
+ import { nodesAlongMembers } from "../../frame/solver/nodes-along-members.js";
4
+ import { isFiniteNumber } from "../../shared/validation/issues.js";
5
+ import { roundToDecimalPlaces } from "../../../utils/math.js";
6
+ /** Near-miss distance (mm) for a member of length `L`: see `NODE_NEAR_MEMBER_RATIO`. */
7
+ const nearMissDistance = (L) => Math.min(NODE_NEAR_MEMBER_RATIO * L, NODE_NEAR_MEMBER_MAX_DISTANCE);
8
+ /** Formats a distance in mm for a warning, to three significant figures. */
9
+ const formatMm = (v) => String(Number(v.toPrecision(3)));
10
+ const NOWHERE = [Number.NaN, Number.NaN, Number.NaN];
11
+ /**
12
+ * The connectivity of a model's members, and for each member the model nodes it connects to
13
+ * (unrounded, in order from its start), which is where the solver splits it. Members with an
14
+ * unknown or invalid end node or zero length, and nodes with invalid coordinates, are skipped,
15
+ * so a model that is still being edited can be checked.
16
+ */
17
+ export const findMemberConnectivity = (model) => {
18
+ const members = model.members ?? [];
19
+ const nodes = (model.nodes ?? []).filter((n) => isFiniteNumber(n.x) && isFiniteNumber(n.y) && isFiniteNumber(n.z));
20
+ const position = new Map(nodes.map((n) => [n.id, [n.x, n.y, n.z]]));
21
+ // an unknown end gives a NaN length, which skips the member
22
+ const found = nodesAlongMembers(members, (id) => position.get(id) ?? NOWHERE, nodes, (member, L) => member.connectIntermediateNodes === false
23
+ ? null
24
+ : Math.max(AREA_GEOMETRY_TOLERANCE * L, nearMissDistance(L)));
25
+ const intermediateNodes = [];
26
+ const nearMissNodes = [];
27
+ const warnings = [];
28
+ members.forEach((member, i) => {
29
+ for (const h of found[i]) {
30
+ const at = { memberId: member.id, nodeId: h.nodeId, x: roundToDecimalPlaces(h.x, 3) };
31
+ if (h.on) {
32
+ intermediateNodes.push(at);
33
+ continue;
34
+ }
35
+ nearMissNodes.push({ ...at, distance: roundToDecimalPlaces(h.distance, 3) });
36
+ warnings.push({
37
+ reference: "Member connectivity",
38
+ message: `Node "${String(h.nodeId)}" is ${formatMm(h.distance)} mm from member "${String(member.id)}" (${formatMm(h.x)} mm from its start) but not on it, so it is not connected to the member; move the node onto the member if they should be connected.`,
39
+ });
40
+ }
41
+ });
42
+ return {
43
+ connected: found.map((hits) => hits.filter((h) => h.on)),
44
+ connectivity: { intermediateNodes, nearMissNodes, warnings },
45
+ };
46
+ };
47
+ /**
48
+ * Finds how a model's members connect to the model nodes lying on or near them, without
49
+ * analysing it: the same check `analyze` makes, cheap enough to run on every edit so a
50
+ * frontend can mark the points while the user draws (`analyze` cannot report them when the
51
+ * model is unstable).
52
+ *
53
+ * - A model node within `AREA_GEOMETRY_TOLERANCE` × the member length of a member's axis,
54
+ * strictly between its ends, is connected to it: listed in `intermediateNodes`.
55
+ * - A model node further off, but within `NODE_NEAR_MEMBER_RATIO` × the length and at most
56
+ * `NODE_NEAR_MEMBER_MAX_DISTANCE`, is not connected: listed in `nearMissNodes`, with a
57
+ * warning.
58
+ *
59
+ * Members with `connectIntermediateNodes: false` are skipped. The model need not be valid:
60
+ * members with an unknown or invalid end node or zero length, and nodes with invalid
61
+ * coordinates, are skipped (`validateModel` reports them). Shell-mesh nodes are not included.
62
+ *
63
+ * @param model - The model; only its nodes and members are used
64
+ * @returns `intermediateNodes`, `nearMissNodes` (positions and distances in mm) and `warnings`
65
+ */
66
+ export const memberConnectivity = (model) => findMemberConnectivity(model).connectivity;
67
+ //# sourceMappingURL=member-connectivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-connectivity.js","sourceRoot":"","sources":["../../../../../src/fea/analysis/mesh/member-connectivity.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { STRIP_COMPONENTS } from "../../shell/post/strip-forces.js";
2
+ import { WALL_COMPONENTS } from "./wall-forces.js";
1
3
  const DISPLACEMENT_KEYS = ["ux", "uy", "uz", "rx", "ry", "rz"];
2
4
  const REACTION_KEYS = ["fx", "fy", "fz", "mx", "my", "mz"];
3
5
  const COMPONENTS = ["N", "V2", "V3", "T", "M2", "M3", "u1", "u2", "u3"];
@@ -85,12 +87,80 @@ export const buildEnvelope = (results) => {
85
87
  return entry;
86
88
  }),
87
89
  }));
90
+ const strips = first.stripForces.map((strip, s) => ({
91
+ stripId: strip.stripId,
92
+ stations: strip.stations.map((station, i) => {
93
+ const entry = {
94
+ x: station.x,
95
+ segment: station.segment,
96
+ perWidth: {},
97
+ };
98
+ for (const key of STRIP_COMPONENTS) {
99
+ let total;
100
+ let perWidth;
101
+ for (const r of results) {
102
+ const at = r.stripForces[s].stations[i];
103
+ const g = { value: at[key], combinationId: r.id };
104
+ const w = { value: at.perWidth[key], combinationId: r.id };
105
+ total = update(total, g, g);
106
+ perWidth = update(perWidth, w, w);
107
+ }
108
+ entry[key] = total;
109
+ entry.perWidth[key] = perWidth;
110
+ }
111
+ return entry;
112
+ }),
113
+ extremes: Object.fromEntries(STRIP_COMPONENTS.map((key) => {
114
+ let bound;
115
+ for (const r of results) {
116
+ const e = r.stripForces[s].extremes[key];
117
+ bound = update(bound, { ...e.max, combinationId: r.id }, { ...e.min, combinationId: r.id });
118
+ }
119
+ return [key, bound];
120
+ })),
121
+ }));
122
+ const piers = first.pierForces.map((pier, p) => ({
123
+ pierId: pier.pierId,
124
+ cuts: pier.cuts.map((cut, i) => {
125
+ const entry = { z: cut.z, face: cut.face };
126
+ for (const key of WALL_COMPONENTS) {
127
+ let bound;
128
+ for (const r of results) {
129
+ const g = { value: r.pierForces[p].cuts[i][key], combinationId: r.id };
130
+ bound = update(bound, g, g);
131
+ }
132
+ entry[key] = bound;
133
+ }
134
+ return entry;
135
+ }),
136
+ }));
137
+ const spandrels = first.spandrelForces.map((spandrel, p) => ({
138
+ spandrelId: spandrel.spandrelId,
139
+ cuts: spandrel.cuts.map((cut, i) => {
140
+ const entry = {
141
+ x: cut.x,
142
+ face: cut.face,
143
+ };
144
+ for (const key of WALL_COMPONENTS) {
145
+ let bound;
146
+ for (const r of results) {
147
+ const g = { value: r.spandrelForces[p].cuts[i][key], combinationId: r.id };
148
+ bound = update(bound, g, g);
149
+ }
150
+ entry[key] = bound;
151
+ }
152
+ return entry;
153
+ }),
154
+ }));
88
155
  return {
89
156
  combinationIds: results.map((r) => r.id),
90
157
  nodalDisplacements,
91
158
  reactions,
92
159
  members,
93
160
  shells,
161
+ strips,
162
+ piers,
163
+ spandrels,
94
164
  };
95
165
  };
96
166
  //# sourceMappingURL=envelope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../../src/fea/analysis/post/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../../src/fea/analysis/post/envelope.ts"],"names":[],"mappings":"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"}