formulab 0.5.1 → 0.10.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 (340) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +122 -32
  3. package/dist/automotive/brakingDistance.d.ts +4 -0
  4. package/dist/automotive/brakingDistance.d.ts.map +1 -1
  5. package/dist/automotive/brakingDistance.js +8 -4
  6. package/dist/automotive/brakingDistance.js.map +1 -1
  7. package/dist/automotive/chargingLoss.d.ts +15 -0
  8. package/dist/automotive/chargingLoss.d.ts.map +1 -0
  9. package/dist/automotive/chargingLoss.js +62 -0
  10. package/dist/automotive/chargingLoss.js.map +1 -0
  11. package/dist/automotive/index.d.ts +2 -1
  12. package/dist/automotive/index.d.ts.map +1 -1
  13. package/dist/automotive/index.js +1 -0
  14. package/dist/automotive/index.js.map +1 -1
  15. package/dist/automotive/types.d.ts +23 -0
  16. package/dist/automotive/types.d.ts.map +1 -1
  17. package/dist/battery/cRate.d.ts.map +1 -1
  18. package/dist/battery/cRate.js +6 -0
  19. package/dist/battery/cRate.js.map +1 -1
  20. package/dist/battery/guards.d.ts +7 -0
  21. package/dist/battery/guards.d.ts.map +1 -0
  22. package/dist/battery/guards.js +17 -0
  23. package/dist/battery/guards.js.map +1 -0
  24. package/dist/battery/index.d.ts +1 -0
  25. package/dist/battery/index.d.ts.map +1 -1
  26. package/dist/battery/index.js +2 -0
  27. package/dist/battery/index.js.map +1 -1
  28. package/dist/chemical/dilution.js +4 -4
  29. package/dist/chemical/dilution.js.map +1 -1
  30. package/dist/chemical/flowControl.d.ts +14 -0
  31. package/dist/chemical/flowControl.d.ts.map +1 -0
  32. package/dist/chemical/flowControl.js +69 -0
  33. package/dist/chemical/flowControl.js.map +1 -0
  34. package/dist/chemical/guards.d.ts +17 -0
  35. package/dist/chemical/guards.d.ts.map +1 -0
  36. package/dist/chemical/guards.js +54 -0
  37. package/dist/chemical/guards.js.map +1 -0
  38. package/dist/chemical/heatTransfer.d.ts +6 -0
  39. package/dist/chemical/heatTransfer.d.ts.map +1 -1
  40. package/dist/chemical/heatTransfer.js +15 -9
  41. package/dist/chemical/heatTransfer.js.map +1 -1
  42. package/dist/chemical/index.d.ts +5 -1
  43. package/dist/chemical/index.d.ts.map +1 -1
  44. package/dist/chemical/index.js +5 -0
  45. package/dist/chemical/index.js.map +1 -1
  46. package/dist/chemical/pid.d.ts +14 -0
  47. package/dist/chemical/pid.d.ts.map +1 -0
  48. package/dist/chemical/pid.js +103 -0
  49. package/dist/chemical/pid.js.map +1 -0
  50. package/dist/chemical/pipeFlow.d.ts +6 -0
  51. package/dist/chemical/pipeFlow.d.ts.map +1 -1
  52. package/dist/chemical/pipeFlow.js +12 -6
  53. package/dist/chemical/pipeFlow.js.map +1 -1
  54. package/dist/chemical/reliefValve.d.ts +14 -0
  55. package/dist/chemical/reliefValve.d.ts.map +1 -0
  56. package/dist/chemical/reliefValve.js +98 -0
  57. package/dist/chemical/reliefValve.js.map +1 -0
  58. package/dist/chemical/types.d.ts +63 -0
  59. package/dist/chemical/types.d.ts.map +1 -1
  60. package/dist/construction/aggregate.d.ts +4 -0
  61. package/dist/construction/aggregate.d.ts.map +1 -1
  62. package/dist/construction/aggregate.js +8 -4
  63. package/dist/construction/aggregate.js.map +1 -1
  64. package/dist/construction/guards.d.ts +7 -0
  65. package/dist/construction/guards.d.ts.map +1 -0
  66. package/dist/construction/guards.js +31 -0
  67. package/dist/construction/guards.js.map +1 -0
  68. package/dist/construction/index.d.ts +1 -0
  69. package/dist/construction/index.d.ts.map +1 -1
  70. package/dist/construction/index.js +2 -0
  71. package/dist/construction/index.js.map +1 -1
  72. package/dist/construction/momentOfInertia.d.ts +7 -0
  73. package/dist/construction/momentOfInertia.d.ts.map +1 -1
  74. package/dist/construction/momentOfInertia.js +19 -12
  75. package/dist/construction/momentOfInertia.js.map +1 -1
  76. package/dist/construction/roof.js +2 -2
  77. package/dist/construction/roof.js.map +1 -1
  78. package/dist/electronics/awg.d.ts +3 -2
  79. package/dist/electronics/awg.d.ts.map +1 -1
  80. package/dist/electronics/awg.js +3 -3
  81. package/dist/electronics/awg.js.map +1 -1
  82. package/dist/electronics/capacitor.js +1 -1
  83. package/dist/electronics/capacitor.js.map +1 -1
  84. package/dist/electronics/guards.d.ts +7 -0
  85. package/dist/electronics/guards.d.ts.map +1 -0
  86. package/dist/electronics/guards.js +17 -0
  87. package/dist/electronics/guards.js.map +1 -0
  88. package/dist/electronics/index.d.ts +1 -0
  89. package/dist/electronics/index.d.ts.map +1 -1
  90. package/dist/electronics/index.js +2 -0
  91. package/dist/electronics/index.js.map +1 -1
  92. package/dist/electronics/led.js +2 -2
  93. package/dist/electronics/led.js.map +1 -1
  94. package/dist/electronics/ohmsLaw.d.ts +3 -0
  95. package/dist/electronics/ohmsLaw.d.ts.map +1 -1
  96. package/dist/electronics/ohmsLaw.js +11 -8
  97. package/dist/electronics/ohmsLaw.js.map +1 -1
  98. package/dist/electronics/stencil.d.ts +2 -1
  99. package/dist/electronics/stencil.d.ts.map +1 -1
  100. package/dist/electronics/stencil.js +4 -3
  101. package/dist/electronics/stencil.js.map +1 -1
  102. package/dist/energy/boilerEfficiency.d.ts +13 -0
  103. package/dist/energy/boilerEfficiency.d.ts.map +1 -0
  104. package/dist/energy/boilerEfficiency.js +46 -0
  105. package/dist/energy/boilerEfficiency.js.map +1 -0
  106. package/dist/energy/cusum.d.ts +15 -0
  107. package/dist/energy/cusum.d.ts.map +1 -0
  108. package/dist/energy/cusum.js +71 -0
  109. package/dist/energy/cusum.js.map +1 -0
  110. package/dist/energy/degreeDay.d.ts +13 -0
  111. package/dist/energy/degreeDay.d.ts.map +1 -0
  112. package/dist/energy/degreeDay.js +46 -0
  113. package/dist/energy/degreeDay.js.map +1 -0
  114. package/dist/energy/heatPump.d.ts +13 -0
  115. package/dist/energy/heatPump.d.ts.map +1 -0
  116. package/dist/energy/heatPump.js +48 -0
  117. package/dist/energy/heatPump.js.map +1 -0
  118. package/dist/energy/index.d.ts +9 -1
  119. package/dist/energy/index.d.ts.map +1 -1
  120. package/dist/energy/index.js +8 -0
  121. package/dist/energy/index.js.map +1 -1
  122. package/dist/energy/insulationRoi.d.ts +14 -0
  123. package/dist/energy/insulationRoi.d.ts.map +1 -0
  124. package/dist/energy/insulationRoi.js +52 -0
  125. package/dist/energy/insulationRoi.js.map +1 -0
  126. package/dist/energy/ledRoi.d.ts +14 -0
  127. package/dist/energy/ledRoi.d.ts.map +1 -0
  128. package/dist/energy/ledRoi.js +49 -0
  129. package/dist/energy/ledRoi.js.map +1 -0
  130. package/dist/energy/solarOutput.d.ts +4 -0
  131. package/dist/energy/solarOutput.d.ts.map +1 -1
  132. package/dist/energy/solarOutput.js +8 -4
  133. package/dist/energy/solarOutput.js.map +1 -1
  134. package/dist/energy/transformerLoss.d.ts +13 -0
  135. package/dist/energy/transformerLoss.d.ts.map +1 -0
  136. package/dist/energy/transformerLoss.js +63 -0
  137. package/dist/energy/transformerLoss.js.map +1 -0
  138. package/dist/energy/types.d.ts +168 -0
  139. package/dist/energy/types.d.ts.map +1 -1
  140. package/dist/energy/windOutput.d.ts +14 -0
  141. package/dist/energy/windOutput.d.ts.map +1 -0
  142. package/dist/energy/windOutput.js +77 -0
  143. package/dist/energy/windOutput.js.map +1 -0
  144. package/dist/environmental/scope2Emissions.d.ts +1 -0
  145. package/dist/environmental/scope2Emissions.d.ts.map +1 -1
  146. package/dist/environmental/scope2Emissions.js +2 -1
  147. package/dist/environmental/scope2Emissions.js.map +1 -1
  148. package/dist/food/index.d.ts +3 -1
  149. package/dist/food/index.d.ts.map +1 -1
  150. package/dist/food/index.js +2 -0
  151. package/dist/food/index.js.map +1 -1
  152. package/dist/food/stabilityStudy.d.ts +15 -0
  153. package/dist/food/stabilityStudy.d.ts.map +1 -0
  154. package/dist/food/stabilityStudy.js +92 -0
  155. package/dist/food/stabilityStudy.js.map +1 -0
  156. package/dist/food/types.d.ts +43 -0
  157. package/dist/food/types.d.ts.map +1 -1
  158. package/dist/food/waterActivity.d.ts +17 -0
  159. package/dist/food/waterActivity.d.ts.map +1 -0
  160. package/dist/food/waterActivity.js +63 -0
  161. package/dist/food/waterActivity.js.map +1 -0
  162. package/dist/logistics/abcAnalysis.d.ts +15 -0
  163. package/dist/logistics/abcAnalysis.d.ts.map +1 -0
  164. package/dist/logistics/abcAnalysis.js +101 -0
  165. package/dist/logistics/abcAnalysis.js.map +1 -0
  166. package/dist/logistics/index.d.ts +4 -1
  167. package/dist/logistics/index.d.ts.map +1 -1
  168. package/dist/logistics/index.js +3 -0
  169. package/dist/logistics/index.js.map +1 -1
  170. package/dist/logistics/inventoryTurnover.d.ts +13 -0
  171. package/dist/logistics/inventoryTurnover.d.ts.map +1 -0
  172. package/dist/logistics/inventoryTurnover.js +36 -0
  173. package/dist/logistics/inventoryTurnover.js.map +1 -0
  174. package/dist/logistics/loadCapacity.d.ts +13 -0
  175. package/dist/logistics/loadCapacity.d.ts.map +1 -0
  176. package/dist/logistics/loadCapacity.js +46 -0
  177. package/dist/logistics/loadCapacity.js.map +1 -0
  178. package/dist/logistics/types.d.ts +78 -0
  179. package/dist/logistics/types.d.ts.map +1 -1
  180. package/dist/machining/boringBarDeflection.d.ts.map +1 -1
  181. package/dist/machining/boringBarDeflection.js +7 -1
  182. package/dist/machining/boringBarDeflection.js.map +1 -1
  183. package/dist/machining/toolDeflection.d.ts.map +1 -1
  184. package/dist/machining/toolDeflection.js +7 -1
  185. package/dist/machining/toolDeflection.js.map +1 -1
  186. package/dist/machining/triangleSolver.d.ts +2 -1
  187. package/dist/machining/triangleSolver.d.ts.map +1 -1
  188. package/dist/machining/triangleSolver.js +6 -5
  189. package/dist/machining/triangleSolver.js.map +1 -1
  190. package/dist/metal/flangeSpec.d.ts +3 -0
  191. package/dist/metal/flangeSpec.d.ts.map +1 -1
  192. package/dist/metal/flangeSpec.js +6 -3
  193. package/dist/metal/flangeSpec.js.map +1 -1
  194. package/dist/metal/guards.d.ts +12 -0
  195. package/dist/metal/guards.d.ts.map +1 -0
  196. package/dist/metal/guards.js +36 -0
  197. package/dist/metal/guards.js.map +1 -0
  198. package/dist/metal/index.d.ts +1 -0
  199. package/dist/metal/index.d.ts.map +1 -1
  200. package/dist/metal/index.js +2 -0
  201. package/dist/metal/index.js.map +1 -1
  202. package/dist/metal/metalWeight.d.ts.map +1 -1
  203. package/dist/metal/metalWeight.js +20 -0
  204. package/dist/metal/metalWeight.js.map +1 -1
  205. package/dist/metal/pipeSpec.d.ts +3 -0
  206. package/dist/metal/pipeSpec.d.ts.map +1 -1
  207. package/dist/metal/pipeSpec.js +6 -3
  208. package/dist/metal/pipeSpec.js.map +1 -1
  209. package/dist/quality/cmk.d.ts +17 -0
  210. package/dist/quality/cmk.d.ts.map +1 -0
  211. package/dist/quality/cmk.js +43 -0
  212. package/dist/quality/cmk.js.map +1 -0
  213. package/dist/quality/controlChart.d.ts +3 -0
  214. package/dist/quality/controlChart.d.ts.map +1 -1
  215. package/dist/quality/controlChart.js +6 -3
  216. package/dist/quality/controlChart.js.map +1 -1
  217. package/dist/quality/gageRR.d.ts +18 -0
  218. package/dist/quality/gageRR.d.ts.map +1 -0
  219. package/dist/quality/gageRR.js +110 -0
  220. package/dist/quality/gageRR.js.map +1 -0
  221. package/dist/quality/index.d.ts +5 -1
  222. package/dist/quality/index.d.ts.map +1 -1
  223. package/dist/quality/index.js +4 -0
  224. package/dist/quality/index.js.map +1 -1
  225. package/dist/quality/oee.js +2 -2
  226. package/dist/quality/oee.js.map +1 -1
  227. package/dist/quality/paretoAnalysis.d.ts +15 -0
  228. package/dist/quality/paretoAnalysis.d.ts.map +1 -0
  229. package/dist/quality/paretoAnalysis.js +92 -0
  230. package/dist/quality/paretoAnalysis.js.map +1 -0
  231. package/dist/quality/types.d.ts +91 -0
  232. package/dist/quality/types.d.ts.map +1 -1
  233. package/dist/quality/weibull.d.ts +17 -0
  234. package/dist/quality/weibull.d.ts.map +1 -0
  235. package/dist/quality/weibull.js +106 -0
  236. package/dist/quality/weibull.js.map +1 -0
  237. package/dist/safety/arcFlash.d.ts +14 -0
  238. package/dist/safety/arcFlash.d.ts.map +1 -0
  239. package/dist/safety/arcFlash.js +90 -0
  240. package/dist/safety/arcFlash.js.map +1 -0
  241. package/dist/safety/confinedSpace.d.ts +15 -0
  242. package/dist/safety/confinedSpace.d.ts.map +1 -0
  243. package/dist/safety/confinedSpace.js +116 -0
  244. package/dist/safety/confinedSpace.js.map +1 -0
  245. package/dist/safety/ergonomicRisk.d.ts +9 -0
  246. package/dist/safety/ergonomicRisk.d.ts.map +1 -0
  247. package/dist/safety/ergonomicRisk.js +208 -0
  248. package/dist/safety/ergonomicRisk.js.map +1 -0
  249. package/dist/safety/illuminance.d.ts +13 -0
  250. package/dist/safety/illuminance.d.ts.map +1 -0
  251. package/dist/safety/illuminance.js +91 -0
  252. package/dist/safety/illuminance.js.map +1 -0
  253. package/dist/safety/index.d.ts +8 -1
  254. package/dist/safety/index.d.ts.map +1 -1
  255. package/dist/safety/index.js +7 -0
  256. package/dist/safety/index.js.map +1 -1
  257. package/dist/safety/ladderAngle.d.ts +16 -0
  258. package/dist/safety/ladderAngle.d.ts.map +1 -0
  259. package/dist/safety/ladderAngle.js +87 -0
  260. package/dist/safety/ladderAngle.js.map +1 -0
  261. package/dist/safety/lel.d.ts +14 -0
  262. package/dist/safety/lel.d.ts.map +1 -0
  263. package/dist/safety/lel.js +66 -0
  264. package/dist/safety/lel.js.map +1 -0
  265. package/dist/safety/thermalComfort.d.ts +14 -0
  266. package/dist/safety/thermalComfort.d.ts.map +1 -0
  267. package/dist/safety/thermalComfort.js +96 -0
  268. package/dist/safety/thermalComfort.js.map +1 -0
  269. package/dist/safety/types.d.ts +164 -0
  270. package/dist/safety/types.d.ts.map +1 -1
  271. package/dist/safety/ventilationRate.d.ts +3 -0
  272. package/dist/safety/ventilationRate.d.ts.map +1 -1
  273. package/dist/safety/ventilationRate.js +6 -3
  274. package/dist/safety/ventilationRate.js.map +1 -1
  275. package/dist/utility/bilinearInterpolation.d.ts +3 -0
  276. package/dist/utility/bilinearInterpolation.d.ts.map +1 -0
  277. package/dist/utility/bilinearInterpolation.js +47 -0
  278. package/dist/utility/bilinearInterpolation.js.map +1 -0
  279. package/dist/utility/correlation.d.ts +3 -0
  280. package/dist/utility/correlation.d.ts.map +1 -0
  281. package/dist/utility/correlation.js +29 -0
  282. package/dist/utility/correlation.js.map +1 -0
  283. package/dist/utility/depreciation.d.ts +3 -0
  284. package/dist/utility/depreciation.d.ts.map +1 -0
  285. package/dist/utility/depreciation.js +57 -0
  286. package/dist/utility/depreciation.js.map +1 -0
  287. package/dist/utility/histogram.d.ts +3 -0
  288. package/dist/utility/histogram.d.ts.map +1 -0
  289. package/dist/utility/histogram.js +42 -0
  290. package/dist/utility/histogram.js.map +1 -0
  291. package/dist/utility/index.d.ts +15 -1
  292. package/dist/utility/index.d.ts.map +1 -1
  293. package/dist/utility/index.js +14 -0
  294. package/dist/utility/index.js.map +1 -1
  295. package/dist/utility/lcc.d.ts +3 -0
  296. package/dist/utility/lcc.d.ts.map +1 -0
  297. package/dist/utility/lcc.js +26 -0
  298. package/dist/utility/lcc.js.map +1 -0
  299. package/dist/utility/linearInterpolation.d.ts +3 -0
  300. package/dist/utility/linearInterpolation.d.ts.map +1 -0
  301. package/dist/utility/linearInterpolation.js +42 -0
  302. package/dist/utility/linearInterpolation.js.map +1 -0
  303. package/dist/utility/movingAverage.d.ts +3 -0
  304. package/dist/utility/movingAverage.d.ts.map +1 -0
  305. package/dist/utility/movingAverage.js +41 -0
  306. package/dist/utility/movingAverage.js.map +1 -0
  307. package/dist/utility/normalize.d.ts +3 -0
  308. package/dist/utility/normalize.d.ts.map +1 -0
  309. package/dist/utility/normalize.js +35 -0
  310. package/dist/utility/normalize.js.map +1 -0
  311. package/dist/utility/npv.d.ts +3 -0
  312. package/dist/utility/npv.d.ts.map +1 -0
  313. package/dist/utility/npv.js +45 -0
  314. package/dist/utility/npv.js.map +1 -0
  315. package/dist/utility/percentile.d.ts +3 -0
  316. package/dist/utility/percentile.d.ts.map +1 -0
  317. package/dist/utility/percentile.js +24 -0
  318. package/dist/utility/percentile.js.map +1 -0
  319. package/dist/utility/regression.d.ts +3 -0
  320. package/dist/utility/regression.d.ts.map +1 -0
  321. package/dist/utility/regression.js +40 -0
  322. package/dist/utility/regression.js.map +1 -0
  323. package/dist/utility/roi.d.ts +3 -0
  324. package/dist/utility/roi.d.ts.map +1 -0
  325. package/dist/utility/roi.js +19 -0
  326. package/dist/utility/roi.js.map +1 -0
  327. package/dist/utility/statistics.d.ts +3 -0
  328. package/dist/utility/statistics.d.ts.map +1 -0
  329. package/dist/utility/statistics.js +34 -0
  330. package/dist/utility/statistics.js.map +1 -0
  331. package/dist/utility/types.d.ts +213 -1
  332. package/dist/utility/types.d.ts.map +1 -1
  333. package/dist/utility/unit.d.ts.map +1 -1
  334. package/dist/utility/unit.js +51 -0
  335. package/dist/utility/unit.js.map +1 -1
  336. package/dist/utility/weightedScore.d.ts +3 -0
  337. package/dist/utility/weightedScore.d.ts.map +1 -0
  338. package/dist/utility/weightedScore.js +35 -0
  339. package/dist/utility/weightedScore.js.map +1 -0
  340. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heatPump.js","sourceRoot":"","sources":["../../src/energy/heatPump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EACtD,cAAc,GAAG,CAAC,EAAE,cAAc,EAAE,eAAe,EACnD,gBAAgB,EAAE,QAAQ,GAC3B,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,eAAe,GAAG,cAAc,CAAC;IACpD,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,mCAAmC;IACnC,MAAM,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjC,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,sBAAsB;IACtB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;YAC5B,cAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;YAEjE,IAAI,gBAAgB,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACzE,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAC;gBACvD,cAAc,GAAG,OAAO,CAAC,CAAC,aAAa,GAAG,gBAAgB,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC3E,aAAa,GAAG,OAAO,CAAC,cAAc,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,UAAU;QACV,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -5,5 +5,13 @@ export { motorEfficiency } from './motorEfficiency.js';
5
5
  export { pfCorrection } from './pfCorrection.js';
6
6
  export { powerCost } from './powerCost.js';
7
7
  export { vfdSavings } from './vfdSavings.js';
8
- export type { SolarOutputInput, SolarOutputResult, CarbonFootprintInput, CarbonFootprintResult, CompressedAirCostInput, CompressedAirCostResult, MotorEfficiencyInput, MotorEfficiencyResult, PfCorrectionInput, PfCorrectionResult, PowerCostInput, PowerCostResult, VfdSavingsInput, VfdSavingsResult, } from './types.js';
8
+ export { boilerEfficiency } from './boilerEfficiency.js';
9
+ export { transformerLoss } from './transformerLoss.js';
10
+ export { insulationRoi } from './insulationRoi.js';
11
+ export { ledRoi } from './ledRoi.js';
12
+ export { heatPump } from './heatPump.js';
13
+ export { degreeDay } from './degreeDay.js';
14
+ export { windOutput } from './windOutput.js';
15
+ export { cusum } from './cusum.js';
16
+ export type { SolarOutputInput, SolarOutputResult, CarbonFootprintInput, CarbonFootprintResult, CompressedAirCostInput, CompressedAirCostResult, MotorEfficiencyInput, MotorEfficiencyResult, PfCorrectionInput, PfCorrectionResult, PowerCostInput, PowerCostResult, VfdSavingsInput, VfdSavingsResult, BoilerEfficiencyInput, BoilerEfficiencyResult, TransformerLossInput, TransformerLossResult, InsulationRoiInput, InsulationRoiResult, LedRoiInput, LedRoiResult, HeatPumpInput, HeatPumpResult, DegreeDayInput, DegreeDayResult, WindOutputInput, WindOutputResult, CusumInput, CusumResult, } from './types.js';
9
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,YAAY,EAEV,gBAAgB,EAChB,iBAAiB,EAEjB,oBAAoB,EACpB,qBAAqB,EAErB,sBAAsB,EACtB,uBAAuB,EAEvB,oBAAoB,EACpB,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACd,eAAe,EAEf,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,YAAY,EAEV,gBAAgB,EAChB,iBAAiB,EAEjB,oBAAoB,EACpB,qBAAqB,EAErB,sBAAsB,EACtB,uBAAuB,EAEvB,oBAAoB,EACpB,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACd,eAAe,EAEf,eAAe,EACf,gBAAgB,EAEhB,qBAAqB,EACrB,sBAAsB,EAEtB,oBAAoB,EACpB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EAEnB,WAAW,EACX,YAAY,EAEZ,aAAa,EACb,cAAc,EAEd,cAAc,EACd,eAAe,EAEf,eAAe,EACf,gBAAgB,EAEhB,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -6,4 +6,12 @@ export { motorEfficiency } from './motorEfficiency.js';
6
6
  export { pfCorrection } from './pfCorrection.js';
7
7
  export { powerCost } from './powerCost.js';
8
8
  export { vfdSavings } from './vfdSavings.js';
9
+ export { boilerEfficiency } from './boilerEfficiency.js';
10
+ export { transformerLoss } from './transformerLoss.js';
11
+ export { insulationRoi } from './insulationRoi.js';
12
+ export { ledRoi } from './ledRoi.js';
13
+ export { heatPump } from './heatPump.js';
14
+ export { degreeDay } from './degreeDay.js';
15
+ export { windOutput } from './windOutput.js';
16
+ export { cusum } from './cusum.js';
9
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { InsulationRoiInput, InsulationRoiResult } from './types.js';
2
+ /**
3
+ * Calculate insulation ROI for pipes, vessels, or surfaces.
4
+ *
5
+ * bareHeatLoss = surfaceCoefficient × area × ΔT
6
+ * insulatedHeatLoss = area × ΔT / (1/surfaceCoefficient + thickness/k)
7
+ * annualEnergySaved = (bare − insulated) × hours / 1000 / boilerEfficiency
8
+ * payback = installationCost / annualCostSaved
9
+ *
10
+ * @param input - Insulation parameters
11
+ * @returns Insulation ROI result with heat savings and payback
12
+ */
13
+ export declare function insulationRoi(input: InsulationRoiInput): InsulationRoiResult;
14
+ //# sourceMappingURL=insulationRoi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insulationRoi.d.ts","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAuD5E"}
@@ -0,0 +1,52 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate insulation ROI for pipes, vessels, or surfaces.
4
+ *
5
+ * bareHeatLoss = surfaceCoefficient × area × ΔT
6
+ * insulatedHeatLoss = area × ΔT / (1/surfaceCoefficient + thickness/k)
7
+ * annualEnergySaved = (bare − insulated) × hours / 1000 / boilerEfficiency
8
+ * payback = installationCost / annualCostSaved
9
+ *
10
+ * @param input - Insulation parameters
11
+ * @returns Insulation ROI result with heat savings and payback
12
+ */
13
+ export function insulationRoi(input) {
14
+ const { surfaceArea, tempDifference, insulationK, insulationThickness, surfaceCoefficient = 10, operatingHours, energyCost, boilerEfficiency = 0.8, installationCost, } = input;
15
+ if (surfaceArea <= 0 || tempDifference <= 0 || insulationK <= 0 || insulationThickness <= 0) {
16
+ return {
17
+ bareHeatLoss: 0,
18
+ insulatedHeatLoss: 0,
19
+ heatSaved: 0,
20
+ heatLossReduction: 0,
21
+ annualEnergySaved: 0,
22
+ annualCostSaved: 0,
23
+ paybackPeriod: null,
24
+ };
25
+ }
26
+ // Bare surface heat loss: Q = h × A × ΔT (W)
27
+ const bareHeatLoss = surfaceCoefficient * surfaceArea * tempDifference;
28
+ // Insulated heat loss: Q = A × ΔT / (1/h + thickness_m / k)
29
+ const thicknessM = insulationThickness / 1000; // mm → m
30
+ const thermalResistance = (1 / surfaceCoefficient) + (thicknessM / insulationK);
31
+ const insulatedHeatLoss = (surfaceArea * tempDifference) / thermalResistance;
32
+ const heatSaved = bareHeatLoss - insulatedHeatLoss;
33
+ const heatLossReduction = bareHeatLoss > 0 ? (heatSaved / bareHeatLoss) * 100 : 0;
34
+ // Annual energy saved (kWh) = heat saved (W) × hours / 1000 / boiler efficiency
35
+ // Divide by boiler efficiency because saved heat = saved fuel input
36
+ const annualEnergySaved = (heatSaved * operatingHours) / 1000 / boilerEfficiency;
37
+ const annualCostSaved = annualEnergySaved * energyCost;
38
+ let paybackPeriod = null;
39
+ if (installationCost !== undefined && installationCost > 0 && annualCostSaved > 0) {
40
+ paybackPeriod = installationCost / annualCostSaved;
41
+ }
42
+ return {
43
+ bareHeatLoss: roundTo(bareHeatLoss, 4),
44
+ insulatedHeatLoss: roundTo(insulatedHeatLoss, 4),
45
+ heatSaved: roundTo(heatSaved, 4),
46
+ heatLossReduction: roundTo(heatLossReduction, 4),
47
+ annualEnergySaved: roundTo(annualEnergySaved, 4),
48
+ annualCostSaved: roundTo(annualCostSaved, 2),
49
+ paybackPeriod: paybackPeriod !== null ? roundTo(paybackPeriod, 4) : null,
50
+ };
51
+ }
52
+ //# sourceMappingURL=insulationRoi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insulationRoi.js","sourceRoot":"","sources":["../../src/energy/insulationRoi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GAAG,EAAE,EACvB,cAAc,EACd,UAAU,EACV,gBAAgB,GAAG,GAAG,EACtB,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,IAAI,WAAW,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;QAC5F,OAAO;YACL,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,CAAC;YACpB,SAAS,EAAE,CAAC;YACZ,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,kBAAkB,GAAG,WAAW,GAAG,cAAc,CAAC;IAEvE,4DAA4D;IAC5D,MAAM,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAAC,CAAC,SAAS;IACxD,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,iBAAiB,CAAC;IAE7E,MAAM,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnD,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,gBAAgB,CAAC;IACjF,MAAM,eAAe,GAAG,iBAAiB,GAAG,UAAU,CAAC;IAEvD,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAClF,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC;IACrD,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { LedRoiInput, LedRoiResult } from './types.js';
2
+ /**
3
+ * Calculate LED lighting retrofit ROI.
4
+ *
5
+ * energySaved = fixtureCount × (oldWatts − newWatts) × hours / 1000
6
+ * costSaved = energySaved × rate
7
+ * payback = totalInvestment / costSaved
8
+ * co2Saved = energySaved × co2Factor
9
+ *
10
+ * @param input - LED retrofit parameters
11
+ * @returns LED ROI result with energy savings, cost savings, and payback
12
+ */
13
+ export declare function ledRoi(input: LedRoiInput): LedRoiResult;
14
+ //# sourceMappingURL=ledRoi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledRoi.d.ts","sourceRoot":"","sources":["../../src/energy/ledRoi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAkDvD"}
@@ -0,0 +1,49 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate LED lighting retrofit ROI.
4
+ *
5
+ * energySaved = fixtureCount × (oldWatts − newWatts) × hours / 1000
6
+ * costSaved = energySaved × rate
7
+ * payback = totalInvestment / costSaved
8
+ * co2Saved = energySaved × co2Factor
9
+ *
10
+ * @param input - LED retrofit parameters
11
+ * @returns LED ROI result with energy savings, cost savings, and payback
12
+ */
13
+ export function ledRoi(input) {
14
+ const { fixtureCount, oldWatts, newWatts, operatingHours, electricityRate, fixtureCost = 0, installationCost = 0, co2Factor = 0.5, } = input;
15
+ if (fixtureCount <= 0 || operatingHours <= 0) {
16
+ return {
17
+ oldAnnualEnergy: 0,
18
+ newAnnualEnergy: 0,
19
+ annualEnergySaved: 0,
20
+ energyReduction: 0,
21
+ annualCostSaved: 0,
22
+ totalInvestment: 0,
23
+ paybackPeriod: null,
24
+ co2Saved: 0,
25
+ };
26
+ }
27
+ const oldAnnualEnergy = (fixtureCount * oldWatts * operatingHours) / 1000;
28
+ const newAnnualEnergy = (fixtureCount * newWatts * operatingHours) / 1000;
29
+ const annualEnergySaved = oldAnnualEnergy - newAnnualEnergy;
30
+ const energyReduction = oldAnnualEnergy > 0 ? (annualEnergySaved / oldAnnualEnergy) * 100 : 0;
31
+ const annualCostSaved = annualEnergySaved * electricityRate;
32
+ const totalInvestment = (fixtureCost * fixtureCount) + installationCost;
33
+ let paybackPeriod = null;
34
+ if (totalInvestment > 0 && annualCostSaved > 0) {
35
+ paybackPeriod = totalInvestment / annualCostSaved;
36
+ }
37
+ const co2Saved = annualEnergySaved * co2Factor;
38
+ return {
39
+ oldAnnualEnergy: roundTo(oldAnnualEnergy, 4),
40
+ newAnnualEnergy: roundTo(newAnnualEnergy, 4),
41
+ annualEnergySaved: roundTo(annualEnergySaved, 4),
42
+ energyReduction: roundTo(energyReduction, 4),
43
+ annualCostSaved: roundTo(annualCostSaved, 2),
44
+ totalInvestment: roundTo(totalInvestment, 2),
45
+ paybackPeriod: paybackPeriod !== null ? roundTo(paybackPeriod, 4) : null,
46
+ co2Saved: roundTo(co2Saved, 4),
47
+ };
48
+ }
49
+ //# sourceMappingURL=ledRoi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledRoi.js","sourceRoot":"","sources":["../../src/energy/ledRoi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EACJ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,GAAG,CAAC,EACf,gBAAgB,GAAG,CAAC,EACpB,SAAS,GAAG,GAAG,GAChB,GAAG,KAAK,CAAC;IAEV,IAAI,YAAY,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC;IAC1E,MAAM,eAAe,GAAG,CAAC,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC;IAC1E,MAAM,iBAAiB,GAAG,eAAe,GAAG,eAAe,CAAC;IAC5D,MAAM,eAAe,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,eAAe,GAAG,iBAAiB,GAAG,eAAe,CAAC;IAE5D,MAAM,eAAe,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,gBAAgB,CAAC;IAExE,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAC/C,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IACpD,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAE/C,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACxE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
@@ -7,6 +7,10 @@ import type { SolarOutputInput, SolarOutputResult } from './types.js';
7
7
  *
8
8
  * Reference: NREL PVWatts Calculator methodology
9
9
  *
10
+ * @throws {RangeError} Panel wattage must be positive
11
+ * @throws {RangeError} Panel count must be positive
12
+ * @throws {RangeError} Peak sun hours must be positive
13
+ * @throws {RangeError} System efficiency must be between 0 and 1
10
14
  * @param input - panel specs, sun hours, orientation
11
15
  * @returns energy production estimates
12
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"solarOutput.d.ts","sourceRoot":"","sources":["../../src/energy/solarOutput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA+CtE"}
1
+ {"version":3,"file":"solarOutput.d.ts","sourceRoot":"","sources":["../../src/energy/solarOutput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA+CtE"}
@@ -7,19 +7,23 @@ import { roundTo } from '../utils.js';
7
7
  *
8
8
  * Reference: NREL PVWatts Calculator methodology
9
9
  *
10
+ * @throws {RangeError} Panel wattage must be positive
11
+ * @throws {RangeError} Panel count must be positive
12
+ * @throws {RangeError} Peak sun hours must be positive
13
+ * @throws {RangeError} System efficiency must be between 0 and 1
10
14
  * @param input - panel specs, sun hours, orientation
11
15
  * @returns energy production estimates
12
16
  */
13
17
  export function solarOutput(input) {
14
18
  const { panelWattage, panelCount, peakSunHours, systemEfficiency, tiltAngle, latitude, azimuthOffset, } = input;
15
19
  if (panelWattage <= 0)
16
- throw new Error('Panel wattage must be positive');
20
+ throw new RangeError('Panel wattage must be positive');
17
21
  if (panelCount <= 0)
18
- throw new Error('Panel count must be positive');
22
+ throw new RangeError('Panel count must be positive');
19
23
  if (peakSunHours <= 0)
20
- throw new Error('Peak sun hours must be positive');
24
+ throw new RangeError('Peak sun hours must be positive');
21
25
  if (systemEfficiency <= 0 || systemEfficiency > 1)
22
- throw new Error('System efficiency must be between 0 and 1');
26
+ throw new RangeError('System efficiency must be between 0 and 1');
23
27
  // System size in kW
24
28
  const systemSizeKw = (panelWattage * panelCount) / 1000;
25
29
  // Tilt efficiency factor
@@ -1 +1 @@
1
- {"version":3,"file":"solarOutput.js","sourceRoot":"","sources":["../../src/energy/solarOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,YAAY,EAAE,UAAU,EAAE,YAAY,EACtC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GACrD,GAAG,KAAK,CAAC;IAEV,IAAI,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACzE,IAAI,UAAU,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACrE,IAAI,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC1E,IAAI,gBAAgB,IAAI,CAAC,IAAI,gBAAgB,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAEhH,oBAAoB;IACpB,MAAM,YAAY,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;IAExD,yBAAyB;IACzB,qDAAqD;IACrD,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IACxD,+DAA+D;IAC/D,6BAA6B;IAC7B,MAAM,gBAAgB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnE,6DAA6D;IAC7D,oEAAoE;IACpE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IAEhE,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,CAAC;IAElD,8EAA8E;IAC9E,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACvF,MAAM,gBAAgB,GAAG,cAAc,GAAG,EAAE,CAAC;IAC7C,MAAM,eAAe,GAAG,cAAc,GAAG,GAAG,CAAC;IAE7C,yEAAyE;IACzE,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAE5D,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"solarOutput.js","sourceRoot":"","sources":["../../src/energy/solarOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,YAAY,EAAE,UAAU,EAAE,YAAY,EACtC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GACrD,GAAG,KAAK,CAAC;IAEV,IAAI,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC;IAC9E,IAAI,UAAU,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC1E,IAAI,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC/E,IAAI,gBAAgB,IAAI,CAAC,IAAI,gBAAgB,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IAErH,oBAAoB;IACpB,MAAM,YAAY,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;IAExD,yBAAyB;IACzB,qDAAqD;IACrD,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IACxD,+DAA+D;IAC/D,6BAA6B;IAC7B,MAAM,gBAAgB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnE,6DAA6D;IAC7D,oEAAoE;IACpE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IAEhE,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,CAAC;IAElD,8EAA8E;IAC9E,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACvF,MAAM,gBAAgB,GAAG,cAAc,GAAG,EAAE,CAAC;IAC7C,MAAM,eAAe,GAAG,cAAc,GAAG,GAAG,CAAC;IAE7C,yEAAyE;IACzE,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAE5D,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { TransformerLossInput, TransformerLossResult } from './types.js';
2
+ /**
3
+ * Calculate transformer losses and efficiency.
4
+ *
5
+ * totalLoss = coreLoss + copperLoss × loadFraction²
6
+ * efficiency = (outputPower / (outputPower + totalLoss)) × 100
7
+ * optimalLoad = √(coreLoss / copperLoss)
8
+ *
9
+ * @param input - Transformer parameters
10
+ * @returns Transformer loss result with efficiency and optimal loading
11
+ */
12
+ export declare function transformerLoss(input: TransformerLossInput): TransformerLossResult;
13
+ //# sourceMappingURL=transformerLoss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformerLoss.d.ts","sourceRoot":"","sources":["../../src/energy/transformerLoss.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAmElF"}
@@ -0,0 +1,63 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Calculate transformer losses and efficiency.
4
+ *
5
+ * totalLoss = coreLoss + copperLoss × loadFraction²
6
+ * efficiency = (outputPower / (outputPower + totalLoss)) × 100
7
+ * optimalLoad = √(coreLoss / copperLoss)
8
+ *
9
+ * @param input - Transformer parameters
10
+ * @returns Transformer loss result with efficiency and optimal loading
11
+ */
12
+ export function transformerLoss(input) {
13
+ const { ratedCapacity, coreLoss, copperLoss, loadFraction, powerFactor = 0.85, operatingHours, energyCost, } = input;
14
+ if (ratedCapacity <= 0 || coreLoss < 0 || copperLoss < 0) {
15
+ return {
16
+ outputPower: 0,
17
+ totalLoss: 0,
18
+ coreLossAtLoad: 0,
19
+ copperLossAtLoad: 0,
20
+ efficiency: 0,
21
+ optimalLoadFraction: 0,
22
+ annualLossEnergy: null,
23
+ annualLossCost: null,
24
+ };
25
+ }
26
+ // Output power in W = kVA × loadFraction × powerFactor × 1000
27
+ const outputPower = ratedCapacity * loadFraction * powerFactor * 1000;
28
+ // Core loss is constant regardless of load
29
+ const coreLossAtLoad = coreLoss;
30
+ // Copper loss scales with square of load fraction
31
+ const copperLossAtLoad = copperLoss * loadFraction * loadFraction;
32
+ const totalLoss = coreLossAtLoad + copperLossAtLoad;
33
+ // Efficiency = output / (output + losses) × 100
34
+ let efficiency = 0;
35
+ if (outputPower + totalLoss > 0) {
36
+ efficiency = (outputPower / (outputPower + totalLoss)) * 100;
37
+ }
38
+ // Optimal load fraction where core loss = copper loss at load
39
+ // coreLoss = copperLoss × k² → k = √(coreLoss / copperLoss)
40
+ let optimalLoadFraction = 0;
41
+ if (copperLoss > 0) {
42
+ optimalLoadFraction = Math.sqrt(coreLoss / copperLoss);
43
+ }
44
+ let annualLossEnergy = null;
45
+ let annualLossCost = null;
46
+ if (operatingHours !== undefined) {
47
+ annualLossEnergy = (totalLoss * operatingHours) / 1000; // W·h → kWh
48
+ if (energyCost !== undefined) {
49
+ annualLossCost = annualLossEnergy * energyCost;
50
+ }
51
+ }
52
+ return {
53
+ outputPower: roundTo(outputPower, 4),
54
+ totalLoss: roundTo(totalLoss, 4),
55
+ coreLossAtLoad: roundTo(coreLossAtLoad, 4),
56
+ copperLossAtLoad: roundTo(copperLossAtLoad, 4),
57
+ efficiency: roundTo(efficiency, 4),
58
+ optimalLoadFraction: roundTo(optimalLoadFraction, 4),
59
+ annualLossEnergy: annualLossEnergy !== null ? roundTo(annualLossEnergy, 4) : null,
60
+ annualLossCost: annualLossCost !== null ? roundTo(annualLossCost, 2) : null,
61
+ };
62
+ }
63
+ //# sourceMappingURL=transformerLoss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformerLoss.js","sourceRoot":"","sources":["../../src/energy/transformerLoss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,GAAG,IAAI,EAClB,cAAc,EACd,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,IAAI,aAAa,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO;YACL,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;YACjB,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;YACb,mBAAmB,EAAE,CAAC;YACtB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC;IAEtE,2CAA2C;IAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC;IAEhC,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;IAElE,MAAM,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAEpD,gDAAgD;IAChD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;QAChC,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/D,CAAC;IAED,8DAA8D;IAC9D,4DAA4D;IAC5D,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,gBAAgB,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;QACpE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,cAAc,GAAG,gBAAgB,GAAG,UAAU,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpD,gBAAgB,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACjF,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5E,CAAC;AACJ,CAAC"}
@@ -136,4 +136,172 @@ export interface VfdSavingsResult {
136
136
  paybackYears: number;
137
137
  co2ReductionKg: number;
138
138
  }
139
+ /**
140
+ * Boiler Efficiency Calculator Types
141
+ */
142
+ export interface BoilerEfficiencyInput {
143
+ fuelRate: number;
144
+ fuelHeatValue: number;
145
+ steamOutput: number;
146
+ steamEnthalpy: number;
147
+ feedwaterEnthalpy: number;
148
+ operatingHours?: number;
149
+ fuelCost?: number;
150
+ }
151
+ export interface BoilerEfficiencyResult {
152
+ heatInput: number;
153
+ heatOutput: number;
154
+ heatLoss: number;
155
+ efficiency: number;
156
+ annualFuelCost: number | null;
157
+ annualHeatLoss: number | null;
158
+ }
159
+ /**
160
+ * Transformer Loss Calculator Types
161
+ */
162
+ export interface TransformerLossInput {
163
+ ratedCapacity: number;
164
+ coreLoss: number;
165
+ copperLoss: number;
166
+ loadFraction: number;
167
+ powerFactor?: number;
168
+ operatingHours?: number;
169
+ energyCost?: number;
170
+ }
171
+ export interface TransformerLossResult {
172
+ outputPower: number;
173
+ totalLoss: number;
174
+ coreLossAtLoad: number;
175
+ copperLossAtLoad: number;
176
+ efficiency: number;
177
+ optimalLoadFraction: number;
178
+ annualLossEnergy: number | null;
179
+ annualLossCost: number | null;
180
+ }
181
+ /**
182
+ * Insulation ROI Calculator Types
183
+ */
184
+ export interface InsulationRoiInput {
185
+ surfaceArea: number;
186
+ tempDifference: number;
187
+ insulationK: number;
188
+ insulationThickness: number;
189
+ surfaceCoefficient?: number;
190
+ operatingHours: number;
191
+ energyCost: number;
192
+ boilerEfficiency?: number;
193
+ installationCost?: number;
194
+ }
195
+ export interface InsulationRoiResult {
196
+ bareHeatLoss: number;
197
+ insulatedHeatLoss: number;
198
+ heatSaved: number;
199
+ heatLossReduction: number;
200
+ annualEnergySaved: number;
201
+ annualCostSaved: number;
202
+ paybackPeriod: number | null;
203
+ }
204
+ /**
205
+ * LED ROI Calculator Types
206
+ */
207
+ export interface LedRoiInput {
208
+ fixtureCount: number;
209
+ oldWatts: number;
210
+ newWatts: number;
211
+ operatingHours: number;
212
+ electricityRate: number;
213
+ fixtureCost?: number;
214
+ installationCost?: number;
215
+ co2Factor?: number;
216
+ }
217
+ export interface LedRoiResult {
218
+ oldAnnualEnergy: number;
219
+ newAnnualEnergy: number;
220
+ annualEnergySaved: number;
221
+ energyReduction: number;
222
+ annualCostSaved: number;
223
+ totalInvestment: number;
224
+ paybackPeriod: number | null;
225
+ co2Saved: number;
226
+ }
227
+ /**
228
+ * Heat Pump COP Calculator Types
229
+ */
230
+ export interface HeatPumpInput {
231
+ sourceTemp: number;
232
+ sinkTemp: number;
233
+ heatingCapacity: number;
234
+ compressorPower: number;
235
+ auxiliaryPower?: number;
236
+ operatingHours?: number;
237
+ electricityRate?: number;
238
+ boilerEfficiency?: number;
239
+ fuelCost?: number;
240
+ }
241
+ export interface HeatPumpResult {
242
+ cop: number;
243
+ copCarnot: number;
244
+ efficiency: number;
245
+ annualElectricity: number | null;
246
+ annualElecCost: number | null;
247
+ annualFuelCost: number | null;
248
+ annualSavings: number | null;
249
+ }
250
+ /**
251
+ * Degree Day (HDD/CDD) Calculator Types
252
+ */
253
+ export interface DegreeDayInput {
254
+ dailyTemps: number[];
255
+ baseHeating?: number;
256
+ baseCooling?: number;
257
+ }
258
+ export interface DegreeDayResult {
259
+ hdd: number;
260
+ cdd: number;
261
+ totalDays: number;
262
+ heatingDays: number;
263
+ coolingDays: number;
264
+ neutralDays: number;
265
+ avgTemp: number;
266
+ }
267
+ /**
268
+ * Wind Output Calculator Types
269
+ */
270
+ export interface WindOutputInput {
271
+ ratedPower: number;
272
+ hubHeight: number;
273
+ averageWindSpeed: number;
274
+ referenceHeight?: number;
275
+ cutInSpeed?: number;
276
+ cutOutSpeed?: number;
277
+ ratedSpeed?: number;
278
+ rotorDiameter?: number;
279
+ terrainRoughness?: number;
280
+ }
281
+ export interface WindOutputResult {
282
+ adjustedWindSpeed: number;
283
+ capacityFactor: number;
284
+ annualOutput: number;
285
+ monthlyOutput: number;
286
+ dailyOutput: number;
287
+ sweptArea: number | null;
288
+ betzLimit: number | null;
289
+ }
290
+ /**
291
+ * CUSUM (Cumulative Sum) Energy Anomaly Detection Types
292
+ */
293
+ export interface CusumInput {
294
+ values: number[];
295
+ target: number;
296
+ allowance?: number;
297
+ decisionInterval?: number;
298
+ stdDev?: number;
299
+ }
300
+ export interface CusumResult {
301
+ cusumPositive: number[];
302
+ cusumNegative: number[];
303
+ signals: number[];
304
+ isOutOfControl: boolean;
305
+ shiftDetected: 'none' | 'positive' | 'negative' | 'both';
306
+ }
139
307
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/energy/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/energy/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { WindOutputInput, WindOutputResult } from './types.js';
2
+ /**
3
+ * Wind Power Output Calculator
4
+ *
5
+ * @formula
6
+ * - V_hub = V_ref × (H_hub / H_ref)^α (Hellmann power law)
7
+ * - Capacity Factor from simplified Rayleigh-based estimate
8
+ * - Annual Output = ratedPower × CF × 8760
9
+ *
10
+ * @reference IEC 61400 — Wind energy generation systems
11
+ * @reference Manwell, J.F. "Wind Energy Explained", 2nd Ed. Wiley.
12
+ */
13
+ export declare function windOutput(input: WindOutputInput): WindOutputResult;
14
+ //# sourceMappingURL=windOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windOutput.d.ts","sourceRoot":"","sources":["../../src/energy/windOutput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA8DnE"}
@@ -0,0 +1,77 @@
1
+ import { roundTo } from '../utils.js';
2
+ /**
3
+ * Wind Power Output Calculator
4
+ *
5
+ * @formula
6
+ * - V_hub = V_ref × (H_hub / H_ref)^α (Hellmann power law)
7
+ * - Capacity Factor from simplified Rayleigh-based estimate
8
+ * - Annual Output = ratedPower × CF × 8760
9
+ *
10
+ * @reference IEC 61400 — Wind energy generation systems
11
+ * @reference Manwell, J.F. "Wind Energy Explained", 2nd Ed. Wiley.
12
+ */
13
+ export function windOutput(input) {
14
+ const { ratedPower, hubHeight, averageWindSpeed, referenceHeight = 10, cutInSpeed = 3, cutOutSpeed = 25, ratedSpeed = 12, rotorDiameter, terrainRoughness = 0.143, } = input;
15
+ // Wind speed at hub height (Hellmann power law)
16
+ const adjustedWindSpeed = averageWindSpeed * Math.pow(hubHeight / referenceHeight, terrainRoughness);
17
+ // Simplified capacity factor estimate using Rayleigh distribution approximation
18
+ // CF ≈ exp(-(cutIn/c)^k) - exp(-(ratedSpeed/c)^k) × Pr_avg/Prated
19
+ // + exp(-(ratedSpeed/c)^k) - exp(-(cutOut/c)^k)
20
+ // Simplified: using cubic ratio with Rayleigh distribution
21
+ const k = 2; // Weibull shape parameter for Rayleigh
22
+ const c = adjustedWindSpeed * 2 / Math.sqrt(Math.PI); // scale parameter
23
+ let cf;
24
+ if (adjustedWindSpeed <= 0 || c <= 0) {
25
+ cf = 0;
26
+ }
27
+ else {
28
+ // Probability of wind in each region
29
+ const pRated = Math.exp(-Math.pow(ratedSpeed / c, k));
30
+ const pCutOut = Math.exp(-Math.pow(cutOutSpeed / c, k));
31
+ // Cubic region: approximate average power as fraction of rated
32
+ // Using integral of (v/vr)^3 × Rayleigh
33
+ const cubicContrib = integrateCubicRayleigh(cutInSpeed, ratedSpeed, c, ratedSpeed);
34
+ // Rated region: full power between rated and cutout
35
+ const ratedContrib = pRated - pCutOut;
36
+ cf = Math.max(0, Math.min(1, cubicContrib + ratedContrib));
37
+ }
38
+ const annualOutput = ratedPower * cf * 8760;
39
+ const monthlyOutput = annualOutput / 12;
40
+ const dailyOutput = annualOutput / 365;
41
+ // Swept area
42
+ let sweptArea = null;
43
+ let betzLimit = null;
44
+ if (rotorDiameter != null) {
45
+ sweptArea = roundTo(Math.PI * (rotorDiameter / 2) ** 2, 2);
46
+ // Betz limit: P_max = 16/27 × 0.5 × ρ × A × v³
47
+ const airDensity = 1.225; // kg/m³
48
+ betzLimit = roundTo((16 / 27) * 0.5 * airDensity * sweptArea * Math.pow(adjustedWindSpeed, 3) / 1000, 2);
49
+ }
50
+ return {
51
+ adjustedWindSpeed: roundTo(adjustedWindSpeed, 2),
52
+ capacityFactor: roundTo(cf, 4),
53
+ annualOutput: roundTo(annualOutput, 0),
54
+ monthlyOutput: roundTo(monthlyOutput, 0),
55
+ dailyOutput: roundTo(dailyOutput, 0),
56
+ sweptArea,
57
+ betzLimit,
58
+ };
59
+ }
60
+ /**
61
+ * Approximate integral of (v/vr)^3 × Rayleigh PDF from v1 to v2
62
+ * Using numerical trapezoidal integration
63
+ */
64
+ function integrateCubicRayleigh(v1, v2, c, vRated) {
65
+ const steps = 50;
66
+ const dv = (v2 - v1) / steps;
67
+ let sum = 0;
68
+ for (let i = 0; i <= steps; i++) {
69
+ const v = v1 + i * dv;
70
+ const rayleighPDF = (2 * v / (c * c)) * Math.exp(-Math.pow(v / c, 2));
71
+ const cubicPower = Math.pow(v / vRated, 3);
72
+ const weight = (i === 0 || i === steps) ? 0.5 : 1;
73
+ sum += weight * cubicPower * rayleighPDF;
74
+ }
75
+ return sum * dv;
76
+ }
77
+ //# sourceMappingURL=windOutput.js.map