formulab 0.1.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 (508) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/LICENSE +21 -0
  3. package/README.md +403 -0
  4. package/dist/automotive/batteryRuntime.d.ts +14 -0
  5. package/dist/automotive/batteryRuntime.d.ts.map +1 -0
  6. package/dist/automotive/batteryRuntime.js +38 -0
  7. package/dist/automotive/batteryRuntime.js.map +1 -0
  8. package/dist/automotive/evCharging.d.ts +14 -0
  9. package/dist/automotive/evCharging.d.ts.map +1 -0
  10. package/dist/automotive/evCharging.js +48 -0
  11. package/dist/automotive/evCharging.js.map +1 -0
  12. package/dist/automotive/fuelEconomy.d.ts +15 -0
  13. package/dist/automotive/fuelEconomy.d.ts.map +1 -0
  14. package/dist/automotive/fuelEconomy.js +61 -0
  15. package/dist/automotive/fuelEconomy.js.map +1 -0
  16. package/dist/automotive/gearRatio.d.ts +15 -0
  17. package/dist/automotive/gearRatio.d.ts.map +1 -0
  18. package/dist/automotive/gearRatio.js +39 -0
  19. package/dist/automotive/gearRatio.js.map +1 -0
  20. package/dist/automotive/index.d.ts +9 -0
  21. package/dist/automotive/index.d.ts.map +1 -0
  22. package/dist/automotive/index.js +9 -0
  23. package/dist/automotive/index.js.map +1 -0
  24. package/dist/automotive/power.d.ts +14 -0
  25. package/dist/automotive/power.d.ts.map +1 -0
  26. package/dist/automotive/power.js +52 -0
  27. package/dist/automotive/power.js.map +1 -0
  28. package/dist/automotive/tireCompare.d.ts +9 -0
  29. package/dist/automotive/tireCompare.d.ts.map +1 -0
  30. package/dist/automotive/tireCompare.js +54 -0
  31. package/dist/automotive/tireCompare.js.map +1 -0
  32. package/dist/automotive/torque.d.ts +14 -0
  33. package/dist/automotive/torque.d.ts.map +1 -0
  34. package/dist/automotive/torque.js +52 -0
  35. package/dist/automotive/torque.js.map +1 -0
  36. package/dist/automotive/types.d.ts +114 -0
  37. package/dist/automotive/types.d.ts.map +1 -0
  38. package/dist/automotive/types.js +2 -0
  39. package/dist/automotive/types.js.map +1 -0
  40. package/dist/chemical/batch.d.ts +12 -0
  41. package/dist/chemical/batch.d.ts.map +1 -0
  42. package/dist/chemical/batch.js +36 -0
  43. package/dist/chemical/batch.js.map +1 -0
  44. package/dist/chemical/concentration.d.ts +15 -0
  45. package/dist/chemical/concentration.d.ts.map +1 -0
  46. package/dist/chemical/concentration.js +45 -0
  47. package/dist/chemical/concentration.js.map +1 -0
  48. package/dist/chemical/dilution.d.ts +12 -0
  49. package/dist/chemical/dilution.d.ts.map +1 -0
  50. package/dist/chemical/dilution.js +68 -0
  51. package/dist/chemical/dilution.js.map +1 -0
  52. package/dist/chemical/index.d.ts +9 -0
  53. package/dist/chemical/index.d.ts.map +1 -0
  54. package/dist/chemical/index.js +9 -0
  55. package/dist/chemical/index.js.map +1 -0
  56. package/dist/chemical/injectionCycle.d.ts +19 -0
  57. package/dist/chemical/injectionCycle.d.ts.map +1 -0
  58. package/dist/chemical/injectionCycle.js +170 -0
  59. package/dist/chemical/injectionCycle.js.map +1 -0
  60. package/dist/chemical/ph.d.ts +13 -0
  61. package/dist/chemical/ph.d.ts.map +1 -0
  62. package/dist/chemical/ph.js +83 -0
  63. package/dist/chemical/ph.js.map +1 -0
  64. package/dist/chemical/reactor.d.ts +19 -0
  65. package/dist/chemical/reactor.d.ts.map +1 -0
  66. package/dist/chemical/reactor.js +57 -0
  67. package/dist/chemical/reactor.js.map +1 -0
  68. package/dist/chemical/shelfLife.d.ts +15 -0
  69. package/dist/chemical/shelfLife.d.ts.map +1 -0
  70. package/dist/chemical/shelfLife.js +36 -0
  71. package/dist/chemical/shelfLife.js.map +1 -0
  72. package/dist/chemical/types.d.ts +144 -0
  73. package/dist/chemical/types.d.ts.map +1 -0
  74. package/dist/chemical/types.js +2 -0
  75. package/dist/chemical/types.js.map +1 -0
  76. package/dist/construction/aggregate.d.ts +33 -0
  77. package/dist/construction/aggregate.d.ts.map +1 -0
  78. package/dist/construction/aggregate.js +92 -0
  79. package/dist/construction/aggregate.js.map +1 -0
  80. package/dist/construction/beamLoad.d.ts +12 -0
  81. package/dist/construction/beamLoad.d.ts.map +1 -0
  82. package/dist/construction/beamLoad.js +156 -0
  83. package/dist/construction/beamLoad.js.map +1 -0
  84. package/dist/construction/brick.d.ts +17 -0
  85. package/dist/construction/brick.d.ts.map +1 -0
  86. package/dist/construction/brick.js +53 -0
  87. package/dist/construction/brick.js.map +1 -0
  88. package/dist/construction/concreteMix.d.ts +9 -0
  89. package/dist/construction/concreteMix.d.ts.map +1 -0
  90. package/dist/construction/concreteMix.js +31 -0
  91. package/dist/construction/concreteMix.js.map +1 -0
  92. package/dist/construction/earthwork.d.ts +13 -0
  93. package/dist/construction/earthwork.d.ts.map +1 -0
  94. package/dist/construction/earthwork.js +25 -0
  95. package/dist/construction/earthwork.js.map +1 -0
  96. package/dist/construction/formwork.d.ts +9 -0
  97. package/dist/construction/formwork.d.ts.map +1 -0
  98. package/dist/construction/formwork.js +61 -0
  99. package/dist/construction/formwork.js.map +1 -0
  100. package/dist/construction/index.d.ts +13 -0
  101. package/dist/construction/index.d.ts.map +1 -0
  102. package/dist/construction/index.js +13 -0
  103. package/dist/construction/index.js.map +1 -0
  104. package/dist/construction/pert.d.ts +15 -0
  105. package/dist/construction/pert.d.ts.map +1 -0
  106. package/dist/construction/pert.js +207 -0
  107. package/dist/construction/pert.js.map +1 -0
  108. package/dist/construction/rebar.d.ts +16 -0
  109. package/dist/construction/rebar.d.ts.map +1 -0
  110. package/dist/construction/rebar.js +43 -0
  111. package/dist/construction/rebar.js.map +1 -0
  112. package/dist/construction/roof.d.ts +16 -0
  113. package/dist/construction/roof.d.ts.map +1 -0
  114. package/dist/construction/roof.js +65 -0
  115. package/dist/construction/roof.js.map +1 -0
  116. package/dist/construction/slope.d.ts +14 -0
  117. package/dist/construction/slope.d.ts.map +1 -0
  118. package/dist/construction/slope.js +54 -0
  119. package/dist/construction/slope.js.map +1 -0
  120. package/dist/construction/stair.d.ts +17 -0
  121. package/dist/construction/stair.d.ts.map +1 -0
  122. package/dist/construction/stair.js +69 -0
  123. package/dist/construction/stair.js.map +1 -0
  124. package/dist/construction/types.d.ts +219 -0
  125. package/dist/construction/types.d.ts.map +1 -0
  126. package/dist/construction/types.js +2 -0
  127. package/dist/construction/types.js.map +1 -0
  128. package/dist/electronics/awg.d.ts +9 -0
  129. package/dist/electronics/awg.d.ts.map +1 -0
  130. package/dist/electronics/awg.js +66 -0
  131. package/dist/electronics/awg.js.map +1 -0
  132. package/dist/electronics/capacitor.d.ts +9 -0
  133. package/dist/electronics/capacitor.d.ts.map +1 -0
  134. package/dist/electronics/capacitor.js +51 -0
  135. package/dist/electronics/capacitor.js.map +1 -0
  136. package/dist/electronics/index.d.ts +12 -0
  137. package/dist/electronics/index.d.ts.map +1 -0
  138. package/dist/electronics/index.js +12 -0
  139. package/dist/electronics/index.js.map +1 -0
  140. package/dist/electronics/led.d.ts +9 -0
  141. package/dist/electronics/led.d.ts.map +1 -0
  142. package/dist/electronics/led.js +72 -0
  143. package/dist/electronics/led.js.map +1 -0
  144. package/dist/electronics/reflow.d.ts +12 -0
  145. package/dist/electronics/reflow.d.ts.map +1 -0
  146. package/dist/electronics/reflow.js +77 -0
  147. package/dist/electronics/reflow.js.map +1 -0
  148. package/dist/electronics/resistor.d.ts +8 -0
  149. package/dist/electronics/resistor.d.ts.map +1 -0
  150. package/dist/electronics/resistor.js +137 -0
  151. package/dist/electronics/resistor.js.map +1 -0
  152. package/dist/electronics/smt-takt.d.ts +8 -0
  153. package/dist/electronics/smt-takt.d.ts.map +1 -0
  154. package/dist/electronics/smt-takt.js +59 -0
  155. package/dist/electronics/smt-takt.js.map +1 -0
  156. package/dist/electronics/solder.d.ts +8 -0
  157. package/dist/electronics/solder.d.ts.map +1 -0
  158. package/dist/electronics/solder.js +46 -0
  159. package/dist/electronics/solder.js.map +1 -0
  160. package/dist/electronics/stencil.d.ts +9 -0
  161. package/dist/electronics/stencil.d.ts.map +1 -0
  162. package/dist/electronics/stencil.js +78 -0
  163. package/dist/electronics/stencil.js.map +1 -0
  164. package/dist/electronics/trace.d.ts +8 -0
  165. package/dist/electronics/trace.d.ts.map +1 -0
  166. package/dist/electronics/trace.js +75 -0
  167. package/dist/electronics/trace.js.map +1 -0
  168. package/dist/electronics/types.d.ts +145 -0
  169. package/dist/electronics/types.d.ts.map +1 -0
  170. package/dist/electronics/types.js +2 -0
  171. package/dist/electronics/types.js.map +1 -0
  172. package/dist/electronics/via.d.ts +12 -0
  173. package/dist/electronics/via.d.ts.map +1 -0
  174. package/dist/electronics/via.js +63 -0
  175. package/dist/electronics/via.js.map +1 -0
  176. package/dist/energy/carbonFootprint.d.ts +13 -0
  177. package/dist/energy/carbonFootprint.d.ts.map +1 -0
  178. package/dist/energy/carbonFootprint.js +41 -0
  179. package/dist/energy/carbonFootprint.js.map +1 -0
  180. package/dist/energy/compressedAirCost.d.ts +14 -0
  181. package/dist/energy/compressedAirCost.d.ts.map +1 -0
  182. package/dist/energy/compressedAirCost.js +39 -0
  183. package/dist/energy/compressedAirCost.js.map +1 -0
  184. package/dist/energy/index.d.ts +8 -0
  185. package/dist/energy/index.d.ts.map +1 -0
  186. package/dist/energy/index.js +8 -0
  187. package/dist/energy/index.js.map +1 -0
  188. package/dist/energy/motorEfficiency.d.ts +14 -0
  189. package/dist/energy/motorEfficiency.d.ts.map +1 -0
  190. package/dist/energy/motorEfficiency.js +47 -0
  191. package/dist/energy/motorEfficiency.js.map +1 -0
  192. package/dist/energy/pfCorrection.d.ts +15 -0
  193. package/dist/energy/pfCorrection.d.ts.map +1 -0
  194. package/dist/energy/pfCorrection.js +56 -0
  195. package/dist/energy/pfCorrection.js.map +1 -0
  196. package/dist/energy/powerCost.d.ts +15 -0
  197. package/dist/energy/powerCost.d.ts.map +1 -0
  198. package/dist/energy/powerCost.js +37 -0
  199. package/dist/energy/powerCost.js.map +1 -0
  200. package/dist/energy/types.d.ts +119 -0
  201. package/dist/energy/types.d.ts.map +1 -0
  202. package/dist/energy/types.js +2 -0
  203. package/dist/energy/types.js.map +1 -0
  204. package/dist/energy/vfdSavings.d.ts +16 -0
  205. package/dist/energy/vfdSavings.d.ts.map +1 -0
  206. package/dist/energy/vfdSavings.js +57 -0
  207. package/dist/energy/vfdSavings.js.map +1 -0
  208. package/dist/food/calorie.d.ts +13 -0
  209. package/dist/food/calorie.d.ts.map +1 -0
  210. package/dist/food/calorie.js +42 -0
  211. package/dist/food/calorie.js.map +1 -0
  212. package/dist/food/expiry.d.ts +13 -0
  213. package/dist/food/expiry.d.ts.map +1 -0
  214. package/dist/food/expiry.js +58 -0
  215. package/dist/food/expiry.js.map +1 -0
  216. package/dist/food/haccp.d.ts +18 -0
  217. package/dist/food/haccp.d.ts.map +1 -0
  218. package/dist/food/haccp.js +70 -0
  219. package/dist/food/haccp.js.map +1 -0
  220. package/dist/food/index.d.ts +6 -0
  221. package/dist/food/index.d.ts.map +1 -0
  222. package/dist/food/index.js +6 -0
  223. package/dist/food/index.js.map +1 -0
  224. package/dist/food/nutrition.d.ts +12 -0
  225. package/dist/food/nutrition.d.ts.map +1 -0
  226. package/dist/food/nutrition.js +75 -0
  227. package/dist/food/nutrition.js.map +1 -0
  228. package/dist/food/types.d.ts +104 -0
  229. package/dist/food/types.d.ts.map +1 -0
  230. package/dist/food/types.js +2 -0
  231. package/dist/food/types.js.map +1 -0
  232. package/dist/index.d.ts +7 -0
  233. package/dist/index.d.ts.map +1 -0
  234. package/dist/index.js +9 -0
  235. package/dist/index.js.map +1 -0
  236. package/dist/logistics/cbm.d.ts +12 -0
  237. package/dist/logistics/cbm.d.ts.map +1 -0
  238. package/dist/logistics/cbm.js +37 -0
  239. package/dist/logistics/cbm.js.map +1 -0
  240. package/dist/logistics/containerFit.d.ts +12 -0
  241. package/dist/logistics/containerFit.d.ts.map +1 -0
  242. package/dist/logistics/containerFit.js +73 -0
  243. package/dist/logistics/containerFit.js.map +1 -0
  244. package/dist/logistics/dimWeight.d.ts +13 -0
  245. package/dist/logistics/dimWeight.d.ts.map +1 -0
  246. package/dist/logistics/dimWeight.js +50 -0
  247. package/dist/logistics/dimWeight.js.map +1 -0
  248. package/dist/logistics/eoq.d.ts +18 -0
  249. package/dist/logistics/eoq.d.ts.map +1 -0
  250. package/dist/logistics/eoq.js +42 -0
  251. package/dist/logistics/eoq.js.map +1 -0
  252. package/dist/logistics/fillRate.d.ts +22 -0
  253. package/dist/logistics/fillRate.d.ts.map +1 -0
  254. package/dist/logistics/fillRate.js +84 -0
  255. package/dist/logistics/fillRate.js.map +1 -0
  256. package/dist/logistics/freightClass.d.ts +12 -0
  257. package/dist/logistics/freightClass.d.ts.map +1 -0
  258. package/dist/logistics/freightClass.js +68 -0
  259. package/dist/logistics/freightClass.js.map +1 -0
  260. package/dist/logistics/index.d.ts +15 -0
  261. package/dist/logistics/index.d.ts.map +1 -0
  262. package/dist/logistics/index.js +15 -0
  263. package/dist/logistics/index.js.map +1 -0
  264. package/dist/logistics/kanban.d.ts +19 -0
  265. package/dist/logistics/kanban.d.ts.map +1 -0
  266. package/dist/logistics/kanban.js +48 -0
  267. package/dist/logistics/kanban.js.map +1 -0
  268. package/dist/logistics/pallet3d.d.ts +16 -0
  269. package/dist/logistics/pallet3d.d.ts.map +1 -0
  270. package/dist/logistics/pallet3d.js +380 -0
  271. package/dist/logistics/pallet3d.js.map +1 -0
  272. package/dist/logistics/palletStack.d.ts +12 -0
  273. package/dist/logistics/palletStack.d.ts.map +1 -0
  274. package/dist/logistics/palletStack.js +65 -0
  275. package/dist/logistics/palletStack.js.map +1 -0
  276. package/dist/logistics/pickTime.d.ts +17 -0
  277. package/dist/logistics/pickTime.d.ts.map +1 -0
  278. package/dist/logistics/pickTime.js +70 -0
  279. package/dist/logistics/pickTime.js.map +1 -0
  280. package/dist/logistics/safetyStock.d.ts +24 -0
  281. package/dist/logistics/safetyStock.d.ts.map +1 -0
  282. package/dist/logistics/safetyStock.js +99 -0
  283. package/dist/logistics/safetyStock.js.map +1 -0
  284. package/dist/logistics/shipping.d.ts +16 -0
  285. package/dist/logistics/shipping.d.ts.map +1 -0
  286. package/dist/logistics/shipping.js +115 -0
  287. package/dist/logistics/shipping.js.map +1 -0
  288. package/dist/logistics/tsp.d.ts +12 -0
  289. package/dist/logistics/tsp.d.ts.map +1 -0
  290. package/dist/logistics/tsp.js +166 -0
  291. package/dist/logistics/tsp.js.map +1 -0
  292. package/dist/logistics/types.d.ts +315 -0
  293. package/dist/logistics/types.d.ts.map +1 -0
  294. package/dist/logistics/types.js +5 -0
  295. package/dist/logistics/types.js.map +1 -0
  296. package/dist/metal/bearing.d.ts +11 -0
  297. package/dist/metal/bearing.d.ts.map +1 -0
  298. package/dist/metal/bearing.js +32 -0
  299. package/dist/metal/bearing.js.map +1 -0
  300. package/dist/metal/bendAllowance.d.ts +13 -0
  301. package/dist/metal/bendAllowance.d.ts.map +1 -0
  302. package/dist/metal/bendAllowance.js +75 -0
  303. package/dist/metal/bendAllowance.js.map +1 -0
  304. package/dist/metal/bolt.d.ts +32 -0
  305. package/dist/metal/bolt.d.ts.map +1 -0
  306. package/dist/metal/bolt.js +149 -0
  307. package/dist/metal/bolt.js.map +1 -0
  308. package/dist/metal/cutting.d.ts +10 -0
  309. package/dist/metal/cutting.d.ts.map +1 -0
  310. package/dist/metal/cutting.js +55 -0
  311. package/dist/metal/cutting.js.map +1 -0
  312. package/dist/metal/cuttingStock.d.ts +8 -0
  313. package/dist/metal/cuttingStock.d.ts.map +1 -0
  314. package/dist/metal/cuttingStock.js +89 -0
  315. package/dist/metal/cuttingStock.js.map +1 -0
  316. package/dist/metal/flatPattern.d.ts +12 -0
  317. package/dist/metal/flatPattern.d.ts.map +1 -0
  318. package/dist/metal/flatPattern.js +50 -0
  319. package/dist/metal/flatPattern.js.map +1 -0
  320. package/dist/metal/gear.d.ts +13 -0
  321. package/dist/metal/gear.d.ts.map +1 -0
  322. package/dist/metal/gear.js +79 -0
  323. package/dist/metal/gear.js.map +1 -0
  324. package/dist/metal/hardness.d.ts +15 -0
  325. package/dist/metal/hardness.d.ts.map +1 -0
  326. package/dist/metal/hardness.js +77 -0
  327. package/dist/metal/hardness.js.map +1 -0
  328. package/dist/metal/index.d.ts +24 -0
  329. package/dist/metal/index.d.ts.map +1 -0
  330. package/dist/metal/index.js +24 -0
  331. package/dist/metal/index.js.map +1 -0
  332. package/dist/metal/kFactorReverse.d.ts +19 -0
  333. package/dist/metal/kFactorReverse.d.ts.map +1 -0
  334. package/dist/metal/kFactorReverse.js +39 -0
  335. package/dist/metal/kFactorReverse.js.map +1 -0
  336. package/dist/metal/material.d.ts +5 -0
  337. package/dist/metal/material.d.ts.map +1 -0
  338. package/dist/metal/material.js +56 -0
  339. package/dist/metal/material.js.map +1 -0
  340. package/dist/metal/metalWeight.d.ts +10 -0
  341. package/dist/metal/metalWeight.d.ts.map +1 -0
  342. package/dist/metal/metalWeight.js +82 -0
  343. package/dist/metal/metalWeight.js.map +1 -0
  344. package/dist/metal/pressFit.d.ts +15 -0
  345. package/dist/metal/pressFit.d.ts.map +1 -0
  346. package/dist/metal/pressFit.js +96 -0
  347. package/dist/metal/pressFit.js.map +1 -0
  348. package/dist/metal/pressTonnage.d.ts +13 -0
  349. package/dist/metal/pressTonnage.d.ts.map +1 -0
  350. package/dist/metal/pressTonnage.js +86 -0
  351. package/dist/metal/pressTonnage.js.map +1 -0
  352. package/dist/metal/roughness.d.ts +6 -0
  353. package/dist/metal/roughness.d.ts.map +1 -0
  354. package/dist/metal/roughness.js +62 -0
  355. package/dist/metal/roughness.js.map +1 -0
  356. package/dist/metal/screw.d.ts +7 -0
  357. package/dist/metal/screw.d.ts.map +1 -0
  358. package/dist/metal/screw.js +44 -0
  359. package/dist/metal/screw.js.map +1 -0
  360. package/dist/metal/spring.d.ts +11 -0
  361. package/dist/metal/spring.d.ts.map +1 -0
  362. package/dist/metal/spring.js +59 -0
  363. package/dist/metal/spring.js.map +1 -0
  364. package/dist/metal/tap.d.ts +16 -0
  365. package/dist/metal/tap.d.ts.map +1 -0
  366. package/dist/metal/tap.js +62 -0
  367. package/dist/metal/tap.js.map +1 -0
  368. package/dist/metal/thread.d.ts +8 -0
  369. package/dist/metal/thread.d.ts.map +1 -0
  370. package/dist/metal/thread.js +75 -0
  371. package/dist/metal/thread.js.map +1 -0
  372. package/dist/metal/tolerance.d.ts +6 -0
  373. package/dist/metal/tolerance.d.ts.map +1 -0
  374. package/dist/metal/tolerance.js +113 -0
  375. package/dist/metal/tolerance.js.map +1 -0
  376. package/dist/metal/types.d.ts +494 -0
  377. package/dist/metal/types.d.ts.map +1 -0
  378. package/dist/metal/types.js +2 -0
  379. package/dist/metal/types.js.map +1 -0
  380. package/dist/metal/vibration.d.ts +6 -0
  381. package/dist/metal/vibration.d.ts.map +1 -0
  382. package/dist/metal/vibration.js +153 -0
  383. package/dist/metal/vibration.js.map +1 -0
  384. package/dist/metal/weldHeat.d.ts +6 -0
  385. package/dist/metal/weldHeat.d.ts.map +1 -0
  386. package/dist/metal/weldHeat.js +138 -0
  387. package/dist/metal/weldHeat.js.map +1 -0
  388. package/dist/metal/welding.d.ts +6 -0
  389. package/dist/metal/welding.d.ts.map +1 -0
  390. package/dist/metal/welding.js +80 -0
  391. package/dist/metal/welding.js.map +1 -0
  392. package/dist/quality/aql.d.ts +10 -0
  393. package/dist/quality/aql.d.ts.map +1 -0
  394. package/dist/quality/aql.js +104 -0
  395. package/dist/quality/aql.js.map +1 -0
  396. package/dist/quality/cpk.d.ts +14 -0
  397. package/dist/quality/cpk.d.ts.map +1 -0
  398. package/dist/quality/cpk.js +44 -0
  399. package/dist/quality/cpk.js.map +1 -0
  400. package/dist/quality/cycle.d.ts +11 -0
  401. package/dist/quality/cycle.d.ts.map +1 -0
  402. package/dist/quality/cycle.js +55 -0
  403. package/dist/quality/cycle.js.map +1 -0
  404. package/dist/quality/downtime.d.ts +9 -0
  405. package/dist/quality/downtime.d.ts.map +1 -0
  406. package/dist/quality/downtime.js +28 -0
  407. package/dist/quality/downtime.js.map +1 -0
  408. package/dist/quality/dpmo.d.ts +10 -0
  409. package/dist/quality/dpmo.d.ts.map +1 -0
  410. package/dist/quality/dpmo.js +114 -0
  411. package/dist/quality/dpmo.js.map +1 -0
  412. package/dist/quality/index.d.ts +15 -0
  413. package/dist/quality/index.d.ts.map +1 -0
  414. package/dist/quality/index.js +15 -0
  415. package/dist/quality/index.js.map +1 -0
  416. package/dist/quality/lineBalancing.d.ts +9 -0
  417. package/dist/quality/lineBalancing.d.ts.map +1 -0
  418. package/dist/quality/lineBalancing.js +185 -0
  419. package/dist/quality/lineBalancing.js.map +1 -0
  420. package/dist/quality/mtbf.d.ts +13 -0
  421. package/dist/quality/mtbf.d.ts.map +1 -0
  422. package/dist/quality/mtbf.js +48 -0
  423. package/dist/quality/mtbf.js.map +1 -0
  424. package/dist/quality/oee.d.ts +11 -0
  425. package/dist/quality/oee.d.ts.map +1 -0
  426. package/dist/quality/oee.js +43 -0
  427. package/dist/quality/oee.js.map +1 -0
  428. package/dist/quality/ppk.d.ts +15 -0
  429. package/dist/quality/ppk.d.ts.map +1 -0
  430. package/dist/quality/ppk.js +61 -0
  431. package/dist/quality/ppk.js.map +1 -0
  432. package/dist/quality/ppm.d.ts +9 -0
  433. package/dist/quality/ppm.d.ts.map +1 -0
  434. package/dist/quality/ppm.js +134 -0
  435. package/dist/quality/ppm.js.map +1 -0
  436. package/dist/quality/rpn.d.ts +11 -0
  437. package/dist/quality/rpn.d.ts.map +1 -0
  438. package/dist/quality/rpn.js +48 -0
  439. package/dist/quality/rpn.js.map +1 -0
  440. package/dist/quality/takt.d.ts +13 -0
  441. package/dist/quality/takt.d.ts.map +1 -0
  442. package/dist/quality/takt.js +44 -0
  443. package/dist/quality/takt.js.map +1 -0
  444. package/dist/quality/types.d.ts +261 -0
  445. package/dist/quality/types.d.ts.map +1 -0
  446. package/dist/quality/types.js +2 -0
  447. package/dist/quality/types.js.map +1 -0
  448. package/dist/quality/yield.d.ts +12 -0
  449. package/dist/quality/yield.d.ts.map +1 -0
  450. package/dist/quality/yield.js +56 -0
  451. package/dist/quality/yield.js.map +1 -0
  452. package/dist/safety/fallClearance.d.ts +12 -0
  453. package/dist/safety/fallClearance.d.ts.map +1 -0
  454. package/dist/safety/fallClearance.js +37 -0
  455. package/dist/safety/fallClearance.js.map +1 -0
  456. package/dist/safety/havsCalculate.d.ts +16 -0
  457. package/dist/safety/havsCalculate.d.ts.map +1 -0
  458. package/dist/safety/havsCalculate.js +103 -0
  459. package/dist/safety/havsCalculate.js.map +1 -0
  460. package/dist/safety/index.d.ts +8 -0
  461. package/dist/safety/index.d.ts.map +1 -0
  462. package/dist/safety/index.js +8 -0
  463. package/dist/safety/index.js.map +1 -0
  464. package/dist/safety/nioshLifting.d.ts +21 -0
  465. package/dist/safety/nioshLifting.d.ts.map +1 -0
  466. package/dist/safety/nioshLifting.js +164 -0
  467. package/dist/safety/nioshLifting.js.map +1 -0
  468. package/dist/safety/noiseExposure.d.ts +22 -0
  469. package/dist/safety/noiseExposure.d.ts.map +1 -0
  470. package/dist/safety/noiseExposure.js +76 -0
  471. package/dist/safety/noiseExposure.js.map +1 -0
  472. package/dist/safety/respiratorCalculate.d.ts +14 -0
  473. package/dist/safety/respiratorCalculate.d.ts.map +1 -0
  474. package/dist/safety/respiratorCalculate.js +90 -0
  475. package/dist/safety/respiratorCalculate.js.map +1 -0
  476. package/dist/safety/types.d.ts +93 -0
  477. package/dist/safety/types.d.ts.map +1 -0
  478. package/dist/safety/types.js +2 -0
  479. package/dist/safety/types.js.map +1 -0
  480. package/dist/safety/wbgtCalculate.d.ts +25 -0
  481. package/dist/safety/wbgtCalculate.d.ts.map +1 -0
  482. package/dist/safety/wbgtCalculate.js +65 -0
  483. package/dist/safety/wbgtCalculate.js.map +1 -0
  484. package/dist/utility/assignment.d.ts +11 -0
  485. package/dist/utility/assignment.d.ts.map +1 -0
  486. package/dist/utility/assignment.js +113 -0
  487. package/dist/utility/assignment.js.map +1 -0
  488. package/dist/utility/index.d.ts +4 -0
  489. package/dist/utility/index.d.ts.map +1 -0
  490. package/dist/utility/index.js +4 -0
  491. package/dist/utility/index.js.map +1 -0
  492. package/dist/utility/qrcode.d.ts +30 -0
  493. package/dist/utility/qrcode.d.ts.map +1 -0
  494. package/dist/utility/qrcode.js +30 -0
  495. package/dist/utility/qrcode.js.map +1 -0
  496. package/dist/utility/types.d.ts +64 -0
  497. package/dist/utility/types.d.ts.map +1 -0
  498. package/dist/utility/types.js +2 -0
  499. package/dist/utility/types.js.map +1 -0
  500. package/dist/utility/unit.d.ts +25 -0
  501. package/dist/utility/unit.d.ts.map +1 -0
  502. package/dist/utility/unit.js +136 -0
  503. package/dist/utility/unit.js.map +1 -0
  504. package/dist/utils.d.ts +9 -0
  505. package/dist/utils.d.ts.map +1 -0
  506. package/dist/utils.js +12 -0
  507. package/dist/utils.js.map +1 -0
  508. package/package.json +117 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Convert concentration between mol/L, wt%, and ppm.
3
+ *
4
+ * Formulas:
5
+ * - mol/L = (wt% * density * 1000) / (MW * 100)
6
+ * - wt% = (mol/L * MW * 100) / (density * 1000)
7
+ * - ppm = wt% * 10000
8
+ * - mol/L = (ppm * density) / (MW * 1000)
9
+ *
10
+ * @param input - Concentration input with source unit, value, molecular weight, and density
11
+ * @returns All three concentration units
12
+ */
13
+ export function concentration(input) {
14
+ const { fromUnit, value, molecularWeight, solutionDensity } = input;
15
+ let molPerL;
16
+ let wtPercent;
17
+ let ppm;
18
+ switch (fromUnit) {
19
+ case 'molPerL':
20
+ molPerL = value;
21
+ // wt% = (mol/L * MW) / (density * 10)
22
+ wtPercent = (molPerL * molecularWeight) / (solutionDensity * 10);
23
+ // ppm = wt% * 10000
24
+ ppm = wtPercent * 10000;
25
+ break;
26
+ case 'wtPercent':
27
+ wtPercent = value;
28
+ // ppm = wt% * 10000
29
+ ppm = wtPercent * 10000;
30
+ // mol/L = (wt% * density * 1000) / (MW * 100)
31
+ molPerL = (wtPercent * solutionDensity * 1000) / (molecularWeight * 100);
32
+ break;
33
+ case 'ppm':
34
+ ppm = value;
35
+ // wt% = ppm / 10000
36
+ wtPercent = ppm / 10000;
37
+ // mol/L = (ppm * density) / (MW * 1000)
38
+ molPerL = (ppm * solutionDensity) / (molecularWeight * 1000);
39
+ break;
40
+ default:
41
+ return { molPerL: 0, wtPercent: 0, ppm: 0 };
42
+ }
43
+ return { molPerL, wtPercent, ppm };
44
+ }
45
+ //# sourceMappingURL=concentration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concentration.js","sourceRoot":"","sources":["../../src/chemical/concentration.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEpE,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IACtB,IAAI,GAAW,CAAC;IAEhB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,GAAG,KAAK,CAAC;YAChB,sCAAsC;YACtC,SAAS,GAAG,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;YACjE,oBAAoB;YACpB,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;YACxB,MAAM;QAER,KAAK,WAAW;YACd,SAAS,GAAG,KAAK,CAAC;YAClB,oBAAoB;YACpB,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;YACxB,8CAA8C;YAC9C,OAAO,GAAG,CAAC,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;YACzE,MAAM;QAER,KAAK,KAAK;YACR,GAAG,GAAG,KAAK,CAAC;YACZ,oBAAoB;YACpB,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;YACxB,wCAAwC;YACxC,OAAO,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;YAC7D,MAAM;QAER;YACE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { DilutionInput, DilutionResult } from './types.js';
2
+ /**
3
+ * Calculate dilution using C1V1 = C2V2 equation.
4
+ *
5
+ * Solves for the specified unknown variable while the other three are provided.
6
+ *
7
+ * @param input - Dilution input with three known values and one to solve for
8
+ * @returns Dilution result with all values and solvent to add
9
+ * @throws Error if division by zero would occur
10
+ */
11
+ export declare function dilution(input: DilutionInput): DilutionResult;
12
+ //# sourceMappingURL=dilution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dilution.d.ts","sourceRoot":"","sources":["../../src/chemical/dilution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAgE7D"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Calculate dilution using C1V1 = C2V2 equation.
3
+ *
4
+ * Solves for the specified unknown variable while the other three are provided.
5
+ *
6
+ * @param input - Dilution input with three known values and one to solve for
7
+ * @returns Dilution result with all values and solvent to add
8
+ * @throws Error if division by zero would occur
9
+ */
10
+ export function dilution(input) {
11
+ const { solveFor, c1, v1, c2, v2 } = input;
12
+ let resultC1;
13
+ let resultV1;
14
+ let resultC2;
15
+ let resultV2;
16
+ switch (solveFor) {
17
+ case 'c2':
18
+ // C2 = C1 * V1 / V2
19
+ if (v2 === undefined || v2 === 0) {
20
+ throw new Error('Cannot solve for c2: v2 must be non-zero');
21
+ }
22
+ resultC1 = c1;
23
+ resultV1 = v1;
24
+ resultV2 = v2;
25
+ resultC2 = (c1 * v1) / v2;
26
+ break;
27
+ case 'v2':
28
+ // V2 = C1 * V1 / C2
29
+ if (c2 === undefined || c2 === 0) {
30
+ throw new Error('Cannot solve for v2: c2 must be non-zero');
31
+ }
32
+ resultC1 = c1;
33
+ resultV1 = v1;
34
+ resultC2 = c2;
35
+ resultV2 = (c1 * v1) / c2;
36
+ break;
37
+ case 'c1':
38
+ // C1 = C2 * V2 / V1
39
+ if (v1 === undefined || v1 === 0) {
40
+ throw new Error('Cannot solve for c1: v1 must be non-zero');
41
+ }
42
+ resultV1 = v1;
43
+ resultC2 = c2;
44
+ resultV2 = v2;
45
+ resultC1 = (c2 * v2) / v1;
46
+ break;
47
+ case 'v1':
48
+ // V1 = C2 * V2 / C1
49
+ if (c1 === undefined || c1 === 0) {
50
+ throw new Error('Cannot solve for v1: c1 must be non-zero');
51
+ }
52
+ resultC1 = c1;
53
+ resultC2 = c2;
54
+ resultV2 = v2;
55
+ resultV1 = (c2 * v2) / c1;
56
+ break;
57
+ default:
58
+ throw new Error(`Unknown solveFor value: ${solveFor}`);
59
+ }
60
+ return {
61
+ c1: resultC1,
62
+ v1: resultV1,
63
+ c2: resultC2,
64
+ v2: resultV2,
65
+ solventToAdd: resultV2 - resultV1,
66
+ };
67
+ }
68
+ //# sourceMappingURL=dilution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dilution.js","sourceRoot":"","sources":["../../src/chemical/dilution.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAE3C,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,CAAC,EAAG,GAAG,EAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,CAAC,EAAG,GAAG,EAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,CAAC,EAAG,GAAG,EAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM;QAER,KAAK,IAAI;YACP,oBAAoB;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,EAAG,CAAC;YACf,QAAQ,GAAG,CAAC,EAAG,GAAG,EAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM;QAER;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,YAAY,EAAE,QAAQ,GAAG,QAAQ;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type { BatchIngredient, BatchInput, ScaledIngredient, BatchResult, ConcentrationUnit, ConcentrationInput, ConcentrationResult, DilutionSolveFor, DilutionInput, DilutionResult, BufferSystem, PhInput, PhResult, ReactorShape, ReactorInput, ReactorResult, ShelfLifeInput, ShelfLifeResult, ResinType, InjectionCycleInput, InjectionCyclePhase, InjectionCycleResult, } from './types.js';
2
+ export { batch } from './batch.js';
3
+ export { concentration } from './concentration.js';
4
+ export { dilution } from './dilution.js';
5
+ export { ph } from './ph.js';
6
+ export { reactor } from './reactor.js';
7
+ export { shelfLife } from './shelfLife.js';
8
+ export { injectionCycle } from './injectionCycle.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chemical/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EAEX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,OAAO,EACP,QAAQ,EAER,YAAY,EACZ,YAAY,EACZ,aAAa,EAEb,cAAc,EACd,eAAe,EAEf,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Functions
2
+ export { batch } from './batch.js';
3
+ export { concentration } from './concentration.js';
4
+ export { dilution } from './dilution.js';
5
+ export { ph } from './ph.js';
6
+ export { reactor } from './reactor.js';
7
+ export { shelfLife } from './shelfLife.js';
8
+ export { injectionCycle } from './injectionCycle.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chemical/index.ts"],"names":[],"mappings":"AAiCA,YAAY;AACZ,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { InjectionCycleInput, InjectionCycleResult } from './types.js';
2
+ /**
3
+ * Calculate injection molding cycle time.
4
+ *
5
+ * Cooling time formula (simplified from Fourier equation):
6
+ * tc = (h^2 / (PI^2 * alpha)) * ln((8/PI^2) * (Tm - Tw) / (Te - Tw))
7
+ *
8
+ * where:
9
+ * - h = half wall thickness (mm)
10
+ * - alpha = thermal diffusivity (mm^2/s)
11
+ * - Tm = melt temperature
12
+ * - Tw = mold wall temperature
13
+ * - Te = ejection temperature
14
+ *
15
+ * @param input - Injection cycle input with resin type and dimensions
16
+ * @returns Cycle time breakdown and total
17
+ */
18
+ export declare function injectionCycle(input: InjectionCycleInput): InjectionCycleResult;
19
+ //# sourceMappingURL=injectionCycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectionCycle.d.ts","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAkC,MAAM,YAAY,CAAC;AA6E5G;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAqG/E"}
@@ -0,0 +1,170 @@
1
+ const RESIN_PROPERTIES = {
2
+ abs: {
3
+ thermalDiffusivity: 0.12,
4
+ meltTemp: 230,
5
+ moldTemp: 60,
6
+ ejectionTemp: 100,
7
+ density: 1.02,
8
+ },
9
+ pp: {
10
+ thermalDiffusivity: 0.10,
11
+ meltTemp: 220,
12
+ moldTemp: 40,
13
+ ejectionTemp: 80,
14
+ density: 0.90,
15
+ },
16
+ pc: {
17
+ thermalDiffusivity: 0.13,
18
+ meltTemp: 290,
19
+ moldTemp: 90,
20
+ ejectionTemp: 130,
21
+ density: 1.20,
22
+ },
23
+ pa: {
24
+ thermalDiffusivity: 0.11,
25
+ meltTemp: 260,
26
+ moldTemp: 80,
27
+ ejectionTemp: 120,
28
+ density: 1.13,
29
+ },
30
+ pmma: {
31
+ thermalDiffusivity: 0.11,
32
+ meltTemp: 240,
33
+ moldTemp: 70,
34
+ ejectionTemp: 95,
35
+ density: 1.18,
36
+ },
37
+ pet: {
38
+ thermalDiffusivity: 0.10,
39
+ meltTemp: 280,
40
+ moldTemp: 70,
41
+ ejectionTemp: 100,
42
+ density: 1.35,
43
+ },
44
+ pom: {
45
+ thermalDiffusivity: 0.13,
46
+ meltTemp: 200,
47
+ moldTemp: 80,
48
+ ejectionTemp: 120,
49
+ density: 1.41,
50
+ },
51
+ ps: {
52
+ thermalDiffusivity: 0.11,
53
+ meltTemp: 220,
54
+ moldTemp: 45,
55
+ ejectionTemp: 85,
56
+ density: 1.05,
57
+ },
58
+ };
59
+ /**
60
+ * Calculate injection molding cycle time.
61
+ *
62
+ * Cooling time formula (simplified from Fourier equation):
63
+ * tc = (h^2 / (PI^2 * alpha)) * ln((8/PI^2) * (Tm - Tw) / (Te - Tw))
64
+ *
65
+ * where:
66
+ * - h = half wall thickness (mm)
67
+ * - alpha = thermal diffusivity (mm^2/s)
68
+ * - Tm = melt temperature
69
+ * - Tw = mold wall temperature
70
+ * - Te = ejection temperature
71
+ *
72
+ * @param input - Injection cycle input with resin type and dimensions
73
+ * @returns Cycle time breakdown and total
74
+ */
75
+ export function injectionCycle(input) {
76
+ const { resin, wallThickness, shotWeight, injectionRate, moldOpenCloseTime = 3, ejectionTime = 0.5, } = input;
77
+ // Get resin properties
78
+ let props;
79
+ if (resin === 'custom') {
80
+ props = {
81
+ thermalDiffusivity: input.thermalDiffusivity ?? 0.12,
82
+ meltTemp: input.meltTemp ?? 230,
83
+ moldTemp: input.moldTemp ?? 60,
84
+ ejectionTemp: input.ejectionTemp ?? 100,
85
+ density: input.density ?? 1.0,
86
+ };
87
+ }
88
+ else {
89
+ props = RESIN_PROPERTIES[resin];
90
+ }
91
+ // Half wall thickness
92
+ const h = wallThickness / 2;
93
+ // Calculate cooling time
94
+ // tc = (h^2 / (PI^2 * alpha)) * ln((8/PI^2) * (Tm - Tw) / (Te - Tw))
95
+ const piSquared = Math.PI * Math.PI;
96
+ const tempRatioNumerator = props.meltTemp - props.moldTemp;
97
+ const tempRatioDenominator = props.ejectionTemp - props.moldTemp;
98
+ let coolingTime;
99
+ if (tempRatioDenominator <= 0 || props.thermalDiffusivity <= 0) {
100
+ coolingTime = 0;
101
+ }
102
+ else {
103
+ const tempRatio = (8 / piSquared) * (tempRatioNumerator / tempRatioDenominator);
104
+ if (tempRatio <= 0) {
105
+ coolingTime = 0;
106
+ }
107
+ else {
108
+ coolingTime = (h * h / (piSquared * props.thermalDiffusivity)) * Math.log(tempRatio);
109
+ }
110
+ }
111
+ // Calculate fill time
112
+ // Volume = shot weight / density (g / (g/cm^3) = cm^3)
113
+ const volume = shotWeight / props.density;
114
+ // Default injection rate: estimate based on typical machine (~50-150 cm^3/s)
115
+ const effectiveInjectionRate = injectionRate ?? 80;
116
+ const fillTime = volume / effectiveInjectionRate;
117
+ // Packing time: typically 30-50% of cooling time
118
+ const packingTime = coolingTime * 0.4;
119
+ // Total cycle time
120
+ const totalCycleTime = coolingTime + fillTime + packingTime + moldOpenCloseTime + ejectionTime;
121
+ // Parts per hour
122
+ const partsPerHour = totalCycleTime > 0 ? Math.floor(3600 / totalCycleTime) : 0;
123
+ // Build breakdown
124
+ const breakdown = [];
125
+ if (totalCycleTime > 0) {
126
+ breakdown.push({
127
+ phase: 'Fill',
128
+ time: roundTo(fillTime, 2),
129
+ percentage: roundTo((fillTime / totalCycleTime) * 100, 1),
130
+ });
131
+ breakdown.push({
132
+ phase: 'Packing',
133
+ time: roundTo(packingTime, 2),
134
+ percentage: roundTo((packingTime / totalCycleTime) * 100, 1),
135
+ });
136
+ breakdown.push({
137
+ phase: 'Cooling',
138
+ time: roundTo(coolingTime, 2),
139
+ percentage: roundTo((coolingTime / totalCycleTime) * 100, 1),
140
+ });
141
+ breakdown.push({
142
+ phase: 'Mold Open/Close',
143
+ time: roundTo(moldOpenCloseTime, 2),
144
+ percentage: roundTo((moldOpenCloseTime / totalCycleTime) * 100, 1),
145
+ });
146
+ breakdown.push({
147
+ phase: 'Ejection',
148
+ time: roundTo(ejectionTime, 2),
149
+ percentage: roundTo((ejectionTime / totalCycleTime) * 100, 1),
150
+ });
151
+ }
152
+ return {
153
+ coolingTime: roundTo(coolingTime, 2),
154
+ fillTime: roundTo(fillTime, 2),
155
+ packingTime: roundTo(packingTime, 2),
156
+ moldOpenClose: roundTo(moldOpenCloseTime, 2),
157
+ ejectionTime: roundTo(ejectionTime, 2),
158
+ totalCycleTime: roundTo(totalCycleTime, 2),
159
+ partsPerHour,
160
+ breakdown,
161
+ };
162
+ }
163
+ /**
164
+ * Round to specified decimal places
165
+ */
166
+ function roundTo(value, decimals) {
167
+ const factor = Math.pow(10, decimals);
168
+ return Math.round(value * factor) / factor;
169
+ }
170
+ //# sourceMappingURL=injectionCycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectionCycle.js","sourceRoot":"","sources":["../../src/chemical/injectionCycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { PhInput, PhResult } from './types.js';
2
+ /**
3
+ * Calculate pH for buffer solutions using Henderson-Hasselbalch equation.
4
+ *
5
+ * pH = pKa + log10([A-]/[HA])
6
+ *
7
+ * Also calculates buffer capacity and effective range.
8
+ *
9
+ * @param input - pH calculation input with buffer system and concentrations
10
+ * @returns pH result with pKa, buffer capacity, and effective range
11
+ */
12
+ export declare function ph(input: PhInput): PhResult;
13
+ //# sourceMappingURL=ph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ph.d.ts","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAyBlE;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAkD3C"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * pKa values at 25C for common buffer systems
3
+ */
4
+ const PKA_VALUES = {
5
+ acetate: 4.76, // acetic acid / acetate
6
+ phosphate: 7.20, // H2PO4- / HPO4^2- (pKa2)
7
+ tris: 8.07, // Tris base / Tris-H+
8
+ citrate: 6.40, // citric acid pKa3
9
+ carbonate: 6.35, // H2CO3 / HCO3- (pKa1)
10
+ };
11
+ /**
12
+ * Temperature coefficient (dpKa/dT) for buffer systems
13
+ * Typical range: -0.03 to +0.01 per degree C
14
+ */
15
+ const DPKA_DT = {
16
+ acetate: 0.0, // negligible
17
+ phosphate: -0.0028, // slight decrease
18
+ tris: -0.028, // significant decrease at higher temp
19
+ citrate: -0.002,
20
+ carbonate: -0.0055,
21
+ };
22
+ /**
23
+ * Calculate pH for buffer solutions using Henderson-Hasselbalch equation.
24
+ *
25
+ * pH = pKa + log10([A-]/[HA])
26
+ *
27
+ * Also calculates buffer capacity and effective range.
28
+ *
29
+ * @param input - pH calculation input with buffer system and concentrations
30
+ * @returns pH result with pKa, buffer capacity, and effective range
31
+ */
32
+ export function ph(input) {
33
+ const { bufferSystem, acidConcentration, baseConcentration, temperature, customPka } = input;
34
+ // Guard against invalid acid concentration
35
+ if (acidConcentration <= 0) {
36
+ return {
37
+ pH: 0,
38
+ pKa: 0,
39
+ bufferCapacity: 0,
40
+ effectiveRange: { min: 0, max: 0 },
41
+ };
42
+ }
43
+ // Get base pKa at 25C
44
+ let pKaBase;
45
+ let dpKadT;
46
+ if (bufferSystem === 'custom') {
47
+ pKaBase = customPka ?? 7.0;
48
+ dpKadT = 0;
49
+ }
50
+ else {
51
+ pKaBase = PKA_VALUES[bufferSystem];
52
+ dpKadT = DPKA_DT[bufferSystem];
53
+ }
54
+ // Apply temperature correction
55
+ const tempDiff = temperature - 25;
56
+ const pKa = pKaBase + dpKadT * tempDiff;
57
+ // Henderson-Hasselbalch: pH = pKa + log10([A-]/[HA])
58
+ const ratio = baseConcentration / acidConcentration;
59
+ const pH = pKa + Math.log10(ratio);
60
+ // Buffer capacity (simplified): beta = 2.303 * C * Ka * [H+] / (Ka + [H+])^2
61
+ // Approximation: at pH = pKa, capacity is maximized at ~0.576 * C
62
+ const totalConcentration = acidConcentration + baseConcentration;
63
+ const bufferCapacity = 0.576 * totalConcentration * (1 - Math.abs(ratio - 1) / (ratio + 1));
64
+ // Effective buffer range: pKa +/- 1
65
+ const effectiveRange = {
66
+ min: roundTo(pKa - 1, 2),
67
+ max: roundTo(pKa + 1, 2),
68
+ };
69
+ return {
70
+ pH: roundTo(pH, 2),
71
+ pKa: roundTo(pKa, 2),
72
+ bufferCapacity: roundTo(bufferCapacity, 4),
73
+ effectiveRange,
74
+ };
75
+ }
76
+ /**
77
+ * Round to specified decimal places
78
+ */
79
+ function roundTo(value, decimals) {
80
+ const factor = Math.pow(10, decimals);
81
+ return Math.round(value * factor) / factor;
82
+ }
83
+ //# sourceMappingURL=ph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ph.js","sourceRoot":"","sources":["../../src/chemical/ph.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,GAAoD;IAClE,OAAO,EAAE,IAAI,EAAK,wBAAwB;IAC1C,SAAS,EAAE,IAAI,EAAG,0BAA0B;IAC5C,IAAI,EAAE,IAAI,EAAQ,sBAAsB;IACxC,OAAO,EAAE,IAAI,EAAK,mBAAmB;IACrC,SAAS,EAAE,IAAI,EAAG,uBAAuB;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAoD;IAC/D,OAAO,EAAE,GAAG,EAAM,aAAa;IAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAM,sCAAsC;IACxD,OAAO,EAAE,CAAC,KAAK;IACf,SAAS,EAAE,CAAC,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,KAAc;IAC/B,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7F,2CAA2C;IAC3C,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,EAAE,EAAE,CAAC;YACL,GAAG,EAAE,CAAC;YACN,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAc,CAAC;IAEnB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,SAAS,IAAI,GAAG,CAAC;QAC3B,MAAM,GAAG,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAExC,qDAAqD;IACrD,MAAM,KAAK,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IACjE,MAAM,cAAc,GAAG,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5F,oCAAoC;IACpC,MAAM,cAAc,GAAG;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;KACzB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ReactorInput, ReactorResult } from './types.js';
2
+ /**
3
+ * Calculate reactor vessel dimensions and volumes.
4
+ *
5
+ * Supports cylindrical and spherical reactors.
6
+ *
7
+ * Cylindrical:
8
+ * - Volume = PI * r^2 * h
9
+ * - Surface Area = 2 * PI * r^2 + 2 * PI * r * h (ends + lateral)
10
+ *
11
+ * Spherical:
12
+ * - Volume = (4/3) * PI * r^3
13
+ * - Surface Area = 4 * PI * r^2
14
+ *
15
+ * @param input - Reactor dimensions and fill ratio
16
+ * @returns Reactor volumes and surface area
17
+ */
18
+ export declare function reactor(input: ReactorInput): ReactorResult;
19
+ //# sourceMappingURL=reactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAmC1D"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Calculate reactor vessel dimensions and volumes.
3
+ *
4
+ * Supports cylindrical and spherical reactors.
5
+ *
6
+ * Cylindrical:
7
+ * - Volume = PI * r^2 * h
8
+ * - Surface Area = 2 * PI * r^2 + 2 * PI * r * h (ends + lateral)
9
+ *
10
+ * Spherical:
11
+ * - Volume = (4/3) * PI * r^3
12
+ * - Surface Area = 4 * PI * r^2
13
+ *
14
+ * @param input - Reactor dimensions and fill ratio
15
+ * @returns Reactor volumes and surface area
16
+ */
17
+ export function reactor(input) {
18
+ const { shape, diameter, height, fillRatio } = input;
19
+ const radius = diameter / 2;
20
+ let totalVolume;
21
+ let surfaceArea;
22
+ if (shape === 'cylindrical') {
23
+ // Cylindrical reactor
24
+ const h = height;
25
+ // V = PI * r^2 * h
26
+ totalVolume = Math.PI * radius * radius * h;
27
+ // Surface Area = 2 * PI * r^2 (ends) + 2 * PI * r * h (lateral)
28
+ surfaceArea = 2 * Math.PI * radius * radius + 2 * Math.PI * radius * h;
29
+ }
30
+ else {
31
+ // Spherical reactor
32
+ // V = (4/3) * PI * r^3
33
+ totalVolume = (4 / 3) * Math.PI * radius * radius * radius;
34
+ // Surface Area = 4 * PI * r^2
35
+ surfaceArea = 4 * Math.PI * radius * radius;
36
+ }
37
+ const workingVolume = totalVolume * fillRatio;
38
+ const totalVolumeLiters = totalVolume * 1000; // m^3 to liters
39
+ const workingVolumeLiters = workingVolume * 1000;
40
+ const volumeToSurfaceRatio = totalVolume / surfaceArea;
41
+ return {
42
+ totalVolume: roundTo(totalVolume, 4),
43
+ workingVolume: roundTo(workingVolume, 4),
44
+ totalVolumeLiters: roundTo(totalVolumeLiters, 4),
45
+ workingVolumeLiters: roundTo(workingVolumeLiters, 4),
46
+ surfaceArea: roundTo(surfaceArea, 4),
47
+ volumeToSurfaceRatio: roundTo(volumeToSurfaceRatio, 4),
48
+ };
49
+ }
50
+ /**
51
+ * Round to specified decimal places
52
+ */
53
+ function roundTo(value, decimals) {
54
+ const factor = Math.pow(10, decimals);
55
+ return Math.round(value * factor) / factor;
56
+ }
57
+ //# sourceMappingURL=reactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/chemical/reactor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAErD,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5B,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAmB,CAAC;IAExB,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,sBAAsB;QACtB,MAAM,CAAC,GAAG,MAAO,CAAC;QAClB,mBAAmB;QACnB,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QAC5C,gEAAgE;QAChE,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,uBAAuB;QACvB,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC3D,8BAA8B;QAC9B,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,MAAM,iBAAiB,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,gBAAgB;IAC9D,MAAM,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC;IACjD,MAAM,oBAAoB,GAAG,WAAW,GAAG,WAAW,CAAC;IAEvD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ShelfLifeInput, ShelfLifeResult } from './types.js';
2
+ /**
3
+ * Estimate shelf life at different storage temperatures using Q10 rule.
4
+ *
5
+ * The Q10 rule states that reaction rate doubles (or increases by Q10 factor)
6
+ * for every 10 degree C increase in temperature.
7
+ *
8
+ * Acceleration Factor = Q10 ^ ((refTemp - targetTemp) / 10)
9
+ * Estimated Shelf Life = shelfLifeAtRef * accelerationFactor
10
+ *
11
+ * @param input - Shelf life input with reference values and Q10 factor
12
+ * @returns Estimated shelf life at target temperature
13
+ */
14
+ export declare function shelfLife(input: ShelfLifeInput): ShelfLifeResult;
15
+ //# sourceMappingURL=shelfLife.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shelfLife.d.ts","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmBhE"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Estimate shelf life at different storage temperatures using Q10 rule.
3
+ *
4
+ * The Q10 rule states that reaction rate doubles (or increases by Q10 factor)
5
+ * for every 10 degree C increase in temperature.
6
+ *
7
+ * Acceleration Factor = Q10 ^ ((refTemp - targetTemp) / 10)
8
+ * Estimated Shelf Life = shelfLifeAtRef * accelerationFactor
9
+ *
10
+ * @param input - Shelf life input with reference values and Q10 factor
11
+ * @returns Estimated shelf life at target temperature
12
+ */
13
+ export function shelfLife(input) {
14
+ const { shelfLifeAtRef, refTemp, targetTemp, q10 } = input;
15
+ const tempDifference = refTemp - targetTemp;
16
+ // Acceleration factor: Q10 ^ (deltaT / 10)
17
+ // If target is colder, factor > 1 (longer shelf life)
18
+ // If target is warmer, factor < 1 (shorter shelf life)
19
+ const accelerationFactor = Math.pow(q10, tempDifference / 10);
20
+ const estimatedShelfLife = shelfLifeAtRef * accelerationFactor;
21
+ return {
22
+ estimatedShelfLife: roundTo(estimatedShelfLife, 4),
23
+ accelerationFactor: roundTo(accelerationFactor, 4),
24
+ refTemp,
25
+ targetTemp,
26
+ tempDifference,
27
+ };
28
+ }
29
+ /**
30
+ * Round to specified decimal places
31
+ */
32
+ function roundTo(value, decimals) {
33
+ const factor = Math.pow(10, decimals);
34
+ return Math.round(value * factor) / factor;
35
+ }
36
+ //# sourceMappingURL=shelfLife.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shelfLife.js","sourceRoot":"","sources":["../../src/chemical/shelfLife.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAE3D,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;IAE5C,2CAA2C;IAC3C,sDAAsD;IACtD,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAE/D,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,OAAO;QACP,UAAU;QACV,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC"}