zephyrus.boiloff
boiloff
boiloff.py
Bolometrically driven escape: boil-off and its capped residual.
Author: Mara Attia
lambda_restricted(M_p, R_p, T_eq, mu_kg)
Restricted Jeans parameter Lambda = G M_p mu / (kB T_eq R_p).
Dimensionless (Fossati et al. 2017). R_p [m] is the radius of the
level it is evaluated at and mu_kg [kg] the mean molecular mass
there; the dispatcher passes the launch level for both. For isothermal
gas this equals 2 R_B / R_p with the Bondi radius at T_eq.
Source code in src/zephyrus/boiloff.py
62 63 64 65 66 67 68 69 70 | |
parker_mach(x)
Photospheric Mach number of the transonic isothermal Parker wind.
Exact Lambert-W form of Owen & Wu (2016): Mach = sqrt(-W0(-f)) with
f = x^-4 exp(3 - 4/x) and x = R_launch / R_B <= 1. At x = 1
the launch level sits at the sonic (Bondi) radius and the Mach number
is 1; for small x it shuts off exponentially.
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in src/zephyrus/boiloff.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
bolometric_candidate(M_p, R_p, T_eq, kappa_photo, launch, F_int, lambda_gate, lambda_crit, k_tide=1.0, residual_mode='off')
The bolometrically driven candidate mass-loss rate, in kg/s.
Computed at every call: while lambda_gate < lambda_crit the
atmosphere is inflated enough to boil off and the candidate is
min(Parker rate, Bondi cap); past the gate the same machinery stays
alive as a residual, additionally capped by the interior luminosity
(see the module provenance notes).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
M_p
|
float
|
Planet mass [kg] and radius [m]. |
required |
R_p
|
float
|
Planet mass [kg] and radius [m]. |
required |
T_eq
|
float
|
Equilibrium temperature [K]; the wind runs at |
required |
kappa_photo
|
float
|
Photospheric opacity [m^2 kg^-1]; the Parker rate scales as its inverse. |
required |
launch
|
dict
|
The photospheric working level (from
:func: |
required |
F_int
|
float
|
Interior heat flux [W m^-2], for the luminosity cap. |
required |
lambda_gate
|
float
|
The restricted Jeans parameter of the configuration. |
required |
lambda_crit
|
float
|
The activation threshold (20 by default upstream; band 15 to 35). |
required |
k_tide
|
float
|
Erkaev tidal reduction factor of the escape barrier, evaluated at
|
1.0
|
residual_mode
|
str
|
|
'off'
|
Returns:
| Type | Description |
|---|---|
(rate, detail)
|
The candidate rate [kg/s], the minimum over the caps in force, and
a detail dict carrying the wind state, each cap, |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in src/zephyrus/boiloff.py
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | |
tang_timescale_check(M_p, R_p, F_int, mdot, reservoirs)
Boil-off termination diagnostic after Tang et al. (2024, Eq. 8).
Boil-off has ended once the mass-loss timescale t_Mdot = M_env/Mdot
reaches the cooling timescale t_cool = G M_p M_env / (R_p L) with
L = 4 pi R_p^2 F_int (their Eq. 9 with the envelope concentration
factor at 1 and the radiative-convective boundary at R_p, both
stated approximations). Returns {'evaluated': False} when no
reservoir masses are supplied; otherwise the two timescales and the
verdict. Diagnostic only: it never gates the rate.
Source code in src/zephyrus/boiloff.py
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 | |