formulab 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +144 -0
- package/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/automotive/batteryRuntime.d.ts +14 -0
- package/dist/automotive/batteryRuntime.d.ts.map +1 -0
- package/dist/automotive/batteryRuntime.js +38 -0
- package/dist/automotive/batteryRuntime.js.map +1 -0
- package/dist/automotive/evCharging.d.ts +14 -0
- package/dist/automotive/evCharging.d.ts.map +1 -0
- package/dist/automotive/evCharging.js +48 -0
- package/dist/automotive/evCharging.js.map +1 -0
- package/dist/automotive/fuelEconomy.d.ts +15 -0
- package/dist/automotive/fuelEconomy.d.ts.map +1 -0
- package/dist/automotive/fuelEconomy.js +61 -0
- package/dist/automotive/fuelEconomy.js.map +1 -0
- package/dist/automotive/gearRatio.d.ts +15 -0
- package/dist/automotive/gearRatio.d.ts.map +1 -0
- package/dist/automotive/gearRatio.js +39 -0
- package/dist/automotive/gearRatio.js.map +1 -0
- package/dist/automotive/index.d.ts +9 -0
- package/dist/automotive/index.d.ts.map +1 -0
- package/dist/automotive/index.js +9 -0
- package/dist/automotive/index.js.map +1 -0
- package/dist/automotive/power.d.ts +14 -0
- package/dist/automotive/power.d.ts.map +1 -0
- package/dist/automotive/power.js +52 -0
- package/dist/automotive/power.js.map +1 -0
- package/dist/automotive/tireCompare.d.ts +9 -0
- package/dist/automotive/tireCompare.d.ts.map +1 -0
- package/dist/automotive/tireCompare.js +54 -0
- package/dist/automotive/tireCompare.js.map +1 -0
- package/dist/automotive/torque.d.ts +14 -0
- package/dist/automotive/torque.d.ts.map +1 -0
- package/dist/automotive/torque.js +52 -0
- package/dist/automotive/torque.js.map +1 -0
- package/dist/automotive/types.d.ts +114 -0
- package/dist/automotive/types.d.ts.map +1 -0
- package/dist/automotive/types.js +2 -0
- package/dist/automotive/types.js.map +1 -0
- package/dist/chemical/batch.d.ts +12 -0
- package/dist/chemical/batch.d.ts.map +1 -0
- package/dist/chemical/batch.js +36 -0
- package/dist/chemical/batch.js.map +1 -0
- package/dist/chemical/concentration.d.ts +15 -0
- package/dist/chemical/concentration.d.ts.map +1 -0
- package/dist/chemical/concentration.js +45 -0
- package/dist/chemical/concentration.js.map +1 -0
- package/dist/chemical/dilution.d.ts +12 -0
- package/dist/chemical/dilution.d.ts.map +1 -0
- package/dist/chemical/dilution.js +68 -0
- package/dist/chemical/dilution.js.map +1 -0
- package/dist/chemical/index.d.ts +9 -0
- package/dist/chemical/index.d.ts.map +1 -0
- package/dist/chemical/index.js +9 -0
- package/dist/chemical/index.js.map +1 -0
- package/dist/chemical/injectionCycle.d.ts +19 -0
- package/dist/chemical/injectionCycle.d.ts.map +1 -0
- package/dist/chemical/injectionCycle.js +170 -0
- package/dist/chemical/injectionCycle.js.map +1 -0
- package/dist/chemical/ph.d.ts +13 -0
- package/dist/chemical/ph.d.ts.map +1 -0
- package/dist/chemical/ph.js +83 -0
- package/dist/chemical/ph.js.map +1 -0
- package/dist/chemical/reactor.d.ts +19 -0
- package/dist/chemical/reactor.d.ts.map +1 -0
- package/dist/chemical/reactor.js +57 -0
- package/dist/chemical/reactor.js.map +1 -0
- package/dist/chemical/shelfLife.d.ts +15 -0
- package/dist/chemical/shelfLife.d.ts.map +1 -0
- package/dist/chemical/shelfLife.js +36 -0
- package/dist/chemical/shelfLife.js.map +1 -0
- package/dist/chemical/types.d.ts +144 -0
- package/dist/chemical/types.d.ts.map +1 -0
- package/dist/chemical/types.js +2 -0
- package/dist/chemical/types.js.map +1 -0
- package/dist/construction/aggregate.d.ts +33 -0
- package/dist/construction/aggregate.d.ts.map +1 -0
- package/dist/construction/aggregate.js +92 -0
- package/dist/construction/aggregate.js.map +1 -0
- package/dist/construction/beamLoad.d.ts +12 -0
- package/dist/construction/beamLoad.d.ts.map +1 -0
- package/dist/construction/beamLoad.js +156 -0
- package/dist/construction/beamLoad.js.map +1 -0
- package/dist/construction/brick.d.ts +17 -0
- package/dist/construction/brick.d.ts.map +1 -0
- package/dist/construction/brick.js +53 -0
- package/dist/construction/brick.js.map +1 -0
- package/dist/construction/concreteMix.d.ts +9 -0
- package/dist/construction/concreteMix.d.ts.map +1 -0
- package/dist/construction/concreteMix.js +31 -0
- package/dist/construction/concreteMix.js.map +1 -0
- package/dist/construction/earthwork.d.ts +13 -0
- package/dist/construction/earthwork.d.ts.map +1 -0
- package/dist/construction/earthwork.js +25 -0
- package/dist/construction/earthwork.js.map +1 -0
- package/dist/construction/formwork.d.ts +9 -0
- package/dist/construction/formwork.d.ts.map +1 -0
- package/dist/construction/formwork.js +61 -0
- package/dist/construction/formwork.js.map +1 -0
- package/dist/construction/index.d.ts +13 -0
- package/dist/construction/index.d.ts.map +1 -0
- package/dist/construction/index.js +13 -0
- package/dist/construction/index.js.map +1 -0
- package/dist/construction/pert.d.ts +15 -0
- package/dist/construction/pert.d.ts.map +1 -0
- package/dist/construction/pert.js +207 -0
- package/dist/construction/pert.js.map +1 -0
- package/dist/construction/rebar.d.ts +16 -0
- package/dist/construction/rebar.d.ts.map +1 -0
- package/dist/construction/rebar.js +43 -0
- package/dist/construction/rebar.js.map +1 -0
- package/dist/construction/roof.d.ts +16 -0
- package/dist/construction/roof.d.ts.map +1 -0
- package/dist/construction/roof.js +65 -0
- package/dist/construction/roof.js.map +1 -0
- package/dist/construction/slope.d.ts +14 -0
- package/dist/construction/slope.d.ts.map +1 -0
- package/dist/construction/slope.js +54 -0
- package/dist/construction/slope.js.map +1 -0
- package/dist/construction/stair.d.ts +17 -0
- package/dist/construction/stair.d.ts.map +1 -0
- package/dist/construction/stair.js +69 -0
- package/dist/construction/stair.js.map +1 -0
- package/dist/construction/types.d.ts +219 -0
- package/dist/construction/types.d.ts.map +1 -0
- package/dist/construction/types.js +2 -0
- package/dist/construction/types.js.map +1 -0
- package/dist/electronics/awg.d.ts +9 -0
- package/dist/electronics/awg.d.ts.map +1 -0
- package/dist/electronics/awg.js +66 -0
- package/dist/electronics/awg.js.map +1 -0
- package/dist/electronics/capacitor.d.ts +9 -0
- package/dist/electronics/capacitor.d.ts.map +1 -0
- package/dist/electronics/capacitor.js +51 -0
- package/dist/electronics/capacitor.js.map +1 -0
- package/dist/electronics/index.d.ts +12 -0
- package/dist/electronics/index.d.ts.map +1 -0
- package/dist/electronics/index.js +12 -0
- package/dist/electronics/index.js.map +1 -0
- package/dist/electronics/led.d.ts +9 -0
- package/dist/electronics/led.d.ts.map +1 -0
- package/dist/electronics/led.js +72 -0
- package/dist/electronics/led.js.map +1 -0
- package/dist/electronics/reflow.d.ts +12 -0
- package/dist/electronics/reflow.d.ts.map +1 -0
- package/dist/electronics/reflow.js +77 -0
- package/dist/electronics/reflow.js.map +1 -0
- package/dist/electronics/resistor.d.ts +8 -0
- package/dist/electronics/resistor.d.ts.map +1 -0
- package/dist/electronics/resistor.js +137 -0
- package/dist/electronics/resistor.js.map +1 -0
- package/dist/electronics/smt-takt.d.ts +8 -0
- package/dist/electronics/smt-takt.d.ts.map +1 -0
- package/dist/electronics/smt-takt.js +59 -0
- package/dist/electronics/smt-takt.js.map +1 -0
- package/dist/electronics/solder.d.ts +8 -0
- package/dist/electronics/solder.d.ts.map +1 -0
- package/dist/electronics/solder.js +46 -0
- package/dist/electronics/solder.js.map +1 -0
- package/dist/electronics/stencil.d.ts +9 -0
- package/dist/electronics/stencil.d.ts.map +1 -0
- package/dist/electronics/stencil.js +78 -0
- package/dist/electronics/stencil.js.map +1 -0
- package/dist/electronics/trace.d.ts +8 -0
- package/dist/electronics/trace.d.ts.map +1 -0
- package/dist/electronics/trace.js +75 -0
- package/dist/electronics/trace.js.map +1 -0
- package/dist/electronics/types.d.ts +145 -0
- package/dist/electronics/types.d.ts.map +1 -0
- package/dist/electronics/types.js +2 -0
- package/dist/electronics/types.js.map +1 -0
- package/dist/electronics/via.d.ts +12 -0
- package/dist/electronics/via.d.ts.map +1 -0
- package/dist/electronics/via.js +63 -0
- package/dist/electronics/via.js.map +1 -0
- package/dist/energy/carbonFootprint.d.ts +13 -0
- package/dist/energy/carbonFootprint.d.ts.map +1 -0
- package/dist/energy/carbonFootprint.js +41 -0
- package/dist/energy/carbonFootprint.js.map +1 -0
- package/dist/energy/compressedAirCost.d.ts +14 -0
- package/dist/energy/compressedAirCost.d.ts.map +1 -0
- package/dist/energy/compressedAirCost.js +39 -0
- package/dist/energy/compressedAirCost.js.map +1 -0
- package/dist/energy/index.d.ts +8 -0
- package/dist/energy/index.d.ts.map +1 -0
- package/dist/energy/index.js +8 -0
- package/dist/energy/index.js.map +1 -0
- package/dist/energy/motorEfficiency.d.ts +14 -0
- package/dist/energy/motorEfficiency.d.ts.map +1 -0
- package/dist/energy/motorEfficiency.js +47 -0
- package/dist/energy/motorEfficiency.js.map +1 -0
- package/dist/energy/pfCorrection.d.ts +15 -0
- package/dist/energy/pfCorrection.d.ts.map +1 -0
- package/dist/energy/pfCorrection.js +56 -0
- package/dist/energy/pfCorrection.js.map +1 -0
- package/dist/energy/powerCost.d.ts +15 -0
- package/dist/energy/powerCost.d.ts.map +1 -0
- package/dist/energy/powerCost.js +37 -0
- package/dist/energy/powerCost.js.map +1 -0
- package/dist/energy/types.d.ts +119 -0
- package/dist/energy/types.d.ts.map +1 -0
- package/dist/energy/types.js +2 -0
- package/dist/energy/types.js.map +1 -0
- package/dist/energy/vfdSavings.d.ts +16 -0
- package/dist/energy/vfdSavings.d.ts.map +1 -0
- package/dist/energy/vfdSavings.js +57 -0
- package/dist/energy/vfdSavings.js.map +1 -0
- package/dist/food/calorie.d.ts +13 -0
- package/dist/food/calorie.d.ts.map +1 -0
- package/dist/food/calorie.js +42 -0
- package/dist/food/calorie.js.map +1 -0
- package/dist/food/expiry.d.ts +13 -0
- package/dist/food/expiry.d.ts.map +1 -0
- package/dist/food/expiry.js +58 -0
- package/dist/food/expiry.js.map +1 -0
- package/dist/food/haccp.d.ts +18 -0
- package/dist/food/haccp.d.ts.map +1 -0
- package/dist/food/haccp.js +70 -0
- package/dist/food/haccp.js.map +1 -0
- package/dist/food/index.d.ts +6 -0
- package/dist/food/index.d.ts.map +1 -0
- package/dist/food/index.js +6 -0
- package/dist/food/index.js.map +1 -0
- package/dist/food/nutrition.d.ts +12 -0
- package/dist/food/nutrition.d.ts.map +1 -0
- package/dist/food/nutrition.js +75 -0
- package/dist/food/nutrition.js.map +1 -0
- package/dist/food/types.d.ts +104 -0
- package/dist/food/types.d.ts.map +1 -0
- package/dist/food/types.js +2 -0
- package/dist/food/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/logistics/cbm.d.ts +12 -0
- package/dist/logistics/cbm.d.ts.map +1 -0
- package/dist/logistics/cbm.js +37 -0
- package/dist/logistics/cbm.js.map +1 -0
- package/dist/logistics/containerFit.d.ts +12 -0
- package/dist/logistics/containerFit.d.ts.map +1 -0
- package/dist/logistics/containerFit.js +73 -0
- package/dist/logistics/containerFit.js.map +1 -0
- package/dist/logistics/dimWeight.d.ts +13 -0
- package/dist/logistics/dimWeight.d.ts.map +1 -0
- package/dist/logistics/dimWeight.js +50 -0
- package/dist/logistics/dimWeight.js.map +1 -0
- package/dist/logistics/eoq.d.ts +18 -0
- package/dist/logistics/eoq.d.ts.map +1 -0
- package/dist/logistics/eoq.js +42 -0
- package/dist/logistics/eoq.js.map +1 -0
- package/dist/logistics/fillRate.d.ts +22 -0
- package/dist/logistics/fillRate.d.ts.map +1 -0
- package/dist/logistics/fillRate.js +84 -0
- package/dist/logistics/fillRate.js.map +1 -0
- package/dist/logistics/freightClass.d.ts +12 -0
- package/dist/logistics/freightClass.d.ts.map +1 -0
- package/dist/logistics/freightClass.js +68 -0
- package/dist/logistics/freightClass.js.map +1 -0
- package/dist/logistics/index.d.ts +15 -0
- package/dist/logistics/index.d.ts.map +1 -0
- package/dist/logistics/index.js +15 -0
- package/dist/logistics/index.js.map +1 -0
- package/dist/logistics/kanban.d.ts +19 -0
- package/dist/logistics/kanban.d.ts.map +1 -0
- package/dist/logistics/kanban.js +48 -0
- package/dist/logistics/kanban.js.map +1 -0
- package/dist/logistics/pallet3d.d.ts +16 -0
- package/dist/logistics/pallet3d.d.ts.map +1 -0
- package/dist/logistics/pallet3d.js +380 -0
- package/dist/logistics/pallet3d.js.map +1 -0
- package/dist/logistics/palletStack.d.ts +12 -0
- package/dist/logistics/palletStack.d.ts.map +1 -0
- package/dist/logistics/palletStack.js +65 -0
- package/dist/logistics/palletStack.js.map +1 -0
- package/dist/logistics/pickTime.d.ts +17 -0
- package/dist/logistics/pickTime.d.ts.map +1 -0
- package/dist/logistics/pickTime.js +70 -0
- package/dist/logistics/pickTime.js.map +1 -0
- package/dist/logistics/safetyStock.d.ts +24 -0
- package/dist/logistics/safetyStock.d.ts.map +1 -0
- package/dist/logistics/safetyStock.js +99 -0
- package/dist/logistics/safetyStock.js.map +1 -0
- package/dist/logistics/shipping.d.ts +16 -0
- package/dist/logistics/shipping.d.ts.map +1 -0
- package/dist/logistics/shipping.js +115 -0
- package/dist/logistics/shipping.js.map +1 -0
- package/dist/logistics/tsp.d.ts +12 -0
- package/dist/logistics/tsp.d.ts.map +1 -0
- package/dist/logistics/tsp.js +166 -0
- package/dist/logistics/tsp.js.map +1 -0
- package/dist/logistics/types.d.ts +315 -0
- package/dist/logistics/types.d.ts.map +1 -0
- package/dist/logistics/types.js +5 -0
- package/dist/logistics/types.js.map +1 -0
- package/dist/metal/bearing.d.ts +11 -0
- package/dist/metal/bearing.d.ts.map +1 -0
- package/dist/metal/bearing.js +32 -0
- package/dist/metal/bearing.js.map +1 -0
- package/dist/metal/bendAllowance.d.ts +13 -0
- package/dist/metal/bendAllowance.d.ts.map +1 -0
- package/dist/metal/bendAllowance.js +75 -0
- package/dist/metal/bendAllowance.js.map +1 -0
- package/dist/metal/bolt.d.ts +32 -0
- package/dist/metal/bolt.d.ts.map +1 -0
- package/dist/metal/bolt.js +149 -0
- package/dist/metal/bolt.js.map +1 -0
- package/dist/metal/cutting.d.ts +10 -0
- package/dist/metal/cutting.d.ts.map +1 -0
- package/dist/metal/cutting.js +55 -0
- package/dist/metal/cutting.js.map +1 -0
- package/dist/metal/cuttingStock.d.ts +8 -0
- package/dist/metal/cuttingStock.d.ts.map +1 -0
- package/dist/metal/cuttingStock.js +89 -0
- package/dist/metal/cuttingStock.js.map +1 -0
- package/dist/metal/flatPattern.d.ts +12 -0
- package/dist/metal/flatPattern.d.ts.map +1 -0
- package/dist/metal/flatPattern.js +50 -0
- package/dist/metal/flatPattern.js.map +1 -0
- package/dist/metal/gear.d.ts +13 -0
- package/dist/metal/gear.d.ts.map +1 -0
- package/dist/metal/gear.js +79 -0
- package/dist/metal/gear.js.map +1 -0
- package/dist/metal/hardness.d.ts +15 -0
- package/dist/metal/hardness.d.ts.map +1 -0
- package/dist/metal/hardness.js +77 -0
- package/dist/metal/hardness.js.map +1 -0
- package/dist/metal/index.d.ts +24 -0
- package/dist/metal/index.d.ts.map +1 -0
- package/dist/metal/index.js +24 -0
- package/dist/metal/index.js.map +1 -0
- package/dist/metal/kFactorReverse.d.ts +19 -0
- package/dist/metal/kFactorReverse.d.ts.map +1 -0
- package/dist/metal/kFactorReverse.js +39 -0
- package/dist/metal/kFactorReverse.js.map +1 -0
- package/dist/metal/material.d.ts +5 -0
- package/dist/metal/material.d.ts.map +1 -0
- package/dist/metal/material.js +56 -0
- package/dist/metal/material.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +10 -0
- package/dist/metal/metalWeight.d.ts.map +1 -0
- package/dist/metal/metalWeight.js +82 -0
- package/dist/metal/metalWeight.js.map +1 -0
- package/dist/metal/pressFit.d.ts +15 -0
- package/dist/metal/pressFit.d.ts.map +1 -0
- package/dist/metal/pressFit.js +96 -0
- package/dist/metal/pressFit.js.map +1 -0
- package/dist/metal/pressTonnage.d.ts +13 -0
- package/dist/metal/pressTonnage.d.ts.map +1 -0
- package/dist/metal/pressTonnage.js +86 -0
- package/dist/metal/pressTonnage.js.map +1 -0
- package/dist/metal/roughness.d.ts +6 -0
- package/dist/metal/roughness.d.ts.map +1 -0
- package/dist/metal/roughness.js +62 -0
- package/dist/metal/roughness.js.map +1 -0
- package/dist/metal/screw.d.ts +7 -0
- package/dist/metal/screw.d.ts.map +1 -0
- package/dist/metal/screw.js +44 -0
- package/dist/metal/screw.js.map +1 -0
- package/dist/metal/spring.d.ts +11 -0
- package/dist/metal/spring.d.ts.map +1 -0
- package/dist/metal/spring.js +59 -0
- package/dist/metal/spring.js.map +1 -0
- package/dist/metal/tap.d.ts +16 -0
- package/dist/metal/tap.d.ts.map +1 -0
- package/dist/metal/tap.js +62 -0
- package/dist/metal/tap.js.map +1 -0
- package/dist/metal/thread.d.ts +8 -0
- package/dist/metal/thread.d.ts.map +1 -0
- package/dist/metal/thread.js +75 -0
- package/dist/metal/thread.js.map +1 -0
- package/dist/metal/tolerance.d.ts +6 -0
- package/dist/metal/tolerance.d.ts.map +1 -0
- package/dist/metal/tolerance.js +113 -0
- package/dist/metal/tolerance.js.map +1 -0
- package/dist/metal/types.d.ts +494 -0
- package/dist/metal/types.d.ts.map +1 -0
- package/dist/metal/types.js +2 -0
- package/dist/metal/types.js.map +1 -0
- package/dist/metal/vibration.d.ts +6 -0
- package/dist/metal/vibration.d.ts.map +1 -0
- package/dist/metal/vibration.js +153 -0
- package/dist/metal/vibration.js.map +1 -0
- package/dist/metal/weldHeat.d.ts +6 -0
- package/dist/metal/weldHeat.d.ts.map +1 -0
- package/dist/metal/weldHeat.js +138 -0
- package/dist/metal/weldHeat.js.map +1 -0
- package/dist/metal/welding.d.ts +6 -0
- package/dist/metal/welding.d.ts.map +1 -0
- package/dist/metal/welding.js +80 -0
- package/dist/metal/welding.js.map +1 -0
- package/dist/quality/aql.d.ts +10 -0
- package/dist/quality/aql.d.ts.map +1 -0
- package/dist/quality/aql.js +104 -0
- package/dist/quality/aql.js.map +1 -0
- package/dist/quality/cpk.d.ts +14 -0
- package/dist/quality/cpk.d.ts.map +1 -0
- package/dist/quality/cpk.js +44 -0
- package/dist/quality/cpk.js.map +1 -0
- package/dist/quality/cycle.d.ts +11 -0
- package/dist/quality/cycle.d.ts.map +1 -0
- package/dist/quality/cycle.js +55 -0
- package/dist/quality/cycle.js.map +1 -0
- package/dist/quality/downtime.d.ts +9 -0
- package/dist/quality/downtime.d.ts.map +1 -0
- package/dist/quality/downtime.js +28 -0
- package/dist/quality/downtime.js.map +1 -0
- package/dist/quality/dpmo.d.ts +10 -0
- package/dist/quality/dpmo.d.ts.map +1 -0
- package/dist/quality/dpmo.js +114 -0
- package/dist/quality/dpmo.js.map +1 -0
- package/dist/quality/index.d.ts +15 -0
- package/dist/quality/index.d.ts.map +1 -0
- package/dist/quality/index.js +15 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/quality/lineBalancing.d.ts +9 -0
- package/dist/quality/lineBalancing.d.ts.map +1 -0
- package/dist/quality/lineBalancing.js +185 -0
- package/dist/quality/lineBalancing.js.map +1 -0
- package/dist/quality/mtbf.d.ts +13 -0
- package/dist/quality/mtbf.d.ts.map +1 -0
- package/dist/quality/mtbf.js +48 -0
- package/dist/quality/mtbf.js.map +1 -0
- package/dist/quality/oee.d.ts +11 -0
- package/dist/quality/oee.d.ts.map +1 -0
- package/dist/quality/oee.js +43 -0
- package/dist/quality/oee.js.map +1 -0
- package/dist/quality/ppk.d.ts +15 -0
- package/dist/quality/ppk.d.ts.map +1 -0
- package/dist/quality/ppk.js +61 -0
- package/dist/quality/ppk.js.map +1 -0
- package/dist/quality/ppm.d.ts +9 -0
- package/dist/quality/ppm.d.ts.map +1 -0
- package/dist/quality/ppm.js +134 -0
- package/dist/quality/ppm.js.map +1 -0
- package/dist/quality/rpn.d.ts +11 -0
- package/dist/quality/rpn.d.ts.map +1 -0
- package/dist/quality/rpn.js +48 -0
- package/dist/quality/rpn.js.map +1 -0
- package/dist/quality/takt.d.ts +13 -0
- package/dist/quality/takt.d.ts.map +1 -0
- package/dist/quality/takt.js +44 -0
- package/dist/quality/takt.js.map +1 -0
- package/dist/quality/types.d.ts +261 -0
- package/dist/quality/types.d.ts.map +1 -0
- package/dist/quality/types.js +2 -0
- package/dist/quality/types.js.map +1 -0
- package/dist/quality/yield.d.ts +12 -0
- package/dist/quality/yield.d.ts.map +1 -0
- package/dist/quality/yield.js +56 -0
- package/dist/quality/yield.js.map +1 -0
- package/dist/safety/fallClearance.d.ts +12 -0
- package/dist/safety/fallClearance.d.ts.map +1 -0
- package/dist/safety/fallClearance.js +37 -0
- package/dist/safety/fallClearance.js.map +1 -0
- package/dist/safety/havsCalculate.d.ts +16 -0
- package/dist/safety/havsCalculate.d.ts.map +1 -0
- package/dist/safety/havsCalculate.js +103 -0
- package/dist/safety/havsCalculate.js.map +1 -0
- package/dist/safety/index.d.ts +8 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +8 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/safety/nioshLifting.d.ts +21 -0
- package/dist/safety/nioshLifting.d.ts.map +1 -0
- package/dist/safety/nioshLifting.js +164 -0
- package/dist/safety/nioshLifting.js.map +1 -0
- package/dist/safety/noiseExposure.d.ts +22 -0
- package/dist/safety/noiseExposure.d.ts.map +1 -0
- package/dist/safety/noiseExposure.js +76 -0
- package/dist/safety/noiseExposure.js.map +1 -0
- package/dist/safety/respiratorCalculate.d.ts +14 -0
- package/dist/safety/respiratorCalculate.d.ts.map +1 -0
- package/dist/safety/respiratorCalculate.js +90 -0
- package/dist/safety/respiratorCalculate.js.map +1 -0
- package/dist/safety/types.d.ts +93 -0
- package/dist/safety/types.d.ts.map +1 -0
- package/dist/safety/types.js +2 -0
- package/dist/safety/types.js.map +1 -0
- package/dist/safety/wbgtCalculate.d.ts +25 -0
- package/dist/safety/wbgtCalculate.d.ts.map +1 -0
- package/dist/safety/wbgtCalculate.js +65 -0
- package/dist/safety/wbgtCalculate.js.map +1 -0
- package/dist/utility/assignment.d.ts +11 -0
- package/dist/utility/assignment.d.ts.map +1 -0
- package/dist/utility/assignment.js +113 -0
- package/dist/utility/assignment.js.map +1 -0
- package/dist/utility/index.d.ts +4 -0
- package/dist/utility/index.d.ts.map +1 -0
- package/dist/utility/index.js +4 -0
- package/dist/utility/index.js.map +1 -0
- package/dist/utility/qrcode.d.ts +30 -0
- package/dist/utility/qrcode.d.ts.map +1 -0
- package/dist/utility/qrcode.js +30 -0
- package/dist/utility/qrcode.js.map +1 -0
- package/dist/utility/types.d.ts +64 -0
- package/dist/utility/types.d.ts.map +1 -0
- package/dist/utility/types.js +2 -0
- package/dist/utility/types.js.map +1 -0
- package/dist/utility/unit.d.ts +25 -0
- package/dist/utility/unit.d.ts.map +1 -0
- package/dist/utility/unit.js +136 -0
- package/dist/utility/unit.js.map +1 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +12 -0
- package/dist/utils.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export type PasteType = 'sac305' | 'sn63pb37' | 'sac387' | 'snbi58';
|
|
2
|
+
export interface ReflowInput {
|
|
3
|
+
pasteType: PasteType;
|
|
4
|
+
}
|
|
5
|
+
export interface ReflowResult {
|
|
6
|
+
pasteType: string;
|
|
7
|
+
meltingPoint: number;
|
|
8
|
+
preheatRate: string;
|
|
9
|
+
preheatTemp: string;
|
|
10
|
+
preheatTime: string;
|
|
11
|
+
soakTemp: string;
|
|
12
|
+
soakTime: string;
|
|
13
|
+
peakTemp: string;
|
|
14
|
+
timeAboveLiquidus: string;
|
|
15
|
+
coolingRate: string;
|
|
16
|
+
totalProfileTime: string;
|
|
17
|
+
}
|
|
18
|
+
export type BandCount = 4 | 5 | 6;
|
|
19
|
+
export type ColorName = 'black' | 'brown' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'violet' | 'grey' | 'white' | 'gold' | 'silver';
|
|
20
|
+
export interface ResistorBands {
|
|
21
|
+
bandCount: BandCount;
|
|
22
|
+
bands: ColorName[];
|
|
23
|
+
}
|
|
24
|
+
export interface ResistorResult {
|
|
25
|
+
resistance: number;
|
|
26
|
+
tolerance: number;
|
|
27
|
+
tempCoeff?: number;
|
|
28
|
+
formatted: string;
|
|
29
|
+
}
|
|
30
|
+
export interface SmtTaktInput {
|
|
31
|
+
placementRate: number;
|
|
32
|
+
componentsPerBoard: number;
|
|
33
|
+
boardsPerPanel: number;
|
|
34
|
+
setupTimeSec: number;
|
|
35
|
+
availableTimeMin: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SmtTaktResult {
|
|
38
|
+
placementTimeSec: number;
|
|
39
|
+
totalCycleTimeSec: number;
|
|
40
|
+
boardsPerHour: number;
|
|
41
|
+
totalBoardsPerShift: number;
|
|
42
|
+
lineUtilization: number;
|
|
43
|
+
}
|
|
44
|
+
export interface SolderInput {
|
|
45
|
+
padCount: number;
|
|
46
|
+
avgPadArea: number;
|
|
47
|
+
stencilThickness: number;
|
|
48
|
+
transferEfficiency: number;
|
|
49
|
+
density: number;
|
|
50
|
+
boardsPerPanel: number;
|
|
51
|
+
panelCount: number;
|
|
52
|
+
}
|
|
53
|
+
export interface SolderResult {
|
|
54
|
+
volumePerBoard: number;
|
|
55
|
+
weightPerBoard: number;
|
|
56
|
+
totalVolume: number;
|
|
57
|
+
totalWeight: number;
|
|
58
|
+
totalWeightKg: number;
|
|
59
|
+
}
|
|
60
|
+
export type TraceLayer = 'external' | 'internal';
|
|
61
|
+
export interface TraceInput {
|
|
62
|
+
current: number;
|
|
63
|
+
tempRise: number;
|
|
64
|
+
copperWeight: number;
|
|
65
|
+
layer: TraceLayer;
|
|
66
|
+
}
|
|
67
|
+
export interface TraceResult {
|
|
68
|
+
widthMils: number;
|
|
69
|
+
widthMm: number;
|
|
70
|
+
crossSection: number;
|
|
71
|
+
resistance: number;
|
|
72
|
+
voltageDrop: number;
|
|
73
|
+
powerLoss: number;
|
|
74
|
+
}
|
|
75
|
+
export type AwgMaterial = 'copper' | 'aluminum';
|
|
76
|
+
export interface AwgInput {
|
|
77
|
+
awg: number;
|
|
78
|
+
material: AwgMaterial;
|
|
79
|
+
tempC: number;
|
|
80
|
+
}
|
|
81
|
+
export interface AwgResult {
|
|
82
|
+
diameterMm: number;
|
|
83
|
+
diameterMils: number;
|
|
84
|
+
areaMm2: number;
|
|
85
|
+
areaCircularMils: number;
|
|
86
|
+
resistancePerM: number;
|
|
87
|
+
resistancePerFt: number;
|
|
88
|
+
currentCapacity: number;
|
|
89
|
+
}
|
|
90
|
+
export interface CapacitorCodeInput {
|
|
91
|
+
code: string;
|
|
92
|
+
}
|
|
93
|
+
export interface CapacitorCodeResult {
|
|
94
|
+
picofarads: number;
|
|
95
|
+
nanofarads: number;
|
|
96
|
+
microfarads: number;
|
|
97
|
+
formatted: string;
|
|
98
|
+
significantFigures: number;
|
|
99
|
+
multiplier: number;
|
|
100
|
+
}
|
|
101
|
+
export interface LedResistorInput {
|
|
102
|
+
supplyVoltage: number;
|
|
103
|
+
forwardVoltage: number;
|
|
104
|
+
forwardCurrent: number;
|
|
105
|
+
}
|
|
106
|
+
export interface LedResistorResult {
|
|
107
|
+
resistance: number;
|
|
108
|
+
standardResistance: number;
|
|
109
|
+
powerDissipation: number;
|
|
110
|
+
actualCurrent: number;
|
|
111
|
+
}
|
|
112
|
+
export type ApertureShape = 'rectangle' | 'circle';
|
|
113
|
+
export type ComponentType = 'bga' | 'qfp' | 'chip' | 'sot' | 'general';
|
|
114
|
+
export interface StencilInput {
|
|
115
|
+
shape: ApertureShape;
|
|
116
|
+
apertureWidth: number;
|
|
117
|
+
apertureLength: number;
|
|
118
|
+
stencilThickness: number;
|
|
119
|
+
componentType: ComponentType;
|
|
120
|
+
}
|
|
121
|
+
export interface StencilResult {
|
|
122
|
+
apertureArea: number;
|
|
123
|
+
wallArea: number;
|
|
124
|
+
areaRatio: number;
|
|
125
|
+
aspectRatio: number;
|
|
126
|
+
areaRatioOk: boolean;
|
|
127
|
+
aspectRatioOk: boolean;
|
|
128
|
+
recommendedAreaRatio: number;
|
|
129
|
+
recommendedAspectRatio: number;
|
|
130
|
+
status: 'good' | 'marginal' | 'poor';
|
|
131
|
+
}
|
|
132
|
+
export interface ViaInput {
|
|
133
|
+
holeDiameter: number;
|
|
134
|
+
platingThickness: number;
|
|
135
|
+
viaLength: number;
|
|
136
|
+
tempRise: number;
|
|
137
|
+
}
|
|
138
|
+
export interface ViaResult {
|
|
139
|
+
currentCapacity: number;
|
|
140
|
+
crossSectionMm2: number;
|
|
141
|
+
thermalResistance: number;
|
|
142
|
+
resistanceMOhm: number;
|
|
143
|
+
powerDissipation: number;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/electronics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/electronics/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ViaInput, ViaResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate PCB via current capacity using IPC-2152 approximation
|
|
4
|
+
*
|
|
5
|
+
* The cross-sectional area is the copper ring: π × [(r_outer)² - (r_inner)²]
|
|
6
|
+
* Where r_outer = holeDiameter/2 + platingThickness and r_inner = holeDiameter/2
|
|
7
|
+
*
|
|
8
|
+
* @param input - Via hole diameter, plating thickness, via length, and temp rise
|
|
9
|
+
* @returns Via current capacity and related properties, or null if invalid
|
|
10
|
+
*/
|
|
11
|
+
export declare function viaCurrent(input: ViaInput): ViaResult | null;
|
|
12
|
+
//# sourceMappingURL=via.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"via.d.ts","sourceRoot":"","sources":["../../src/electronics/via.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBtD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA+C5D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round to specified decimal places
|
|
3
|
+
*/
|
|
4
|
+
function roundTo(value, decimals) {
|
|
5
|
+
const factor = Math.pow(10, decimals);
|
|
6
|
+
return Math.round(value * factor) / factor;
|
|
7
|
+
}
|
|
8
|
+
// Copper resistivity at 20°C in Ω·mm²/m
|
|
9
|
+
const COPPER_RESISTIVITY = 0.01724;
|
|
10
|
+
// IPC-2152 via current capacity constants
|
|
11
|
+
// I = k × ΔT^b × A^c
|
|
12
|
+
// For internal vias: k=0.048, b=0.44, c=0.725 (similar to internal traces)
|
|
13
|
+
const IPC_K = 0.048;
|
|
14
|
+
const IPC_B = 0.44;
|
|
15
|
+
const IPC_C = 0.725;
|
|
16
|
+
/**
|
|
17
|
+
* Calculate PCB via current capacity using IPC-2152 approximation
|
|
18
|
+
*
|
|
19
|
+
* The cross-sectional area is the copper ring: π × [(r_outer)² - (r_inner)²]
|
|
20
|
+
* Where r_outer = holeDiameter/2 + platingThickness and r_inner = holeDiameter/2
|
|
21
|
+
*
|
|
22
|
+
* @param input - Via hole diameter, plating thickness, via length, and temp rise
|
|
23
|
+
* @returns Via current capacity and related properties, or null if invalid
|
|
24
|
+
*/
|
|
25
|
+
export function viaCurrent(input) {
|
|
26
|
+
const { holeDiameter, platingThickness, viaLength, tempRise } = input;
|
|
27
|
+
// Validate inputs
|
|
28
|
+
if (holeDiameter <= 0 || platingThickness <= 0 || viaLength <= 0 || tempRise <= 0) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Convert plating thickness from μm to mm
|
|
32
|
+
const platingMm = platingThickness / 1000;
|
|
33
|
+
// Calculate inner and outer radii
|
|
34
|
+
const innerRadius = holeDiameter / 2;
|
|
35
|
+
const outerRadius = innerRadius + platingMm;
|
|
36
|
+
// Cross-sectional area of the copper ring (mm²)
|
|
37
|
+
const crossSectionMm2 = Math.PI * (outerRadius * outerRadius - innerRadius * innerRadius);
|
|
38
|
+
// For IPC-2152, convert area to mils² (1 mm = 39.37 mils)
|
|
39
|
+
const crossSectionMils2 = crossSectionMm2 * 39.37 * 39.37;
|
|
40
|
+
// Current capacity using IPC-2152 formula (similar to internal layer)
|
|
41
|
+
// I = k × ΔT^b × A^c
|
|
42
|
+
const currentCapacity = IPC_K * Math.pow(tempRise, IPC_B) * Math.pow(crossSectionMils2, IPC_C);
|
|
43
|
+
// Via resistance (Ω)
|
|
44
|
+
// R = ρ × L / A (where ρ is in Ω·mm²/m, L in m, A in mm²)
|
|
45
|
+
const viaLengthM = viaLength / 1000;
|
|
46
|
+
const resistance = (COPPER_RESISTIVITY * viaLengthM) / crossSectionMm2;
|
|
47
|
+
const resistanceMOhm = resistance * 1000; // Convert to mΩ
|
|
48
|
+
// Thermal resistance approximation (simplified)
|
|
49
|
+
// For a cylindrical via: Rth ≈ L / (k × A) where k is thermal conductivity
|
|
50
|
+
// Copper thermal conductivity ≈ 385 W/(m·K)
|
|
51
|
+
const COPPER_THERMAL_CONDUCTIVITY = 385;
|
|
52
|
+
const thermalResistance = viaLengthM / (COPPER_THERMAL_CONDUCTIVITY * crossSectionMm2 / 1000000);
|
|
53
|
+
// Power dissipation at maximum current (mW)
|
|
54
|
+
const powerDissipation = currentCapacity * currentCapacity * resistance * 1000;
|
|
55
|
+
return {
|
|
56
|
+
currentCapacity: roundTo(currentCapacity, 2),
|
|
57
|
+
crossSectionMm2: roundTo(crossSectionMm2, 5),
|
|
58
|
+
thermalResistance: roundTo(thermalResistance, 2),
|
|
59
|
+
resistanceMOhm: roundTo(resistanceMOhm, 4),
|
|
60
|
+
powerDissipation: roundTo(powerDissipation, 2),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=via.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"via.js","sourceRoot":"","sources":["../../src/electronics/via.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,wCAAwC;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC,0CAA0C;AAC1C,qBAAqB;AACrB,2EAA2E;AAC3E,MAAM,KAAK,GAAG,KAAK,CAAC;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,KAAK,GAAG,KAAK,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAe;IACxC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEtE,kBAAkB;IAClB,IAAI,YAAY,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAE1C,kCAAkC;IAClC,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IAE5C,gDAAgD;IAChD,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;IAE1F,0DAA0D;IAC1D,MAAM,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;IAE1D,sEAAsE;IACtE,qBAAqB;IACrB,MAAM,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAE/F,qBAAqB;IACrB,0DAA0D;IAC1D,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,MAAM,UAAU,GAAG,CAAC,kBAAkB,GAAG,UAAU,CAAC,GAAG,eAAe,CAAC;IACvE,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,gBAAgB;IAE1D,gDAAgD;IAChD,2EAA2E;IAC3E,4CAA4C;IAC5C,MAAM,2BAA2B,GAAG,GAAG,CAAC;IACxC,MAAM,iBAAiB,GAAG,UAAU,GAAG,CAAC,2BAA2B,GAAG,eAAe,GAAG,OAAO,CAAC,CAAC;IAEjG,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,GAAG,IAAI,CAAC;IAE/E,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,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CarbonFootprintInput, CarbonFootprintResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate carbon footprint from electricity usage
|
|
4
|
+
*
|
|
5
|
+
* CO2 (kg) = electricity usage (kWh) * emission factor (g CO2/kWh) / 1000
|
|
6
|
+
* Trees equivalent = CO2 (kg) / 21.76 (kg CO2 absorbed per tree per year)
|
|
7
|
+
* Cars equivalent = CO2 (kg) / 4600 (kg CO2 emitted per car per year)
|
|
8
|
+
*
|
|
9
|
+
* @param input - Carbon footprint input parameters
|
|
10
|
+
* @returns Carbon footprint result with CO2 emissions and environmental equivalents
|
|
11
|
+
*/
|
|
12
|
+
export declare function carbonFootprint(input: CarbonFootprintInput): CarbonFootprintResult;
|
|
13
|
+
//# sourceMappingURL=carbonFootprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carbonFootprint.d.ts","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQ9E;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA4BlF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Constants for environmental equivalents
|
|
2
|
+
// Average tree absorbs ~21.76 kg CO2 per year (EPA estimate)
|
|
3
|
+
const KG_CO2_PER_TREE_PER_YEAR = 21.76;
|
|
4
|
+
// Average passenger vehicle emits ~4,600 kg CO2 per year (EPA estimate)
|
|
5
|
+
const KG_CO2_PER_CAR_PER_YEAR = 4600;
|
|
6
|
+
/**
|
|
7
|
+
* Calculate carbon footprint from electricity usage
|
|
8
|
+
*
|
|
9
|
+
* CO2 (kg) = electricity usage (kWh) * emission factor (g CO2/kWh) / 1000
|
|
10
|
+
* Trees equivalent = CO2 (kg) / 21.76 (kg CO2 absorbed per tree per year)
|
|
11
|
+
* Cars equivalent = CO2 (kg) / 4600 (kg CO2 emitted per car per year)
|
|
12
|
+
*
|
|
13
|
+
* @param input - Carbon footprint input parameters
|
|
14
|
+
* @returns Carbon footprint result with CO2 emissions and environmental equivalents
|
|
15
|
+
*/
|
|
16
|
+
export function carbonFootprint(input) {
|
|
17
|
+
const { electricityUsage, emissionFactor } = input;
|
|
18
|
+
// Handle edge case - zero usage
|
|
19
|
+
if (electricityUsage <= 0) {
|
|
20
|
+
return {
|
|
21
|
+
co2Kg: 0,
|
|
22
|
+
co2Tonnes: 0,
|
|
23
|
+
treesEquivalent: 0,
|
|
24
|
+
carsEquivalent: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Calculate CO2 emissions
|
|
28
|
+
// emission factor is in g CO2/kWh, convert to kg
|
|
29
|
+
const co2Kg = (electricityUsage * emissionFactor) / 1000;
|
|
30
|
+
const co2Tonnes = co2Kg / 1000;
|
|
31
|
+
// Calculate environmental equivalents
|
|
32
|
+
const treesEquivalent = Math.round(co2Kg / KG_CO2_PER_TREE_PER_YEAR);
|
|
33
|
+
const carsEquivalent = co2Kg / KG_CO2_PER_CAR_PER_YEAR;
|
|
34
|
+
return {
|
|
35
|
+
co2Kg,
|
|
36
|
+
co2Tonnes,
|
|
37
|
+
treesEquivalent,
|
|
38
|
+
carsEquivalent,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=carbonFootprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carbonFootprint.js","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"AAEA,0CAA0C;AAC1C,6DAA6D;AAC7D,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,wEAAwE;AACxE,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnD,gCAAgC;IAChC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,CAAC;YACZ,eAAe,EAAE,CAAC;YAClB,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,iDAAiD;IACjD,MAAM,KAAK,GAAG,CAAC,gBAAgB,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC;IACzD,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;IAE/B,sCAAsC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,wBAAwB,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,KAAK,GAAG,uBAAuB,CAAC;IAEvD,OAAO;QACL,KAAK;QACL,SAAS;QACT,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CompressedAirCostInput, CompressedAirCostResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate compressed air production cost
|
|
4
|
+
*
|
|
5
|
+
* Electricity cost = compressor power (kW) * running hours * electricity rate ($/kWh)
|
|
6
|
+
* Total cost = electricity cost + maintenance cost
|
|
7
|
+
* Cost per m3 = total cost / air output (m3)
|
|
8
|
+
* Cost per CFM = cost per m3 / 35.3147 (m3 to CFM conversion)
|
|
9
|
+
*
|
|
10
|
+
* @param input - Compressed air cost input parameters
|
|
11
|
+
* @returns Compressed air cost result
|
|
12
|
+
*/
|
|
13
|
+
export declare function compressedAirCost(input: CompressedAirCostInput): CompressedAirCostResult;
|
|
14
|
+
//# sourceMappingURL=compressedAirCost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compressedAirCost.d.ts","sourceRoot":"","sources":["../../src/energy/compressedAirCost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAKlF;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CA6BxF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Conversion factor: 1 m3 = 35.3147 CFM (cubic feet per minute)
|
|
2
|
+
const M3_TO_CFM = 35.3147;
|
|
3
|
+
/**
|
|
4
|
+
* Calculate compressed air production cost
|
|
5
|
+
*
|
|
6
|
+
* Electricity cost = compressor power (kW) * running hours * electricity rate ($/kWh)
|
|
7
|
+
* Total cost = electricity cost + maintenance cost
|
|
8
|
+
* Cost per m3 = total cost / air output (m3)
|
|
9
|
+
* Cost per CFM = cost per m3 / 35.3147 (m3 to CFM conversion)
|
|
10
|
+
*
|
|
11
|
+
* @param input - Compressed air cost input parameters
|
|
12
|
+
* @returns Compressed air cost result
|
|
13
|
+
*/
|
|
14
|
+
export function compressedAirCost(input) {
|
|
15
|
+
const { compressorPower, runningHours, electricityRate, airOutput, maintenanceCost } = input;
|
|
16
|
+
// Handle edge case - invalid inputs
|
|
17
|
+
if (compressorPower <= 0 || runningHours <= 0 || airOutput <= 0) {
|
|
18
|
+
return {
|
|
19
|
+
electricityCost: 0,
|
|
20
|
+
totalCost: 0,
|
|
21
|
+
costPerM3: 0,
|
|
22
|
+
costPerCfm: 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Calculate electricity cost
|
|
26
|
+
const electricityCost = compressorPower * runningHours * electricityRate;
|
|
27
|
+
// Calculate total cost
|
|
28
|
+
const totalCost = electricityCost + maintenanceCost;
|
|
29
|
+
// Calculate cost per unit volume
|
|
30
|
+
const costPerM3 = totalCost / airOutput;
|
|
31
|
+
const costPerCfm = costPerM3 / M3_TO_CFM;
|
|
32
|
+
return {
|
|
33
|
+
electricityCost,
|
|
34
|
+
totalCost,
|
|
35
|
+
costPerM3,
|
|
36
|
+
costPerCfm,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=compressedAirCost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compressedAirCost.js","sourceRoot":"","sources":["../../src/energy/compressedAirCost.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAChE,MAAM,SAAS,GAAG,OAAO,CAAC;AAE1B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAE7F,oCAAoC;IACpC,IAAI,eAAe,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO;YACL,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,eAAe,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,CAAC;IAEzE,uBAAuB;IACvB,MAAM,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;IAEpD,iCAAiC;IACjC,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAEzC,OAAO;QACL,eAAe;QACf,SAAS;QACT,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { carbonFootprint } from './carbonFootprint.js';
|
|
2
|
+
export { compressedAirCost } from './compressedAirCost.js';
|
|
3
|
+
export { motorEfficiency } from './motorEfficiency.js';
|
|
4
|
+
export { pfCorrection } from './pfCorrection.js';
|
|
5
|
+
export { powerCost } from './powerCost.js';
|
|
6
|
+
export { vfdSavings } from './vfdSavings.js';
|
|
7
|
+
export type { CarbonFootprintInput, CarbonFootprintResult, CompressedAirCostInput, CompressedAirCostResult, MotorEfficiencyInput, MotorEfficiencyResult, PfCorrectionInput, PfCorrectionResult, PowerCostInput, PowerCostResult, VfdSavingsInput, VfdSavingsResult, } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AACA,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,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Energy domain formulas
|
|
2
|
+
export { carbonFootprint } from './carbonFootprint.js';
|
|
3
|
+
export { compressedAirCost } from './compressedAirCost.js';
|
|
4
|
+
export { motorEfficiency } from './motorEfficiency.js';
|
|
5
|
+
export { pfCorrection } from './pfCorrection.js';
|
|
6
|
+
export { powerCost } from './powerCost.js';
|
|
7
|
+
export { vfdSavings } from './vfdSavings.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/energy/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MotorEfficiencyInput, MotorEfficiencyResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate motor efficiency upgrade economics
|
|
4
|
+
*
|
|
5
|
+
* Annual energy = motor power (kW) * running hours * load factor / efficiency
|
|
6
|
+
* Annual cost = annual energy * electricity rate
|
|
7
|
+
* Annual savings = current annual cost - new annual cost
|
|
8
|
+
* Payback period = upgrade cost / annual savings
|
|
9
|
+
*
|
|
10
|
+
* @param input - Motor efficiency input parameters
|
|
11
|
+
* @returns Motor efficiency result with costs, savings, and payback period
|
|
12
|
+
*/
|
|
13
|
+
export declare function motorEfficiency(input: MotorEfficiencyInput): MotorEfficiencyResult;
|
|
14
|
+
//# sourceMappingURL=motorEfficiency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motorEfficiency.d.ts","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAgDlF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate motor efficiency upgrade economics
|
|
3
|
+
*
|
|
4
|
+
* Annual energy = motor power (kW) * running hours * load factor / efficiency
|
|
5
|
+
* Annual cost = annual energy * electricity rate
|
|
6
|
+
* Annual savings = current annual cost - new annual cost
|
|
7
|
+
* Payback period = upgrade cost / annual savings
|
|
8
|
+
*
|
|
9
|
+
* @param input - Motor efficiency input parameters
|
|
10
|
+
* @returns Motor efficiency result with costs, savings, and payback period
|
|
11
|
+
*/
|
|
12
|
+
export function motorEfficiency(input) {
|
|
13
|
+
const { motorPower, runningHours, currentEfficiency, newEfficiency, electricityRate, loadFactor, upgradeCost, } = input;
|
|
14
|
+
// Handle edge case - invalid efficiency values
|
|
15
|
+
if (currentEfficiency <= 0 || newEfficiency <= 0) {
|
|
16
|
+
return {
|
|
17
|
+
currentAnnualCost: 0,
|
|
18
|
+
newAnnualCost: 0,
|
|
19
|
+
annualSavings: 0,
|
|
20
|
+
energySavings: 0,
|
|
21
|
+
paybackPeriod: null,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Calculate annual energy consumption for each efficiency level
|
|
25
|
+
// Energy = Power * Hours * LoadFactor / Efficiency
|
|
26
|
+
const currentAnnualEnergy = (motorPower * runningHours * loadFactor) / currentEfficiency;
|
|
27
|
+
const newAnnualEnergy = (motorPower * runningHours * loadFactor) / newEfficiency;
|
|
28
|
+
// Calculate annual costs
|
|
29
|
+
const currentAnnualCost = currentAnnualEnergy * electricityRate;
|
|
30
|
+
const newAnnualCost = newAnnualEnergy * electricityRate;
|
|
31
|
+
// Calculate savings
|
|
32
|
+
const annualSavings = currentAnnualCost - newAnnualCost;
|
|
33
|
+
const energySavings = currentAnnualEnergy - newAnnualEnergy;
|
|
34
|
+
// Calculate payback period
|
|
35
|
+
let paybackPeriod = null;
|
|
36
|
+
if (upgradeCost !== undefined && upgradeCost > 0 && annualSavings > 0) {
|
|
37
|
+
paybackPeriod = upgradeCost / annualSavings;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
currentAnnualCost,
|
|
41
|
+
newAnnualCost,
|
|
42
|
+
annualSavings,
|
|
43
|
+
energySavings,
|
|
44
|
+
paybackPeriod,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=motorEfficiency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motorEfficiency.js","sourceRoot":"","sources":["../../src/energy/motorEfficiency.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,GACZ,GAAG,KAAK,CAAC;IAEV,+CAA+C;IAC/C,IAAI,iBAAiB,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,mDAAmD;IACnD,MAAM,mBAAmB,GAAG,CAAC,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,GAAG,iBAAiB,CAAC;IACzF,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,GAAG,aAAa,CAAC;IAEjF,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAChE,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IAExD,oBAAoB;IACpB,MAAM,aAAa,GAAG,iBAAiB,GAAG,aAAa,CAAC;IACxD,MAAM,aAAa,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAE5D,2BAA2B;IAC3B,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtE,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PfCorrectionInput, PfCorrectionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate power factor correction requirements and savings
|
|
4
|
+
*
|
|
5
|
+
* Formula: kVAR required = kW * (tan(arccos(PF_current)) - tan(arccos(PF_target)))
|
|
6
|
+
*
|
|
7
|
+
* Where:
|
|
8
|
+
* - kVA = kW / PF (apparent power)
|
|
9
|
+
* - tan(arccos(PF)) gives the reactive power factor
|
|
10
|
+
*
|
|
11
|
+
* @param input - Power factor correction input parameters
|
|
12
|
+
* @returns Power factor correction result with kVAR, costs, and savings
|
|
13
|
+
*/
|
|
14
|
+
export declare function pfCorrection(input: PfCorrectionInput): PfCorrectionResult;
|
|
15
|
+
//# sourceMappingURL=pfCorrection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pfCorrection.d.ts","sourceRoot":"","sources":["../../src/energy/pfCorrection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA4DzE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate power factor correction requirements and savings
|
|
3
|
+
*
|
|
4
|
+
* Formula: kVAR required = kW * (tan(arccos(PF_current)) - tan(arccos(PF_target)))
|
|
5
|
+
*
|
|
6
|
+
* Where:
|
|
7
|
+
* - kVA = kW / PF (apparent power)
|
|
8
|
+
* - tan(arccos(PF)) gives the reactive power factor
|
|
9
|
+
*
|
|
10
|
+
* @param input - Power factor correction input parameters
|
|
11
|
+
* @returns Power factor correction result with kVAR, costs, and savings
|
|
12
|
+
*/
|
|
13
|
+
export function pfCorrection(input) {
|
|
14
|
+
const { kW, currentPf, targetPf, electricityRate, monthlyUsageHours, pfPenaltyRate, pfPenaltyThreshold, capacitorCostPerKvar, } = input;
|
|
15
|
+
// Calculate current and target apparent power (kVA)
|
|
16
|
+
const currentKva = kW / currentPf;
|
|
17
|
+
const targetKva = kW / targetPf;
|
|
18
|
+
// Calculate required kVAR using the formula:
|
|
19
|
+
// kVAR = kW * (tan(arccos(PF_current)) - tan(arccos(PF_target)))
|
|
20
|
+
const currentAngle = Math.acos(currentPf);
|
|
21
|
+
const targetAngle = Math.acos(targetPf);
|
|
22
|
+
const kvarRequired = kW * (Math.tan(currentAngle) - Math.tan(targetAngle));
|
|
23
|
+
// Calculate capacitor cost
|
|
24
|
+
const capacitorCost = kvarRequired * capacitorCostPerKvar;
|
|
25
|
+
// Calculate monthly energy consumption (kWh)
|
|
26
|
+
const monthlyKwh = kW * monthlyUsageHours;
|
|
27
|
+
// Calculate PF penalty
|
|
28
|
+
// Penalty is typically applied when PF is below threshold
|
|
29
|
+
// Penalty = (threshold - actual PF) / 0.01 * penalty rate * energy cost
|
|
30
|
+
const calculatePenalty = (pf) => {
|
|
31
|
+
if (pf >= pfPenaltyThreshold)
|
|
32
|
+
return 0;
|
|
33
|
+
const penaltySteps = Math.floor((pfPenaltyThreshold - pf) * 100);
|
|
34
|
+
return penaltySteps * pfPenaltyRate * monthlyKwh * electricityRate;
|
|
35
|
+
};
|
|
36
|
+
const currentMonthlyPenalty = calculatePenalty(currentPf);
|
|
37
|
+
const newMonthlyPenalty = calculatePenalty(targetPf);
|
|
38
|
+
// Monthly savings from avoided penalties
|
|
39
|
+
const monthlySavings = currentMonthlyPenalty - newMonthlyPenalty;
|
|
40
|
+
// Annual savings
|
|
41
|
+
const annualSavings = monthlySavings * 12;
|
|
42
|
+
// Payback period in months (return 0 if no savings)
|
|
43
|
+
const paybackMonths = monthlySavings > 0 ? capacitorCost / monthlySavings : 0;
|
|
44
|
+
return {
|
|
45
|
+
currentKva,
|
|
46
|
+
targetKva,
|
|
47
|
+
kvarRequired,
|
|
48
|
+
capacitorCost,
|
|
49
|
+
currentMonthlyPenalty,
|
|
50
|
+
newMonthlyPenalty,
|
|
51
|
+
monthlySavings,
|
|
52
|
+
annualSavings,
|
|
53
|
+
paybackMonths,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=pfCorrection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pfCorrection.js","sourceRoot":"","sources":["../../src/energy/pfCorrection.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EACJ,EAAE,EACF,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,GAAG,KAAK,CAAC;IAEV,oDAAoD;IACpD,MAAM,UAAU,GAAG,EAAE,GAAG,SAAS,CAAC;IAClC,MAAM,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC;IAEhC,6CAA6C;IAC7C,iEAAiE;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,2BAA2B;IAC3B,MAAM,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAAC;IAE1D,6CAA6C;IAC7C,MAAM,UAAU,GAAG,EAAE,GAAG,iBAAiB,CAAC;IAE1C,uBAAuB;IACvB,0DAA0D;IAC1D,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;QAC9C,IAAI,EAAE,IAAI,kBAAkB;YAAE,OAAO,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QACjE,OAAO,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC;IACrE,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAErD,yCAAyC;IACzC,MAAM,cAAc,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;IAEjE,iBAAiB;IACjB,MAAM,aAAa,GAAG,cAAc,GAAG,EAAE,CAAC;IAE1C,oDAAoD;IACpD,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,OAAO;QACL,UAAU;QACV,SAAS;QACT,YAAY;QACZ,aAAa;QACb,qBAAqB;QACrB,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PowerCostInput, PowerCostResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate power cost including energy, demand, power factor penalty, and fixed charges
|
|
4
|
+
*
|
|
5
|
+
* Energy cost = energy consumption (kWh) * energy rate ($/kWh)
|
|
6
|
+
* Demand cost = demand peak (kW) * demand rate ($/kW)
|
|
7
|
+
* PF penalty = (threshold - actual PF) / 0.01 * penalty rate * (energy cost + demand cost)
|
|
8
|
+
* (only if actual PF < threshold)
|
|
9
|
+
* Total cost = energy cost + demand cost + PF penalty + fixed charges
|
|
10
|
+
*
|
|
11
|
+
* @param input - Power cost input parameters
|
|
12
|
+
* @returns Power cost result with breakdown of all costs
|
|
13
|
+
*/
|
|
14
|
+
export declare function powerCost(input: PowerCostInput): PowerCostResult;
|
|
15
|
+
//# sourceMappingURL=powerCost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powerCost.d.ts","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAqChE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate power cost including energy, demand, power factor penalty, and fixed charges
|
|
3
|
+
*
|
|
4
|
+
* Energy cost = energy consumption (kWh) * energy rate ($/kWh)
|
|
5
|
+
* Demand cost = demand peak (kW) * demand rate ($/kW)
|
|
6
|
+
* PF penalty = (threshold - actual PF) / 0.01 * penalty rate * (energy cost + demand cost)
|
|
7
|
+
* (only if actual PF < threshold)
|
|
8
|
+
* Total cost = energy cost + demand cost + PF penalty + fixed charges
|
|
9
|
+
*
|
|
10
|
+
* @param input - Power cost input parameters
|
|
11
|
+
* @returns Power cost result with breakdown of all costs
|
|
12
|
+
*/
|
|
13
|
+
export function powerCost(input) {
|
|
14
|
+
const { energyConsumption, energyRate, demandPeak, demandRate, powerFactor, pfPenaltyThreshold, pfPenaltyRate, fixedCharges, } = input;
|
|
15
|
+
// Calculate energy cost
|
|
16
|
+
const energyCost = energyConsumption * energyRate;
|
|
17
|
+
// Calculate demand cost
|
|
18
|
+
const demandCost = demandPeak * demandRate;
|
|
19
|
+
// Calculate power factor penalty
|
|
20
|
+
let pfPenalty = 0;
|
|
21
|
+
if (powerFactor < pfPenaltyThreshold && pfPenaltyRate > 0) {
|
|
22
|
+
// Number of 0.01 steps below threshold
|
|
23
|
+
const stepsBelow = Math.round((pfPenaltyThreshold - powerFactor) / 0.01);
|
|
24
|
+
// Penalty is applied to energy + demand costs
|
|
25
|
+
pfPenalty = stepsBelow * pfPenaltyRate * (energyCost + demandCost);
|
|
26
|
+
}
|
|
27
|
+
// Calculate total cost
|
|
28
|
+
const totalCost = energyCost + demandCost + pfPenalty + fixedCharges;
|
|
29
|
+
return {
|
|
30
|
+
energyCost,
|
|
31
|
+
demandCost,
|
|
32
|
+
pfPenalty,
|
|
33
|
+
fixedCharges,
|
|
34
|
+
totalCost,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=powerCost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powerCost.js","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EACJ,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,YAAY,GACb,GAAG,KAAK,CAAC;IAEV,wBAAwB;IACxB,MAAM,UAAU,GAAG,iBAAiB,GAAG,UAAU,CAAC;IAElD,wBAAwB;IACxB,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAE3C,iCAAiC;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,kBAAkB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC1D,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QACzE,8CAA8C;QAC9C,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAErE,OAAO;QACL,UAAU;QACV,UAAU;QACV,SAAS;QACT,YAAY;QACZ,SAAS;KACV,CAAC;AACJ,CAAC"}
|