formulab 0.5.0 → 0.9.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 +84 -0
- package/README.md +162 -31
- package/dist/automotive/chargingLoss.d.ts +15 -0
- package/dist/automotive/chargingLoss.d.ts.map +1 -0
- package/dist/automotive/chargingLoss.js +62 -0
- package/dist/automotive/chargingLoss.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 +23 -0
- package/dist/automotive/types.d.ts.map +1 -1
- package/dist/battery/guards.d.ts +7 -0
- package/dist/battery/guards.d.ts.map +1 -0
- package/dist/battery/guards.js +17 -0
- package/dist/battery/guards.js.map +1 -0
- package/dist/battery/index.d.ts +1 -0
- package/dist/battery/index.d.ts.map +1 -1
- package/dist/battery/index.js +2 -0
- package/dist/battery/index.js.map +1 -1
- package/dist/chemical/flowControl.d.ts +14 -0
- package/dist/chemical/flowControl.d.ts.map +1 -0
- package/dist/chemical/flowControl.js +69 -0
- package/dist/chemical/flowControl.js.map +1 -0
- package/dist/chemical/guards.d.ts +17 -0
- package/dist/chemical/guards.d.ts.map +1 -0
- package/dist/chemical/guards.js +54 -0
- package/dist/chemical/guards.js.map +1 -0
- package/dist/chemical/index.d.ts +5 -1
- package/dist/chemical/index.d.ts.map +1 -1
- package/dist/chemical/index.js +5 -0
- package/dist/chemical/index.js.map +1 -1
- package/dist/chemical/pid.d.ts +14 -0
- package/dist/chemical/pid.d.ts.map +1 -0
- package/dist/chemical/pid.js +103 -0
- package/dist/chemical/pid.js.map +1 -0
- package/dist/chemical/reliefValve.d.ts +14 -0
- package/dist/chemical/reliefValve.d.ts.map +1 -0
- package/dist/chemical/reliefValve.js +98 -0
- package/dist/chemical/reliefValve.js.map +1 -0
- package/dist/chemical/types.d.ts +63 -0
- package/dist/chemical/types.d.ts.map +1 -1
- package/dist/construction/guards.d.ts +7 -0
- package/dist/construction/guards.d.ts.map +1 -0
- package/dist/construction/guards.js +31 -0
- package/dist/construction/guards.js.map +1 -0
- package/dist/construction/index.d.ts +1 -0
- package/dist/construction/index.d.ts.map +1 -1
- package/dist/construction/index.js +2 -0
- package/dist/construction/index.js.map +1 -1
- package/dist/electronics/guards.d.ts +7 -0
- package/dist/electronics/guards.d.ts.map +1 -0
- package/dist/electronics/guards.js +17 -0
- package/dist/electronics/guards.js.map +1 -0
- package/dist/electronics/index.d.ts +1 -0
- package/dist/electronics/index.d.ts.map +1 -1
- package/dist/electronics/index.js +2 -0
- package/dist/electronics/index.js.map +1 -1
- package/dist/energy/boilerEfficiency.d.ts +13 -0
- package/dist/energy/boilerEfficiency.d.ts.map +1 -0
- package/dist/energy/boilerEfficiency.js +46 -0
- package/dist/energy/boilerEfficiency.js.map +1 -0
- package/dist/energy/cusum.d.ts +15 -0
- package/dist/energy/cusum.d.ts.map +1 -0
- package/dist/energy/cusum.js +71 -0
- package/dist/energy/cusum.js.map +1 -0
- package/dist/energy/degreeDay.d.ts +13 -0
- package/dist/energy/degreeDay.d.ts.map +1 -0
- package/dist/energy/degreeDay.js +46 -0
- package/dist/energy/degreeDay.js.map +1 -0
- package/dist/energy/heatPump.d.ts +13 -0
- package/dist/energy/heatPump.d.ts.map +1 -0
- package/dist/energy/heatPump.js +48 -0
- package/dist/energy/heatPump.js.map +1 -0
- package/dist/energy/index.d.ts +9 -1
- package/dist/energy/index.d.ts.map +1 -1
- package/dist/energy/index.js +8 -0
- package/dist/energy/index.js.map +1 -1
- package/dist/energy/insulationRoi.d.ts +14 -0
- package/dist/energy/insulationRoi.d.ts.map +1 -0
- package/dist/energy/insulationRoi.js +52 -0
- package/dist/energy/insulationRoi.js.map +1 -0
- package/dist/energy/ledRoi.d.ts +14 -0
- package/dist/energy/ledRoi.d.ts.map +1 -0
- package/dist/energy/ledRoi.js +49 -0
- package/dist/energy/ledRoi.js.map +1 -0
- package/dist/energy/transformerLoss.d.ts +13 -0
- package/dist/energy/transformerLoss.d.ts.map +1 -0
- package/dist/energy/transformerLoss.js +63 -0
- package/dist/energy/transformerLoss.js.map +1 -0
- package/dist/energy/types.d.ts +168 -0
- package/dist/energy/types.d.ts.map +1 -1
- package/dist/energy/windOutput.d.ts +14 -0
- package/dist/energy/windOutput.d.ts.map +1 -0
- package/dist/energy/windOutput.js +77 -0
- package/dist/energy/windOutput.js.map +1 -0
- package/dist/food/index.d.ts +3 -1
- package/dist/food/index.d.ts.map +1 -1
- package/dist/food/index.js +2 -0
- package/dist/food/index.js.map +1 -1
- package/dist/food/stabilityStudy.d.ts +15 -0
- package/dist/food/stabilityStudy.d.ts.map +1 -0
- package/dist/food/stabilityStudy.js +92 -0
- package/dist/food/stabilityStudy.js.map +1 -0
- package/dist/food/types.d.ts +43 -0
- package/dist/food/types.d.ts.map +1 -1
- package/dist/food/waterActivity.d.ts +17 -0
- package/dist/food/waterActivity.d.ts.map +1 -0
- package/dist/food/waterActivity.js +63 -0
- package/dist/food/waterActivity.js.map +1 -0
- package/dist/logistics/abcAnalysis.d.ts +15 -0
- package/dist/logistics/abcAnalysis.d.ts.map +1 -0
- package/dist/logistics/abcAnalysis.js +101 -0
- package/dist/logistics/abcAnalysis.js.map +1 -0
- package/dist/logistics/index.d.ts +4 -1
- package/dist/logistics/index.d.ts.map +1 -1
- package/dist/logistics/index.js +3 -0
- package/dist/logistics/index.js.map +1 -1
- package/dist/logistics/inventoryTurnover.d.ts +13 -0
- package/dist/logistics/inventoryTurnover.d.ts.map +1 -0
- package/dist/logistics/inventoryTurnover.js +36 -0
- package/dist/logistics/inventoryTurnover.js.map +1 -0
- package/dist/logistics/loadCapacity.d.ts +13 -0
- package/dist/logistics/loadCapacity.d.ts.map +1 -0
- package/dist/logistics/loadCapacity.js +46 -0
- package/dist/logistics/loadCapacity.js.map +1 -0
- package/dist/logistics/types.d.ts +78 -0
- package/dist/logistics/types.d.ts.map +1 -1
- package/dist/metal/guards.d.ts +12 -0
- package/dist/metal/guards.d.ts.map +1 -0
- package/dist/metal/guards.js +36 -0
- package/dist/metal/guards.js.map +1 -0
- package/dist/metal/index.d.ts +1 -0
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.js +2 -0
- package/dist/metal/index.js.map +1 -1
- package/dist/quality/cmk.d.ts +17 -0
- package/dist/quality/cmk.d.ts.map +1 -0
- package/dist/quality/cmk.js +43 -0
- package/dist/quality/cmk.js.map +1 -0
- package/dist/quality/gageRR.d.ts +18 -0
- package/dist/quality/gageRR.d.ts.map +1 -0
- package/dist/quality/gageRR.js +110 -0
- package/dist/quality/gageRR.js.map +1 -0
- package/dist/quality/index.d.ts +5 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js +4 -0
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/paretoAnalysis.d.ts +15 -0
- package/dist/quality/paretoAnalysis.d.ts.map +1 -0
- package/dist/quality/paretoAnalysis.js +92 -0
- package/dist/quality/paretoAnalysis.js.map +1 -0
- package/dist/quality/types.d.ts +91 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/quality/weibull.d.ts +17 -0
- package/dist/quality/weibull.d.ts.map +1 -0
- package/dist/quality/weibull.js +106 -0
- package/dist/quality/weibull.js.map +1 -0
- package/dist/safety/arcFlash.d.ts +14 -0
- package/dist/safety/arcFlash.d.ts.map +1 -0
- package/dist/safety/arcFlash.js +90 -0
- package/dist/safety/arcFlash.js.map +1 -0
- package/dist/safety/confinedSpace.d.ts +15 -0
- package/dist/safety/confinedSpace.d.ts.map +1 -0
- package/dist/safety/confinedSpace.js +116 -0
- package/dist/safety/confinedSpace.js.map +1 -0
- package/dist/safety/ergonomicRisk.d.ts +9 -0
- package/dist/safety/ergonomicRisk.d.ts.map +1 -0
- package/dist/safety/ergonomicRisk.js +208 -0
- package/dist/safety/ergonomicRisk.js.map +1 -0
- package/dist/safety/illuminance.d.ts +13 -0
- package/dist/safety/illuminance.d.ts.map +1 -0
- package/dist/safety/illuminance.js +91 -0
- package/dist/safety/illuminance.js.map +1 -0
- package/dist/safety/index.d.ts +8 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +7 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/ladderAngle.d.ts +16 -0
- package/dist/safety/ladderAngle.d.ts.map +1 -0
- package/dist/safety/ladderAngle.js +87 -0
- package/dist/safety/ladderAngle.js.map +1 -0
- package/dist/safety/lel.d.ts +14 -0
- package/dist/safety/lel.d.ts.map +1 -0
- package/dist/safety/lel.js +66 -0
- package/dist/safety/lel.js.map +1 -0
- package/dist/safety/thermalComfort.d.ts +14 -0
- package/dist/safety/thermalComfort.d.ts.map +1 -0
- package/dist/safety/thermalComfort.js +96 -0
- package/dist/safety/thermalComfort.js.map +1 -0
- package/dist/safety/types.d.ts +164 -0
- package/dist/safety/types.d.ts.map +1 -1
- package/dist/utility/bilinearInterpolation.d.ts +3 -0
- package/dist/utility/bilinearInterpolation.d.ts.map +1 -0
- package/dist/utility/bilinearInterpolation.js +47 -0
- package/dist/utility/bilinearInterpolation.js.map +1 -0
- package/dist/utility/correlation.d.ts +3 -0
- package/dist/utility/correlation.d.ts.map +1 -0
- package/dist/utility/correlation.js +29 -0
- package/dist/utility/correlation.js.map +1 -0
- package/dist/utility/depreciation.d.ts +3 -0
- package/dist/utility/depreciation.d.ts.map +1 -0
- package/dist/utility/depreciation.js +57 -0
- package/dist/utility/depreciation.js.map +1 -0
- package/dist/utility/histogram.d.ts +3 -0
- package/dist/utility/histogram.d.ts.map +1 -0
- package/dist/utility/histogram.js +42 -0
- package/dist/utility/histogram.js.map +1 -0
- package/dist/utility/index.d.ts +15 -1
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/index.js +14 -0
- package/dist/utility/index.js.map +1 -1
- package/dist/utility/lcc.d.ts +3 -0
- package/dist/utility/lcc.d.ts.map +1 -0
- package/dist/utility/lcc.js +26 -0
- package/dist/utility/lcc.js.map +1 -0
- package/dist/utility/linearInterpolation.d.ts +3 -0
- package/dist/utility/linearInterpolation.d.ts.map +1 -0
- package/dist/utility/linearInterpolation.js +42 -0
- package/dist/utility/linearInterpolation.js.map +1 -0
- package/dist/utility/movingAverage.d.ts +3 -0
- package/dist/utility/movingAverage.d.ts.map +1 -0
- package/dist/utility/movingAverage.js +41 -0
- package/dist/utility/movingAverage.js.map +1 -0
- package/dist/utility/normalize.d.ts +3 -0
- package/dist/utility/normalize.d.ts.map +1 -0
- package/dist/utility/normalize.js +35 -0
- package/dist/utility/normalize.js.map +1 -0
- package/dist/utility/npv.d.ts +3 -0
- package/dist/utility/npv.d.ts.map +1 -0
- package/dist/utility/npv.js +45 -0
- package/dist/utility/npv.js.map +1 -0
- package/dist/utility/percentile.d.ts +3 -0
- package/dist/utility/percentile.d.ts.map +1 -0
- package/dist/utility/percentile.js +24 -0
- package/dist/utility/percentile.js.map +1 -0
- package/dist/utility/regression.d.ts +3 -0
- package/dist/utility/regression.d.ts.map +1 -0
- package/dist/utility/regression.js +40 -0
- package/dist/utility/regression.js.map +1 -0
- package/dist/utility/roi.d.ts +3 -0
- package/dist/utility/roi.d.ts.map +1 -0
- package/dist/utility/roi.js +19 -0
- package/dist/utility/roi.js.map +1 -0
- package/dist/utility/statistics.d.ts +3 -0
- package/dist/utility/statistics.d.ts.map +1 -0
- package/dist/utility/statistics.js +34 -0
- package/dist/utility/statistics.js.map +1 -0
- package/dist/utility/types.d.ts +213 -1
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utility/unit.d.ts.map +1 -1
- package/dist/utility/unit.js +51 -0
- package/dist/utility/unit.js.map +1 -1
- package/dist/utility/weightedScore.d.ts +3 -0
- package/dist/utility/weightedScore.d.ts.map +1 -0
- package/dist/utility/weightedScore.js +35 -0
- package/dist/utility/weightedScore.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladderAngle.d.ts","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAsEtE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
const DEG = 180 / Math.PI;
|
|
3
|
+
const RAD = Math.PI / 180;
|
|
4
|
+
/**
|
|
5
|
+
* Calculate ladder setup angle and OSHA compliance.
|
|
6
|
+
*
|
|
7
|
+
* OSHA 4:1 Rule: For every 4 feet of height, the base should be 1 foot out.
|
|
8
|
+
* This gives an ideal angle of atan(4/1) ≈ 75.96° (commonly cited as 75.5°).
|
|
9
|
+
* Compliant range: 70°–80°.
|
|
10
|
+
*
|
|
11
|
+
* Provide ladderLength and either height or baseDistance.
|
|
12
|
+
* If both height and baseDistance are provided, ladderLength is recalculated.
|
|
13
|
+
*
|
|
14
|
+
* @param input - Ladder dimensions (2 of 3 required)
|
|
15
|
+
* @returns Angle, compliance status, and warnings
|
|
16
|
+
*/
|
|
17
|
+
export function ladderAngle(input) {
|
|
18
|
+
let { ladderLength, height, baseDistance } = input;
|
|
19
|
+
const warnings = [];
|
|
20
|
+
// Resolve the third dimension from the other two
|
|
21
|
+
if (height !== undefined && baseDistance !== undefined) {
|
|
22
|
+
// Both given: recalculate ladder length
|
|
23
|
+
ladderLength = Math.sqrt(height * height + baseDistance * baseDistance);
|
|
24
|
+
}
|
|
25
|
+
else if (height !== undefined) {
|
|
26
|
+
// height + ladderLength → baseDistance
|
|
27
|
+
if (ladderLength <= height) {
|
|
28
|
+
baseDistance = 0;
|
|
29
|
+
warnings.push('Ladder length must be greater than height');
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
baseDistance = Math.sqrt(ladderLength * ladderLength - height * height);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (baseDistance !== undefined) {
|
|
36
|
+
// baseDistance + ladderLength → height
|
|
37
|
+
if (ladderLength <= baseDistance) {
|
|
38
|
+
height = 0;
|
|
39
|
+
warnings.push('Ladder length must be greater than base distance');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
height = Math.sqrt(ladderLength * ladderLength - baseDistance * baseDistance);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Neither height nor baseDistance → assume OSHA ideal angle (75.5°)
|
|
47
|
+
height = ladderLength * Math.sin(75.5 * RAD);
|
|
48
|
+
baseDistance = ladderLength * Math.cos(75.5 * RAD);
|
|
49
|
+
}
|
|
50
|
+
// Calculate angle from horizontal
|
|
51
|
+
let angle = 0;
|
|
52
|
+
if (baseDistance !== undefined && baseDistance > 0 && height !== undefined) {
|
|
53
|
+
angle = Math.atan(height / baseDistance) * DEG;
|
|
54
|
+
}
|
|
55
|
+
else if (height !== undefined && height > 0) {
|
|
56
|
+
angle = 90;
|
|
57
|
+
}
|
|
58
|
+
// Ideal base distance for OSHA 4:1 at given height
|
|
59
|
+
const idealBaseDistance = height !== undefined ? height / 4 : 0;
|
|
60
|
+
// Reach height = wall contact height + ~1m (3 feet) above contact point
|
|
61
|
+
const reachHeight = (height ?? 0) + 1.0;
|
|
62
|
+
// OSHA compliance: 70° - 80°
|
|
63
|
+
const isCompliant = angle >= 70 && angle <= 80;
|
|
64
|
+
// Generate warnings
|
|
65
|
+
if (angle < 70) {
|
|
66
|
+
warnings.push('Angle too shallow (< 70°): ladder may slide out at base');
|
|
67
|
+
}
|
|
68
|
+
else if (angle > 80) {
|
|
69
|
+
warnings.push('Angle too steep (> 80°): ladder may tip backwards');
|
|
70
|
+
}
|
|
71
|
+
if (ladderLength > 0 && (height ?? 0) > 0) {
|
|
72
|
+
if (angle >= 70 && angle <= 80 && (height ?? 0) > ladderLength * 0.97) {
|
|
73
|
+
warnings.push('Ladder may not extend sufficiently above landing surface');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
angle: roundTo(angle, 4),
|
|
78
|
+
height: roundTo(height ?? 0, 4),
|
|
79
|
+
baseDistance: roundTo(baseDistance ?? 0, 4),
|
|
80
|
+
ladderLength: roundTo(ladderLength, 4),
|
|
81
|
+
idealBaseDistance: roundTo(idealBaseDistance, 4),
|
|
82
|
+
reachHeight: roundTo(reachHeight, 4),
|
|
83
|
+
isCompliant,
|
|
84
|
+
warnings,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ladderAngle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ladderAngle.js","sourceRoot":"","sources":["../../src/safety/ladderAngle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LelInput, LelResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* LEL (Lower Explosive Limit) for Mixed Gases — Le Chatelier's Rule
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* - LEL_mix = 1 / Σ(yi / LELi)
|
|
7
|
+
* - yi = concentration_i / total_concentration (mole fraction)
|
|
8
|
+
* - %LEL = totalConcentration / LEL_mix × 100
|
|
9
|
+
*
|
|
10
|
+
* @reference Le Chatelier, H. (1891). Estimation of Firedamp by Flammability Limits.
|
|
11
|
+
* @reference NFPA 69 — Standard on Explosion Prevention Systems
|
|
12
|
+
*/
|
|
13
|
+
export declare function lel(input: LelInput): LelResult;
|
|
14
|
+
//# sourceMappingURL=lel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lel.d.ts","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CA0D9C"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* LEL (Lower Explosive Limit) for Mixed Gases — Le Chatelier's Rule
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* - LEL_mix = 1 / Σ(yi / LELi)
|
|
7
|
+
* - yi = concentration_i / total_concentration (mole fraction)
|
|
8
|
+
* - %LEL = totalConcentration / LEL_mix × 100
|
|
9
|
+
*
|
|
10
|
+
* @reference Le Chatelier, H. (1891). Estimation of Firedamp by Flammability Limits.
|
|
11
|
+
* @reference NFPA 69 — Standard on Explosion Prevention Systems
|
|
12
|
+
*/
|
|
13
|
+
export function lel(input) {
|
|
14
|
+
const { gases } = input;
|
|
15
|
+
const totalConcentration = gases.reduce((s, g) => s + g.concentration, 0);
|
|
16
|
+
if (totalConcentration === 0 || gases.length === 0) {
|
|
17
|
+
return {
|
|
18
|
+
mixtureLel: 0,
|
|
19
|
+
totalConcentration: 0,
|
|
20
|
+
percentOfLel: 0,
|
|
21
|
+
status: 'safe',
|
|
22
|
+
safetyMargin: 0,
|
|
23
|
+
contributions: gases.map(g => ({ name: g.name, fraction: 0 })),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Le Chatelier's rule: 1 / Σ(yi / LELi)
|
|
27
|
+
let sumFractionOverLel = 0;
|
|
28
|
+
const contributions = [];
|
|
29
|
+
for (const gas of gases) {
|
|
30
|
+
const yi = gas.concentration / totalConcentration;
|
|
31
|
+
if (gas.lel > 0) {
|
|
32
|
+
sumFractionOverLel += yi / gas.lel;
|
|
33
|
+
}
|
|
34
|
+
contributions.push({
|
|
35
|
+
name: gas.name,
|
|
36
|
+
fraction: roundTo(yi * 100, 2),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const mixtureLel = sumFractionOverLel > 0 ? 1 / sumFractionOverLel : 0;
|
|
40
|
+
const percentOfLel = mixtureLel > 0
|
|
41
|
+
? (totalConcentration / mixtureLel) * 100
|
|
42
|
+
: 0;
|
|
43
|
+
const safetyMargin = mixtureLel > 0
|
|
44
|
+
? mixtureLel - totalConcentration
|
|
45
|
+
: 0;
|
|
46
|
+
// Status
|
|
47
|
+
let status;
|
|
48
|
+
if (percentOfLel < 25) {
|
|
49
|
+
status = 'safe';
|
|
50
|
+
}
|
|
51
|
+
else if (percentOfLel < 50) {
|
|
52
|
+
status = 'caution';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
status = 'danger';
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
mixtureLel: roundTo(mixtureLel, 4),
|
|
59
|
+
totalConcentration: roundTo(totalConcentration, 4),
|
|
60
|
+
percentOfLel: roundTo(percentOfLel, 2),
|
|
61
|
+
status,
|
|
62
|
+
safetyMargin: roundTo(safetyMargin, 4),
|
|
63
|
+
contributions,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=lel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lel.js","sourceRoot":"","sources":["../../src/safety/lel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAE1E,IAAI,kBAAkB,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,UAAU,EAAE,CAAC;YACb,kBAAkB,EAAE,CAAC;YACrB,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,MAAM,aAAa,GAAyC,EAAE,CAAC;IAE/D,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,GAAG,kBAAkB,CAAC;QAClD,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAChB,kBAAkB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;QACrC,CAAC;QACD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC;QACjC,CAAC,CAAC,CAAC,kBAAkB,GAAG,UAAU,CAAC,GAAG,GAAG;QACzC,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC;QACjC,CAAC,CAAC,UAAU,GAAG,kBAAkB;QACjC,CAAC,CAAC,CAAC,CAAC;IAEN,SAAS;IACT,IAAI,MAA2B,CAAC;IAChC,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,MAAM;QACN,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ThermalComfortInput, ThermalComfortResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* PMV/PPD Thermal Comfort — ISO 7730 / Fanger's Model
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* - PMV = f(M, W, Icl, ta, tr, var, pa) with iterative tcl solve
|
|
7
|
+
* - PPD = 100 − 95 × exp(−0.03353×PMV⁴ − 0.2179×PMV²)
|
|
8
|
+
*
|
|
9
|
+
* @reference ISO 7730:2005 — Ergonomics of the thermal environment
|
|
10
|
+
* @reference ASHRAE Standard 55-2020
|
|
11
|
+
* @reference pythermalcomfort reference implementation
|
|
12
|
+
*/
|
|
13
|
+
export declare function thermalComfort(input: ThermalComfortInput): ThermalComfortResult;
|
|
14
|
+
//# sourceMappingURL=thermalComfort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thermalComfort.d.ts","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAkF/E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* PMV/PPD Thermal Comfort — ISO 7730 / Fanger's Model
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* - PMV = f(M, W, Icl, ta, tr, var, pa) with iterative tcl solve
|
|
7
|
+
* - PPD = 100 − 95 × exp(−0.03353×PMV⁴ − 0.2179×PMV²)
|
|
8
|
+
*
|
|
9
|
+
* @reference ISO 7730:2005 — Ergonomics of the thermal environment
|
|
10
|
+
* @reference ASHRAE Standard 55-2020
|
|
11
|
+
* @reference pythermalcomfort reference implementation
|
|
12
|
+
*/
|
|
13
|
+
export function thermalComfort(input) {
|
|
14
|
+
const { airTemp, radiantTemp, airVelocity, relativeHumidity, metabolicRate, clothingInsulation } = input;
|
|
15
|
+
const M = metabolicRate * 58.15; // W/m²
|
|
16
|
+
const W = 0;
|
|
17
|
+
const Icl = clothingInsulation * 0.155; // m²·K/W
|
|
18
|
+
const ta = airTemp;
|
|
19
|
+
const tr = radiantTemp;
|
|
20
|
+
const vel = Math.max(airVelocity, 0);
|
|
21
|
+
// Water vapor partial pressure (Pa)
|
|
22
|
+
const pa = (relativeHumidity / 100) * satVaporPressure(ta);
|
|
23
|
+
// Clothing area factor
|
|
24
|
+
const fcl = clothingInsulation <= 0.5
|
|
25
|
+
? 1.0 + 0.2 * clothingInsulation
|
|
26
|
+
: 1.05 + 0.1 * clothingInsulation;
|
|
27
|
+
// Iterative solve for clothing surface temperature
|
|
28
|
+
let tcl = (ta + tr) / 2 + 0.5; // initial guess
|
|
29
|
+
for (let i = 0; i < 200; i++) {
|
|
30
|
+
const hcn = 2.38 * Math.pow(Math.abs(tcl - ta), 0.25);
|
|
31
|
+
const hcf = 12.1 * Math.sqrt(vel);
|
|
32
|
+
const hc = Math.max(hcn, hcf);
|
|
33
|
+
const tcl_new = 35.7 - 0.028 * (M - W) - Icl * (3.96e-8 * fcl * (Math.pow(tcl + 273, 4) - Math.pow(tr + 273, 4)) +
|
|
34
|
+
fcl * hc * (tcl - ta));
|
|
35
|
+
if (Math.abs(tcl_new - tcl) < 1e-6) {
|
|
36
|
+
tcl = tcl_new;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
// damped update to prevent oscillation
|
|
40
|
+
tcl = tcl + 0.5 * (tcl_new - tcl);
|
|
41
|
+
}
|
|
42
|
+
// Final hc
|
|
43
|
+
const hcn = 2.38 * Math.pow(Math.abs(tcl - ta), 0.25);
|
|
44
|
+
const hcf = 12.1 * Math.sqrt(vel);
|
|
45
|
+
const hc = Math.max(hcn, hcf);
|
|
46
|
+
// Heat loss components
|
|
47
|
+
const hl1 = 3.05e-3 * (5733 - 6.99 * (M - W) - pa); // skin diffusion
|
|
48
|
+
const hl2 = (M - W) > 58.15 ? 0.42 * ((M - W) - 58.15) : 0; // sweating
|
|
49
|
+
const hl3 = 1.7e-5 * M * (5867 - pa); // latent respiration
|
|
50
|
+
const hl4 = 0.0014 * M * (34 - ta); // dry respiration
|
|
51
|
+
const hl5 = 3.96e-8 * fcl * (Math.pow(tcl + 273, 4) - Math.pow(tr + 273, 4)); // radiation
|
|
52
|
+
const hl6 = fcl * hc * (tcl - ta); // convection
|
|
53
|
+
// PMV
|
|
54
|
+
const ts = 0.303 * Math.exp(-0.036 * M) + 0.028;
|
|
55
|
+
const pmv = ts * ((M - W) - hl1 - hl2 - hl3 - hl4 - hl5 - hl6);
|
|
56
|
+
// PPD
|
|
57
|
+
const ppd = 100 - 95 * Math.exp(-0.03353 * Math.pow(pmv, 4) - 0.2179 * Math.pow(pmv, 2));
|
|
58
|
+
// Category
|
|
59
|
+
const absPmv = Math.abs(pmv);
|
|
60
|
+
let category;
|
|
61
|
+
if (absPmv < 0.2)
|
|
62
|
+
category = 'A';
|
|
63
|
+
else if (absPmv < 0.5)
|
|
64
|
+
category = 'B';
|
|
65
|
+
else if (absPmv < 0.7)
|
|
66
|
+
category = 'C';
|
|
67
|
+
else
|
|
68
|
+
category = 'outside';
|
|
69
|
+
// Sensation
|
|
70
|
+
let sensation;
|
|
71
|
+
if (pmv < -2.5)
|
|
72
|
+
sensation = 'cold';
|
|
73
|
+
else if (pmv < -1.5)
|
|
74
|
+
sensation = 'cool';
|
|
75
|
+
else if (pmv < -0.5)
|
|
76
|
+
sensation = 'slightly_cool';
|
|
77
|
+
else if (pmv <= 0.5)
|
|
78
|
+
sensation = 'neutral';
|
|
79
|
+
else if (pmv <= 1.5)
|
|
80
|
+
sensation = 'slightly_warm';
|
|
81
|
+
else if (pmv <= 2.5)
|
|
82
|
+
sensation = 'warm';
|
|
83
|
+
else
|
|
84
|
+
sensation = 'hot';
|
|
85
|
+
return {
|
|
86
|
+
pmv: roundTo(pmv, 2),
|
|
87
|
+
ppd: roundTo(ppd, 1),
|
|
88
|
+
category,
|
|
89
|
+
sensation,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/** Saturation vapor pressure (Pa) using Magnus formula */
|
|
93
|
+
function satVaporPressure(t) {
|
|
94
|
+
return 610.7 * Math.exp((17.269 * t) / (237.3 + t));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=thermalComfort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thermalComfort.js","sourceRoot":"","sources":["../../src/safety/thermalComfort.ts"],"names":[],"mappings":"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"}
|
package/dist/safety/types.d.ts
CHANGED
|
@@ -115,4 +115,168 @@ export interface RespiratorResult {
|
|
|
115
115
|
protectionAdequate: boolean;
|
|
116
116
|
safetyMargin: number;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Ladder Angle Calculator Types (OSHA 4:1 rule)
|
|
120
|
+
*/
|
|
121
|
+
export interface LadderAngleInput {
|
|
122
|
+
ladderLength: number;
|
|
123
|
+
height?: number;
|
|
124
|
+
baseDistance?: number;
|
|
125
|
+
}
|
|
126
|
+
export interface LadderAngleResult {
|
|
127
|
+
angle: number;
|
|
128
|
+
height: number;
|
|
129
|
+
baseDistance: number;
|
|
130
|
+
ladderLength: number;
|
|
131
|
+
idealBaseDistance: number;
|
|
132
|
+
reachHeight: number;
|
|
133
|
+
isCompliant: boolean;
|
|
134
|
+
warnings: string[];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Illuminance Calculator Types (Lumen Method)
|
|
138
|
+
*/
|
|
139
|
+
export interface IlluminanceInput {
|
|
140
|
+
roomLength: number;
|
|
141
|
+
roomWidth: number;
|
|
142
|
+
luminaireHeight: number;
|
|
143
|
+
workplaneHeight?: number;
|
|
144
|
+
targetLux: number;
|
|
145
|
+
lumensPerLuminaire: number;
|
|
146
|
+
wattsPerLuminaire?: number;
|
|
147
|
+
cu?: number;
|
|
148
|
+
mf?: number;
|
|
149
|
+
}
|
|
150
|
+
export interface IlluminanceResult {
|
|
151
|
+
fixturesNeeded: number;
|
|
152
|
+
actualLux: number;
|
|
153
|
+
roomIndex: number;
|
|
154
|
+
totalLumens: number;
|
|
155
|
+
powerDensity: number | null;
|
|
156
|
+
recommendedSpacing: number;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Thermal Comfort (PMV/PPD) Types — ISO 7730
|
|
160
|
+
*/
|
|
161
|
+
export interface ThermalComfortInput {
|
|
162
|
+
airTemp: number;
|
|
163
|
+
radiantTemp: number;
|
|
164
|
+
airVelocity: number;
|
|
165
|
+
relativeHumidity: number;
|
|
166
|
+
metabolicRate: number;
|
|
167
|
+
clothingInsulation: number;
|
|
168
|
+
}
|
|
169
|
+
export interface ThermalComfortResult {
|
|
170
|
+
pmv: number;
|
|
171
|
+
ppd: number;
|
|
172
|
+
category: 'A' | 'B' | 'C' | 'outside';
|
|
173
|
+
sensation: 'cold' | 'cool' | 'slightly_cool' | 'neutral' | 'slightly_warm' | 'warm' | 'hot';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* REBA (Rapid Entire Body Assessment) Types
|
|
177
|
+
*/
|
|
178
|
+
export interface RebaInput {
|
|
179
|
+
trunkAngle: number;
|
|
180
|
+
trunkTwisted: boolean;
|
|
181
|
+
trunkSideBent: boolean;
|
|
182
|
+
neckAngle: number;
|
|
183
|
+
neckTwisted: boolean;
|
|
184
|
+
neckSideBent: boolean;
|
|
185
|
+
legSupport: 'bilateral' | 'unilateral';
|
|
186
|
+
kneeFlexion: number;
|
|
187
|
+
upperArmAngle: number;
|
|
188
|
+
shoulderRaised: boolean;
|
|
189
|
+
armAbducted: boolean;
|
|
190
|
+
armSupported: boolean;
|
|
191
|
+
lowerArmAngle: number;
|
|
192
|
+
wristAngle: number;
|
|
193
|
+
wristTwisted: boolean;
|
|
194
|
+
load: number;
|
|
195
|
+
shockForce: boolean;
|
|
196
|
+
staticPosture: boolean;
|
|
197
|
+
repeatedSmallRange: boolean;
|
|
198
|
+
rapidLargeChange: boolean;
|
|
199
|
+
}
|
|
200
|
+
export interface RebaResult {
|
|
201
|
+
trunkScore: number;
|
|
202
|
+
neckScore: number;
|
|
203
|
+
legScore: number;
|
|
204
|
+
upperArmScore: number;
|
|
205
|
+
lowerArmScore: number;
|
|
206
|
+
wristScore: number;
|
|
207
|
+
scoreA: number;
|
|
208
|
+
scoreB: number;
|
|
209
|
+
scoreC: number;
|
|
210
|
+
rebaScore: number;
|
|
211
|
+
riskLevel: 'negligible' | 'low' | 'medium' | 'high' | 'very_high';
|
|
212
|
+
actionLevel: number;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Arc Flash Types — IEEE 1584 / NFPA 70E
|
|
216
|
+
*/
|
|
217
|
+
export interface ArcFlashInput {
|
|
218
|
+
voltage: number;
|
|
219
|
+
boltedFaultCurrent: number;
|
|
220
|
+
workingDistance: number;
|
|
221
|
+
faultClearingTime: number;
|
|
222
|
+
gapBetweenConductors: number;
|
|
223
|
+
enclosureType: 'open' | 'box' | 'mcc' | 'panel' | 'cable';
|
|
224
|
+
}
|
|
225
|
+
export interface ArcFlashResult {
|
|
226
|
+
arcCurrent: number;
|
|
227
|
+
incidentEnergy: number;
|
|
228
|
+
arcFlashBoundary: number;
|
|
229
|
+
ppeCategory: 0 | 1 | 2 | 3 | 4;
|
|
230
|
+
hazardLevel: 'safe' | 'danger' | 'extreme';
|
|
231
|
+
requiredPPE: string;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Confined Space Atmospheric Assessment Types — OSHA 29 CFR 1910.146
|
|
235
|
+
*/
|
|
236
|
+
export interface ConfinedSpaceInput {
|
|
237
|
+
oxygenPercent: number;
|
|
238
|
+
lelPercent: number;
|
|
239
|
+
h2sPpm?: number;
|
|
240
|
+
coPpm?: number;
|
|
241
|
+
customGas?: {
|
|
242
|
+
name: string;
|
|
243
|
+
concentration: number;
|
|
244
|
+
pel: number;
|
|
245
|
+
idlh: number;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
export interface ConfinedSpaceResult {
|
|
249
|
+
oxygenStatus: 'safe' | 'deficient' | 'enriched';
|
|
250
|
+
lelStatus: 'safe' | 'caution' | 'danger';
|
|
251
|
+
h2sStatus: 'safe' | 'caution' | 'danger' | 'idlh' | null;
|
|
252
|
+
coStatus: 'safe' | 'caution' | 'danger' | 'idlh' | null;
|
|
253
|
+
customGasStatus: 'safe' | 'exceeds_pel' | 'idlh' | null;
|
|
254
|
+
overallStatus: 'safe' | 'caution' | 'danger' | 'idlh';
|
|
255
|
+
entryPermitted: boolean;
|
|
256
|
+
warnings: string[];
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* LEL (Lower Explosive Limit) Mixed Gas Types — Le Chatelier's Rule
|
|
260
|
+
*/
|
|
261
|
+
export interface GasComponent {
|
|
262
|
+
name: string;
|
|
263
|
+
concentration: number;
|
|
264
|
+
lel: number;
|
|
265
|
+
}
|
|
266
|
+
export interface LelInput {
|
|
267
|
+
gases: GasComponent[];
|
|
268
|
+
temperature?: number;
|
|
269
|
+
pressure?: number;
|
|
270
|
+
}
|
|
271
|
+
export interface LelResult {
|
|
272
|
+
mixtureLel: number;
|
|
273
|
+
totalConcentration: number;
|
|
274
|
+
percentOfLel: number;
|
|
275
|
+
status: 'safe' | 'caution' | 'danger';
|
|
276
|
+
safetyMargin: number;
|
|
277
|
+
contributions: {
|
|
278
|
+
name: string;
|
|
279
|
+
fraction: number;
|
|
280
|
+
}[];
|
|
281
|
+
}
|
|
118
282
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bilinearInterpolation.d.ts","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE1F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,IAAI,CAsC3G"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
export function bilinearInterpolation(input) {
|
|
3
|
+
const { x, y, z, targetX, targetY } = input;
|
|
4
|
+
if (!x || !y || !z || x.length < 2 || y.length < 2)
|
|
5
|
+
return null;
|
|
6
|
+
if (z.length !== x.length)
|
|
7
|
+
return null;
|
|
8
|
+
for (const row of z) {
|
|
9
|
+
if (row.length !== y.length)
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const xi = findBracket(x, targetX);
|
|
13
|
+
const yi = findBracket(y, targetY);
|
|
14
|
+
const isExtrapolation = targetX < x[0] || targetX > x[x.length - 1] ||
|
|
15
|
+
targetY < y[0] || targetY > y[y.length - 1];
|
|
16
|
+
const x0 = x[xi.lower];
|
|
17
|
+
const x1 = x[xi.upper];
|
|
18
|
+
const y0 = y[yi.lower];
|
|
19
|
+
const y1 = y[yi.upper];
|
|
20
|
+
const tx = x1 === x0 ? 0 : (targetX - x0) / (x1 - x0);
|
|
21
|
+
const ty = y1 === y0 ? 0 : (targetY - y0) / (y1 - y0);
|
|
22
|
+
const q00 = z[xi.lower][yi.lower];
|
|
23
|
+
const q01 = z[xi.lower][yi.upper];
|
|
24
|
+
const q10 = z[xi.upper][yi.lower];
|
|
25
|
+
const q11 = z[xi.upper][yi.upper];
|
|
26
|
+
const value = q00 * (1 - tx) * (1 - ty) +
|
|
27
|
+
q10 * tx * (1 - ty) +
|
|
28
|
+
q01 * (1 - tx) * ty +
|
|
29
|
+
q11 * tx * ty;
|
|
30
|
+
return {
|
|
31
|
+
value: roundTo(value, 6),
|
|
32
|
+
isExtrapolation,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function findBracket(arr, target) {
|
|
36
|
+
if (target <= arr[0])
|
|
37
|
+
return { lower: 0, upper: 1 };
|
|
38
|
+
if (target >= arr[arr.length - 1])
|
|
39
|
+
return { lower: arr.length - 2, upper: arr.length - 1 };
|
|
40
|
+
for (let i = 0; i < arr.length - 1; i++) {
|
|
41
|
+
if (target >= arr[i] && target <= arr[i + 1]) {
|
|
42
|
+
return { lower: i, upper: i + 1 };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return { lower: arr.length - 2, upper: arr.length - 1 };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=bilinearInterpolation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bilinearInterpolation.js","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation.d.ts","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,IAAI,CA8B7E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
export function correlation(input) {
|
|
3
|
+
const { x, y } = input;
|
|
4
|
+
if (!x || !y || x.length !== y.length || x.length < 2)
|
|
5
|
+
return null;
|
|
6
|
+
const n = x.length;
|
|
7
|
+
const meanX = x.reduce((a, v) => a + v, 0) / n;
|
|
8
|
+
const meanY = y.reduce((a, v) => a + v, 0) / n;
|
|
9
|
+
let sumXY = 0;
|
|
10
|
+
let sumX2 = 0;
|
|
11
|
+
let sumY2 = 0;
|
|
12
|
+
for (let i = 0; i < n; i++) {
|
|
13
|
+
const dx = x[i] - meanX;
|
|
14
|
+
const dy = y[i] - meanY;
|
|
15
|
+
sumXY += dx * dy;
|
|
16
|
+
sumX2 += dx * dx;
|
|
17
|
+
sumY2 += dy * dy;
|
|
18
|
+
}
|
|
19
|
+
const denom = Math.sqrt(sumX2 * sumY2);
|
|
20
|
+
if (denom === 0)
|
|
21
|
+
return { r: 0, r2: 0, n };
|
|
22
|
+
const r = sumXY / denom;
|
|
23
|
+
return {
|
|
24
|
+
r: roundTo(r, 6),
|
|
25
|
+
r2: roundTo(r * r, 6),
|
|
26
|
+
n,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=correlation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation.js","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAE3C,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IAExB,OAAO;QACL,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depreciation.d.ts","sourceRoot":"","sources":["../../src/utility/depreciation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAyB,MAAM,YAAY,CAAC;AAE/F,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAYhF"}
|