formulab 0.1.11 → 0.5.1

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 (332) hide show
  1. package/CHANGELOG.md +107 -10
  2. package/README.md +181 -22
  3. package/dist/automotive/brakingDistance.d.ts +16 -0
  4. package/dist/automotive/brakingDistance.d.ts.map +1 -0
  5. package/dist/automotive/brakingDistance.js +47 -0
  6. package/dist/automotive/brakingDistance.js.map +1 -0
  7. package/dist/automotive/index.d.ts +2 -1
  8. package/dist/automotive/index.d.ts.map +1 -1
  9. package/dist/automotive/index.js +1 -0
  10. package/dist/automotive/index.js.map +1 -1
  11. package/dist/automotive/types.d.ts +16 -0
  12. package/dist/automotive/types.d.ts.map +1 -1
  13. package/dist/battery/batteryPackConfig.d.ts +10 -0
  14. package/dist/battery/batteryPackConfig.d.ts.map +1 -0
  15. package/dist/battery/batteryPackConfig.js +28 -0
  16. package/dist/battery/batteryPackConfig.js.map +1 -0
  17. package/dist/battery/bmsBalancing.d.ts +11 -0
  18. package/dist/battery/bmsBalancing.d.ts.map +1 -0
  19. package/dist/battery/bmsBalancing.js +47 -0
  20. package/dist/battery/bmsBalancing.js.map +1 -0
  21. package/dist/battery/cRate.d.ts +10 -0
  22. package/dist/battery/cRate.d.ts.map +1 -0
  23. package/dist/battery/cRate.js +29 -0
  24. package/dist/battery/cRate.js.map +1 -0
  25. package/dist/battery/chargingProfile.d.ts +11 -0
  26. package/dist/battery/chargingProfile.d.ts.map +1 -0
  27. package/dist/battery/chargingProfile.js +38 -0
  28. package/dist/battery/chargingProfile.js.map +1 -0
  29. package/dist/battery/cycleLife.d.ts +11 -0
  30. package/dist/battery/cycleLife.d.ts.map +1 -0
  31. package/dist/battery/cycleLife.js +70 -0
  32. package/dist/battery/cycleLife.js.map +1 -0
  33. package/dist/battery/energyDensity.d.ts +10 -0
  34. package/dist/battery/energyDensity.d.ts.map +1 -0
  35. package/dist/battery/energyDensity.js +20 -0
  36. package/dist/battery/energyDensity.js.map +1 -0
  37. package/dist/battery/index.d.ts +12 -0
  38. package/dist/battery/index.d.ts.map +1 -0
  39. package/dist/battery/index.js +12 -0
  40. package/dist/battery/index.js.map +1 -0
  41. package/dist/battery/internalResistance.d.ts +11 -0
  42. package/dist/battery/internalResistance.d.ts.map +1 -0
  43. package/dist/battery/internalResistance.js +18 -0
  44. package/dist/battery/internalResistance.js.map +1 -0
  45. package/dist/battery/selfDischarge.d.ts +10 -0
  46. package/dist/battery/selfDischarge.d.ts.map +1 -0
  47. package/dist/battery/selfDischarge.js +17 -0
  48. package/dist/battery/selfDischarge.js.map +1 -0
  49. package/dist/battery/stateOfHealth.d.ts +11 -0
  50. package/dist/battery/stateOfHealth.d.ts.map +1 -0
  51. package/dist/battery/stateOfHealth.js +33 -0
  52. package/dist/battery/stateOfHealth.js.map +1 -0
  53. package/dist/battery/thermalRunaway.d.ts +11 -0
  54. package/dist/battery/thermalRunaway.d.ts.map +1 -0
  55. package/dist/battery/thermalRunaway.js +28 -0
  56. package/dist/battery/thermalRunaway.js.map +1 -0
  57. package/dist/battery/types.d.ts +175 -0
  58. package/dist/battery/types.d.ts.map +1 -0
  59. package/dist/battery/types.js +5 -0
  60. package/dist/battery/types.js.map +1 -0
  61. package/dist/chemical/dilution.d.ts.map +1 -1
  62. package/dist/chemical/dilution.js +21 -24
  63. package/dist/chemical/dilution.js.map +1 -1
  64. package/dist/chemical/heatTransfer.d.ts +16 -0
  65. package/dist/chemical/heatTransfer.d.ts.map +1 -0
  66. package/dist/chemical/heatTransfer.js +85 -0
  67. package/dist/chemical/heatTransfer.js.map +1 -0
  68. package/dist/chemical/index.d.ts +3 -1
  69. package/dist/chemical/index.d.ts.map +1 -1
  70. package/dist/chemical/index.js +2 -0
  71. package/dist/chemical/index.js.map +1 -1
  72. package/dist/chemical/pipeFlow.d.ts +17 -0
  73. package/dist/chemical/pipeFlow.d.ts.map +1 -0
  74. package/dist/chemical/pipeFlow.js +112 -0
  75. package/dist/chemical/pipeFlow.js.map +1 -0
  76. package/dist/chemical/reactor.js +2 -2
  77. package/dist/chemical/reactor.js.map +1 -1
  78. package/dist/chemical/types.d.ts +82 -10
  79. package/dist/chemical/types.d.ts.map +1 -1
  80. package/dist/construction/index.d.ts +2 -1
  81. package/dist/construction/index.d.ts.map +1 -1
  82. package/dist/construction/index.js +1 -0
  83. package/dist/construction/index.js.map +1 -1
  84. package/dist/construction/momentOfInertia.d.ts +17 -0
  85. package/dist/construction/momentOfInertia.d.ts.map +1 -0
  86. package/dist/construction/momentOfInertia.js +204 -0
  87. package/dist/construction/momentOfInertia.js.map +1 -0
  88. package/dist/construction/pert.d.ts.map +1 -1
  89. package/dist/construction/pert.js +1 -17
  90. package/dist/construction/pert.js.map +1 -1
  91. package/dist/construction/types.d.ts +50 -0
  92. package/dist/construction/types.d.ts.map +1 -1
  93. package/dist/electronics/index.d.ts +2 -1
  94. package/dist/electronics/index.d.ts.map +1 -1
  95. package/dist/electronics/index.js +1 -0
  96. package/dist/electronics/index.js.map +1 -1
  97. package/dist/electronics/ohmsLaw.d.ts +12 -0
  98. package/dist/electronics/ohmsLaw.d.ts.map +1 -0
  99. package/dist/electronics/ohmsLaw.js +69 -0
  100. package/dist/electronics/ohmsLaw.js.map +1 -0
  101. package/dist/electronics/types.d.ts +24 -0
  102. package/dist/electronics/types.d.ts.map +1 -1
  103. package/dist/energy/carbonFootprint.d.ts.map +1 -1
  104. package/dist/energy/carbonFootprint.js +2 -1
  105. package/dist/energy/carbonFootprint.js.map +1 -1
  106. package/dist/energy/index.d.ts +2 -1
  107. package/dist/energy/index.d.ts.map +1 -1
  108. package/dist/energy/index.js +1 -0
  109. package/dist/energy/index.js.map +1 -1
  110. package/dist/energy/powerCost.d.ts.map +1 -1
  111. package/dist/energy/powerCost.js +2 -1
  112. package/dist/energy/powerCost.js.map +1 -1
  113. package/dist/energy/solarOutput.d.ts +14 -0
  114. package/dist/energy/solarOutput.d.ts.map +1 -0
  115. package/dist/energy/solarOutput.js +54 -0
  116. package/dist/energy/solarOutput.js.map +1 -0
  117. package/dist/energy/types.d.ts +20 -0
  118. package/dist/energy/types.d.ts.map +1 -1
  119. package/dist/environmental/emissionsIntensity.d.ts +11 -0
  120. package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
  121. package/dist/environmental/emissionsIntensity.js +26 -0
  122. package/dist/environmental/emissionsIntensity.js.map +1 -0
  123. package/dist/environmental/energyIntensity.d.ts +11 -0
  124. package/dist/environmental/energyIntensity.d.ts.map +1 -0
  125. package/dist/environmental/energyIntensity.js +19 -0
  126. package/dist/environmental/energyIntensity.js.map +1 -0
  127. package/dist/environmental/esgSummary.d.ts +11 -0
  128. package/dist/environmental/esgSummary.d.ts.map +1 -0
  129. package/dist/environmental/esgSummary.js +39 -0
  130. package/dist/environmental/esgSummary.js.map +1 -0
  131. package/dist/environmental/gwpCalculator.d.ts +11 -0
  132. package/dist/environmental/gwpCalculator.d.ts.map +1 -0
  133. package/dist/environmental/gwpCalculator.js +31 -0
  134. package/dist/environmental/gwpCalculator.js.map +1 -0
  135. package/dist/environmental/index.d.ts +12 -0
  136. package/dist/environmental/index.d.ts.map +1 -0
  137. package/dist/environmental/index.js +12 -0
  138. package/dist/environmental/index.js.map +1 -0
  139. package/dist/environmental/productCarbonFootprint.d.ts +11 -0
  140. package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
  141. package/dist/environmental/productCarbonFootprint.js +29 -0
  142. package/dist/environmental/productCarbonFootprint.js.map +1 -0
  143. package/dist/environmental/scope1Emissions.d.ts +11 -0
  144. package/dist/environmental/scope1Emissions.d.ts.map +1 -0
  145. package/dist/environmental/scope1Emissions.js +35 -0
  146. package/dist/environmental/scope1Emissions.js.map +1 -0
  147. package/dist/environmental/scope2Emissions.d.ts +11 -0
  148. package/dist/environmental/scope2Emissions.d.ts.map +1 -0
  149. package/dist/environmental/scope2Emissions.js +49 -0
  150. package/dist/environmental/scope2Emissions.js.map +1 -0
  151. package/dist/environmental/scope3Emissions.d.ts +11 -0
  152. package/dist/environmental/scope3Emissions.d.ts.map +1 -0
  153. package/dist/environmental/scope3Emissions.js +36 -0
  154. package/dist/environmental/scope3Emissions.js.map +1 -0
  155. package/dist/environmental/types.d.ts +165 -0
  156. package/dist/environmental/types.d.ts.map +1 -0
  157. package/dist/environmental/types.js +5 -0
  158. package/dist/environmental/types.js.map +1 -0
  159. package/dist/environmental/vocEmissions.d.ts +11 -0
  160. package/dist/environmental/vocEmissions.d.ts.map +1 -0
  161. package/dist/environmental/vocEmissions.js +23 -0
  162. package/dist/environmental/vocEmissions.js.map +1 -0
  163. package/dist/environmental/waterFootprint.d.ts +11 -0
  164. package/dist/environmental/waterFootprint.d.ts.map +1 -0
  165. package/dist/environmental/waterFootprint.js +21 -0
  166. package/dist/environmental/waterFootprint.js.map +1 -0
  167. package/dist/index.d.ts +3 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +3 -0
  170. package/dist/index.js.map +1 -1
  171. package/dist/logistics/cbm.d.ts +7 -2
  172. package/dist/logistics/cbm.d.ts.map +1 -1
  173. package/dist/logistics/cbm.js +7 -2
  174. package/dist/logistics/cbm.js.map +1 -1
  175. package/dist/logistics/fillRate.d.ts.map +1 -1
  176. package/dist/logistics/fillRate.js +1 -17
  177. package/dist/logistics/fillRate.js.map +1 -1
  178. package/dist/logistics/safetyStock.d.ts.map +1 -1
  179. package/dist/logistics/safetyStock.js +2 -55
  180. package/dist/logistics/safetyStock.js.map +1 -1
  181. package/dist/machining/boltCircle.d.ts +16 -0
  182. package/dist/machining/boltCircle.d.ts.map +1 -0
  183. package/dist/machining/boltCircle.js +36 -0
  184. package/dist/machining/boltCircle.js.map +1 -0
  185. package/dist/machining/boringBarDeflection.d.ts +17 -0
  186. package/dist/machining/boringBarDeflection.d.ts.map +1 -0
  187. package/dist/machining/boringBarDeflection.js +54 -0
  188. package/dist/machining/boringBarDeflection.js.map +1 -0
  189. package/dist/machining/cuspHeight.d.ts +15 -0
  190. package/dist/machining/cuspHeight.d.ts.map +1 -0
  191. package/dist/machining/cuspHeight.js +23 -0
  192. package/dist/machining/cuspHeight.js.map +1 -0
  193. package/dist/machining/cycleTimeEstimator.d.ts +18 -0
  194. package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
  195. package/dist/machining/cycleTimeEstimator.js +62 -0
  196. package/dist/machining/cycleTimeEstimator.js.map +1 -0
  197. package/dist/machining/effectiveDiameter.d.ts +17 -0
  198. package/dist/machining/effectiveDiameter.d.ts.map +1 -0
  199. package/dist/machining/effectiveDiameter.js +24 -0
  200. package/dist/machining/effectiveDiameter.js.map +1 -0
  201. package/dist/machining/gaugeBlockStack.d.ts +16 -0
  202. package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
  203. package/dist/machining/gaugeBlockStack.js +138 -0
  204. package/dist/machining/gaugeBlockStack.js.map +1 -0
  205. package/dist/machining/index.d.ts +14 -0
  206. package/dist/machining/index.d.ts.map +1 -0
  207. package/dist/machining/index.js +14 -0
  208. package/dist/machining/index.js.map +1 -0
  209. package/dist/machining/radialChipThinning.d.ts +18 -0
  210. package/dist/machining/radialChipThinning.d.ts.map +1 -0
  211. package/dist/machining/radialChipThinning.js +30 -0
  212. package/dist/machining/radialChipThinning.js.map +1 -0
  213. package/dist/machining/sineBarHeight.d.ts +16 -0
  214. package/dist/machining/sineBarHeight.d.ts.map +1 -0
  215. package/dist/machining/sineBarHeight.js +32 -0
  216. package/dist/machining/sineBarHeight.js.map +1 -0
  217. package/dist/machining/threadOverWires.d.ts +21 -0
  218. package/dist/machining/threadOverWires.d.ts.map +1 -0
  219. package/dist/machining/threadOverWires.js +54 -0
  220. package/dist/machining/threadOverWires.js.map +1 -0
  221. package/dist/machining/toolDeflection.d.ts +16 -0
  222. package/dist/machining/toolDeflection.d.ts.map +1 -0
  223. package/dist/machining/toolDeflection.js +36 -0
  224. package/dist/machining/toolDeflection.js.map +1 -0
  225. package/dist/machining/triangleSolver.d.ts +21 -0
  226. package/dist/machining/triangleSolver.d.ts.map +1 -0
  227. package/dist/machining/triangleSolver.js +120 -0
  228. package/dist/machining/triangleSolver.js.map +1 -0
  229. package/dist/machining/truePosition.d.ts +19 -0
  230. package/dist/machining/truePosition.d.ts.map +1 -0
  231. package/dist/machining/truePosition.js +44 -0
  232. package/dist/machining/truePosition.js.map +1 -0
  233. package/dist/machining/types.d.ts +201 -0
  234. package/dist/machining/types.d.ts.map +1 -0
  235. package/dist/machining/types.js +2 -0
  236. package/dist/machining/types.js.map +1 -0
  237. package/dist/math.d.ts +26 -0
  238. package/dist/math.d.ts.map +1 -0
  239. package/dist/math.js +95 -0
  240. package/dist/math.js.map +1 -0
  241. package/dist/metal/bendAllowance.d.ts.map +1 -1
  242. package/dist/metal/bendAllowance.js +2 -1
  243. package/dist/metal/bendAllowance.js.map +1 -1
  244. package/dist/metal/bolt.d.ts.map +1 -1
  245. package/dist/metal/bolt.js +3 -3
  246. package/dist/metal/bolt.js.map +1 -1
  247. package/dist/metal/flangeSpec.d.ts +10 -0
  248. package/dist/metal/flangeSpec.d.ts.map +1 -0
  249. package/dist/metal/flangeSpec.js +81 -0
  250. package/dist/metal/flangeSpec.js.map +1 -0
  251. package/dist/metal/index.d.ts +4 -1
  252. package/dist/metal/index.d.ts.map +1 -1
  253. package/dist/metal/index.js +3 -0
  254. package/dist/metal/index.js.map +1 -1
  255. package/dist/metal/materialGradeConverter.d.ts +10 -0
  256. package/dist/metal/materialGradeConverter.d.ts.map +1 -0
  257. package/dist/metal/materialGradeConverter.js +78 -0
  258. package/dist/metal/materialGradeConverter.js.map +1 -0
  259. package/dist/metal/metalWeight.d.ts +13 -3
  260. package/dist/metal/metalWeight.d.ts.map +1 -1
  261. package/dist/metal/metalWeight.js +24 -35
  262. package/dist/metal/metalWeight.js.map +1 -1
  263. package/dist/metal/pipeSpec.d.ts +10 -0
  264. package/dist/metal/pipeSpec.d.ts.map +1 -0
  265. package/dist/metal/pipeSpec.js +96 -0
  266. package/dist/metal/pipeSpec.js.map +1 -0
  267. package/dist/metal/roughness.js +1 -1
  268. package/dist/metal/roughness.js.map +1 -1
  269. package/dist/metal/types.d.ts +86 -13
  270. package/dist/metal/types.d.ts.map +1 -1
  271. package/dist/metal/weldHeat.js +1 -1
  272. package/dist/metal/weldHeat.js.map +1 -1
  273. package/dist/metal/welding.d.ts.map +1 -1
  274. package/dist/metal/welding.js +3 -2
  275. package/dist/metal/welding.js.map +1 -1
  276. package/dist/quality/controlChart.d.ts +26 -0
  277. package/dist/quality/controlChart.d.ts.map +1 -0
  278. package/dist/quality/controlChart.js +216 -0
  279. package/dist/quality/controlChart.js.map +1 -0
  280. package/dist/quality/cpk.d.ts +16 -4
  281. package/dist/quality/cpk.d.ts.map +1 -1
  282. package/dist/quality/cpk.js +16 -4
  283. package/dist/quality/cpk.js.map +1 -1
  284. package/dist/quality/dpmo.d.ts.map +1 -1
  285. package/dist/quality/dpmo.js +1 -61
  286. package/dist/quality/dpmo.js.map +1 -1
  287. package/dist/quality/index.d.ts +2 -1
  288. package/dist/quality/index.d.ts.map +1 -1
  289. package/dist/quality/index.js +1 -0
  290. package/dist/quality/index.js.map +1 -1
  291. package/dist/quality/oee.d.ts +12 -1
  292. package/dist/quality/oee.d.ts.map +1 -1
  293. package/dist/quality/oee.js +21 -9
  294. package/dist/quality/oee.js.map +1 -1
  295. package/dist/quality/ppk.d.ts.map +1 -1
  296. package/dist/quality/ppk.js +1 -16
  297. package/dist/quality/ppk.js.map +1 -1
  298. package/dist/quality/ppm.d.ts.map +1 -1
  299. package/dist/quality/ppm.js +1 -80
  300. package/dist/quality/ppm.js.map +1 -1
  301. package/dist/quality/types.d.ts +31 -0
  302. package/dist/quality/types.d.ts.map +1 -1
  303. package/dist/safety/fallClearance.d.ts.map +1 -1
  304. package/dist/safety/fallClearance.js +5 -4
  305. package/dist/safety/fallClearance.js.map +1 -1
  306. package/dist/safety/index.d.ts +2 -1
  307. package/dist/safety/index.d.ts.map +1 -1
  308. package/dist/safety/index.js +1 -0
  309. package/dist/safety/index.js.map +1 -1
  310. package/dist/safety/nioshLifting.d.ts +19 -10
  311. package/dist/safety/nioshLifting.d.ts.map +1 -1
  312. package/dist/safety/nioshLifting.js +19 -10
  313. package/dist/safety/nioshLifting.js.map +1 -1
  314. package/dist/safety/types.d.ts +19 -0
  315. package/dist/safety/types.d.ts.map +1 -1
  316. package/dist/safety/ventilationRate.d.ts +12 -0
  317. package/dist/safety/ventilationRate.d.ts.map +1 -0
  318. package/dist/safety/ventilationRate.js +71 -0
  319. package/dist/safety/ventilationRate.js.map +1 -0
  320. package/dist/utility/index.d.ts +1 -1
  321. package/dist/utility/index.d.ts.map +1 -1
  322. package/dist/utility/types.d.ts +0 -16
  323. package/dist/utility/types.d.ts.map +1 -1
  324. package/dist/utils.d.ts +3 -2
  325. package/dist/utils.d.ts.map +1 -1
  326. package/dist/utils.js +6 -4
  327. package/dist/utils.js.map +1 -1
  328. package/package.json +34 -3
  329. package/dist/utility/qrcode.d.ts +0 -30
  330. package/dist/utility/qrcode.d.ts.map +0 -1
  331. package/dist/utility/qrcode.js +0 -30
  332. package/dist/utility/qrcode.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automotive/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automotive/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { BatteryPackConfigInput, BatteryPackConfigResult } from './types.js';
2
+ /**
3
+ * Calculate battery pack series/parallel cell configuration
4
+ *
5
+ * @formula S = ceil(Vtarget / Vcell), P = ceil(Ahtarget / Ahcell)
6
+ * @param input - Cell specs and target pack specs
7
+ * @returns Series/parallel count, actual voltage/capacity, total energy
8
+ */
9
+ export declare function batteryPackConfig(input: BatteryPackConfigInput): BatteryPackConfigResult;
10
+ //# sourceMappingURL=batteryPackConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batteryPackConfig.d.ts","sourceRoot":"","sources":["../../src/battery/batteryPackConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CAqBxF"}
@@ -0,0 +1,28 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery pack series/parallel cell configuration
4
+ *
5
+ * @formula S = ceil(Vtarget / Vcell), P = ceil(Ahtarget / Ahcell)
6
+ * @param input - Cell specs and target pack specs
7
+ * @returns Series/parallel count, actual voltage/capacity, total energy
8
+ */
9
+ export function batteryPackConfig(input) {
10
+ const { cellVoltage, cellCapacityAh, targetVoltage, targetCapacityAh } = input;
11
+ const seriesCells = Math.ceil(targetVoltage / cellVoltage);
12
+ const parallelCells = Math.ceil(targetCapacityAh / cellCapacityAh);
13
+ const totalCells = seriesCells * parallelCells;
14
+ const actualVoltage = roundTo(seriesCells * cellVoltage, 2);
15
+ const actualCapacityAh = roundTo(parallelCells * cellCapacityAh, 2);
16
+ const totalEnergyWh = roundTo(actualVoltage * actualCapacityAh, 2);
17
+ const totalEnergyKWh = roundTo(totalEnergyWh / 1000, 3);
18
+ return {
19
+ seriesCells,
20
+ parallelCells,
21
+ totalCells,
22
+ actualVoltage,
23
+ actualCapacityAh,
24
+ totalEnergyWh,
25
+ totalEnergyKWh,
26
+ };
27
+ }
28
+ //# sourceMappingURL=batteryPackConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batteryPackConfig.js","sourceRoot":"","sources":["../../src/battery/batteryPackConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAE/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;IAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,WAAW;QACX,aAAa;QACb,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { BmsBalancingInput, BmsBalancingResult } from './types.js';
2
+ /**
3
+ * Calculate BMS cell balancing time
4
+ *
5
+ * @formula time = (ΔV/Vavg × Ah × 1000) / ImA (minutes)
6
+ * @reference BMS design guidelines, passive balancing
7
+ * @param input - Cell voltages array, balancing current, cell capacity
8
+ * @returns Balancing time estimates and cell-level details
9
+ */
10
+ export declare function bmsBalancing(input: BmsBalancingInput): BmsBalancingResult;
11
+ //# sourceMappingURL=bmsBalancing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bmsBalancing.d.ts","sourceRoot":"","sources":["../../src/battery/bmsBalancing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA+CzE"}
@@ -0,0 +1,47 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate BMS cell balancing time
4
+ *
5
+ * @formula time = (ΔV/Vavg × Ah × 1000) / ImA (minutes)
6
+ * @reference BMS design guidelines, passive balancing
7
+ * @param input - Cell voltages array, balancing current, cell capacity
8
+ * @returns Balancing time estimates and cell-level details
9
+ */
10
+ export function bmsBalancing(input) {
11
+ const { cellVoltages, balancingCurrentMA, cellCapacityAh } = input;
12
+ const maxVoltage = Math.max(...cellVoltages);
13
+ const minVoltage = Math.min(...cellVoltages);
14
+ const voltageDelta = roundTo(maxVoltage - minVoltage, 4);
15
+ const averageVoltage = roundTo(cellVoltages.reduce((sum, v) => sum + v, 0) / cellVoltages.length, 4);
16
+ // Balance threshold: 10mV
17
+ const isBalanced = voltageDelta <= 0.01;
18
+ const cellDetails = cellVoltages.map((voltage, index) => {
19
+ const deltaFromAvg = roundTo((voltage - averageVoltage) * 1000, 2); // mV
20
+ // Only cells above average need balancing (discharge excess energy)
21
+ let balancingTimeMin = 0;
22
+ if (deltaFromAvg > 0) {
23
+ // Energy to remove: ΔV/Vavg × Ah (in mAh), time = mAh / mA × 60
24
+ const excessMah = (deltaFromAvg / 1000) / averageVoltage * cellCapacityAh * 1000;
25
+ balancingTimeMin = roundTo(excessMah / balancingCurrentMA * 60, 1);
26
+ }
27
+ return {
28
+ cellIndex: index,
29
+ voltage: roundTo(voltage, 4),
30
+ deltaFromAvg,
31
+ balancingTimeMin,
32
+ };
33
+ });
34
+ const maxBalancingTimeMin = roundTo(Math.max(...cellDetails.map(c => c.balancingTimeMin)), 1);
35
+ const maxBalancingTimeH = roundTo(maxBalancingTimeMin / 60, 2);
36
+ return {
37
+ maxVoltage: roundTo(maxVoltage, 4),
38
+ minVoltage: roundTo(minVoltage, 4),
39
+ voltageDelta,
40
+ averageVoltage,
41
+ maxBalancingTimeMin,
42
+ maxBalancingTimeH,
43
+ isBalanced,
44
+ cellDetails,
45
+ };
46
+ }
47
+ //# sourceMappingURL=bmsBalancing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bmsBalancing.js","sourceRoot":"","sources":["../../src/battery/bmsBalancing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAC5B,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EACjE,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC;IAExC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;QACzE,oEAAoE;QACpE,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,gEAAgE;YAChE,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;YACjF,gBAAgB,GAAG,OAAO,CAAC,SAAS,GAAG,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5B,YAAY;YACZ,gBAAgB;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,OAAO,CACjC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EACrD,CAAC,CACF,CAAC;IACF,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,YAAY;QACZ,cAAc;QACd,mBAAmB;QACnB,iBAAiB;QACjB,UAAU;QACV,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CRateInput, CRateResult } from './types.js';
2
+ /**
3
+ * Calculate C-rate ↔ current/time conversion
4
+ *
5
+ * @formula C = I / Ah, time = 1/C hours
6
+ * @param input - Battery capacity with either current or C-rate
7
+ * @returns C-rate, current, and theoretical charge/discharge time
8
+ */
9
+ export declare function cRate(input: CRateInput): CRateResult;
10
+ //# sourceMappingURL=cRate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cRate.d.ts","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqBpD"}
@@ -0,0 +1,29 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate C-rate ↔ current/time conversion
4
+ *
5
+ * @formula C = I / Ah, time = 1/C hours
6
+ * @param input - Battery capacity with either current or C-rate
7
+ * @returns C-rate, current, and theoretical charge/discharge time
8
+ */
9
+ export function cRate(input) {
10
+ let cRateValue;
11
+ let currentA;
12
+ if (input.mode === 'currentToRate') {
13
+ currentA = input.currentA;
14
+ cRateValue = currentA / input.capacityAh;
15
+ }
16
+ else {
17
+ cRateValue = input.cRate;
18
+ currentA = cRateValue * input.capacityAh;
19
+ }
20
+ const theoreticalTimeH = 1 / cRateValue;
21
+ const theoreticalTimeMin = theoreticalTimeH * 60;
22
+ return {
23
+ cRate: roundTo(cRateValue, 4),
24
+ currentA: roundTo(currentA, 2),
25
+ theoreticalTimeH: roundTo(theoreticalTimeH, 2),
26
+ theoreticalTimeMin: roundTo(theoreticalTimeMin, 1),
27
+ };
28
+ }
29
+ //# sourceMappingURL=cRate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cRate.js","sourceRoot":"","sources":["../../src/battery/cRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,IAAI,UAAkB,CAAC;IACvB,IAAI,QAAgB,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,EAAE,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ChargingProfileInput, ChargingProfileResult } from './types.js';
2
+ /**
3
+ * Calculate CC-CV charging profile timing
4
+ *
5
+ * @formula CC: t = ccAh / I, CV: t ≈ cvAh / ((Icc + Icut) / 2)
6
+ * @reference Li-ion CC-CV charging protocol
7
+ * @param input - Battery capacity, charging current, cutoff current, CC end SOC
8
+ * @returns Phase durations, Ah delivered per phase, average C-rate
9
+ */
10
+ export declare function chargingProfile(input: ChargingProfileInput): ChargingProfileResult;
11
+ //# sourceMappingURL=chargingProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chargingProfile.d.ts","sourceRoot":"","sources":["../../src/battery/chargingProfile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAsClF"}
@@ -0,0 +1,38 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate CC-CV charging profile timing
4
+ *
5
+ * @formula CC: t = ccAh / I, CV: t ≈ cvAh / ((Icc + Icut) / 2)
6
+ * @reference Li-ion CC-CV charging protocol
7
+ * @param input - Battery capacity, charging current, cutoff current, CC end SOC
8
+ * @returns Phase durations, Ah delivered per phase, average C-rate
9
+ */
10
+ export function chargingProfile(input) {
11
+ const { capacityAh, chargingCurrentA, cutoffCurrentA, ccEndSocPercent = 80, } = input;
12
+ // CC phase delivers ccEndSocPercent of capacity
13
+ const ccPhaseAh = roundTo(capacityAh * (ccEndSocPercent / 100), 2);
14
+ const cvPhaseAh = roundTo(capacityAh - ccPhaseAh, 2);
15
+ // CC phase time = Ah / current
16
+ const ccPhaseTimeH = roundTo(ccPhaseAh / chargingCurrentA, 2);
17
+ const ccPhaseTimeMin = roundTo(ccPhaseTimeH * 60, 1);
18
+ // CV phase time approximation: average current = (Icc + Icut) / 2
19
+ const avgCvCurrent = (chargingCurrentA + cutoffCurrentA) / 2;
20
+ const cvPhaseTimeH = roundTo(cvPhaseAh / avgCvCurrent, 2);
21
+ const cvPhaseTimeMin = roundTo(cvPhaseTimeH * 60, 1);
22
+ const totalTimeH = roundTo(ccPhaseTimeH + cvPhaseTimeH, 2);
23
+ const totalTimeMin = roundTo(totalTimeH * 60, 1);
24
+ // Average C-rate over entire charge
25
+ const averageCRate = roundTo(capacityAh / (totalTimeH * capacityAh), 4);
26
+ return {
27
+ ccPhaseTimeH,
28
+ ccPhaseTimeMin,
29
+ cvPhaseTimeH,
30
+ cvPhaseTimeMin,
31
+ totalTimeH,
32
+ totalTimeMin,
33
+ ccPhaseAh,
34
+ cvPhaseAh,
35
+ averageCRate,
36
+ };
37
+ }
38
+ //# sourceMappingURL=chargingProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chargingProfile.js","sourceRoot":"","sources":["../../src/battery/chargingProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,GAAG,EAAE,GACrB,GAAG,KAAK,CAAC;IAEV,gDAAgD;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAErD,+BAA+B;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,kEAAkE;IAClE,MAAM,YAAY,GAAG,CAAC,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjD,oCAAoC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,cAAc;QACd,UAAU;QACV,YAAY;QACZ,SAAS;QACT,SAAS;QACT,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CycleLifeInput, CycleLifeResult } from './types.js';
2
+ /**
3
+ * Estimate battery cycle life based on chemistry, DOD, and temperature
4
+ *
5
+ * @formula cycles = baseCycles × dodFactor × temperatureFactor
6
+ * @reference Battery University, manufacturer datasheets
7
+ * @param input - Chemistry type, DOD percentage, temperature
8
+ * @returns Estimated cycle count with adjustment factors
9
+ */
10
+ export declare function cycleLife(input: CycleLifeInput): CycleLifeResult;
11
+ //# sourceMappingURL=cycleLife.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleLife.d.ts","sourceRoot":"","sources":["../../src/battery/cycleLife.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA6CpF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAgBhE"}
@@ -0,0 +1,70 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Base cycle life by battery chemistry (at ~80% DOD, 25°C)
4
+ * @reference Manufacturer datasheets, Battery University
5
+ */
6
+ const BASE_CYCLE_LIFE = {
7
+ LFP: 3500,
8
+ NMC: 1500,
9
+ NCA: 1000,
10
+ LTO: 15000,
11
+ LCO: 800,
12
+ LeadAcid: 500,
13
+ NiMH: 600,
14
+ };
15
+ /**
16
+ * DOD factor: how depth of discharge affects cycle life
17
+ * ≤50% → 1.5, 50-80% → 1.0, >80% → 0.7 (with linear interpolation)
18
+ */
19
+ function getDodFactor(dod) {
20
+ if (dod <= 50) {
21
+ // Linear from 1.5 at 0% to 1.5 at 50%
22
+ return 1.5;
23
+ }
24
+ else if (dod <= 80) {
25
+ // Linear from 1.5 at 50% to 1.0 at 80%
26
+ return 1.5 - ((dod - 50) / 30) * 0.5;
27
+ }
28
+ else {
29
+ // Linear from 1.0 at 80% to 0.7 at 100%
30
+ return 1.0 - ((dod - 80) / 20) * 0.3;
31
+ }
32
+ }
33
+ /**
34
+ * Temperature factor: how temperature affects cycle life
35
+ * <0°C → 0.5, 0-15 → 0.8, 15-35 → 1.0, 35-45 → 0.8, >45 → 0.5
36
+ */
37
+ function getTemperatureFactor(tempC) {
38
+ if (tempC < 0)
39
+ return 0.5;
40
+ if (tempC < 15)
41
+ return 0.8;
42
+ if (tempC <= 35)
43
+ return 1.0;
44
+ if (tempC <= 45)
45
+ return 0.8;
46
+ return 0.5;
47
+ }
48
+ /**
49
+ * Estimate battery cycle life based on chemistry, DOD, and temperature
50
+ *
51
+ * @formula cycles = baseCycles × dodFactor × temperatureFactor
52
+ * @reference Battery University, manufacturer datasheets
53
+ * @param input - Chemistry type, DOD percentage, temperature
54
+ * @returns Estimated cycle count with adjustment factors
55
+ */
56
+ export function cycleLife(input) {
57
+ const { chemistry, depthOfDischarge, temperatureC } = input;
58
+ const baseCycles = BASE_CYCLE_LIFE[chemistry];
59
+ const dodFactor = getDodFactor(depthOfDischarge);
60
+ const temperatureFactor = getTemperatureFactor(temperatureC);
61
+ const estimatedCycles = roundTo(baseCycles * dodFactor * temperatureFactor, 0);
62
+ return {
63
+ estimatedCycles,
64
+ baseCycles,
65
+ dodFactor: roundTo(dodFactor, 4),
66
+ temperatureFactor,
67
+ chemistry,
68
+ };
69
+ }
70
+ //# sourceMappingURL=cycleLife.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycleLife.js","sourceRoot":"","sources":["../../src/battery/cycleLife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,eAAe,GAAqC;IACxD,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,GAAG;IACR,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACd,sCAAsC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACrB,uCAAuC;QACvC,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE5D,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE7D,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAE/E,OAAO;QACL,eAAe;QACf,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,iBAAiB;QACjB,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { EnergyDensityInput, EnergyDensityResult } from './types.js';
2
+ /**
3
+ * Calculate battery energy density (gravimetric and volumetric)
4
+ *
5
+ * @formula Wh = Ah × V, Wh/kg = Wh / mass, Wh/L = Wh / volume
6
+ * @param input - Battery capacity, voltage, and optionally mass/volume
7
+ * @returns Energy in Wh, gravimetric (Wh/kg), and volumetric (Wh/L) density
8
+ */
9
+ export declare function energyDensity(input: EnergyDensityInput): EnergyDensityResult;
10
+ //# sourceMappingURL=energyDensity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energyDensity.d.ts","sourceRoot":"","sources":["../../src/battery/energyDensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAY5E"}
@@ -0,0 +1,20 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery energy density (gravimetric and volumetric)
4
+ *
5
+ * @formula Wh = Ah × V, Wh/kg = Wh / mass, Wh/L = Wh / volume
6
+ * @param input - Battery capacity, voltage, and optionally mass/volume
7
+ * @returns Energy in Wh, gravimetric (Wh/kg), and volumetric (Wh/L) density
8
+ */
9
+ export function energyDensity(input) {
10
+ const { capacityAh, nominalVoltage, massKg, volumeL } = input;
11
+ const energyWh = roundTo(capacityAh * nominalVoltage, 2);
12
+ const gravimetricWhPerKg = massKg != null && massKg > 0
13
+ ? roundTo(energyWh / massKg, 2)
14
+ : null;
15
+ const volumetricWhPerL = volumeL != null && volumeL > 0
16
+ ? roundTo(energyWh / volumeL, 2)
17
+ : null;
18
+ return { energyWh, gravimetricWhPerKg, volumetricWhPerL };
19
+ }
20
+ //# sourceMappingURL=energyDensity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energyDensity.js","sourceRoot":"","sources":["../../src/battery/energyDensity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,gBAAgB,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type { BatteryChemistry, EnergyDensityInput, EnergyDensityResult, CRateMode, CRateInput, CRateResult, StateOfHealthInput, SohStatus, StateOfHealthResult, BatteryPackConfigInput, BatteryPackConfigResult, CycleLifeInput, CycleLifeResult, InternalResistanceInput, InternalResistanceResult, SelfDischargeInput, SelfDischargeResult, ThermalRunawayInput, ThermalRunawayResult, BmsBalancingInput, BmsBalancingResult, ChargingProfileInput, ChargingProfileResult, } from './types.js';
2
+ export { energyDensity } from './energyDensity.js';
3
+ export { cRate } from './cRate.js';
4
+ export { stateOfHealth } from './stateOfHealth.js';
5
+ export { batteryPackConfig } from './batteryPackConfig.js';
6
+ export { cycleLife } from './cycleLife.js';
7
+ export { internalResistance } from './internalResistance.js';
8
+ export { selfDischarge } from './selfDischarge.js';
9
+ export { thermalRunaway } from './thermalRunaway.js';
10
+ export { bmsBalancing } from './bmsBalancing.js';
11
+ export { chargingProfile } from './chargingProfile.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/battery/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Functions
2
+ export { energyDensity } from './energyDensity.js';
3
+ export { cRate } from './cRate.js';
4
+ export { stateOfHealth } from './stateOfHealth.js';
5
+ export { batteryPackConfig } from './batteryPackConfig.js';
6
+ export { cycleLife } from './cycleLife.js';
7
+ export { internalResistance } from './internalResistance.js';
8
+ export { selfDischarge } from './selfDischarge.js';
9
+ export { thermalRunaway } from './thermalRunaway.js';
10
+ export { bmsBalancing } from './bmsBalancing.js';
11
+ export { chargingProfile } from './chargingProfile.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/battery/index.ts"],"names":[],"mappings":"AA2BA,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { InternalResistanceInput, InternalResistanceResult } from './types.js';
2
+ /**
3
+ * Calculate battery internal resistance from OCV and load voltage
4
+ *
5
+ * @formula R = (OCV - Vload) / I
6
+ * @reference IEC 61960, direct current internal resistance (DCIR)
7
+ * @param input - Open circuit voltage, load voltage, and load current
8
+ * @returns Resistance in Ohm and mOhm, voltage drop, and power loss
9
+ */
10
+ export declare function internalResistance(input: InternalResistanceInput): InternalResistanceResult;
11
+ //# sourceMappingURL=internalResistance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalResistance.d.ts","sourceRoot":"","sources":["../../src/battery/internalResistance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAS3F"}
@@ -0,0 +1,18 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery internal resistance from OCV and load voltage
4
+ *
5
+ * @formula R = (OCV - Vload) / I
6
+ * @reference IEC 61960, direct current internal resistance (DCIR)
7
+ * @param input - Open circuit voltage, load voltage, and load current
8
+ * @returns Resistance in Ohm and mOhm, voltage drop, and power loss
9
+ */
10
+ export function internalResistance(input) {
11
+ const { openCircuitVoltage, loadVoltage, loadCurrentA } = input;
12
+ const voltageDrop = roundTo(openCircuitVoltage - loadVoltage, 4);
13
+ const resistanceOhm = roundTo(voltageDrop / loadCurrentA, 6);
14
+ const resistanceMilliOhm = roundTo(resistanceOhm * 1000, 3);
15
+ const powerLossW = roundTo(loadCurrentA * loadCurrentA * resistanceOhm, 4);
16
+ return { resistanceOhm, resistanceMilliOhm, voltageDrop, powerLossW };
17
+ }
18
+ //# sourceMappingURL=internalResistance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalResistance.js","sourceRoot":"","sources":["../../src/battery/internalResistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAEhE,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SelfDischargeInput, SelfDischargeResult } from './types.js';
2
+ /**
3
+ * Calculate battery self-discharge rate
4
+ *
5
+ * @formula monthlyRate% = (ΔV / days) × 30 / Vnominal × 100
6
+ * @param input - Initial voltage, final voltage, elapsed days, nominal voltage
7
+ * @returns Daily and monthly self-discharge rates
8
+ */
9
+ export declare function selfDischarge(input: SelfDischargeInput): SelfDischargeResult;
10
+ //# sourceMappingURL=selfDischarge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfDischarge.d.ts","sourceRoot":"","sources":["../../src/battery/selfDischarge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAS5E"}
@@ -0,0 +1,17 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery self-discharge rate
4
+ *
5
+ * @formula monthlyRate% = (ΔV / days) × 30 / Vnominal × 100
6
+ * @param input - Initial voltage, final voltage, elapsed days, nominal voltage
7
+ * @returns Daily and monthly self-discharge rates
8
+ */
9
+ export function selfDischarge(input) {
10
+ const { initialVoltage, finalVoltage, days, nominalVoltage } = input;
11
+ const totalVoltageDrop = initialVoltage - finalVoltage;
12
+ const voltageDropPerDay = roundTo(totalVoltageDrop / days, 6);
13
+ const dailyRatePercent = roundTo((voltageDropPerDay / nominalVoltage) * 100, 4);
14
+ const monthlyRatePercent = roundTo(dailyRatePercent * 30, 2);
15
+ return { voltageDropPerDay, monthlyRatePercent, dailyRatePercent };
16
+ }
17
+ //# sourceMappingURL=selfDischarge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfDischarge.js","sourceRoot":"","sources":["../../src/battery/selfDischarge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAErE,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,CAAC;IACvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,iBAAiB,GAAG,cAAc,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { StateOfHealthInput, StateOfHealthResult } from './types.js';
2
+ /**
3
+ * Calculate battery State of Health (SOH)
4
+ *
5
+ * @formula SOH% = (measured / rated) × 100
6
+ * @reference IEEE 1188, IEC 62620
7
+ * @param input - Measured and rated capacity
8
+ * @returns SOH percentage and degradation status
9
+ */
10
+ export declare function stateOfHealth(input: StateOfHealthInput): StateOfHealthResult;
11
+ //# sourceMappingURL=stateOfHealth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateOfHealth.d.ts","sourceRoot":"","sources":["../../src/battery/stateOfHealth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAa,MAAM,YAAY,CAAC;AAErF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAqB5E"}
@@ -0,0 +1,33 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate battery State of Health (SOH)
4
+ *
5
+ * @formula SOH% = (measured / rated) × 100
6
+ * @reference IEEE 1188, IEC 62620
7
+ * @param input - Measured and rated capacity
8
+ * @returns SOH percentage and degradation status
9
+ */
10
+ export function stateOfHealth(input) {
11
+ const { measuredCapacityAh, ratedCapacityAh } = input;
12
+ const sohPercent = roundTo((measuredCapacityAh / ratedCapacityAh) * 100, 2);
13
+ const capacityLoss = roundTo(ratedCapacityAh - measuredCapacityAh, 2);
14
+ const capacityLossPercent = roundTo(100 - sohPercent, 2);
15
+ let status;
16
+ if (sohPercent >= 80) {
17
+ status = 'excellent';
18
+ }
19
+ else if (sohPercent >= 60) {
20
+ status = 'good';
21
+ }
22
+ else if (sohPercent >= 40) {
23
+ status = 'degraded';
24
+ }
25
+ else if (sohPercent >= 20) {
26
+ status = 'poor';
27
+ }
28
+ else {
29
+ status = 'endOfLife';
30
+ }
31
+ return { sohPercent, capacityLoss, capacityLossPercent, status };
32
+ }
33
+ //# sourceMappingURL=stateOfHealth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateOfHealth.js","sourceRoot":"","sources":["../../src/battery/stateOfHealth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG,eAAe,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,MAAiB,CAAC;IACtB,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ThermalRunawayInput, ThermalRunawayResult } from './types.js';
2
+ /**
3
+ * Calculate thermal runaway safety margin
4
+ *
5
+ * @formula Tss = Tamb + I²R/(hA), margin = Trunaway - Tss
6
+ * @reference SAE J2464, UN 38.3
7
+ * @param input - Ambient temp, current, IR, heat transfer parameters, runaway onset temp
8
+ * @returns Steady-state temperature, safety margin, and safety status
9
+ */
10
+ export declare function thermalRunaway(input: ThermalRunawayInput): ThermalRunawayResult;
11
+ //# sourceMappingURL=thermalRunaway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thermalRunaway.d.ts","sourceRoot":"","sources":["../../src/battery/thermalRunaway.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA0B/E"}
@@ -0,0 +1,28 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate thermal runaway safety margin
4
+ *
5
+ * @formula Tss = Tamb + I²R/(hA), margin = Trunaway - Tss
6
+ * @reference SAE J2464, UN 38.3
7
+ * @param input - Ambient temp, current, IR, heat transfer parameters, runaway onset temp
8
+ * @returns Steady-state temperature, safety margin, and safety status
9
+ */
10
+ export function thermalRunaway(input) {
11
+ const { ambientTempC, currentA, internalResistanceOhm, heatTransferCoeff, surfaceAreaM2, runawayTempC, } = input;
12
+ const heatGenerationW = roundTo(currentA * currentA * internalResistanceOhm, 4);
13
+ const hA = heatTransferCoeff * surfaceAreaM2;
14
+ const temperatureRiseC = roundTo(heatGenerationW / hA, 2);
15
+ const steadyStateTempC = roundTo(ambientTempC + temperatureRiseC, 2);
16
+ const heatDissipationW = roundTo(hA * temperatureRiseC, 4);
17
+ const safetyMarginC = roundTo(runawayTempC - steadyStateTempC, 2);
18
+ const isSafe = safetyMarginC > 0;
19
+ return {
20
+ steadyStateTempC,
21
+ temperatureRiseC,
22
+ heatGenerationW,
23
+ heatDissipationW,
24
+ safetyMarginC,
25
+ isSafe,
26
+ };
27
+ }
28
+ //# sourceMappingURL=thermalRunaway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thermalRunaway.js","sourceRoot":"","sources":["../../src/battery/thermalRunaway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EACJ,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,GAAG,KAAK,CAAC;IAEV,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,EAAE,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAC7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC;IAEjC,OAAO;QACL,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,MAAM;KACP,CAAC;AACJ,CAAC"}