@theerapat-s28/ts-structural-eng-tools 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/CHANGELOG.md +85 -1
  2. package/README.md +312 -134
  3. package/dist/core/errors/fea.error.d.ts +47 -0
  4. package/dist/{esm/core/errors/frame-analysis.error.js → core/errors/fea.error.js} +14 -5
  5. package/dist/core/errors/fea.error.js.map +1 -0
  6. package/dist/core/index.d.ts +4 -2
  7. package/dist/core/index.js +8 -4
  8. package/dist/core/index.js.map +1 -1
  9. package/dist/{core/errors/frame-analysis.error.js → esm/core/errors/fea.error.js} +10 -9
  10. package/dist/esm/core/errors/fea.error.js.map +1 -0
  11. package/dist/esm/core/index.js +3 -1
  12. package/dist/esm/core/index.js.map +1 -1
  13. package/dist/esm/fea/analysis/index.js +6 -0
  14. package/dist/esm/fea/analysis/index.js.map +1 -0
  15. package/dist/esm/fea/{frame → analysis}/mesh/expand-model.js +12 -6
  16. package/dist/esm/fea/analysis/mesh/expand-model.js.map +1 -0
  17. package/dist/esm/fea/{frame → analysis}/post/demand-envelope.js +4 -4
  18. package/dist/esm/fea/analysis/post/demand-envelope.js.map +1 -0
  19. package/dist/esm/fea/analysis/post/envelope.js.map +1 -0
  20. package/dist/esm/fea/{frame → analysis}/post/present-state.js +4 -4
  21. package/dist/esm/fea/analysis/post/present-state.js.map +1 -0
  22. package/dist/esm/fea/{frame/solver/frame-system.js → analysis/solver/analysis-system.js} +17 -90
  23. package/dist/esm/fea/analysis/solver/analysis-system.js.map +1 -0
  24. package/dist/esm/fea/{frame/solver/analyze-frame.js → analysis/solver/analyze.js} +20 -18
  25. package/dist/esm/fea/analysis/solver/analyze.js.map +1 -0
  26. package/dist/esm/fea/{frame → analysis}/solver/combinations.js +8 -8
  27. package/dist/esm/fea/analysis/solver/combinations.js.map +1 -0
  28. package/dist/esm/fea/analysis/solver/distribute-area-loads.js +25 -0
  29. package/dist/esm/fea/analysis/solver/distribute-area-loads.js.map +1 -0
  30. package/dist/esm/fea/analysis/solver/load-case-solver.js +103 -0
  31. package/dist/esm/fea/analysis/solver/load-case-solver.js.map +1 -0
  32. package/dist/esm/fea/analysis/types/model.type.js +2 -0
  33. package/dist/esm/fea/analysis/types/model.type.js.map +1 -0
  34. package/dist/esm/fea/analysis/types/results.type.js +2 -0
  35. package/dist/esm/fea/analysis/types/results.type.js.map +1 -0
  36. package/dist/esm/fea/analysis/validation/validate-model.js +263 -0
  37. package/dist/esm/fea/analysis/validation/validate-model.js.map +1 -0
  38. package/dist/esm/fea/deprecated.js +9 -0
  39. package/dist/esm/fea/deprecated.js.map +1 -0
  40. package/dist/esm/fea/frame/area/{distribute-area-loads.js → area-member-loads.js} +7 -28
  41. package/dist/esm/fea/frame/area/area-member-loads.js.map +1 -0
  42. package/dist/esm/fea/frame/area/edge-members.js.map +1 -1
  43. package/dist/esm/fea/frame/elements/end-releases.js +2 -6
  44. package/dist/esm/fea/frame/elements/end-releases.js.map +1 -1
  45. package/dist/esm/fea/frame/elements/fixed-end-forces.js +5 -5
  46. package/dist/esm/fea/frame/elements/fixed-end-forces.js.map +1 -1
  47. package/dist/esm/fea/frame/elements/static-condensation.js +3 -3
  48. package/dist/esm/fea/frame/elements/static-condensation.js.map +1 -1
  49. package/dist/esm/fea/frame/index.js +1 -4
  50. package/dist/esm/fea/frame/index.js.map +1 -1
  51. package/dist/esm/fea/frame/post/member-diagram.js.map +1 -1
  52. package/dist/esm/fea/frame/solver/{global-assembly.js → member-assembly.js} +2 -10
  53. package/dist/esm/fea/frame/solver/member-assembly.js.map +1 -0
  54. package/dist/esm/fea/frame/solver/member-loads.js +141 -0
  55. package/dist/esm/fea/frame/solver/member-loads.js.map +1 -0
  56. package/dist/esm/fea/frame/solver/system-member.js +66 -0
  57. package/dist/esm/fea/frame/solver/system-member.js.map +1 -0
  58. package/dist/esm/fea/frame/transformation/coordinate-transform.js +3 -3
  59. package/dist/esm/fea/frame/transformation/coordinate-transform.js.map +1 -1
  60. package/dist/esm/fea/frame/validation/validate-members.js +160 -0
  61. package/dist/esm/fea/frame/validation/validate-members.js.map +1 -0
  62. package/dist/esm/fea/frame/validation/validate-null-areas.js +88 -0
  63. package/dist/esm/fea/frame/validation/validate-null-areas.js.map +1 -0
  64. package/dist/esm/fea/index.js +4 -1
  65. package/dist/esm/fea/index.js.map +1 -1
  66. package/dist/esm/fea/shared/index.js +2 -0
  67. package/dist/esm/fea/shared/index.js.map +1 -0
  68. package/dist/esm/fea/shared/solver/auto-restraint.js.map +1 -0
  69. package/dist/esm/fea/{frame → shared}/solver/boundary-conditions.js +5 -1
  70. package/dist/esm/fea/shared/solver/boundary-conditions.js.map +1 -0
  71. package/dist/esm/fea/shared/solver/global-assembly.js +10 -0
  72. package/dist/esm/fea/shared/solver/global-assembly.js.map +1 -0
  73. package/dist/esm/fea/shared/types/model.type.js +2 -0
  74. package/dist/esm/fea/shared/types/model.type.js.map +1 -0
  75. package/dist/esm/fea/shared/validation/issues.js +32 -0
  76. package/dist/esm/fea/shared/validation/issues.js.map +1 -0
  77. package/dist/esm/fea/{frame/elements/shell → shell/elements}/dkq-plate.js +1 -1
  78. package/dist/esm/fea/shell/elements/dkq-plate.js.map +1 -0
  79. package/dist/esm/fea/{frame/elements/shell → shell/elements}/flat-shell.js +1 -1
  80. package/dist/esm/fea/shell/elements/flat-shell.js.map +1 -0
  81. package/dist/esm/fea/{frame/elements/shell → shell/elements}/membrane-quad.js +2 -2
  82. package/dist/esm/fea/shell/elements/membrane-quad.js.map +1 -0
  83. package/dist/esm/fea/shell/elements/quad-geometry.js.map +1 -0
  84. package/dist/esm/fea/shell/elements/rigidity.js.map +1 -0
  85. package/dist/esm/fea/{frame/elements/shell → shell/elements}/shell-axes.js +1 -1
  86. package/dist/esm/fea/shell/elements/shell-axes.js.map +1 -0
  87. package/dist/esm/fea/shell/index.js +2 -0
  88. package/dist/esm/fea/shell/index.js.map +1 -0
  89. package/dist/esm/fea/{frame → shell}/mesh/mesh-shells.js +1 -1
  90. package/dist/esm/fea/shell/mesh/mesh-shells.js.map +1 -0
  91. package/dist/esm/fea/{frame → shell}/post/shell-forces.js +4 -4
  92. package/dist/esm/fea/{frame → shell}/post/shell-forces.js.map +1 -1
  93. package/dist/esm/fea/shell/solver/shell-loads.js +53 -0
  94. package/dist/esm/fea/shell/solver/shell-loads.js.map +1 -0
  95. package/dist/esm/fea/shell/solver/system-shell.js +37 -0
  96. package/dist/esm/fea/shell/solver/system-shell.js.map +1 -0
  97. package/dist/esm/fea/shell/types/model.type.js +2 -0
  98. package/dist/esm/fea/shell/types/model.type.js.map +1 -0
  99. package/dist/esm/fea/shell/types/results.type.js +2 -0
  100. package/dist/esm/fea/shell/types/results.type.js.map +1 -0
  101. package/dist/esm/fea/shell/validation/validate-shells.js +98 -0
  102. package/dist/esm/fea/shell/validation/validate-shells.js.map +1 -0
  103. package/dist/esm/index.js +5 -3
  104. package/dist/esm/index.js.map +1 -1
  105. package/dist/fea/analysis/index.d.ts +8 -0
  106. package/dist/fea/analysis/index.js +14 -0
  107. package/dist/fea/analysis/index.js.map +1 -0
  108. package/dist/fea/{frame → analysis}/mesh/expand-model.d.ts +9 -7
  109. package/dist/fea/{frame → analysis}/mesh/expand-model.js +12 -6
  110. package/dist/fea/analysis/mesh/expand-model.js.map +1 -0
  111. package/dist/fea/{frame → analysis}/post/demand-envelope.d.ts +5 -5
  112. package/dist/fea/{frame → analysis}/post/demand-envelope.js +4 -4
  113. package/dist/fea/analysis/post/demand-envelope.js.map +1 -0
  114. package/dist/fea/{frame → analysis}/post/envelope.d.ts +2 -2
  115. package/dist/fea/analysis/post/envelope.js.map +1 -0
  116. package/dist/fea/{frame → analysis}/post/present-state.d.ts +6 -5
  117. package/dist/fea/{frame → analysis}/post/present-state.js +5 -5
  118. package/dist/fea/analysis/post/present-state.js.map +1 -0
  119. package/dist/fea/analysis/solver/analysis-system.d.ts +46 -0
  120. package/dist/fea/{frame/solver/frame-system.js → analysis/solver/analysis-system.js} +22 -95
  121. package/dist/fea/analysis/solver/analysis-system.js.map +1 -0
  122. package/dist/fea/{frame/solver/analyze-frame.d.ts → analysis/solver/analyze.d.ts} +23 -20
  123. package/dist/fea/{frame/solver/analyze-frame.js → analysis/solver/analyze.js} +25 -23
  124. package/dist/fea/analysis/solver/analyze.js.map +1 -0
  125. package/dist/fea/{frame → analysis}/solver/combinations.d.ts +1 -1
  126. package/dist/fea/{frame → analysis}/solver/combinations.js +8 -8
  127. package/dist/fea/analysis/solver/combinations.js.map +1 -0
  128. package/dist/fea/{frame/area → analysis/solver}/distribute-area-loads.d.ts +6 -15
  129. package/dist/fea/analysis/solver/distribute-area-loads.js +29 -0
  130. package/dist/fea/analysis/solver/distribute-area-loads.js.map +1 -0
  131. package/dist/fea/{frame → analysis}/solver/load-case-solver.d.ts +9 -13
  132. package/dist/fea/analysis/solver/load-case-solver.js +108 -0
  133. package/dist/fea/analysis/solver/load-case-solver.js.map +1 -0
  134. package/dist/fea/analysis/types/model.type.d.ts +80 -0
  135. package/dist/fea/analysis/types/model.type.js +3 -0
  136. package/dist/fea/analysis/types/model.type.js.map +1 -0
  137. package/dist/fea/analysis/types/results.type.d.ts +113 -0
  138. package/dist/fea/analysis/types/results.type.js +3 -0
  139. package/dist/fea/analysis/types/results.type.js.map +1 -0
  140. package/dist/fea/analysis/validation/validate-model.d.ts +12 -0
  141. package/dist/fea/analysis/validation/validate-model.js +267 -0
  142. package/dist/fea/analysis/validation/validate-model.js.map +1 -0
  143. package/dist/fea/deprecated.d.ts +27 -0
  144. package/dist/fea/deprecated.js +12 -0
  145. package/dist/fea/deprecated.js.map +1 -0
  146. package/dist/fea/frame/area/area-member-loads.d.ts +19 -0
  147. package/dist/fea/frame/area/{distribute-area-loads.js → area-member-loads.js} +8 -30
  148. package/dist/fea/frame/area/area-member-loads.js.map +1 -0
  149. package/dist/fea/frame/area/edge-members.d.ts +5 -4
  150. package/dist/fea/frame/area/edge-members.js.map +1 -1
  151. package/dist/fea/frame/elements/end-releases.d.ts +1 -6
  152. package/dist/fea/frame/elements/end-releases.js +4 -8
  153. package/dist/fea/frame/elements/end-releases.js.map +1 -1
  154. package/dist/fea/frame/elements/fixed-end-forces.d.ts +1 -1
  155. package/dist/fea/frame/elements/fixed-end-forces.js +5 -5
  156. package/dist/fea/frame/elements/fixed-end-forces.js.map +1 -1
  157. package/dist/fea/frame/elements/static-condensation.d.ts +1 -1
  158. package/dist/fea/frame/elements/static-condensation.js +3 -3
  159. package/dist/fea/frame/elements/static-condensation.js.map +1 -1
  160. package/dist/fea/frame/index.d.ts +2 -8
  161. package/dist/fea/frame/index.js +2 -10
  162. package/dist/fea/frame/index.js.map +1 -1
  163. package/dist/fea/frame/post/member-diagram.d.ts +3 -3
  164. package/dist/fea/frame/post/member-diagram.js.map +1 -1
  165. package/dist/fea/frame/solver/{global-assembly.d.ts → member-assembly.d.ts} +0 -11
  166. package/dist/fea/frame/solver/{global-assembly.js → member-assembly.js} +4 -13
  167. package/dist/fea/frame/solver/member-assembly.js.map +1 -0
  168. package/dist/fea/frame/solver/member-loads.d.ts +21 -0
  169. package/dist/fea/frame/solver/member-loads.js +146 -0
  170. package/dist/fea/frame/solver/member-loads.js.map +1 -0
  171. package/dist/fea/frame/solver/system-member.d.ts +50 -0
  172. package/dist/fea/frame/solver/system-member.js +70 -0
  173. package/dist/fea/frame/solver/system-member.js.map +1 -0
  174. package/dist/fea/frame/transformation/coordinate-transform.d.ts +1 -1
  175. package/dist/fea/frame/transformation/coordinate-transform.js +3 -3
  176. package/dist/fea/frame/transformation/coordinate-transform.js.map +1 -1
  177. package/dist/fea/frame/types/model.type.d.ts +10 -175
  178. package/dist/fea/frame/types/results.type.d.ts +4 -159
  179. package/dist/fea/frame/validation/validate-members.d.ts +30 -0
  180. package/dist/fea/frame/validation/validate-members.js +165 -0
  181. package/dist/fea/frame/validation/validate-members.js.map +1 -0
  182. package/dist/fea/frame/validation/validate-null-areas.d.ts +38 -0
  183. package/dist/fea/frame/validation/validate-null-areas.js +93 -0
  184. package/dist/fea/frame/validation/validate-null-areas.js.map +1 -0
  185. package/dist/fea/index.d.ts +4 -0
  186. package/dist/fea/index.js +4 -1
  187. package/dist/fea/index.js.map +1 -1
  188. package/dist/fea/shared/index.d.ts +1 -0
  189. package/dist/fea/shared/index.js +3 -0
  190. package/dist/fea/shared/index.js.map +1 -0
  191. package/dist/fea/shared/solver/auto-restraint.js.map +1 -0
  192. package/dist/fea/{frame → shared}/solver/boundary-conditions.d.ts +5 -0
  193. package/dist/fea/{frame → shared}/solver/boundary-conditions.js +7 -3
  194. package/dist/fea/shared/solver/boundary-conditions.js.map +1 -0
  195. package/dist/fea/shared/solver/global-assembly.d.ts +12 -0
  196. package/dist/fea/shared/solver/global-assembly.js +14 -0
  197. package/dist/fea/shared/solver/global-assembly.js.map +1 -0
  198. package/dist/fea/shared/types/model.type.d.ts +34 -0
  199. package/dist/fea/shared/types/model.type.js +3 -0
  200. package/dist/fea/shared/types/model.type.js.map +1 -0
  201. package/dist/fea/shared/validation/issues.d.ts +9 -0
  202. package/dist/fea/shared/validation/issues.js +38 -0
  203. package/dist/fea/shared/validation/issues.js.map +1 -0
  204. package/dist/fea/{frame/elements/shell → shell/elements}/dkq-plate.d.ts +1 -1
  205. package/dist/fea/{frame/elements/shell → shell/elements}/dkq-plate.js +1 -1
  206. package/dist/fea/shell/elements/dkq-plate.js.map +1 -0
  207. package/dist/fea/{frame/elements/shell → shell/elements}/flat-shell.d.ts +1 -1
  208. package/dist/fea/{frame/elements/shell → shell/elements}/flat-shell.js +1 -1
  209. package/dist/fea/shell/elements/flat-shell.js.map +1 -0
  210. package/dist/fea/{frame/elements/shell → shell/elements}/membrane-quad.d.ts +1 -1
  211. package/dist/fea/{frame/elements/shell → shell/elements}/membrane-quad.js +2 -2
  212. package/dist/fea/shell/elements/membrane-quad.js.map +1 -0
  213. package/dist/fea/shell/elements/quad-geometry.js.map +1 -0
  214. package/dist/fea/{frame/elements/shell → shell/elements}/rigidity.d.ts +1 -1
  215. package/dist/fea/shell/elements/rigidity.js.map +1 -0
  216. package/dist/fea/{frame/elements/shell → shell/elements}/shell-axes.d.ts +1 -1
  217. package/dist/fea/{frame/elements/shell → shell/elements}/shell-axes.js +1 -1
  218. package/dist/fea/shell/elements/shell-axes.js.map +1 -0
  219. package/dist/fea/shell/index.d.ts +2 -0
  220. package/dist/fea/shell/index.js +3 -0
  221. package/dist/fea/shell/index.js.map +1 -0
  222. package/dist/fea/{frame → shell}/mesh/mesh-shells.d.ts +7 -6
  223. package/dist/fea/{frame → shell}/mesh/mesh-shells.js +1 -1
  224. package/dist/fea/shell/mesh/mesh-shells.js.map +1 -0
  225. package/dist/fea/{frame → shell}/post/shell-forces.d.ts +1 -1
  226. package/dist/fea/{frame → shell}/post/shell-forces.js +4 -4
  227. package/dist/fea/{frame → shell}/post/shell-forces.js.map +1 -1
  228. package/dist/fea/shell/solver/shell-loads.d.ts +17 -0
  229. package/dist/fea/shell/solver/shell-loads.js +57 -0
  230. package/dist/fea/shell/solver/shell-loads.js.map +1 -0
  231. package/dist/fea/shell/solver/system-shell.d.ts +29 -0
  232. package/dist/fea/shell/solver/system-shell.js +41 -0
  233. package/dist/fea/shell/solver/system-shell.js.map +1 -0
  234. package/dist/fea/shell/types/model.type.d.ts +57 -0
  235. package/dist/fea/shell/types/model.type.js +3 -0
  236. package/dist/fea/shell/types/model.type.js.map +1 -0
  237. package/dist/fea/shell/types/results.type.d.ts +47 -0
  238. package/dist/fea/shell/types/results.type.js +3 -0
  239. package/dist/fea/shell/types/results.type.js.map +1 -0
  240. package/dist/fea/shell/validation/validate-shells.d.ts +21 -0
  241. package/dist/fea/shell/validation/validate-shells.js +103 -0
  242. package/dist/fea/shell/validation/validate-shells.js.map +1 -0
  243. package/dist/index.d.ts +6 -4
  244. package/dist/index.js +13 -6
  245. package/dist/index.js.map +1 -1
  246. package/package.json +1 -1
  247. package/dist/core/errors/frame-analysis.error.d.ts +0 -37
  248. package/dist/core/errors/frame-analysis.error.js.map +0 -1
  249. package/dist/esm/core/errors/frame-analysis.error.js.map +0 -1
  250. package/dist/esm/fea/frame/area/distribute-area-loads.js.map +0 -1
  251. package/dist/esm/fea/frame/elements/shell/dkq-plate.js.map +0 -1
  252. package/dist/esm/fea/frame/elements/shell/flat-shell.js.map +0 -1
  253. package/dist/esm/fea/frame/elements/shell/membrane-quad.js.map +0 -1
  254. package/dist/esm/fea/frame/elements/shell/quad-geometry.js.map +0 -1
  255. package/dist/esm/fea/frame/elements/shell/rigidity.js.map +0 -1
  256. package/dist/esm/fea/frame/elements/shell/shell-axes.js.map +0 -1
  257. package/dist/esm/fea/frame/mesh/expand-model.js.map +0 -1
  258. package/dist/esm/fea/frame/mesh/mesh-shells.js.map +0 -1
  259. package/dist/esm/fea/frame/post/demand-envelope.js.map +0 -1
  260. package/dist/esm/fea/frame/post/envelope.js.map +0 -1
  261. package/dist/esm/fea/frame/post/present-state.js.map +0 -1
  262. package/dist/esm/fea/frame/solver/analyze-frame.js.map +0 -1
  263. package/dist/esm/fea/frame/solver/auto-restraint.js.map +0 -1
  264. package/dist/esm/fea/frame/solver/boundary-conditions.js.map +0 -1
  265. package/dist/esm/fea/frame/solver/combinations.js.map +0 -1
  266. package/dist/esm/fea/frame/solver/frame-system.js.map +0 -1
  267. package/dist/esm/fea/frame/solver/global-assembly.js.map +0 -1
  268. package/dist/esm/fea/frame/solver/load-case-solver.js +0 -255
  269. package/dist/esm/fea/frame/solver/load-case-solver.js.map +0 -1
  270. package/dist/esm/fea/frame/validation/validate-model.js +0 -529
  271. package/dist/esm/fea/frame/validation/validate-model.js.map +0 -1
  272. package/dist/fea/frame/area/distribute-area-loads.js.map +0 -1
  273. package/dist/fea/frame/elements/shell/dkq-plate.js.map +0 -1
  274. package/dist/fea/frame/elements/shell/flat-shell.js.map +0 -1
  275. package/dist/fea/frame/elements/shell/membrane-quad.js.map +0 -1
  276. package/dist/fea/frame/elements/shell/quad-geometry.js.map +0 -1
  277. package/dist/fea/frame/elements/shell/rigidity.js.map +0 -1
  278. package/dist/fea/frame/elements/shell/shell-axes.js.map +0 -1
  279. package/dist/fea/frame/mesh/expand-model.js.map +0 -1
  280. package/dist/fea/frame/mesh/mesh-shells.js.map +0 -1
  281. package/dist/fea/frame/post/demand-envelope.js.map +0 -1
  282. package/dist/fea/frame/post/envelope.js.map +0 -1
  283. package/dist/fea/frame/post/present-state.js.map +0 -1
  284. package/dist/fea/frame/solver/analyze-frame.js.map +0 -1
  285. package/dist/fea/frame/solver/auto-restraint.js.map +0 -1
  286. package/dist/fea/frame/solver/boundary-conditions.js.map +0 -1
  287. package/dist/fea/frame/solver/combinations.js.map +0 -1
  288. package/dist/fea/frame/solver/frame-system.d.ts +0 -89
  289. package/dist/fea/frame/solver/frame-system.js.map +0 -1
  290. package/dist/fea/frame/solver/global-assembly.js.map +0 -1
  291. package/dist/fea/frame/solver/load-case-solver.js +0 -260
  292. package/dist/fea/frame/solver/load-case-solver.js.map +0 -1
  293. package/dist/fea/frame/validation/validate-model.d.ts +0 -19
  294. package/dist/fea/frame/validation/validate-model.js +0 -535
  295. package/dist/fea/frame/validation/validate-model.js.map +0 -1
  296. /package/dist/esm/fea/{frame → analysis}/post/envelope.js +0 -0
  297. /package/dist/esm/fea/{frame → shared}/solver/auto-restraint.js +0 -0
  298. /package/dist/esm/fea/{frame/elements/shell → shell/elements}/quad-geometry.js +0 -0
  299. /package/dist/esm/fea/{frame/elements/shell → shell/elements}/rigidity.js +0 -0
  300. /package/dist/fea/{frame → analysis}/post/envelope.js +0 -0
  301. /package/dist/fea/{frame → shared}/solver/auto-restraint.d.ts +0 -0
  302. /package/dist/fea/{frame → shared}/solver/auto-restraint.js +0 -0
  303. /package/dist/fea/{frame/elements/shell → shell/elements}/quad-geometry.d.ts +0 -0
  304. /package/dist/fea/{frame/elements/shell → shell/elements}/quad-geometry.js +0 -0
  305. /package/dist/fea/{frame/elements/shell → shell/elements}/rigidity.js +0 -0
@@ -0,0 +1,53 @@
1
+ const GLOBAL_DIRECTIONS = {
2
+ X: [1, 0, 0],
3
+ Y: [0, 1, 0],
4
+ Z: [0, 0, 1],
5
+ };
6
+ /**
7
+ * Adds one load case's surface loads on shells to the global load vector `F` (N): its area
8
+ * loads on every element of their area, and self-weight
9
+ * `selfWeight · unitWeight · thickness · modifiers.weight` per unit area along −Z. Both act as
10
+ * forces at the corners, each corner the share `∫ Nᵢ dA` of the element's area on its mean plane
11
+ * (no corner moments, so a warped element's offsets do not load the rotations auto-restraint
12
+ * holds).
13
+ *
14
+ * @param F - Global load vector, 6 DOFs per node
15
+ * @param shells - The system's shell elements
16
+ * @param shellsByArea - Element indices of each shell area
17
+ * @param loads - The load case's area loads on shell areas
18
+ * @param selfWeight - The load case's self-weight multiplier
19
+ */
20
+ export const addShellLoads = (F, shells, shellsByArea, loads, selfWeight) => {
21
+ // kN/m² as a global vector per shell, then N at the corners
22
+ const shellPressure = shells.map(() => [0, 0, 0]);
23
+ for (const load of loads) {
24
+ // every element of the area
25
+ for (const s of shellsByArea.get(load.areaId) ?? []) {
26
+ const normal = shells[s].element.axes.lambda[2];
27
+ const e = load.direction === "3" ? normal : GLOBAL_DIRECTIONS[load.direction];
28
+ // per projected area → per true area: Aproj / A = |n · e|
29
+ const q = load.projected
30
+ ? load.q * Math.abs(normal[0] * e[0] + normal[1] * e[1] + normal[2] * e[2])
31
+ : load.q;
32
+ for (let k = 0; k < 3; k++)
33
+ shellPressure[s][k] += q * e[k];
34
+ }
35
+ }
36
+ shells.forEach((shell, s) => {
37
+ if (selfWeight !== 0) {
38
+ // kN/m³ · mm · 10⁻³ = kN/m²
39
+ const { unitWeight = 0, thickness } = shell.section;
40
+ shellPressure[s][2] -=
41
+ selfWeight * unitWeight * thickness * (shell.modifiers.weight ?? 1) * 1e-3;
42
+ }
43
+ const p = shellPressure[s];
44
+ if (p[0] === 0 && p[1] === 0 && p[2] === 0)
45
+ return;
46
+ shell.nodeIndices.forEach((node, i) => {
47
+ // kN/m² = 10⁻³ N/mm², times mm²
48
+ for (let k = 0; k < 3; k++)
49
+ F[6 * node + k] += p[k] * 1e-3 * shell.cornerAreas[i];
50
+ });
51
+ });
52
+ };
53
+ //# sourceMappingURL=shell-loads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-loads.js","sourceRoot":"","sources":["../../../../../src/fea/shell/solver/shell-loads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { flatShellElement } from "../elements/flat-shell.js";
2
+ import { cornerAreas } from "../elements/quad-geometry.js";
3
+ /**
4
+ * Builds the flat shell element of every shell of a model that passed `validateModel`:
5
+ * axes, corner transformations, local and global stiffness with the stiffness modifiers, and
6
+ * each corner's share of a uniform surface load.
7
+ *
8
+ * @param shells - Shell elements; after `expandModel` each carries its area's id
9
+ * @param nodes - The analysed nodes, generated mesh nodes included
10
+ * @param nodeIndex - Map from node id to index into `nodes`
11
+ */
12
+ export const prepareSystemShells = (shells, nodes, nodeIndex) => shells.map((shell) => {
13
+ const nodeIndices = shell.nodeIds.map((id) => nodeIndex.get(id));
14
+ const points = nodeIndices.map((n) => [nodes[n].x, nodes[n].y, nodes[n].z]);
15
+ const { thickness, E, nu } = shell.section;
16
+ const m = shell.modifiers ?? {};
17
+ const type = shell.type ?? "shell";
18
+ const element = flatShellElement(points, {
19
+ E,
20
+ nu,
21
+ t: thickness,
22
+ type,
23
+ membraneModifiers: [m.f11 ?? 1, m.f22 ?? 1, m.f12 ?? 1],
24
+ bendingModifiers: [m.m11 ?? 1, m.m22 ?? 1, m.m12 ?? 1],
25
+ }, shell.angle ?? 0);
26
+ return {
27
+ id: shell.id,
28
+ areaId: shell.areaId ?? shell.id,
29
+ nodeIndices,
30
+ type,
31
+ section: shell.section,
32
+ modifiers: m,
33
+ element,
34
+ cornerAreas: cornerAreas(element.axes.corners),
35
+ };
36
+ });
37
+ //# sourceMappingURL=system-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-shell.js","sourceRoot":"","sources":["../../../../../src/fea/shell/solver/system-shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAyB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAmBxD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAA0C,EAC1C,KAAgB,EAChB,SAA6B,EACd,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAW,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;IACnC,MAAM,OAAO,GAAG,gBAAgB,CAC9B,MAAM,EACN;QACE,CAAC;QACD,EAAE;QACF,CAAC,EAAE,SAAS;QACZ,IAAI;QACJ,iBAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;KACvD,EACD,KAAK,CAAC,KAAK,IAAI,CAAC,CACjB,CAAC;IACF,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;QAChC,WAAW;QACX,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,CAAC;QACZ,OAAO;QACP,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.type.js","sourceRoot":"","sources":["../../../../../src/fea/shell/types/model.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=results.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.type.js","sourceRoot":"","sources":["../../../../../src/fea/shell/types/results.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import { FeaErrors } from "../../../core/errors/fea.error.js";
2
+ import { modelIssue, isFiniteNumber } from "../../shared/validation/issues.js";
3
+ import { isValidShellQuad } from "../elements/shell-axes.js";
4
+ import { meshShells } from "../mesh/mesh-shells.js";
5
+ const SHELL_TYPES = new Set(["shell", "membrane", "plate"]);
6
+ const SHELL_SECTION_KEYS = ["thickness", "E"];
7
+ const SHELL_MODIFIER_KEYS = ["f11", "f22", "f12", "m11", "m22", "m12"];
8
+ /**
9
+ * Checks each shell area on its own: `type`, `angle`, section, modifiers, mesh settings and its
10
+ * four corners (known nodes making a valid quad, see `isValidShellQuad`). Corners at nodes with
11
+ * invalid coordinates are skipped; those are reported on the node.
12
+ *
13
+ * @param shells - The model's shell areas
14
+ * @param nodeById - Model nodes by id
15
+ * @param validNode - Ids of the nodes whose coordinates are valid
16
+ * @returns Every problem found (codes 302, 314, 326 and 327), in model order, with `shellId`
17
+ */
18
+ export const validateShells = (shells, nodeById, validNode) => {
19
+ const issues = [];
20
+ const add = (std, details = {}) => issues.push(modelIssue(std, details));
21
+ const position = (id) => {
22
+ const node = nodeById.get(id);
23
+ return [node.x, node.y, node.z];
24
+ };
25
+ for (const shell of shells) {
26
+ const at = { shellId: shell.id };
27
+ if (shell.type !== undefined && !SHELL_TYPES.has(shell.type)) {
28
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "type" });
29
+ }
30
+ if (shell.angle !== undefined && !isFiniteNumber(shell.angle)) {
31
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "angle" });
32
+ }
33
+ const section = shell.section ?? {};
34
+ for (const field of SHELL_SECTION_KEYS) {
35
+ if (!isFiniteNumber(section[field]) || section[field] <= 0) {
36
+ add(FeaErrors.INVALID_SHELL_SECTION, { ...at, field: `section.${field}` });
37
+ }
38
+ }
39
+ if (!isFiniteNumber(section.nu) || section.nu < 0 || section.nu >= 0.5) {
40
+ add(FeaErrors.INVALID_SHELL_SECTION, { ...at, field: "section.nu" });
41
+ }
42
+ if (section.unitWeight !== undefined &&
43
+ (!isFiniteNumber(section.unitWeight) || section.unitWeight < 0)) {
44
+ add(FeaErrors.INVALID_SHELL_SECTION, { ...at, field: "section.unitWeight" });
45
+ }
46
+ const modifiers = shell.modifiers ?? {};
47
+ for (const key of SHELL_MODIFIER_KEYS) {
48
+ const v = modifiers[key];
49
+ if (v !== undefined && !(isFiniteNumber(v) && v > 0)) {
50
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: `modifiers.${key}` });
51
+ }
52
+ }
53
+ const weight = modifiers.weight;
54
+ if (weight !== undefined && !(isFiniteNumber(weight) && weight >= 0)) {
55
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "modifiers.weight" });
56
+ }
57
+ const mesh = shell.mesh;
58
+ if (mesh !== undefined) {
59
+ const { maxSize, divisions } = (mesh ?? {});
60
+ if (typeof mesh !== "object" || mesh === null) {
61
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "mesh" });
62
+ }
63
+ else {
64
+ if (maxSize !== undefined && !(isFiniteNumber(maxSize) && maxSize > 0)) {
65
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "mesh.maxSize" });
66
+ }
67
+ const count = (v) => Number.isInteger(v) && v >= 1;
68
+ if (divisions !== undefined &&
69
+ !(Array.isArray(divisions) && divisions.length === 2 && divisions.every(count))) {
70
+ add(FeaErrors.INVALID_INPUT_VALUE, { ...at, field: "mesh.divisions" });
71
+ }
72
+ }
73
+ }
74
+ const ids = Array.isArray(shell.nodeIds) ? shell.nodeIds : [];
75
+ if (ids.length !== 4) {
76
+ add(FeaErrors.INVALID_SHELL_GEOMETRY, { ...at, field: "nodeIds" });
77
+ continue;
78
+ }
79
+ if (ids.some((id) => !nodeById.has(id))) {
80
+ add(FeaErrors.UNKNOWN_NODE_REFERENCE, { ...at, field: "nodeIds" });
81
+ continue;
82
+ }
83
+ if (!ids.every((id) => validNode.has(id)))
84
+ continue; // reported on the node
85
+ if (!isValidShellQuad(ids.map(position))) {
86
+ add(FeaErrors.INVALID_SHELL_GEOMETRY, { ...at, field: "nodeIds" });
87
+ }
88
+ }
89
+ return issues;
90
+ };
91
+ /**
92
+ * Meshes the shell areas and reports those that cannot be meshed (see `meshShells`). Call it
93
+ * only when every node and every shell is valid.
94
+ *
95
+ * @returns Code 329 for each area that cannot be meshed, with `shellId` and `field: "mesh"`
96
+ */
97
+ export const validateShellMesh = (nodes, shells) => meshShells(nodes, shells).problems.map((shellId) => modelIssue(FeaErrors.INVALID_SHELL_MESH, { shellId, field: "mesh" }));
98
+ //# sourceMappingURL=validate-shells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-shells.js","sourceRoot":"","sources":["../../../../../src/fea/shell/validation/validate-shells.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  // RC Beam Design
2
2
  export { rectBeamMomentCapacity, rectBeamBarLayout, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, concreteBeta, concreteElasticModulus, psiToMpa, rectBeamToSectionProperties, } from "./rc/index.js";
3
- // FEA — frame analysis
4
- export { analyzeFrame, createFrameAnalysis, validateFrameModel, distributeAreaLoads, beam3dLocalStiffness, beam3dLocalStiffnessRightHanded, memberAxes, memberDemandEnvelope, } from "./fea/index.js";
3
+ // FEA — frame and shell analysis
4
+ export { analyze, createAnalysis, validateModel, distributeAreaLoads, beam3dLocalStiffness, beam3dLocalStiffnessRightHanded, memberAxes, memberDemandEnvelope, } from "./fea/index.js";
5
+ // Deprecated FEA names, removed in 4.0.0
6
+ export { analyzeFrame, createFrameAnalysis, validateFrameModel } from "./fea/index.js";
5
7
  // Strengthening
6
8
  export { calculateSteelJacketedBeamMomentCapacity, plateInterfaceShearFlow, boltShearCapacity, plateInterfaceBoltRequirement, sidePlateShearCapacityByWebYielding, sidePlateShearCapacityByTensionTie, compareSidePlateShearCapacity, } from "./strengthening/index.js";
7
- export { isSinglyReinforced, hasTopPlate, hasBottomPlate, hasSidePlate, 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, VERTICAL_MEMBER_TOLERANCE, SINGULARITY_TOLERANCE, EQUILIBRIUM_TOLERANCE, AREA_GEOMETRY_TOLERANCE, SHELL_WARPING_LIMIT, RCDesignError, Errors, FrameAnalysisError, FrameErrors, } from "./core/index.js";
9
+ export { isSinglyReinforced, hasTopPlate, hasBottomPlate, hasSidePlate, 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, VERTICAL_MEMBER_TOLERANCE, SINGULARITY_TOLERANCE, EQUILIBRIUM_TOLERANCE, AREA_GEOMETRY_TOLERANCE, SHELL_WARPING_LIMIT, RCDesignError, Errors, FeaError, FeaErrors, FrameAnalysisError, FrameErrors, } from "./core/index.js";
8
10
  // Utilities
9
11
  export { solveQuadratic, roundToDecimalPlaces, mergeWarnings, zeros, identity, transpose, matMul, matVec, choleskyFactor, choleskySolveFactored, choleskySolve, solveLinearSystem, createSkyline, skylineAdd, skylineGet, skylineSize, skylineFactor, skylineSolve, reverseCuthillMcKee, } from "./utils/index.js";
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,QAAQ,EACR,2BAA2B,GAC5B,MAAM,MAAM,CAAC;AAGd,uBAAuB;AACvB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,+BAA+B,EAC/B,UAAU,EACV,oBAAoB,GACrB,MAAM,OAAO,CAAC;AA0Df,gBAAgB;AAChB,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,mCAAmC,EACnC,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AA4BzB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,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,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,YAAY;AACZ,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,QAAQ,EACR,2BAA2B,GAC5B,MAAM,MAAM,CAAC;AAGd,iCAAiC;AACjC,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,+BAA+B,EAC/B,UAAU,EACV,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAyDf,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAa9E,gBAAgB;AAChB,OAAO,EACL,wCAAwC,EACxC,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,mCAAmC,EACnC,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AA8BzB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,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,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,YAAY;AACZ,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { analyze, createAnalysis } from "./solver/analyze";
2
+ export type { AnalyzeOptions, Analysis } from "./solver/analyze";
3
+ export { validateModel } from "./validation/validate-model";
4
+ export { distributeAreaLoads } from "./solver/distribute-area-loads";
5
+ export { memberDemandEnvelope } from "./post/demand-envelope";
6
+ export type { MemberDemandEnvelope, DemandEnvelopeOptions } from "./post/demand-envelope";
7
+ export type { LineRestraint, NodalLoad, LoadCaseType, LoadCase, CombinationTerm, LoadCombination, FeaModel, } from "./types/model.type";
8
+ export type { NodalDisplacement, NodalReaction, AutoRestrainedDof, GoverningValue, GoverningExtremeValue, Bound, FeaCaseResult, FeaEnvelope, FeaResult, } from "./types/results.type";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.memberDemandEnvelope = exports.distributeAreaLoads = exports.validateModel = exports.createAnalysis = exports.analyze = void 0;
4
+ // Analysis of the whole model: members and shells together
5
+ var analyze_1 = require("./solver/analyze");
6
+ Object.defineProperty(exports, "analyze", { enumerable: true, get: function () { return analyze_1.analyze; } });
7
+ Object.defineProperty(exports, "createAnalysis", { enumerable: true, get: function () { return analyze_1.createAnalysis; } });
8
+ var validate_model_1 = require("./validation/validate-model");
9
+ Object.defineProperty(exports, "validateModel", { enumerable: true, get: function () { return validate_model_1.validateModel; } });
10
+ var distribute_area_loads_1 = require("./solver/distribute-area-loads");
11
+ Object.defineProperty(exports, "distributeAreaLoads", { enumerable: true, get: function () { return distribute_area_loads_1.distributeAreaLoads; } });
12
+ var demand_envelope_1 = require("./post/demand-envelope");
13
+ Object.defineProperty(exports, "memberDemandEnvelope", { enumerable: true, get: function () { return demand_envelope_1.memberDemandEnvelope; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fea/analysis/index.ts"],"names":[],"mappings":";;;AAAA,2DAA2D;AAC3D,4CAA2D;AAAlD,kGAAA,OAAO,OAAA;AAAE,yGAAA,cAAc,OAAA;AAEhC,8DAA4D;AAAnD,+GAAA,aAAa,OAAA;AACtB,wEAAqE;AAA5D,4HAAA,mBAAmB,OAAA;AAC5B,0DAA8D;AAArD,uHAAA,oBAAoB,OAAA"}
@@ -1,11 +1,13 @@
1
1
  import type { Warnings } from "../../../core/types/output-message.type";
2
- import type { FrameId, FrameModel, Member } from "../types/model.type";
3
- import type { FrameMesh } from "../types/results.type";
4
- import { type ShellElement } from "./mesh-shells";
2
+ import type { Member } from "../../frame/types/model.type";
3
+ import type { FeaId } from "../../shared/types/model.type";
4
+ import { type ShellElement } from "../../shell/mesh/mesh-shells";
5
+ import type { FeaMesh } from "../../shell/types/results.type";
6
+ import type { FeaModel } from "../types/model.type";
5
7
  /** A member with the generated mesh nodes lying inside it, where the solver splits it. */
6
8
  export interface SplitMember extends Member {
7
9
  /** Generated node ids strictly between its ends, in order from the start. */
8
- through?: FrameId[];
10
+ through?: FeaId[];
9
11
  }
10
12
  /** The model the solver analyses: shells meshed, line restraints spread to their nodes. */
11
13
  export interface ExpandedModel {
@@ -13,12 +15,12 @@ export interface ExpandedModel {
13
15
  * Nodes include the generated ones; `shells` are the elements; members list the generated
14
16
  * nodes they pass through; restraints include the lines.
15
17
  */
16
- model: FrameModel & {
18
+ model: FeaModel & {
17
19
  shells: ShellElement[];
18
20
  members: SplitMember[];
19
21
  };
20
22
  /** The shell mesh for the result; undefined without shells. */
21
- mesh: FrameMesh | undefined;
23
+ mesh: FeaMesh | undefined;
22
24
  warnings: Warnings;
23
25
  }
24
26
  /**
@@ -26,4 +28,4 @@ export interface ExpandedModel {
26
28
  * generated nodes split (see `meshShells`).
27
29
  * Without shells and line restraints the model is returned as it is.
28
30
  */
29
- export declare const expandModel: (model: FrameModel) => ExpandedModel;
31
+ export declare const expandModel: (model: FeaModel) => ExpandedModel;
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.expandModel = void 0;
4
4
  const frame_constant_1 = require("../../../core/constants/frame.constant");
5
- const shell_axes_1 = require("../elements/shell/shell-axes");
6
- const mesh_shells_1 = require("./mesh-shells");
5
+ const shell_axes_1 = require("../../shell/elements/shell-axes");
6
+ const mesh_shells_1 = require("../../shell/mesh/mesh-shells");
7
7
  const DOF_KEYS = ["ux", "uy", "uz", "rx", "ry", "rz"];
8
8
  /**
9
9
  * Restraints of every node on each line restraint's segment (ends included), merged with the
@@ -39,7 +39,7 @@ const disconnectedNodes = (model, meshNodes) => {
39
39
  const warnings = [];
40
40
  const shells = model.shells ?? [];
41
41
  const position = new Map(model.nodes.map((n) => [n.id, [n.x, n.y, n.z]]));
42
- const memberNodes = new Set(model.members.flatMap((m) => [m.startNodeId, m.endNodeId]));
42
+ const memberNodes = new Set((model.members ?? []).flatMap((m) => [m.startNodeId, m.endNodeId]));
43
43
  for (const shell of shells) {
44
44
  const points = shell.nodeIds.map((id) => position.get(id));
45
45
  const axes = (0, shell_axes_1.shellAxes)(points);
@@ -75,10 +75,11 @@ const disconnectedNodes = (model, meshNodes) => {
75
75
  * member can be split there and share them with the shells.
76
76
  */
77
77
  const splitMembers = (model, generated) => {
78
+ const members = model.members ?? [];
78
79
  if (generated.length === 0)
79
- return model.members;
80
+ return members;
80
81
  const position = new Map(model.nodes.map((n) => [n.id, [n.x, n.y, n.z]]));
81
- return model.members.map((member) => {
82
+ return members.map((member) => {
82
83
  const [P, Q] = [position.get(member.startNodeId), position.get(member.endNodeId)];
83
84
  const lo = [0, 1, 2].map((k) => Math.min(P[k], Q[k]));
84
85
  const hi = [0, 1, 2].map((k) => Math.max(P[k], Q[k]));
@@ -106,7 +107,12 @@ const expandModel = (model) => {
106
107
  const shells = model.shells ?? [];
107
108
  if (shells.length === 0) {
108
109
  return {
109
- model: { ...model, shells: [], restraints: spreadLineRestraints(model, model.nodes) },
110
+ model: {
111
+ ...model,
112
+ members: model.members ?? [],
113
+ shells: [],
114
+ restraints: spreadLineRestraints(model, model.nodes),
115
+ },
110
116
  mesh: undefined,
111
117
  warnings: [],
112
118
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-model.js","sourceRoot":"","sources":["../../../../src/fea/analysis/mesh/expand-model.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { FrameId } from "../types/model.type";
2
- import type { FrameResult } from "../types/results.type";
1
+ import type { FeaId } from "../../shared/types/model.type";
2
+ import type { FeaResult } from "../types/results.type";
3
3
  export interface MemberDemandEnvelope {
4
- memberId: FrameId;
4
+ memberId: FeaId;
5
5
  MuPositive: number;
6
6
  MuNegative: number;
7
7
  Vu: number;
@@ -26,11 +26,11 @@ export interface DemandEnvelopeOptions {
26
26
  * enveloped over load combinations (and optionally load cases), with the governing id of each.
27
27
  * Works on plain numbers and does not depend on the `rc` module.
28
28
  *
29
- * @param result - Result of `analyzeFrame`
29
+ * @param result - Result of `analyze`
30
30
  * @param memberId - Member to reduce
31
31
  * @param options - Combinations and/or cases to envelope, `shearCriticalDistance` in mm
32
32
  * @returns Demands in kN and kN·m with their governing load case or combination
33
33
  * @throws {Error} if the member or a requested id is not in the result, if nothing is selected,
34
34
  * or if `shearCriticalDistance` is used on a result analysed with `diagrams: "extremes"`
35
35
  */
36
- export declare const memberDemandEnvelope: (result: FrameResult, memberId: FrameId, options?: DemandEnvelopeOptions) => MemberDemandEnvelope;
36
+ export declare const memberDemandEnvelope: (result: FeaResult, memberId: FeaId, options?: DemandEnvelopeOptions) => MemberDemandEnvelope;
@@ -13,7 +13,7 @@ const diagramDemands = (diagram, from, to) => {
13
13
  if (diagram.stations.length === 0) {
14
14
  // analysed with diagrams: "extremes" — Vu over the whole length comes from the extremes
15
15
  if (from > 0) {
16
- throw new Error('shearCriticalDistance needs member stations: analyse with diagrams: "full", or pass a diagram from createFrameAnalysis(...).memberDiagram.');
16
+ throw new Error('shearCriticalDistance needs member stations: analyse with diagrams: "full", or pass a diagram from createAnalysis(...).memberDiagram.');
17
17
  }
18
18
  return { ...moments, Vu: Math.max(Math.abs(V2.max.value), Math.abs(V2.min.value)) };
19
19
  }
@@ -44,7 +44,7 @@ const diagramDemands = (diagram, from, to) => {
44
44
  * enveloped over load combinations (and optionally load cases), with the governing id of each.
45
45
  * Works on plain numbers and does not depend on the `rc` module.
46
46
  *
47
- * @param result - Result of `analyzeFrame`
47
+ * @param result - Result of `analyze`
48
48
  * @param memberId - Member to reduce
49
49
  * @param options - Combinations and/or cases to envelope, `shearCriticalDistance` in mm
50
50
  * @returns Demands in kN and kN·m with their governing load case or combination
@@ -55,7 +55,7 @@ const memberDemandEnvelope = (result, memberId, options = {}) => {
55
55
  const pick = (source, ids, label) => ids.map((id) => {
56
56
  const r = source[id];
57
57
  if (!r)
58
- throw new Error(`${label} "${id}" is not in the frame result.`);
58
+ throw new Error(`${label} "${id}" is not in the result.`);
59
59
  return r;
60
60
  });
61
61
  const combinationIds = options.combinations ?? (options.cases ? [] : Object.keys(result.combinations));
@@ -69,7 +69,7 @@ const memberDemandEnvelope = (result, memberId, options = {}) => {
69
69
  const diagrams = selected.map((r) => {
70
70
  const diagram = r.memberDiagrams.find((d) => d.memberId === memberId);
71
71
  if (!diagram)
72
- throw new Error(`Member ${String(memberId)} is not in the frame result.`);
72
+ throw new Error(`Member ${String(memberId)} is not in the result.`);
73
73
  return { id: r.id, diagram };
74
74
  });
75
75
  const L = diagrams[0].diagram.length;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demand-envelope.js","sourceRoot":"","sources":["../../../../src/fea/analysis/post/demand-envelope.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import type { FrameCaseResult, FrameEnvelope } from "../types/results.type";
1
+ import type { FeaCaseResult, FeaEnvelope } from "../types/results.type";
2
2
  /**
3
3
  * Max/min of every presented result across combinations, each with the combination that
4
4
  * governs it. Combinations must come from the same model (same nodes and members, same order).
5
5
  *
6
6
  * @param results - Combination results, in model order
7
7
  */
8
- export declare const buildEnvelope: (results: FrameCaseResult[]) => FrameEnvelope;
8
+ export declare const buildEnvelope: (results: FeaCaseResult[]) => FeaEnvelope;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../src/fea/analysis/post/envelope.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { FrameSystem } from "../solver/frame-system";
1
+ import type { MemberDiagram } from "../../frame/types/results.type";
2
+ import type { AnalysisSystem } from "../solver/analysis-system";
2
3
  import type { RawState } from "../solver/load-case-solver";
3
- import type { FrameCaseResult, MemberDiagram } from "../types/results.type";
4
+ import type { FeaCaseResult } from "../types/results.type";
4
5
  /**
5
6
  * The presented diagram of model member `g` (an index into `system.memberGroups`) in a raw
6
7
  * state, stitched from its pieces when the shell mesh splits it.
@@ -8,13 +9,13 @@ import type { FrameCaseResult, MemberDiagram } from "../types/results.type";
8
9
  * @param stations - Evenly spaced stations
9
10
  * @param withStations - false keeps only the extremes (empty `stations`)
10
11
  */
11
- export declare const presentMemberDiagram: (system: FrameSystem, state: RawState, g: number, stations?: number, withStations?: boolean) => MemberDiagram;
12
+ export declare const presentMemberDiagram: (system: AnalysisSystem, state: RawState, g: number, stations?: number, withStations?: boolean) => MemberDiagram;
12
13
  /**
13
14
  * Rounds a raw state into the presented result of one load case or combination.
14
15
  *
15
16
  * @param diagram - Evenly spaced station count, and whether to return stations or only extremes
16
17
  */
17
- export declare const presentState: (system: FrameSystem, state: RawState, meta: Pick<FrameCaseResult, "id" | "kind" | "name" | "type">, diagram?: {
18
+ export declare const presentState: (system: AnalysisSystem, state: RawState, meta: Pick<FeaCaseResult, "id" | "kind" | "name" | "type">, diagram?: {
18
19
  stations?: number;
19
20
  withStations?: boolean;
20
- }) => FrameCaseResult;
21
+ }) => FeaCaseResult;
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.presentState = exports.presentMemberDiagram = void 0;
4
4
  const frame_constant_1 = require("../../../core/constants/frame.constant");
5
+ const fixed_end_forces_1 = require("../../frame/elements/fixed-end-forces");
6
+ const member_diagram_1 = require("../../frame/post/member-diagram");
7
+ const member_assembly_1 = require("../../frame/solver/member-assembly");
8
+ const shell_forces_1 = require("../../shell/post/shell-forces");
5
9
  const math_1 = require("../../../utils/math");
6
10
  const matrix_1 = require("../../../utils/matrix");
7
- const fixed_end_forces_1 = require("../elements/fixed-end-forces");
8
- const global_assembly_1 = require("../solver/global-assembly");
9
- const member_diagram_1 = require("./member-diagram");
10
- const shell_forces_1 = require("./shell-forces");
11
11
  const FORCE_DECIMALS = 4;
12
12
  const DISPLACEMENT_DECIMALS = 5;
13
13
  const ROTATION_DECIMALS = 8;
@@ -37,7 +37,7 @@ const releaseDeformation = (d) => ({
37
37
  */
38
38
  const memberEnd = (system, state, m) => {
39
39
  const member = system.members[m];
40
- const node = (0, matrix_1.matVec)(member.T, (0, global_assembly_1.memberDofs)(member).map((d) => state.U[d]));
40
+ const node = (0, matrix_1.matVec)(member.T, (0, member_assembly_1.memberDofs)(member).map((d) => state.U[d]));
41
41
  const own = member.hasReleases
42
42
  ? member.memberEndDisplacements(node, (0, fixed_end_forces_1.fixedEndForces)(state.memberLoads[m], member.length))
43
43
  : node;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"present-state.js","sourceRoot":"","sources":["../../../../src/fea/analysis/post/present-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type MemberGroup, type SystemMember } from "../../frame/solver/system-member";
2
+ import { type AutoRestraint } from "../../shared/solver/auto-restraint";
3
+ import { type BoundaryConditions } from "../../shared/solver/boundary-conditions";
4
+ import type { FeaId, FeaNode } from "../../shared/types/model.type";
5
+ import { type SystemShell } from "../../shell/solver/system-shell";
6
+ import { type SkylineMatrix } from "../../../utils/skyline";
7
+ import type { FeaModel } from "../types/model.type";
8
+ /** The load-independent part of an analysis: geometry, stiffness and its factorisation. */
9
+ export interface AnalysisSystem {
10
+ nodes: FeaNode[];
11
+ nodeIndex: Map<FeaId, number>;
12
+ /** Index into `memberGroups` of each model member. */
13
+ memberIndex: Map<FeaId, number>;
14
+ /** Model members, in model order. */
15
+ memberGroups: MemberGroup[];
16
+ /** The pieces that are assembled: one per member unless the shell mesh splits it. */
17
+ members: SystemMember[];
18
+ shellIndex: Map<FeaId, number>;
19
+ /** Element indices of each shell area. */
20
+ shellsByArea: Map<FeaId, number[]>;
21
+ shells: SystemShell[];
22
+ dofCount: number;
23
+ boundary: BoundaryConditions;
24
+ /** Equation number of each global DOF in the factorised system, −1 for a fixed DOF. */
25
+ equation: Int32Array;
26
+ /** Global DOF of each equation. */
27
+ free: number[];
28
+ /** Joint rotations held because nothing resists them (see `findAutoRestraints`). */
29
+ autoRestraints: AutoRestraint[];
30
+ /** Skyline Cholesky factor of the free stiffness including springs; null when nothing is free. */
31
+ factor: SkylineMatrix | null;
32
+ /** Stored entries of the factor (a measure of bandwidth, memory and work). */
33
+ profileSize: number;
34
+ }
35
+ /**
36
+ * Builds the member and shell matrices of a model that passed `validateModel`, assembles
37
+ * the free stiffness in skyline storage with nodes in reverse Cuthill–McKee order, and
38
+ * factorises it once for all load cases. Joint rotations that nothing resists (e.g. at truss
39
+ * joints) are held by a spring along each null direction, which carries no force.
40
+ *
41
+ * @throws {FeaError} 328 if a node connected only to shells has a translation that
42
+ * nothing resists (a membrane's out-of-plane or a plate's in-plane direction), with `nodeId`,
43
+ * `shellId` and `dof`; 304 if the structure is a mechanism; `details` names a node and a DOF
44
+ * involved in it
45
+ */
46
+ export declare const prepareAnalysisSystem: (model: FeaModel) => AnalysisSystem;