formulab 0.1.11 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +107 -10
- package/README.md +181 -22
- package/dist/automotive/brakingDistance.d.ts +16 -0
- package/dist/automotive/brakingDistance.d.ts.map +1 -0
- package/dist/automotive/brakingDistance.js +47 -0
- package/dist/automotive/brakingDistance.js.map +1 -0
- package/dist/automotive/index.d.ts +2 -1
- package/dist/automotive/index.d.ts.map +1 -1
- package/dist/automotive/index.js +1 -0
- package/dist/automotive/index.js.map +1 -1
- package/dist/automotive/types.d.ts +16 -0
- package/dist/automotive/types.d.ts.map +1 -1
- package/dist/battery/batteryPackConfig.d.ts +10 -0
- package/dist/battery/batteryPackConfig.d.ts.map +1 -0
- package/dist/battery/batteryPackConfig.js +28 -0
- package/dist/battery/batteryPackConfig.js.map +1 -0
- package/dist/battery/bmsBalancing.d.ts +11 -0
- package/dist/battery/bmsBalancing.d.ts.map +1 -0
- package/dist/battery/bmsBalancing.js +47 -0
- package/dist/battery/bmsBalancing.js.map +1 -0
- package/dist/battery/cRate.d.ts +10 -0
- package/dist/battery/cRate.d.ts.map +1 -0
- package/dist/battery/cRate.js +29 -0
- package/dist/battery/cRate.js.map +1 -0
- package/dist/battery/chargingProfile.d.ts +11 -0
- package/dist/battery/chargingProfile.d.ts.map +1 -0
- package/dist/battery/chargingProfile.js +38 -0
- package/dist/battery/chargingProfile.js.map +1 -0
- package/dist/battery/cycleLife.d.ts +11 -0
- package/dist/battery/cycleLife.d.ts.map +1 -0
- package/dist/battery/cycleLife.js +70 -0
- package/dist/battery/cycleLife.js.map +1 -0
- package/dist/battery/energyDensity.d.ts +10 -0
- package/dist/battery/energyDensity.d.ts.map +1 -0
- package/dist/battery/energyDensity.js +20 -0
- package/dist/battery/energyDensity.js.map +1 -0
- package/dist/battery/index.d.ts +12 -0
- package/dist/battery/index.d.ts.map +1 -0
- package/dist/battery/index.js +12 -0
- package/dist/battery/index.js.map +1 -0
- package/dist/battery/internalResistance.d.ts +11 -0
- package/dist/battery/internalResistance.d.ts.map +1 -0
- package/dist/battery/internalResistance.js +18 -0
- package/dist/battery/internalResistance.js.map +1 -0
- package/dist/battery/selfDischarge.d.ts +10 -0
- package/dist/battery/selfDischarge.d.ts.map +1 -0
- package/dist/battery/selfDischarge.js +17 -0
- package/dist/battery/selfDischarge.js.map +1 -0
- package/dist/battery/stateOfHealth.d.ts +11 -0
- package/dist/battery/stateOfHealth.d.ts.map +1 -0
- package/dist/battery/stateOfHealth.js +33 -0
- package/dist/battery/stateOfHealth.js.map +1 -0
- package/dist/battery/thermalRunaway.d.ts +11 -0
- package/dist/battery/thermalRunaway.d.ts.map +1 -0
- package/dist/battery/thermalRunaway.js +28 -0
- package/dist/battery/thermalRunaway.js.map +1 -0
- package/dist/battery/types.d.ts +175 -0
- package/dist/battery/types.d.ts.map +1 -0
- package/dist/battery/types.js +5 -0
- package/dist/battery/types.js.map +1 -0
- package/dist/chemical/dilution.d.ts.map +1 -1
- package/dist/chemical/dilution.js +21 -24
- package/dist/chemical/dilution.js.map +1 -1
- package/dist/chemical/heatTransfer.d.ts +16 -0
- package/dist/chemical/heatTransfer.d.ts.map +1 -0
- package/dist/chemical/heatTransfer.js +85 -0
- package/dist/chemical/heatTransfer.js.map +1 -0
- package/dist/chemical/index.d.ts +3 -1
- package/dist/chemical/index.d.ts.map +1 -1
- package/dist/chemical/index.js +2 -0
- package/dist/chemical/index.js.map +1 -1
- package/dist/chemical/pipeFlow.d.ts +17 -0
- package/dist/chemical/pipeFlow.d.ts.map +1 -0
- package/dist/chemical/pipeFlow.js +112 -0
- package/dist/chemical/pipeFlow.js.map +1 -0
- package/dist/chemical/reactor.js +2 -2
- package/dist/chemical/reactor.js.map +1 -1
- package/dist/chemical/types.d.ts +82 -10
- package/dist/chemical/types.d.ts.map +1 -1
- package/dist/construction/index.d.ts +2 -1
- package/dist/construction/index.d.ts.map +1 -1
- package/dist/construction/index.js +1 -0
- package/dist/construction/index.js.map +1 -1
- package/dist/construction/momentOfInertia.d.ts +17 -0
- package/dist/construction/momentOfInertia.d.ts.map +1 -0
- package/dist/construction/momentOfInertia.js +204 -0
- package/dist/construction/momentOfInertia.js.map +1 -0
- package/dist/construction/pert.d.ts.map +1 -1
- package/dist/construction/pert.js +1 -17
- package/dist/construction/pert.js.map +1 -1
- package/dist/construction/types.d.ts +50 -0
- package/dist/construction/types.d.ts.map +1 -1
- package/dist/electronics/index.d.ts +2 -1
- package/dist/electronics/index.d.ts.map +1 -1
- package/dist/electronics/index.js +1 -0
- package/dist/electronics/index.js.map +1 -1
- package/dist/electronics/ohmsLaw.d.ts +12 -0
- package/dist/electronics/ohmsLaw.d.ts.map +1 -0
- package/dist/electronics/ohmsLaw.js +69 -0
- package/dist/electronics/ohmsLaw.js.map +1 -0
- package/dist/electronics/types.d.ts +24 -0
- package/dist/electronics/types.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.js +2 -1
- package/dist/energy/carbonFootprint.js.map +1 -1
- package/dist/energy/index.d.ts +2 -1
- package/dist/energy/index.d.ts.map +1 -1
- package/dist/energy/index.js +1 -0
- package/dist/energy/index.js.map +1 -1
- package/dist/energy/powerCost.d.ts.map +1 -1
- package/dist/energy/powerCost.js +2 -1
- package/dist/energy/powerCost.js.map +1 -1
- package/dist/energy/solarOutput.d.ts +14 -0
- package/dist/energy/solarOutput.d.ts.map +1 -0
- package/dist/energy/solarOutput.js +54 -0
- package/dist/energy/solarOutput.js.map +1 -0
- package/dist/energy/types.d.ts +20 -0
- package/dist/energy/types.d.ts.map +1 -1
- package/dist/environmental/emissionsIntensity.d.ts +11 -0
- package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
- package/dist/environmental/emissionsIntensity.js +26 -0
- package/dist/environmental/emissionsIntensity.js.map +1 -0
- package/dist/environmental/energyIntensity.d.ts +11 -0
- package/dist/environmental/energyIntensity.d.ts.map +1 -0
- package/dist/environmental/energyIntensity.js +19 -0
- package/dist/environmental/energyIntensity.js.map +1 -0
- package/dist/environmental/esgSummary.d.ts +11 -0
- package/dist/environmental/esgSummary.d.ts.map +1 -0
- package/dist/environmental/esgSummary.js +39 -0
- package/dist/environmental/esgSummary.js.map +1 -0
- package/dist/environmental/gwpCalculator.d.ts +11 -0
- package/dist/environmental/gwpCalculator.d.ts.map +1 -0
- package/dist/environmental/gwpCalculator.js +31 -0
- package/dist/environmental/gwpCalculator.js.map +1 -0
- package/dist/environmental/index.d.ts +12 -0
- package/dist/environmental/index.d.ts.map +1 -0
- package/dist/environmental/index.js +12 -0
- package/dist/environmental/index.js.map +1 -0
- package/dist/environmental/productCarbonFootprint.d.ts +11 -0
- package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
- package/dist/environmental/productCarbonFootprint.js +29 -0
- package/dist/environmental/productCarbonFootprint.js.map +1 -0
- package/dist/environmental/scope1Emissions.d.ts +11 -0
- package/dist/environmental/scope1Emissions.d.ts.map +1 -0
- package/dist/environmental/scope1Emissions.js +35 -0
- package/dist/environmental/scope1Emissions.js.map +1 -0
- package/dist/environmental/scope2Emissions.d.ts +11 -0
- package/dist/environmental/scope2Emissions.d.ts.map +1 -0
- package/dist/environmental/scope2Emissions.js +49 -0
- package/dist/environmental/scope2Emissions.js.map +1 -0
- package/dist/environmental/scope3Emissions.d.ts +11 -0
- package/dist/environmental/scope3Emissions.d.ts.map +1 -0
- package/dist/environmental/scope3Emissions.js +36 -0
- package/dist/environmental/scope3Emissions.js.map +1 -0
- package/dist/environmental/types.d.ts +165 -0
- package/dist/environmental/types.d.ts.map +1 -0
- package/dist/environmental/types.js +5 -0
- package/dist/environmental/types.js.map +1 -0
- package/dist/environmental/vocEmissions.d.ts +11 -0
- package/dist/environmental/vocEmissions.d.ts.map +1 -0
- package/dist/environmental/vocEmissions.js +23 -0
- package/dist/environmental/vocEmissions.js.map +1 -0
- package/dist/environmental/waterFootprint.d.ts +11 -0
- package/dist/environmental/waterFootprint.d.ts.map +1 -0
- package/dist/environmental/waterFootprint.js +21 -0
- package/dist/environmental/waterFootprint.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/logistics/cbm.d.ts +7 -2
- package/dist/logistics/cbm.d.ts.map +1 -1
- package/dist/logistics/cbm.js +7 -2
- package/dist/logistics/cbm.js.map +1 -1
- package/dist/logistics/fillRate.d.ts.map +1 -1
- package/dist/logistics/fillRate.js +1 -17
- package/dist/logistics/fillRate.js.map +1 -1
- package/dist/logistics/safetyStock.d.ts.map +1 -1
- package/dist/logistics/safetyStock.js +2 -55
- package/dist/logistics/safetyStock.js.map +1 -1
- package/dist/machining/boltCircle.d.ts +16 -0
- package/dist/machining/boltCircle.d.ts.map +1 -0
- package/dist/machining/boltCircle.js +36 -0
- package/dist/machining/boltCircle.js.map +1 -0
- package/dist/machining/boringBarDeflection.d.ts +17 -0
- package/dist/machining/boringBarDeflection.d.ts.map +1 -0
- package/dist/machining/boringBarDeflection.js +54 -0
- package/dist/machining/boringBarDeflection.js.map +1 -0
- package/dist/machining/cuspHeight.d.ts +15 -0
- package/dist/machining/cuspHeight.d.ts.map +1 -0
- package/dist/machining/cuspHeight.js +23 -0
- package/dist/machining/cuspHeight.js.map +1 -0
- package/dist/machining/cycleTimeEstimator.d.ts +18 -0
- package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
- package/dist/machining/cycleTimeEstimator.js +62 -0
- package/dist/machining/cycleTimeEstimator.js.map +1 -0
- package/dist/machining/effectiveDiameter.d.ts +17 -0
- package/dist/machining/effectiveDiameter.d.ts.map +1 -0
- package/dist/machining/effectiveDiameter.js +24 -0
- package/dist/machining/effectiveDiameter.js.map +1 -0
- package/dist/machining/gaugeBlockStack.d.ts +16 -0
- package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
- package/dist/machining/gaugeBlockStack.js +138 -0
- package/dist/machining/gaugeBlockStack.js.map +1 -0
- package/dist/machining/index.d.ts +14 -0
- package/dist/machining/index.d.ts.map +1 -0
- package/dist/machining/index.js +14 -0
- package/dist/machining/index.js.map +1 -0
- package/dist/machining/radialChipThinning.d.ts +18 -0
- package/dist/machining/radialChipThinning.d.ts.map +1 -0
- package/dist/machining/radialChipThinning.js +30 -0
- package/dist/machining/radialChipThinning.js.map +1 -0
- package/dist/machining/sineBarHeight.d.ts +16 -0
- package/dist/machining/sineBarHeight.d.ts.map +1 -0
- package/dist/machining/sineBarHeight.js +32 -0
- package/dist/machining/sineBarHeight.js.map +1 -0
- package/dist/machining/threadOverWires.d.ts +21 -0
- package/dist/machining/threadOverWires.d.ts.map +1 -0
- package/dist/machining/threadOverWires.js +54 -0
- package/dist/machining/threadOverWires.js.map +1 -0
- package/dist/machining/toolDeflection.d.ts +16 -0
- package/dist/machining/toolDeflection.d.ts.map +1 -0
- package/dist/machining/toolDeflection.js +36 -0
- package/dist/machining/toolDeflection.js.map +1 -0
- package/dist/machining/triangleSolver.d.ts +21 -0
- package/dist/machining/triangleSolver.d.ts.map +1 -0
- package/dist/machining/triangleSolver.js +120 -0
- package/dist/machining/triangleSolver.js.map +1 -0
- package/dist/machining/truePosition.d.ts +19 -0
- package/dist/machining/truePosition.d.ts.map +1 -0
- package/dist/machining/truePosition.js +44 -0
- package/dist/machining/truePosition.js.map +1 -0
- package/dist/machining/types.d.ts +201 -0
- package/dist/machining/types.d.ts.map +1 -0
- package/dist/machining/types.js +2 -0
- package/dist/machining/types.js.map +1 -0
- package/dist/math.d.ts +26 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +95 -0
- package/dist/math.js.map +1 -0
- package/dist/metal/bendAllowance.d.ts.map +1 -1
- package/dist/metal/bendAllowance.js +2 -1
- package/dist/metal/bendAllowance.js.map +1 -1
- package/dist/metal/bolt.d.ts.map +1 -1
- package/dist/metal/bolt.js +3 -3
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/flangeSpec.d.ts +10 -0
- package/dist/metal/flangeSpec.d.ts.map +1 -0
- package/dist/metal/flangeSpec.js +81 -0
- package/dist/metal/flangeSpec.js.map +1 -0
- package/dist/metal/index.d.ts +4 -1
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.js +3 -0
- package/dist/metal/index.js.map +1 -1
- package/dist/metal/materialGradeConverter.d.ts +10 -0
- package/dist/metal/materialGradeConverter.d.ts.map +1 -0
- package/dist/metal/materialGradeConverter.js +78 -0
- package/dist/metal/materialGradeConverter.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +13 -3
- package/dist/metal/metalWeight.d.ts.map +1 -1
- package/dist/metal/metalWeight.js +24 -35
- package/dist/metal/metalWeight.js.map +1 -1
- package/dist/metal/pipeSpec.d.ts +10 -0
- package/dist/metal/pipeSpec.d.ts.map +1 -0
- package/dist/metal/pipeSpec.js +96 -0
- package/dist/metal/pipeSpec.js.map +1 -0
- package/dist/metal/roughness.js +1 -1
- package/dist/metal/roughness.js.map +1 -1
- package/dist/metal/types.d.ts +86 -13
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +1 -1
- package/dist/metal/weldHeat.js.map +1 -1
- package/dist/metal/welding.d.ts.map +1 -1
- package/dist/metal/welding.js +3 -2
- package/dist/metal/welding.js.map +1 -1
- package/dist/quality/controlChart.d.ts +26 -0
- package/dist/quality/controlChart.d.ts.map +1 -0
- package/dist/quality/controlChart.js +216 -0
- package/dist/quality/controlChart.js.map +1 -0
- package/dist/quality/cpk.d.ts +16 -4
- package/dist/quality/cpk.d.ts.map +1 -1
- package/dist/quality/cpk.js +16 -4
- package/dist/quality/cpk.js.map +1 -1
- package/dist/quality/dpmo.d.ts.map +1 -1
- package/dist/quality/dpmo.js +1 -61
- package/dist/quality/dpmo.js.map +1 -1
- package/dist/quality/index.d.ts +2 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js +1 -0
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/oee.d.ts +12 -1
- package/dist/quality/oee.d.ts.map +1 -1
- package/dist/quality/oee.js +21 -9
- package/dist/quality/oee.js.map +1 -1
- package/dist/quality/ppk.d.ts.map +1 -1
- package/dist/quality/ppk.js +1 -16
- package/dist/quality/ppk.js.map +1 -1
- package/dist/quality/ppm.d.ts.map +1 -1
- package/dist/quality/ppm.js +1 -80
- package/dist/quality/ppm.js.map +1 -1
- package/dist/quality/types.d.ts +31 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +5 -4
- package/dist/safety/fallClearance.js.map +1 -1
- package/dist/safety/index.d.ts +2 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/nioshLifting.d.ts +19 -10
- package/dist/safety/nioshLifting.d.ts.map +1 -1
- package/dist/safety/nioshLifting.js +19 -10
- package/dist/safety/nioshLifting.js.map +1 -1
- package/dist/safety/types.d.ts +19 -0
- package/dist/safety/types.d.ts.map +1 -1
- package/dist/safety/ventilationRate.d.ts +12 -0
- package/dist/safety/ventilationRate.d.ts.map +1 -0
- package/dist/safety/ventilationRate.js +71 -0
- package/dist/safety/ventilationRate.js.map +1 -0
- package/dist/utility/index.d.ts +1 -1
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/types.d.ts +0 -16
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utils.d.ts +3 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -4
- package/dist/utils.js.map +1 -1
- package/package.json +34 -3
- package/dist/utility/qrcode.d.ts +0 -30
- package/dist/utility/qrcode.d.ts.map +0 -1
- package/dist/utility/qrcode.js +0 -30
- package/dist/utility/qrcode.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Ohm's Law Calculator — V = I × R, P = V × I
|
|
4
|
+
*
|
|
5
|
+
* Solves for any one of voltage, current, resistance, or power
|
|
6
|
+
* given the other two known quantities.
|
|
7
|
+
*
|
|
8
|
+
* @param input - discriminated union by `solveFor`
|
|
9
|
+
* @returns all four electrical quantities
|
|
10
|
+
*/
|
|
11
|
+
export function ohmsLaw(input) {
|
|
12
|
+
let voltage;
|
|
13
|
+
let current;
|
|
14
|
+
let resistance;
|
|
15
|
+
let power;
|
|
16
|
+
switch (input.solveFor) {
|
|
17
|
+
case 'voltage': {
|
|
18
|
+
current = input.current;
|
|
19
|
+
resistance = input.resistance;
|
|
20
|
+
if (current <= 0)
|
|
21
|
+
throw new Error('Current must be positive');
|
|
22
|
+
if (resistance <= 0)
|
|
23
|
+
throw new Error('Resistance must be positive');
|
|
24
|
+
voltage = current * resistance;
|
|
25
|
+
power = voltage * current;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case 'current': {
|
|
29
|
+
voltage = input.voltage;
|
|
30
|
+
resistance = input.resistance;
|
|
31
|
+
if (voltage < 0)
|
|
32
|
+
throw new Error('Voltage must be non-negative');
|
|
33
|
+
if (resistance <= 0)
|
|
34
|
+
throw new Error('Resistance must be positive');
|
|
35
|
+
current = voltage / resistance;
|
|
36
|
+
power = voltage * current;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case 'resistance': {
|
|
40
|
+
voltage = input.voltage;
|
|
41
|
+
current = input.current;
|
|
42
|
+
if (voltage < 0)
|
|
43
|
+
throw new Error('Voltage must be non-negative');
|
|
44
|
+
if (current <= 0)
|
|
45
|
+
throw new Error('Current must be positive');
|
|
46
|
+
resistance = voltage / current;
|
|
47
|
+
power = voltage * current;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case 'power': {
|
|
51
|
+
voltage = input.voltage;
|
|
52
|
+
current = input.current;
|
|
53
|
+
if (voltage < 0)
|
|
54
|
+
throw new Error('Voltage must be non-negative');
|
|
55
|
+
if (current <= 0)
|
|
56
|
+
throw new Error('Current must be positive');
|
|
57
|
+
resistance = voltage / current;
|
|
58
|
+
power = voltage * current;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
voltage: roundTo(voltage, 4),
|
|
64
|
+
current: roundTo(current, 6),
|
|
65
|
+
resistance: roundTo(resistance, 4),
|
|
66
|
+
power: roundTo(power, 4),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ohmsLaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohmsLaw.js","sourceRoot":"","sources":["../../src/electronics/ohmsLaw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,IAAI,OAAe,CAAC;IACpB,IAAI,OAAe,CAAC;IACpB,IAAI,UAAkB,CAAC;IACvB,IAAI,KAAa,CAAC;IAElB,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAC9B,IAAI,OAAO,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9D,IAAI,UAAU,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACpE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;YAC/B,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAC9B,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACjE,IAAI,UAAU,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACpE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;YAC/B,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACjE,IAAI,OAAO,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9D,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;YAC/B,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACjE,IAAI,OAAO,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9D,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;YAC/B,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;YAC1B,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -129,6 +129,30 @@ export interface StencilResult {
|
|
|
129
129
|
recommendedAspectRatio: number;
|
|
130
130
|
status: 'good' | 'marginal' | 'poor';
|
|
131
131
|
}
|
|
132
|
+
export type OhmsLawSolveFor = 'voltage' | 'current' | 'resistance' | 'power';
|
|
133
|
+
export type OhmsLawInput = {
|
|
134
|
+
solveFor: 'voltage';
|
|
135
|
+
current: number;
|
|
136
|
+
resistance: number;
|
|
137
|
+
} | {
|
|
138
|
+
solveFor: 'current';
|
|
139
|
+
voltage: number;
|
|
140
|
+
resistance: number;
|
|
141
|
+
} | {
|
|
142
|
+
solveFor: 'resistance';
|
|
143
|
+
voltage: number;
|
|
144
|
+
current: number;
|
|
145
|
+
} | {
|
|
146
|
+
solveFor: 'power';
|
|
147
|
+
voltage: number;
|
|
148
|
+
current: number;
|
|
149
|
+
};
|
|
150
|
+
export interface OhmsLawResult {
|
|
151
|
+
voltage: number;
|
|
152
|
+
current: number;
|
|
153
|
+
resistance: number;
|
|
154
|
+
power: number;
|
|
155
|
+
}
|
|
132
156
|
export interface ViaInput {
|
|
133
157
|
holeDiameter: number;
|
|
134
158
|
platingThickness: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/electronics/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/electronics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbonFootprint.d.ts","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"carbonFootprint.d.ts","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQ9E;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA4BlF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
1
2
|
// Constants for environmental equivalents
|
|
2
3
|
// Average tree absorbs ~21.76 kg CO2 per year (EPA estimate)
|
|
3
4
|
const KG_CO2_PER_TREE_PER_YEAR = 21.76;
|
|
@@ -29,7 +30,7 @@ export function carbonFootprint(input) {
|
|
|
29
30
|
const co2Kg = (electricityUsage * emissionFactor) / 1000;
|
|
30
31
|
const co2Tonnes = co2Kg / 1000;
|
|
31
32
|
// Calculate environmental equivalents
|
|
32
|
-
const treesEquivalent =
|
|
33
|
+
const treesEquivalent = roundTo(co2Kg / KG_CO2_PER_TREE_PER_YEAR, 0);
|
|
33
34
|
const carsEquivalent = co2Kg / KG_CO2_PER_CAR_PER_YEAR;
|
|
34
35
|
return {
|
|
35
36
|
co2Kg,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbonFootprint.js","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"carbonFootprint.js","sourceRoot":"","sources":["../../src/energy/carbonFootprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,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,OAAO,CAAC,KAAK,GAAG,wBAAwB,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,KAAK,GAAG,uBAAuB,CAAC;IAEvD,OAAO;QACL,KAAK;QACL,SAAS;QACT,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC"}
|
package/dist/energy/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
export { solarOutput } from './solarOutput.js';
|
|
1
2
|
export { carbonFootprint } from './carbonFootprint.js';
|
|
2
3
|
export { compressedAirCost } from './compressedAirCost.js';
|
|
3
4
|
export { motorEfficiency } from './motorEfficiency.js';
|
|
4
5
|
export { pfCorrection } from './pfCorrection.js';
|
|
5
6
|
export { powerCost } from './powerCost.js';
|
|
6
7
|
export { vfdSavings } from './vfdSavings.js';
|
|
7
|
-
export type { CarbonFootprintInput, CarbonFootprintResult, CompressedAirCostInput, CompressedAirCostResult, MotorEfficiencyInput, MotorEfficiencyResult, PfCorrectionInput, PfCorrectionResult, PowerCostInput, PowerCostResult, VfdSavingsInput, VfdSavingsResult, } from './types.js';
|
|
8
|
+
export type { SolarOutputInput, SolarOutputResult, CarbonFootprintInput, CarbonFootprintResult, CompressedAirCostInput, CompressedAirCostResult, MotorEfficiencyInput, MotorEfficiencyResult, PfCorrectionInput, PfCorrectionResult, PowerCostInput, PowerCostResult, VfdSavingsInput, VfdSavingsResult, } from './types.js';
|
|
8
9
|
//# 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,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"}
|
|
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"}
|
package/dist/energy/index.js
CHANGED
package/dist/energy/index.js.map
CHANGED
|
@@ -1 +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"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerCost.d.ts","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"powerCost.d.ts","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAqChE"}
|
package/dist/energy/powerCost.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
1
2
|
/**
|
|
2
3
|
* Calculate power cost including energy, demand, power factor penalty, and fixed charges
|
|
3
4
|
*
|
|
@@ -20,7 +21,7 @@ export function powerCost(input) {
|
|
|
20
21
|
let pfPenalty = 0;
|
|
21
22
|
if (powerFactor < pfPenaltyThreshold && pfPenaltyRate > 0) {
|
|
22
23
|
// Number of 0.01 steps below threshold
|
|
23
|
-
const stepsBelow =
|
|
24
|
+
const stepsBelow = roundTo((pfPenaltyThreshold - powerFactor) / 0.01, 0);
|
|
24
25
|
// Penalty is applied to energy + demand costs
|
|
25
26
|
pfPenalty = stepsBelow * pfPenaltyRate * (energyCost + demandCost);
|
|
26
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerCost.js","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"powerCost.js","sourceRoot":"","sources":["../../src/energy/powerCost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;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,OAAO,CAAC,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SolarOutputInput, SolarOutputResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Solar Panel Output Calculator (PVWatts-based estimation)
|
|
4
|
+
*
|
|
5
|
+
* Estimates daily/monthly/annual energy production from a photovoltaic system.
|
|
6
|
+
* Uses simplified NREL PVWatts methodology with tilt and azimuth corrections.
|
|
7
|
+
*
|
|
8
|
+
* Reference: NREL PVWatts Calculator methodology
|
|
9
|
+
*
|
|
10
|
+
* @param input - panel specs, sun hours, orientation
|
|
11
|
+
* @returns energy production estimates
|
|
12
|
+
*/
|
|
13
|
+
export declare function solarOutput(input: SolarOutputInput): SolarOutputResult;
|
|
14
|
+
//# sourceMappingURL=solarOutput.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Solar Panel Output Calculator (PVWatts-based estimation)
|
|
4
|
+
*
|
|
5
|
+
* Estimates daily/monthly/annual energy production from a photovoltaic system.
|
|
6
|
+
* Uses simplified NREL PVWatts methodology with tilt and azimuth corrections.
|
|
7
|
+
*
|
|
8
|
+
* Reference: NREL PVWatts Calculator methodology
|
|
9
|
+
*
|
|
10
|
+
* @param input - panel specs, sun hours, orientation
|
|
11
|
+
* @returns energy production estimates
|
|
12
|
+
*/
|
|
13
|
+
export function solarOutput(input) {
|
|
14
|
+
const { panelWattage, panelCount, peakSunHours, systemEfficiency, tiltAngle, latitude, azimuthOffset, } = input;
|
|
15
|
+
if (panelWattage <= 0)
|
|
16
|
+
throw new Error('Panel wattage must be positive');
|
|
17
|
+
if (panelCount <= 0)
|
|
18
|
+
throw new Error('Panel count must be positive');
|
|
19
|
+
if (peakSunHours <= 0)
|
|
20
|
+
throw new Error('Peak sun hours must be positive');
|
|
21
|
+
if (systemEfficiency <= 0 || systemEfficiency > 1)
|
|
22
|
+
throw new Error('System efficiency must be between 0 and 1');
|
|
23
|
+
// System size in kW
|
|
24
|
+
const systemSizeKw = (panelWattage * panelCount) / 1000;
|
|
25
|
+
// Tilt efficiency factor
|
|
26
|
+
// Optimal tilt ≈ latitude (simplified PVWatts model)
|
|
27
|
+
// Deviation from optimal reduces output by ~cos(deviation)
|
|
28
|
+
const optimalTilt = Math.abs(latitude);
|
|
29
|
+
const tiltDeviation = Math.abs(tiltAngle - optimalTilt);
|
|
30
|
+
// For every degree off optimal, roughly 0.5% loss (simplified)
|
|
31
|
+
// But cap at cos-based model
|
|
32
|
+
const tiltDeviationRad = (tiltDeviation * Math.PI) / 180;
|
|
33
|
+
const tiltFactor = Math.max(0.5, Math.cos(tiltDeviationRad * 0.5));
|
|
34
|
+
// Azimuth efficiency (0° = due south in northern hemisphere)
|
|
35
|
+
// Every degree off south reduces by ~cos(azimuth) for large offsets
|
|
36
|
+
const azimuthRad = (Math.abs(azimuthOffset) * Math.PI) / 180;
|
|
37
|
+
const azimuthFactor = Math.max(0.5, Math.cos(azimuthRad * 0.6));
|
|
38
|
+
const tiltEfficiency = tiltFactor * azimuthFactor;
|
|
39
|
+
// Daily output = system size (kW) × PSH × system efficiency × tilt efficiency
|
|
40
|
+
const dailyOutputKwh = systemSizeKw * peakSunHours * systemEfficiency * tiltEfficiency;
|
|
41
|
+
const monthlyOutputKwh = dailyOutputKwh * 30;
|
|
42
|
+
const annualOutputKwh = dailyOutputKwh * 365;
|
|
43
|
+
// Capacity factor = actual output / theoretical max (24h at rated power)
|
|
44
|
+
const capacityFactor = dailyOutputKwh / (systemSizeKw * 24);
|
|
45
|
+
return {
|
|
46
|
+
systemSizeKw: roundTo(systemSizeKw, 2),
|
|
47
|
+
dailyOutputKwh: roundTo(dailyOutputKwh, 2),
|
|
48
|
+
monthlyOutputKwh: roundTo(monthlyOutputKwh, 1),
|
|
49
|
+
annualOutputKwh: roundTo(annualOutputKwh, 0),
|
|
50
|
+
capacityFactor: roundTo(capacityFactor, 4),
|
|
51
|
+
tiltEfficiency: roundTo(tiltEfficiency, 4),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=solarOutput.js.map
|
|
@@ -0,0 +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"}
|
package/dist/energy/types.d.ts
CHANGED
|
@@ -90,6 +90,26 @@ export interface PfCorrectionResult {
|
|
|
90
90
|
annualSavings: number;
|
|
91
91
|
paybackMonths: number;
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Solar Output Calculator Types (PVWatts-based)
|
|
95
|
+
*/
|
|
96
|
+
export interface SolarOutputInput {
|
|
97
|
+
panelWattage: number;
|
|
98
|
+
panelCount: number;
|
|
99
|
+
peakSunHours: number;
|
|
100
|
+
systemEfficiency: number;
|
|
101
|
+
tiltAngle: number;
|
|
102
|
+
latitude: number;
|
|
103
|
+
azimuthOffset: number;
|
|
104
|
+
}
|
|
105
|
+
export interface SolarOutputResult {
|
|
106
|
+
systemSizeKw: number;
|
|
107
|
+
dailyOutputKwh: number;
|
|
108
|
+
monthlyOutputKwh: number;
|
|
109
|
+
annualOutputKwh: number;
|
|
110
|
+
capacityFactor: number;
|
|
111
|
+
tiltEfficiency: number;
|
|
112
|
+
}
|
|
93
113
|
/**
|
|
94
114
|
* VFD (Variable Frequency Drive) Savings Calculator Types
|
|
95
115
|
*/
|
|
@@ -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,11 @@
|
|
|
1
|
+
import type { EmissionsIntensityInput, EmissionsIntensityResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate emissions intensity across multiple metrics
|
|
4
|
+
*
|
|
5
|
+
* @formula kg/unit, kg/USD, kg/employee
|
|
6
|
+
* @reference GHG Protocol, CDP
|
|
7
|
+
* @param input - Total CO2 and normalization denominators
|
|
8
|
+
* @returns Emissions intensity per unit, revenue, and/or employee
|
|
9
|
+
*/
|
|
10
|
+
export declare function emissionsIntensity(input: EmissionsIntensityInput): EmissionsIntensityResult;
|
|
11
|
+
//# sourceMappingURL=emissionsIntensity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emissionsIntensity.d.ts","sourceRoot":"","sources":["../../src/environmental/emissionsIntensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAoB3F"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate emissions intensity across multiple metrics
|
|
4
|
+
*
|
|
5
|
+
* @formula kg/unit, kg/USD, kg/employee
|
|
6
|
+
* @reference GHG Protocol, CDP
|
|
7
|
+
* @param input - Total CO2 and normalization denominators
|
|
8
|
+
* @returns Emissions intensity per unit, revenue, and/or employee
|
|
9
|
+
*/
|
|
10
|
+
export function emissionsIntensity(input) {
|
|
11
|
+
const { totalCo2Kg, productionUnits, revenueUsd, employees } = input;
|
|
12
|
+
const kgPerUnit = productionUnits != null && productionUnits > 0
|
|
13
|
+
? roundTo(totalCo2Kg / productionUnits, 4)
|
|
14
|
+
: undefined;
|
|
15
|
+
const kgPerRevenue = revenueUsd != null && revenueUsd > 0
|
|
16
|
+
? roundTo(totalCo2Kg / revenueUsd, 6)
|
|
17
|
+
: undefined;
|
|
18
|
+
const kgPerEmployee = employees != null && employees > 0
|
|
19
|
+
? roundTo(totalCo2Kg / employees, 2)
|
|
20
|
+
: undefined;
|
|
21
|
+
const tonnesPerMillionUsd = revenueUsd != null && revenueUsd > 0
|
|
22
|
+
? roundTo((totalCo2Kg / 1000) / (revenueUsd / 1000000), 2)
|
|
23
|
+
: undefined;
|
|
24
|
+
return { kgPerUnit, kgPerRevenue, kgPerEmployee, tonnesPerMillionUsd };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=emissionsIntensity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emissionsIntensity.js","sourceRoot":"","sources":["../../src/environmental/emissionsIntensity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAErE,MAAM,SAAS,GAAG,eAAe,IAAI,IAAI,IAAI,eAAe,GAAG,CAAC;QAC9D,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,YAAY,GAAG,UAAU,IAAI,IAAI,IAAI,UAAU,GAAG,CAAC;QACvD,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,aAAa,GAAG,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC;QACtD,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,mBAAmB,GAAG,UAAU,IAAI,IAAI,IAAI,UAAU,GAAG,CAAC;QAC9D,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EnergyIntensityInput, EnergyIntensityResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate energy intensity (energy per unit of production or revenue)
|
|
4
|
+
*
|
|
5
|
+
* @formula MJ/unit = totalMJ / units, kWh/unit = MJ/unit / 3.6
|
|
6
|
+
* @reference ISO 50001 Energy Management
|
|
7
|
+
* @param input - Total energy, production units, optional revenue
|
|
8
|
+
* @returns Energy intensity in MJ/unit, kWh/unit, and optionally MJ/USD
|
|
9
|
+
*/
|
|
10
|
+
export declare function energyIntensity(input: EnergyIntensityInput): EnergyIntensityResult;
|
|
11
|
+
//# sourceMappingURL=energyIntensity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"energyIntensity.d.ts","sourceRoot":"","sources":["../../src/environmental/energyIntensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAUlF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate energy intensity (energy per unit of production or revenue)
|
|
4
|
+
*
|
|
5
|
+
* @formula MJ/unit = totalMJ / units, kWh/unit = MJ/unit / 3.6
|
|
6
|
+
* @reference ISO 50001 Energy Management
|
|
7
|
+
* @param input - Total energy, production units, optional revenue
|
|
8
|
+
* @returns Energy intensity in MJ/unit, kWh/unit, and optionally MJ/USD
|
|
9
|
+
*/
|
|
10
|
+
export function energyIntensity(input) {
|
|
11
|
+
const { totalEnergyMJ, productionUnits, revenueUsd } = input;
|
|
12
|
+
const mjPerUnit = roundTo(totalEnergyMJ / productionUnits, 4);
|
|
13
|
+
const kwhPerUnit = roundTo(mjPerUnit / 3.6, 4);
|
|
14
|
+
const mjPerRevenue = revenueUsd != null && revenueUsd > 0
|
|
15
|
+
? roundTo(totalEnergyMJ / revenueUsd, 4)
|
|
16
|
+
: undefined;
|
|
17
|
+
return { mjPerUnit, kwhPerUnit, mjPerRevenue };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=energyIntensity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"energyIntensity.js","sourceRoot":"","sources":["../../src/environmental/energyIntensity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,IAAI,IAAI,IAAI,UAAU,GAAG,CAAC;QACvD,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EsgSummaryInput, EsgSummaryResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate ESG reporting summary (emissions reduction tracking)
|
|
4
|
+
*
|
|
5
|
+
* @formula reduction% = (baseline - current) / baseline × 100
|
|
6
|
+
* @reference TCFD, CDP, SBTi
|
|
7
|
+
* @param input - Baseline, current, and target emissions data
|
|
8
|
+
* @returns Reduction progress, annual rate, and on-track status
|
|
9
|
+
*/
|
|
10
|
+
export declare function esgSummary(input: EsgSummaryInput): EsgSummaryResult;
|
|
11
|
+
//# sourceMappingURL=esgSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esgSummary.d.ts","sourceRoot":"","sources":["../../src/environmental/esgSummary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA6CnE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate ESG reporting summary (emissions reduction tracking)
|
|
4
|
+
*
|
|
5
|
+
* @formula reduction% = (baseline - current) / baseline × 100
|
|
6
|
+
* @reference TCFD, CDP, SBTi
|
|
7
|
+
* @param input - Baseline, current, and target emissions data
|
|
8
|
+
* @returns Reduction progress, annual rate, and on-track status
|
|
9
|
+
*/
|
|
10
|
+
export function esgSummary(input) {
|
|
11
|
+
const { baselineYear, baselineCo2Tonnes, currentYear, currentCo2Tonnes, targetYear, targetCo2Tonnes, } = input;
|
|
12
|
+
const reductionTonnes = roundTo(baselineCo2Tonnes - currentCo2Tonnes, 2);
|
|
13
|
+
const reductionPercent = roundTo((reductionTonnes / baselineCo2Tonnes) * 100, 2);
|
|
14
|
+
const yearsElapsed = currentYear - baselineYear;
|
|
15
|
+
const annualRatePercent = yearsElapsed > 0
|
|
16
|
+
? roundTo(reductionPercent / yearsElapsed, 2)
|
|
17
|
+
: 0;
|
|
18
|
+
const yearsRemaining = targetYear - currentYear;
|
|
19
|
+
// Required annual reduction rate to reach target
|
|
20
|
+
const remainingReductionNeeded = currentCo2Tonnes - targetCo2Tonnes;
|
|
21
|
+
const remainingReductionPercent = (remainingReductionNeeded / baselineCo2Tonnes) * 100;
|
|
22
|
+
const requiredAnnualRate = yearsRemaining > 0
|
|
23
|
+
? roundTo(remainingReductionPercent / yearsRemaining, 2)
|
|
24
|
+
: 0;
|
|
25
|
+
// Project current trend to target year
|
|
26
|
+
const annualReduction = yearsElapsed > 0 ? reductionTonnes / yearsElapsed : 0;
|
|
27
|
+
const projectedCo2Tonnes = roundTo(currentCo2Tonnes - (annualReduction * yearsRemaining), 2);
|
|
28
|
+
const onTrack = annualRatePercent >= requiredAnnualRate || currentCo2Tonnes <= targetCo2Tonnes;
|
|
29
|
+
return {
|
|
30
|
+
reductionPercent,
|
|
31
|
+
reductionTonnes,
|
|
32
|
+
annualRatePercent,
|
|
33
|
+
requiredAnnualRate,
|
|
34
|
+
onTrack,
|
|
35
|
+
yearsRemaining,
|
|
36
|
+
projectedCo2Tonnes,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=esgSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esgSummary.js","sourceRoot":"","sources":["../../src/environmental/esgSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EACJ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,eAAe,GAAG,iBAAiB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;IAChD,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;IAEhD,iDAAiD;IACjD,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,eAAe,CAAC;IACpE,MAAM,yBAAyB,GAAG,CAAC,wBAAwB,GAAG,iBAAiB,CAAC,GAAG,GAAG,CAAC;IACvF,MAAM,kBAAkB,GAAG,cAAc,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,yBAAyB,GAAG,cAAc,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC,CAAC;IAEN,uCAAuC;IACvC,MAAM,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,OAAO,CAChC,gBAAgB,GAAG,CAAC,eAAe,GAAG,cAAc,CAAC,EACrD,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,iBAAiB,IAAI,kBAAkB,IAAI,gBAAgB,IAAI,eAAe,CAAC;IAE/F,OAAO;QACL,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,kBAAkB;QAClB,OAAO;QACP,cAAc;QACd,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GwpCalculatorInput, GwpCalculatorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert greenhouse gas emissions to CO2 equivalent using GWP factors
|
|
4
|
+
*
|
|
5
|
+
* @formula CO2eq = quantity × GWP factor
|
|
6
|
+
* @reference IPCC AR6 (2021)
|
|
7
|
+
* @param input - Gas type, quantity, and time horizon
|
|
8
|
+
* @returns CO2 equivalent in kg and tonnes
|
|
9
|
+
*/
|
|
10
|
+
export declare function gwpCalculator(input: GwpCalculatorInput): GwpCalculatorResult;
|
|
11
|
+
//# sourceMappingURL=gwpCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gwpCalculator.d.ts","sourceRoot":"","sources":["../../src/environmental/gwpCalculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAiBlG;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAQ5E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Global Warming Potential factors
|
|
4
|
+
* @reference IPCC AR6 (2021), WGI Table 7.SM.7
|
|
5
|
+
*/
|
|
6
|
+
const GWP_TABLE = {
|
|
7
|
+
CO2: { GWP20: 1, GWP100: 1, GWP500: 1 },
|
|
8
|
+
CH4: { GWP20: 82.5, GWP100: 29.8, GWP500: 7.6 },
|
|
9
|
+
N2O: { GWP20: 273, GWP100: 273, GWP500: 130 },
|
|
10
|
+
HFC134a: { GWP20: 4144, GWP100: 1526, GWP500: 436 },
|
|
11
|
+
HFC152a: { GWP20: 591, GWP100: 164, GWP500: 44 },
|
|
12
|
+
SF6: { GWP20: 18300, GWP100: 25200, GWP500: 34100 },
|
|
13
|
+
NF3: { GWP20: 13400, GWP100: 17400, GWP500: 20700 },
|
|
14
|
+
CF4: { GWP20: 5300, GWP100: 7380, GWP500: 10600 },
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Convert greenhouse gas emissions to CO2 equivalent using GWP factors
|
|
18
|
+
*
|
|
19
|
+
* @formula CO2eq = quantity × GWP factor
|
|
20
|
+
* @reference IPCC AR6 (2021)
|
|
21
|
+
* @param input - Gas type, quantity, and time horizon
|
|
22
|
+
* @returns CO2 equivalent in kg and tonnes
|
|
23
|
+
*/
|
|
24
|
+
export function gwpCalculator(input) {
|
|
25
|
+
const { gas, quantityKg, timeHorizon = 'GWP100' } = input;
|
|
26
|
+
const gwpFactor = GWP_TABLE[gas][timeHorizon];
|
|
27
|
+
const co2eqKg = roundTo(quantityKg * gwpFactor, 2);
|
|
28
|
+
const co2eqTonnes = roundTo(co2eqKg / 1000, 4);
|
|
29
|
+
return { co2eqKg, co2eqTonnes, gwpFactor, gas, timeHorizon };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=gwpCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gwpCalculator.js","sourceRoot":"","sources":["../../src/environmental/gwpCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,SAAS,GAAmD;IAChE,GAAG,EAAM,EAAE,KAAK,EAAE,CAAC,EAAM,MAAM,EAAE,CAAC,EAAM,MAAM,EAAE,CAAC,EAAE;IACnD,GAAG,EAAM,EAAE,KAAK,EAAE,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,GAAG,EAAE;IACrD,GAAG,EAAM,EAAE,KAAK,EAAE,GAAG,EAAI,MAAM,EAAE,GAAG,EAAI,MAAM,EAAE,GAAG,EAAE;IACrD,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,GAAG,EAAE;IACrD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAI,MAAM,EAAE,GAAG,EAAI,MAAM,EAAE,EAAE,EAAE;IACpD,GAAG,EAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IACvD,GAAG,EAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IACvD,GAAG,EAAM,EAAE,KAAK,EAAE,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,EAAE,KAAK,EAAE;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE1D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAE/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { FuelType, GhgGas, GridRegion, Scope3Category, WaterType, Scope1EmissionsInput, Scope1EmissionsResult, Scope2EmissionsInput, Scope2EmissionsResult, Scope3EmissionsInput, Scope3EmissionsResult, VocEmissionsInput, VocEmissionsResult, LifecycleStage, ProductCarbonFootprintInput, ProductCarbonFootprintResult, GwpTimeHorizon, GwpCalculatorInput, GwpCalculatorResult, EnergyIntensityInput, EnergyIntensityResult, WaterFootprintInput, WaterFootprintResult, EmissionsIntensityInput, EmissionsIntensityResult, EsgSummaryInput, EsgSummaryResult, } from './types.js';
|
|
2
|
+
export { scope1Emissions } from './scope1Emissions.js';
|
|
3
|
+
export { scope2Emissions } from './scope2Emissions.js';
|
|
4
|
+
export { scope3Emissions } from './scope3Emissions.js';
|
|
5
|
+
export { vocEmissions } from './vocEmissions.js';
|
|
6
|
+
export { productCarbonFootprint } from './productCarbonFootprint.js';
|
|
7
|
+
export { gwpCalculator } from './gwpCalculator.js';
|
|
8
|
+
export { energyIntensity } from './energyIntensity.js';
|
|
9
|
+
export { waterFootprint } from './waterFootprint.js';
|
|
10
|
+
export { emissionsIntensity } from './emissionsIntensity.js';
|
|
11
|
+
export { esgSummary } from './esgSummary.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/environmental/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,2BAA2B,EAC3B,4BAA4B,EAC5B,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Functions
|
|
2
|
+
export { scope1Emissions } from './scope1Emissions.js';
|
|
3
|
+
export { scope2Emissions } from './scope2Emissions.js';
|
|
4
|
+
export { scope3Emissions } from './scope3Emissions.js';
|
|
5
|
+
export { vocEmissions } from './vocEmissions.js';
|
|
6
|
+
export { productCarbonFootprint } from './productCarbonFootprint.js';
|
|
7
|
+
export { gwpCalculator } from './gwpCalculator.js';
|
|
8
|
+
export { energyIntensity } from './energyIntensity.js';
|
|
9
|
+
export { waterFootprint } from './waterFootprint.js';
|
|
10
|
+
export { emissionsIntensity } from './emissionsIntensity.js';
|
|
11
|
+
export { esgSummary } from './esgSummary.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/environmental/index.ts"],"names":[],"mappings":"AA+BA,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProductCarbonFootprintInput, ProductCarbonFootprintResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate product carbon footprint across lifecycle stages
|
|
4
|
+
*
|
|
5
|
+
* @formula total = Σ stages, perUnit = total / quantity
|
|
6
|
+
* @reference ISO 14067, PAS 2050
|
|
7
|
+
* @param input - Lifecycle stages with CO2 and production quantity
|
|
8
|
+
* @returns Total and per-unit carbon footprint with stage breakdown
|
|
9
|
+
*/
|
|
10
|
+
export declare function productCarbonFootprint(input: ProductCarbonFootprintInput): ProductCarbonFootprintResult;
|
|
11
|
+
//# sourceMappingURL=productCarbonFootprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productCarbonFootprint.d.ts","sourceRoot":"","sources":["../../src/environmental/productCarbonFootprint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE5F;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,4BAA4B,CAyBvG"}
|