implement nature::jupiter_altitude_to_pressure()

This commit is contained in:
yuni 2024-11-27 22:36:43 +01:00
parent 0a17410150
commit aa98d8cebc
2 changed files with 16 additions and 0 deletions

View file

@ -82,6 +82,7 @@ Based on Figure 27 from SRC1, and Figure 28 using the middle of the 3 temperatur
- 350km-850km: `p[bar](a[km]) = e^(-8.0920583983 - 0.0066339143 * a)` - 350km-850km: `p[bar](a[km]) = e^(-8.0920583983 - 0.0066339143 * a)`
- 50km-350km: `p[bar](a[km]) = e^(-0.969198983 - 0.027000953 * a)` - 50km-350km: `p[bar](a[km]) = e^(-0.969198983 - 0.027000953 * a)`
- -125km-50km: `p[bar](a[km]) = e^(0.0626589359 - 0.0473755348 * a)` - -125km-50km: `p[bar](a[km]) = e^(0.0626589359 - 0.0473755348 * a)`
- <-125km: `p[bar](a[km]) = -715.5577817531 * a - 89044.7227191413` (low-effort linear regression assuming p(-70000km) = 5e7 bar)
### Designing the in-game atmosphere ### Designing the in-game atmosphere

View file

@ -271,3 +271,18 @@ pub fn format_seconds_to_hour_min(seconds: f64) -> String {
(seconds % 3600.0) / 60.0 (seconds % 3600.0) / 60.0
); );
} }
pub fn jupiter_altitude_to_pressure(altitude: f64) -> f64 {
// See doc/research.md
let a = altitude - JUPITER_RADIUS;
if a >= 1e6 {
return 0.0;
} else if a >= 350e3 {
return (-8.0920583983 - 0.0066339143 * a).exp();
} else if a >= 50e3 {
return (-0.969198983 - 0.027000953 * a).exp();
} else if a >= -125e3 {
return (0.0626589359 - 0.0473755348 * a).exp();
}
return -715.5577817531 * a - 89044.7227191413;
}