@woosh/meep-engine 2.129.4 → 2.131.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/package.json +1 -1
- package/src/core/collection/queue/Deque.d.ts +4 -0
- package/src/core/color/illuminant/D65_spd_analytical.d.ts +12 -0
- package/src/core/color/illuminant/D65_spd_analytical.d.ts.map +1 -0
- package/src/core/color/illuminant/D65_spd_analytical.js +70 -0
- package/src/core/color/illuminant/D65_spd_tabulated.d.ts +13 -0
- package/src/core/color/illuminant/D65_spd_tabulated.d.ts.map +1 -0
- package/src/core/color/illuminant/D65_spd_tabulated.js +105 -0
- package/src/core/color/sRGB/sRGB_cmf.d.ts +11 -0
- package/src/core/color/sRGB/sRGB_cmf.d.ts.map +1 -0
- package/src/core/color/sRGB/sRGB_cmf.js +22 -0
- package/src/core/color/xyz/xyz_cmf_tabulated.d.ts +22 -0
- package/src/core/color/xyz/xyz_cmf_tabulated.d.ts.map +1 -0
- package/src/core/color/xyz/xyz_cmf_tabulated.js +212 -0
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts +13 -0
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts.map +1 -0
- package/src/core/color/xyz/xyz_cmf_wyman.js +65 -0
- package/src/core/color/xyz/xyz_to_rgb.d.ts +3 -3
- package/src/core/color/xyz/xyz_to_rgb.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_to_rgb.js +2 -2
- package/src/core/math/complex/complex_add.d.ts +8 -0
- package/src/core/math/complex/complex_add.d.ts.map +1 -0
- package/src/core/math/complex/complex_add.js +11 -0
- package/src/core/math/complex/complex_div.d.ts +8 -0
- package/src/core/math/complex/complex_div.d.ts.map +1 -0
- package/src/core/math/complex/complex_div.js +12 -0
- package/src/core/math/complex/complex_mul.d.ts +8 -0
- package/src/core/math/complex/complex_mul.d.ts.map +1 -0
- package/src/core/math/complex/complex_mul.js +10 -0
- package/src/core/math/complex/complex_sub.d.ts +8 -0
- package/src/core/math/complex/complex_sub.d.ts.map +1 -0
- package/src/core/math/complex/complex_sub.js +10 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD.d.ts +40 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD.d.ts.map +1 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD.js +124 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.d.ts +168 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.d.ts.map +1 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.js +163 -0
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts +18 -0
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -0
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.js +151 -0
- package/src/core/math/physics/mie/compute_lorenz_mie_optical_properties.d.ts +12 -0
- package/src/core/math/physics/mie/compute_lorenz_mie_optical_properties.d.ts.map +1 -0
- package/src/core/math/physics/mie/compute_lorenz_mie_optical_properties.js +363 -0
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts +15 -0
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -0
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.js +148 -0
- package/src/core/math/physics/mie/ri_air.d.ts +7 -0
- package/src/core/math/physics/mie/ri_air.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_air.js +69 -0
- package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts +7 -0
- package/src/core/math/physics/mie/ri_ammonium_sulfate.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_ammonium_sulfate.js +140 -0
- package/src/core/math/physics/mie/ri_brine.d.ts +7 -0
- package/src/core/math/physics/mie/ri_brine.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_brine.js +145 -0
- package/src/core/math/physics/mie/ri_dust.d.ts +7 -0
- package/src/core/math/physics/mie/ri_dust.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_dust.js +153 -0
- package/src/core/math/physics/mie/ri_pollen.d.ts +7 -0
- package/src/core/math/physics/mie/ri_pollen.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_pollen.js +146 -0
- package/src/core/math/physics/mie/ri_smoke.d.ts +7 -0
- package/src/core/math/physics/mie/ri_smoke.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_smoke.js +151 -0
- package/src/core/math/physics/mie/ri_soot.d.ts +7 -0
- package/src/core/math/physics/mie/ri_soot.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_soot.js +148 -0
- package/src/core/math/physics/mie/ri_water.d.ts +7 -0
- package/src/core/math/physics/mie/ri_water.d.ts.map +1 -0
- package/src/core/math/physics/mie/ri_water.js +148 -0
- package/src/core/model/node-graph/node/NodeInstancePortReference.d.ts.map +1 -1
- package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -0
- package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.js +28 -19
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +1 -1
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts +2 -2
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.js +9 -9
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.js +3 -3
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter.js +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ri_air.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/mie/ri_air.js"],"names":[],"mappings":"AA4DA;;;;GAIG;AACH,+BAHW,MAAM,EAAE,iBACR,MAAM,QAKhB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ParameterLookupTable
|
|
3
|
+
} from "../../../../engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Values for standard air (15°C, 1 atm, 450 ppm CO₂)
|
|
7
|
+
*/
|
|
8
|
+
const AIR_REFRACTION_INDEX_LUT = ParameterLookupTable.from(
|
|
9
|
+
2, // number of columns in the table [n, k]
|
|
10
|
+
// RI lookup data (n, k) for standard air across UV to long-wave IR
|
|
11
|
+
[
|
|
12
|
+
// UV (short-wave)
|
|
13
|
+
1.0003280, 0.0, // 200nm
|
|
14
|
+
1.0003070, 0.0, // 250nm
|
|
15
|
+
1.0002930, 0.0, // 300nm
|
|
16
|
+
1.0002850, 0.0, // 350nm
|
|
17
|
+
// Visible baseline (kept from previous table for continuity)
|
|
18
|
+
1.0002801, 0.0, // 400nm
|
|
19
|
+
1.0002785, 0.0, // 450nm
|
|
20
|
+
1.0002773, 0.0, // 500nm
|
|
21
|
+
1.0002765, 0.0, // 550nm
|
|
22
|
+
1.0002759, 0.0, // 600nm
|
|
23
|
+
1.0002755, 0.0, // 650nm
|
|
24
|
+
1.0002751, 0.0, // 700nm
|
|
25
|
+
// Near-IR to long-wave IR
|
|
26
|
+
1.0002747, 0.0, // 800nm
|
|
27
|
+
1.0002740, 0.0, // 900nm
|
|
28
|
+
1.0002734, 0.0, // 1000nm (1µm)
|
|
29
|
+
1.0002720, 0.0, // 1500nm (1.5µm)
|
|
30
|
+
1.0002710, 0.0, // 2000nm (2µm)
|
|
31
|
+
1.0002700, 0.0, // 3000nm (3µm)
|
|
32
|
+
1.0002690, 0.0, // 5000nm (5µm)
|
|
33
|
+
1.0002685, 0.0, // 10000nm (10µm)
|
|
34
|
+
1.0002682, 0.0 // 20000nm (20µm)
|
|
35
|
+
],
|
|
36
|
+
// lookup positions, in nanometers
|
|
37
|
+
[
|
|
38
|
+
200,
|
|
39
|
+
250,
|
|
40
|
+
300,
|
|
41
|
+
350,
|
|
42
|
+
400,
|
|
43
|
+
450,
|
|
44
|
+
500,
|
|
45
|
+
550,
|
|
46
|
+
600,
|
|
47
|
+
650,
|
|
48
|
+
700,
|
|
49
|
+
800,
|
|
50
|
+
900,
|
|
51
|
+
1000,
|
|
52
|
+
1500,
|
|
53
|
+
2000,
|
|
54
|
+
3000,
|
|
55
|
+
5000,
|
|
56
|
+
10000,
|
|
57
|
+
20000
|
|
58
|
+
]
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* ☁️ AIR (Medium)
|
|
63
|
+
* @param {number[]} result complex number, refraction index
|
|
64
|
+
* @param {number} wavelength_nm in nanometers
|
|
65
|
+
*/
|
|
66
|
+
export function ri_air(result, wavelength_nm) {
|
|
67
|
+
// can effectively be assumed [1,0] but we're being more precise
|
|
68
|
+
AIR_REFRACTION_INDEX_LUT.sample(wavelength_nm, result);
|
|
69
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🌫️ Ammonium sulfate (continental haze surrogate)
|
|
3
|
+
* @param {number[]} result complex number, refraction index
|
|
4
|
+
* @param {number} wavelength_nm in nanometers
|
|
5
|
+
*/
|
|
6
|
+
export function ri_ammonium_sulfate(result: number[], wavelength_nm: number): void;
|
|
7
|
+
//# sourceMappingURL=ri_ammonium_sulfate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ri_ammonium_sulfate.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/mie/ri_ammonium_sulfate.js"],"names":[],"mappings":"AAoIA;;;;GAIG;AACH,4CAHW,MAAM,EAAE,iBACR,MAAM,QAIhB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ParameterLookupTable
|
|
3
|
+
} from "../../../../engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Ammonium sulfate aerosol ("(NH4)2SO4") complex refractive index m = n + i k, wavelength in nm.
|
|
7
|
+
* Assumptions: dry crystalline aerosol surrogate for continental haze; ~300 K; morphology not modeled.
|
|
8
|
+
* Guidance/sources (composite, smoothed for Mie with linear interpolation):
|
|
9
|
+
* - Toon, Pollack & Khare (1976); d'Almeida et al. (1991); Hess et al. (1998, OPAC) — visible/NIR anchors (n≈1.52, k≈0).
|
|
10
|
+
* - Palmer & Williams (1975) optical constants compendium; Querry (1985/1991) — UV and MIR/LWIR band behavior.
|
|
11
|
+
* Notes:
|
|
12
|
+
* - In the visible, k is extremely small (≈1e-6–1e-5). We use small nonzero values to avoid divide-by-zero corner cases.
|
|
13
|
+
* - MIR bands associated with sulfate and ammonium groups raise k around ~3 µm (weak) and ~7–10 µm (stronger).
|
|
14
|
+
* - Coverage: 200–20,000 nm; denser sampling near MIR bands.
|
|
15
|
+
*/
|
|
16
|
+
const AMMONIUM_SULFATE_REFRACTION_INDEX_LUT = ParameterLookupTable.from(
|
|
17
|
+
2, // [n, k]
|
|
18
|
+
[
|
|
19
|
+
// UV (short-wave) — increasing absorption
|
|
20
|
+
1.560, 2.0e-2, // 200 nm
|
|
21
|
+
1.550, 8.0e-3, // 220 nm
|
|
22
|
+
1.545, 3.5e-3, // 240 nm
|
|
23
|
+
1.540, 1.5e-3, // 260 nm
|
|
24
|
+
1.535, 8.0e-4, // 280 nm
|
|
25
|
+
1.532, 3.5e-4, // 300 nm
|
|
26
|
+
1.530, 2.0e-4, // 320 nm
|
|
27
|
+
1.528, 1.2e-4, // 340 nm
|
|
28
|
+
1.5265, 8.0e-5, // 360 nm
|
|
29
|
+
1.5255, 6.0e-5, // 380 nm
|
|
30
|
+
// Visible (very low absorption; n≈1.52)
|
|
31
|
+
1.5250, 5.0e-5, // 400 nm
|
|
32
|
+
1.5245, 3.0e-5, // 450 nm
|
|
33
|
+
1.5240, 2.0e-5, // 500 nm
|
|
34
|
+
1.5235, 2.0e-5, // 550 nm
|
|
35
|
+
1.5230, 2.0e-5, // 600 nm
|
|
36
|
+
1.5225, 2.0e-5, // 650 nm
|
|
37
|
+
1.5220, 2.0e-5, // 700 nm
|
|
38
|
+
// NIR/SWIR (0.7–2.5 µm): still tiny k; slight dispersion in n
|
|
39
|
+
1.5218, 2.0e-5, // 750 nm
|
|
40
|
+
1.5215, 2.0e-5, // 800 nm
|
|
41
|
+
1.5210, 3.0e-5, // 900 nm
|
|
42
|
+
1.5205, 4.0e-5, // 1000 nm
|
|
43
|
+
1.5200, 4.5e-5, // 1064 nm
|
|
44
|
+
1.5195, 6.0e-5, // 1200 nm
|
|
45
|
+
1.5190, 8.0e-5, // 1300 nm
|
|
46
|
+
1.5185, 1.6e-4, // 1450 nm
|
|
47
|
+
1.5180, 1.3e-4, // 1550 nm
|
|
48
|
+
1.5178, 1.2e-4, // 1650 nm
|
|
49
|
+
1.5175, 1.2e-4, // 1750 nm
|
|
50
|
+
1.5172, 1.8e-4, // 1940 nm
|
|
51
|
+
1.5170, 1.8e-4, // 2000 nm
|
|
52
|
+
1.5165, 2.2e-4, // 2200 nm
|
|
53
|
+
1.5160, 2.8e-4, // 2400 nm
|
|
54
|
+
1.5158, 3.0e-4, // 2500 nm
|
|
55
|
+
// Mid-IR (2.7–5 µm): weak-to-moderate absorption near 3 µm
|
|
56
|
+
1.5155, 6.0e-4, // 2700 nm
|
|
57
|
+
1.5150, 1.5e-3, // 2900 nm
|
|
58
|
+
1.5145, 3.5e-3, // 3000 nm
|
|
59
|
+
1.5140, 5.0e-3, // 3100 nm
|
|
60
|
+
1.5135, 6.0e-3, // 3200 nm
|
|
61
|
+
1.5130, 6.5e-3, // 3300 nm
|
|
62
|
+
1.5125, 6.0e-3, // 3500 nm
|
|
63
|
+
1.5120, 4.0e-3, // 3700 nm
|
|
64
|
+
1.5115, 2.5e-3, // 4000 nm
|
|
65
|
+
1.5110, 1.6e-3, // 4500 nm
|
|
66
|
+
1.5105, 1.2e-3, // 5000 nm
|
|
67
|
+
// Long-wave IR (5–20 µm): strong sulfate bands ~7–10 µm
|
|
68
|
+
1.5100, 4.0e-3, // 6000 nm
|
|
69
|
+
1.5100, 8.0e-3, // 7000 nm
|
|
70
|
+
1.5105, 1.8e-2, // 8000 nm
|
|
71
|
+
1.5110, 3.5e-2, // 9000 nm
|
|
72
|
+
1.5120, 5.5e-2, // 10000 nm (10 µm)
|
|
73
|
+
1.5140, 3.5e-2, // 12000 nm
|
|
74
|
+
1.5160, 1.5e-2, // 15000 nm
|
|
75
|
+
1.5180, 8.0e-3, // 20000 nm
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
200,
|
|
79
|
+
220,
|
|
80
|
+
240,
|
|
81
|
+
260,
|
|
82
|
+
280,
|
|
83
|
+
300,
|
|
84
|
+
320,
|
|
85
|
+
340,
|
|
86
|
+
360,
|
|
87
|
+
380,
|
|
88
|
+
400,
|
|
89
|
+
450,
|
|
90
|
+
500,
|
|
91
|
+
550,
|
|
92
|
+
600,
|
|
93
|
+
650,
|
|
94
|
+
700,
|
|
95
|
+
750,
|
|
96
|
+
800,
|
|
97
|
+
900,
|
|
98
|
+
1000,
|
|
99
|
+
1064,
|
|
100
|
+
1200,
|
|
101
|
+
1300,
|
|
102
|
+
1450,
|
|
103
|
+
1550,
|
|
104
|
+
1650,
|
|
105
|
+
1750,
|
|
106
|
+
1940,
|
|
107
|
+
2000,
|
|
108
|
+
2200,
|
|
109
|
+
2400,
|
|
110
|
+
2500,
|
|
111
|
+
2700,
|
|
112
|
+
2900,
|
|
113
|
+
3000,
|
|
114
|
+
3100,
|
|
115
|
+
3200,
|
|
116
|
+
3300,
|
|
117
|
+
3500,
|
|
118
|
+
3700,
|
|
119
|
+
4000,
|
|
120
|
+
4500,
|
|
121
|
+
5000,
|
|
122
|
+
6000,
|
|
123
|
+
7000,
|
|
124
|
+
8000,
|
|
125
|
+
9000,
|
|
126
|
+
10000,
|
|
127
|
+
12000,
|
|
128
|
+
15000,
|
|
129
|
+
20000
|
|
130
|
+
]
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* 🌫️ Ammonium sulfate (continental haze surrogate)
|
|
135
|
+
* @param {number[]} result complex number, refraction index
|
|
136
|
+
* @param {number} wavelength_nm in nanometers
|
|
137
|
+
*/
|
|
138
|
+
export function ri_ammonium_sulfate(result, wavelength_nm) {
|
|
139
|
+
AMMONIUM_SULFATE_REFRACTION_INDEX_LUT.sample(wavelength_nm, result);
|
|
140
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🌊 Sea-salt (brine) — maritime haze surrogate
|
|
3
|
+
* @param {number[]} result complex number, refraction index
|
|
4
|
+
* @param {number} wavelength_nm in nanometers
|
|
5
|
+
*/
|
|
6
|
+
export function ri_brine(result: number[], wavelength_nm: number): void;
|
|
7
|
+
//# sourceMappingURL=ri_brine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ri_brine.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/mie/ri_brine.js"],"names":[],"mappings":"AAyIA;;;;GAIG;AACH,iCAHW,MAAM,EAAE,iBACR,MAAM,QAIhB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ParameterLookupTable
|
|
3
|
+
} from "../../../../engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Sea-salt aerosol (deliquesced brine) complex refractive index m = n + i k, wavelength in nm.
|
|
7
|
+
* Assumptions: maritime haze surrogate; aqueous brine droplet at ~300 K; morphology not modeled.
|
|
8
|
+
* Guidance/sources (composite, smoothed):
|
|
9
|
+
* - Refractive index of seawater/brine in visible n≈1.37–1.40 (dependent on salinity and wavelength).
|
|
10
|
+
* - Hale & Querry (1973) water bands for k behavior in IR; salt slightly perturbs n, k remains water-like.
|
|
11
|
+
* - Querry NaCl for dry-salt context; here we target deliquesced brine typical for haze.
|
|
12
|
+
* Notes:
|
|
13
|
+
* - Visible k is extremely small; we use tiny nonzero values for numerical stability.
|
|
14
|
+
* - MIR/LWIR follow water band structure but with slightly different n baseline.
|
|
15
|
+
* - Coverage: 200–20,000 nm; denser near 3 µm and 6–10 µm regions.
|
|
16
|
+
*/
|
|
17
|
+
const SEASALT_BRINE_REFRACTION_INDEX_LUT = ParameterLookupTable.from(
|
|
18
|
+
2, // [n, k]
|
|
19
|
+
[
|
|
20
|
+
// UV (short-wave)
|
|
21
|
+
1.4100, 2.0e-4, // 200 nm (strong UV absorption relative to visible)
|
|
22
|
+
1.4000, 6.0e-5, // 220 nm
|
|
23
|
+
1.3950, 2.0e-5, // 240 nm
|
|
24
|
+
1.3900, 8.0e-6, // 260 nm
|
|
25
|
+
1.3860, 3.0e-6, // 280 nm
|
|
26
|
+
1.3820, 1.2e-6, // 300 nm
|
|
27
|
+
1.3795, 8.0e-7, // 320 nm
|
|
28
|
+
1.3775, 5.0e-7, // 340 nm
|
|
29
|
+
1.3760, 3.0e-7, // 360 nm
|
|
30
|
+
1.3750, 2.0e-7, // 380 nm
|
|
31
|
+
// Visible (400–700 nm): n≈1.38–1.39, very small k
|
|
32
|
+
1.3745, 1.5e-7, // 400 nm
|
|
33
|
+
1.3738, 1.2e-7, // 450 nm
|
|
34
|
+
1.3730, 1.0e-7, // 500 nm
|
|
35
|
+
1.3725, 1.0e-7, // 550 nm
|
|
36
|
+
1.3720, 1.2e-7, // 600 nm
|
|
37
|
+
1.3718, 1.5e-7, // 650 nm
|
|
38
|
+
1.3715, 2.0e-7, // 700 nm
|
|
39
|
+
// NIR/SWIR (0.7–2.5 µm): weak absorption until ~970/1450/1940 nm bands
|
|
40
|
+
1.3712, 3.0e-7, // 750 nm
|
|
41
|
+
1.3710, 4.0e-7, // 800 nm
|
|
42
|
+
1.3705, 1.2e-6, // 900 nm
|
|
43
|
+
1.3700, 3.5e-6, // 950 nm
|
|
44
|
+
1.3695, 1.5e-5, // 970 nm
|
|
45
|
+
1.3690, 8.0e-6, // 1000 nm
|
|
46
|
+
1.3685, 3.0e-6, // 1064 nm
|
|
47
|
+
1.3678, 4.5e-5, // 1200 nm
|
|
48
|
+
1.3672, 1.8e-4, // 1300 nm
|
|
49
|
+
1.3660, 1.2e-3, // 1450 nm
|
|
50
|
+
1.3650, 2.0e-4, // 1550 nm
|
|
51
|
+
1.3640, 4.5e-4, // 1650 nm
|
|
52
|
+
1.3630, 1.8e-3, // 1750 nm
|
|
53
|
+
1.3610, 1.2e-2, // 1940 nm
|
|
54
|
+
1.3600, 6.0e-3, // 2000 nm
|
|
55
|
+
1.3580, 2.0e-3, // 2200 nm
|
|
56
|
+
1.3560, 9.0e-4, // 2400 nm
|
|
57
|
+
1.3550, 6.0e-4, // 2500 nm
|
|
58
|
+
// Mid-IR (2.5–5 µm) — OH stretch complex 2.9–3.2 µm
|
|
59
|
+
1.3520, 1.0e-2, // 2700 nm
|
|
60
|
+
1.3480, 8.0e-2, // 2900 nm
|
|
61
|
+
1.3460, 3.5e-1, // 3000 nm
|
|
62
|
+
1.3430, 9.0e-1, // 3100 nm
|
|
63
|
+
1.3400, 1.5e+0, // 3200 nm
|
|
64
|
+
1.3380, 1.2e+0, // 3300 nm
|
|
65
|
+
1.3350, 7.0e-1, // 3500 nm
|
|
66
|
+
1.3320, 3.5e-1, // 3700 nm
|
|
67
|
+
1.3290, 1.8e-1, // 4000 nm
|
|
68
|
+
1.3260, 9.0e-2, // 4500 nm
|
|
69
|
+
1.3240, 6.0e-2, // 5000 nm
|
|
70
|
+
// Long-wave IR (5–20 µm): elevated k due to vibrational modes
|
|
71
|
+
1.3200, 1.8e-1, // 6000 nm
|
|
72
|
+
1.3180, 3.5e-1, // 7000 nm
|
|
73
|
+
1.3160, 7.0e-1, // 8000 nm
|
|
74
|
+
1.3140, 9.0e-1, // 9000 nm
|
|
75
|
+
1.3125, 1.1e+0, // 10000 nm
|
|
76
|
+
1.3110, 9.0e-1, // 12000 nm
|
|
77
|
+
1.3095, 7.0e-1, // 15000 nm
|
|
78
|
+
1.3080, 5.5e-1, // 20000 nm
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
200,
|
|
82
|
+
220,
|
|
83
|
+
240,
|
|
84
|
+
260,
|
|
85
|
+
280,
|
|
86
|
+
300,
|
|
87
|
+
320,
|
|
88
|
+
340,
|
|
89
|
+
360,
|
|
90
|
+
380,
|
|
91
|
+
400,
|
|
92
|
+
450,
|
|
93
|
+
500,
|
|
94
|
+
550,
|
|
95
|
+
600,
|
|
96
|
+
650,
|
|
97
|
+
700,
|
|
98
|
+
750,
|
|
99
|
+
800,
|
|
100
|
+
900,
|
|
101
|
+
950,
|
|
102
|
+
970,
|
|
103
|
+
1000,
|
|
104
|
+
1064,
|
|
105
|
+
1200,
|
|
106
|
+
1300,
|
|
107
|
+
1450,
|
|
108
|
+
1550,
|
|
109
|
+
1650,
|
|
110
|
+
1750,
|
|
111
|
+
1940,
|
|
112
|
+
2000,
|
|
113
|
+
2200,
|
|
114
|
+
2400,
|
|
115
|
+
2500,
|
|
116
|
+
2700,
|
|
117
|
+
2900,
|
|
118
|
+
3000,
|
|
119
|
+
3100,
|
|
120
|
+
3200,
|
|
121
|
+
3300,
|
|
122
|
+
3500,
|
|
123
|
+
3700,
|
|
124
|
+
4000,
|
|
125
|
+
4500,
|
|
126
|
+
5000,
|
|
127
|
+
6000,
|
|
128
|
+
7000,
|
|
129
|
+
8000,
|
|
130
|
+
9000,
|
|
131
|
+
10000,
|
|
132
|
+
12000,
|
|
133
|
+
15000,
|
|
134
|
+
20000
|
|
135
|
+
]
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* 🌊 Sea-salt (brine) — maritime haze surrogate
|
|
140
|
+
* @param {number[]} result complex number, refraction index
|
|
141
|
+
* @param {number} wavelength_nm in nanometers
|
|
142
|
+
*/
|
|
143
|
+
export function ri_brine(result, wavelength_nm) {
|
|
144
|
+
SEASALT_BRINE_REFRACTION_INDEX_LUT.sample(wavelength_nm, result);
|
|
145
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ri_dust.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/mie/ri_dust.js"],"names":[],"mappings":"AAiJA;;;;GAIG;AACH,gCAHW,MAAM,EAAE,iBACR,MAAM,QAIhB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ParameterLookupTable
|
|
3
|
+
} from "../../../../engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Complex refractive index of mineral dust (silicate-rich, e.g., Saharan): n + i k, wavelength in nm.
|
|
7
|
+
* Assumptions: dry, ~300 K, bulk effective constants representative of a typical desert mineral dust
|
|
8
|
+
* (quartz/feldspar/clays mix). Morphology not modeled; values intended for bulk-equivalent Mie.
|
|
9
|
+
*
|
|
10
|
+
* Composite sources and notes:
|
|
11
|
+
* - OPAC mineral dust (Hess et al., 1998) — visible/NIR anchors (m ≈ 1.53 + 0.008i at 0.55 µm).
|
|
12
|
+
* - Sokolik & Toon (1999), JGR 104, 9423–9444 — spectral behavior and strong Si–O features in 8–12 µm.
|
|
13
|
+
* - Querry (1985/1991), Optical constants of minerals — silicate trends in MIR/LWIR (quartz/feldspars/clays).
|
|
14
|
+
* - Patterson, Winchester & Barlow (1977), and Shettle & Fenn (1979) — atmospheric dust guidance.
|
|
15
|
+
*
|
|
16
|
+
* Table design:
|
|
17
|
+
* - 200–20,000 nm coverage; linear interpolation by ParameterLookupTable.
|
|
18
|
+
* - Preserves your original 400–700 nm values exactly to avoid visible-range regressions in graphics.
|
|
19
|
+
* - Denser sampling near 3 µm OH-complex and the strong 9–10 µm Si–O reststrahlen band.
|
|
20
|
+
*/
|
|
21
|
+
const DUST_REFRACTION_INDEX_LUT = ParameterLookupTable.from(
|
|
22
|
+
2, // number of columns in the table [n, k]
|
|
23
|
+
// Lookup data (n, k) per wavelength below. Wavelength positions are in nm.
|
|
24
|
+
[
|
|
25
|
+
// UV (short-wave): increasing absorption towards deep UV
|
|
26
|
+
1.550, 6.0e-2, // 200 nm
|
|
27
|
+
1.540, 3.5e-2, // 220 nm
|
|
28
|
+
1.535, 2.0e-2, // 240 nm
|
|
29
|
+
1.530, 1.5e-2, // 260 nm
|
|
30
|
+
1.525, 1.1e-2, // 280 nm
|
|
31
|
+
1.523, 9.5e-3, // 300 nm
|
|
32
|
+
1.522, 9.0e-3, // 320 nm
|
|
33
|
+
1.521, 8.7e-3, // 340 nm
|
|
34
|
+
1.5205, 8.5e-3, // 360 nm
|
|
35
|
+
1.5200, 8.4e-3, // 380 nm
|
|
36
|
+
// Visible (preserve exact legacy values for 400–700 nm)
|
|
37
|
+
1.5200, 8.2e-3, // 400 nm
|
|
38
|
+
1.5200, 7.0e-3, // 450 nm
|
|
39
|
+
1.5200, 6.0e-3, // 500 nm
|
|
40
|
+
1.5200, 5.0e-3, // 550 nm
|
|
41
|
+
1.5100, 4.0e-3, // 600 nm
|
|
42
|
+
1.5100, 3.5e-3, // 650 nm
|
|
43
|
+
1.5100, 3.0e-3, // 700 nm
|
|
44
|
+
// NIR/SWIR (0.7–2.5 µm): modest absorption; slight dispersion in n
|
|
45
|
+
1.5150, 3.2e-3, // 750 nm
|
|
46
|
+
1.5140, 3.0e-3, // 800 nm
|
|
47
|
+
1.5130, 3.2e-3, // 900 nm
|
|
48
|
+
1.5120, 3.5e-3, // 1000 nm
|
|
49
|
+
1.5120, 3.8e-3, // 1064 nm
|
|
50
|
+
1.5110, 4.5e-3, // 1200 nm
|
|
51
|
+
1.5100, 5.5e-3, // 1300 nm
|
|
52
|
+
1.5090, 8.0e-3, // 1450 nm
|
|
53
|
+
1.5080, 7.0e-3, // 1550 nm
|
|
54
|
+
1.5070, 6.5e-3, // 1650 nm
|
|
55
|
+
1.5060, 6.2e-3, // 1750 nm
|
|
56
|
+
1.5050, 7.0e-3, // 1940 nm
|
|
57
|
+
1.5050, 7.5e-3, // 2000 nm
|
|
58
|
+
1.5040, 9.0e-3, // 2200 nm
|
|
59
|
+
1.5030, 1.2e-2, // 2400 nm
|
|
60
|
+
1.5030, 1.4e-2, // 2500 nm
|
|
61
|
+
// Mid-IR (2.5–5 µm): increasing absorption toward lattice/OH bands
|
|
62
|
+
1.5030, 2.0e-2, // 2700 nm
|
|
63
|
+
1.5040, 3.0e-2, // 2900 nm
|
|
64
|
+
1.5050, 3.5e-2, // 3000 nm
|
|
65
|
+
1.5060, 4.0e-2, // 3100 nm
|
|
66
|
+
1.5080, 4.5e-2, // 3200 nm
|
|
67
|
+
1.5100, 5.0e-2, // 3300 nm
|
|
68
|
+
1.5120, 5.5e-2, // 3500 nm
|
|
69
|
+
1.5150, 6.0e-2, // 3700 nm
|
|
70
|
+
1.5180, 7.0e-2, // 4000 nm
|
|
71
|
+
1.5220, 8.0e-2, // 4500 nm
|
|
72
|
+
1.5250, 9.0e-2, // 5000 nm (5 µm)
|
|
73
|
+
// Long-wave IR (5–20 µm): strong Si–O stretch band near 9–10 µm
|
|
74
|
+
1.5300, 1.2e-1, // 6000 nm
|
|
75
|
+
1.5400, 1.8e-1, // 7000 nm
|
|
76
|
+
1.5500, 3.0e-1, // 8000 nm
|
|
77
|
+
1.5600, 4.0e-1, // 8500 nm
|
|
78
|
+
1.5700, 5.5e-1, // 9000 nm
|
|
79
|
+
1.5800, 7.0e-1, // 9500 nm
|
|
80
|
+
1.5900, 8.0e-1, // 10000 nm (10 µm)
|
|
81
|
+
1.5800, 5.0e-1, // 11000 nm
|
|
82
|
+
1.5600, 3.0e-1, // 12000 nm
|
|
83
|
+
1.5300, 1.5e-1, // 15000 nm
|
|
84
|
+
1.5000, 8.0e-2, // 20000 nm (20 µm)
|
|
85
|
+
],
|
|
86
|
+
// Wavelength positions (nm) corresponding to the (n,k) pairs above
|
|
87
|
+
[
|
|
88
|
+
200,
|
|
89
|
+
220,
|
|
90
|
+
240,
|
|
91
|
+
260,
|
|
92
|
+
280,
|
|
93
|
+
300,
|
|
94
|
+
320,
|
|
95
|
+
340,
|
|
96
|
+
360,
|
|
97
|
+
380,
|
|
98
|
+
400,
|
|
99
|
+
450,
|
|
100
|
+
500,
|
|
101
|
+
550,
|
|
102
|
+
600,
|
|
103
|
+
650,
|
|
104
|
+
700,
|
|
105
|
+
750,
|
|
106
|
+
800,
|
|
107
|
+
900,
|
|
108
|
+
1000,
|
|
109
|
+
1064,
|
|
110
|
+
1200,
|
|
111
|
+
1300,
|
|
112
|
+
1450,
|
|
113
|
+
1550,
|
|
114
|
+
1650,
|
|
115
|
+
1750,
|
|
116
|
+
1940,
|
|
117
|
+
2000,
|
|
118
|
+
2200,
|
|
119
|
+
2400,
|
|
120
|
+
2500,
|
|
121
|
+
2700,
|
|
122
|
+
2900,
|
|
123
|
+
3000,
|
|
124
|
+
3100,
|
|
125
|
+
3200,
|
|
126
|
+
3300,
|
|
127
|
+
3500,
|
|
128
|
+
3700,
|
|
129
|
+
4000,
|
|
130
|
+
4500,
|
|
131
|
+
5000,
|
|
132
|
+
6000,
|
|
133
|
+
7000,
|
|
134
|
+
8000,
|
|
135
|
+
8500,
|
|
136
|
+
9000,
|
|
137
|
+
9500,
|
|
138
|
+
10000,
|
|
139
|
+
11000,
|
|
140
|
+
12000,
|
|
141
|
+
15000,
|
|
142
|
+
20000
|
|
143
|
+
]
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* 💨 MINERAL DUST
|
|
148
|
+
* @param {number[]} result complex number, refraction index
|
|
149
|
+
* @param {number} wavelength_nm in nanometers
|
|
150
|
+
*/
|
|
151
|
+
export function ri_dust(result, wavelength_nm) {
|
|
152
|
+
DUST_REFRACTION_INDEX_LUT.sample(wavelength_nm, result);
|
|
153
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ri_pollen.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/mie/ri_pollen.js"],"names":[],"mappings":"AA0IA;;;;GAIG;AACH,kCAHW,MAAM,EAAE,iBACR,MAAM,QAIhB"}
|