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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +284 -127
  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
@@ -1,9 +1,9 @@
1
+ import { elementDofs } from "../../shared/solver/global-assembly.js";
1
2
  import { roundToDecimalPlaces } from "../../../utils/math.js";
2
3
  import { matVec } from "../../../utils/matrix.js";
3
- import { dkqCurvatureRows, plateRigidity } from "../elements/shell/dkq-plate.js";
4
- import { membraneRigidity, membraneStrainRows } from "../elements/shell/membrane-quad.js";
5
- import { bilinearShape, cartesianDerivatives, GAUSS_2X2, quadJacobian, } from "../elements/shell/quad-geometry.js";
6
- import { elementDofs } from "../solver/global-assembly.js";
4
+ import { dkqCurvatureRows, plateRigidity } from "../elements/dkq-plate.js";
5
+ import { membraneRigidity, membraneStrainRows } from "../elements/membrane-quad.js";
6
+ import { bilinearShape, cartesianDerivatives, GAUSS_2X2, quadJacobian, } from "../elements/quad-geometry.js";
7
7
  /** Raw components per corner: F11 F22 F12 (N/mm), M11 M22 M12 (N·mm/mm), V13 V23 (N/mm). */
8
8
  export const SHELL_FORCE_COMPONENTS = 8;
9
9
  const FORCE_DECIMALS = 4;
@@ -1 +1 @@
1
- {"version":3,"file":"shell-forces.js","sourceRoot":"","sources":["../../../../../src/fea/frame/post/shell-forces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-forces.js","sourceRoot":"","sources":["../../../../../src/fea/shell/post/shell-forces.ts"],"names":[],"mappings":"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"}
@@ -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;