Configuration parameters
Every VULCAN run is controlled by the Config class in src/vulcan/config.py. Each setting
is an attribute (self.<name>); edit the file, then run the model. The defaults shown below
are the shipped configuration, which describes the hot Jupiter HD 189733b.
Conventions
- Units are cgs unless stated otherwise: pressure in dyne cm\(^{-2}\) (1 bar = \(10^6\) dyne
cm\(^{-2}\)), gravity in cm s\(^{-2}\), \(K_{zz}\) and diffusion in cm\(^2\) s\(^{-1}\), fluxes in
molecules cm\(^{-2}\) s\(^{-1}\), number density in cm\(^{-3}\), time in seconds.
- Stellar/orbital quantities are the exception:
r_star in \(R_\odot\), orbit_radius in au,
Rp in cm, sl_angle in radians.
- Calling
vulcan_cfg.write_file() dumps the active configuration to
output/vulcan_cfg.txt, which is the surest record of what a run actually used.
Chemistry & network
| Parameter |
Default |
Description |
atom_list |
['H', 'O', 'C'] |
Elements tracked by the run. Must match the network and composition file. |
network |
thermo/CHO_photo_network.txt |
Path to the reaction network file (prefixed with VULCAN_DIR). |
use_lowT_limit_rates |
False |
If True, apply low-temperature limits to the reaction rate coefficients. |
remove_list |
[] |
Reaction indices to switch off, given in forward/reverse pairs, e.g. [1, 2]. |
Keep atom_list and network consistent
Initialization, the FastChem setup, and the element-conservation check all iterate over
atom_list. Switching to a network with more elements (e.g. adding N or S) requires
updating atom_list and the relevant elemental abundances.
Atmospheric grid & background
| Parameter |
Default |
Description |
nz |
50 |
Number of vertical layers. Higher = finer resolution but slower. |
P_b |
1e8 |
Pressure at the bottom boundary (dyne cm\(^{-2}\)); default \(\approx\) 100 bar. |
P_t |
1e-2 |
Pressure at the top boundary (dyne cm\(^{-2}\)); default \(\approx 10^{-8}\) bar. |
atm_base |
'H2' |
Background gas ('H2', 'N2', 'O2', 'CO2'); sets the molecular-diffusion reference coefficients and viscosity. |
rocky |
False |
If False, gravity is referenced at 1 bar (gas giants); if True, gs is the surface gravity. |
gs |
2140.0 |
Gravitational acceleration (cm s\(^{-2}\)) at the surface or at 1 bar. |
Rp |
1.138 R_J |
Planetary radius (cm). |
Temperature-pressure profile
| Parameter |
Default |
Description |
atm_type |
'file' |
T-P source: 'file', 'analytical', 'isothermal', 'vulcan_ini', 'table'. |
atm_file |
atm/atm_HD189_Kzz.txt |
Atmosphere file (P, T, and optionally \(K_{zz}\), \(v_z\)) when atm_type='file'. |
Tiso |
1000.0 |
Isothermal temperature (K) when atm_type='isothermal'. |
para_anaTP |
[120, 1500, 0.1, 0.02, 1.0, 1.0] |
Analytic T(P) parameters [T_int, T_irr, ka_0, ka_s, beta_s, beta_l] (Heng et al. 2014) when atm_type='analytical'. |
| Parameter |
Default |
Description |
sflux_file |
atm/stellar_flux/sflux-HD189_Moses11.txt |
Stellar flux at the stellar surface (scaled to the planet internally). |
top_BC_flux_file |
atm/BC_top.txt |
Top boundary-condition file (read only if use_topflux). |
bot_BC_flux_file |
atm/BC_bot.txt |
Bottom boundary-condition file (read if use_botflux or use_fix_sp_bot). |
Initialization & elemental abundances
| Parameter |
Default |
Description |
ini_mix |
'eq' |
Initial composition: 'eq' (FastChem equilibrium), 'const_mix', 'const_lowt', 'vulcan_ini', 'table'. |
const_mix |
{...} |
Well-mixed initial mixing ratios, used when ini_mix='const_mix'. |
vul_ini |
'_unset_' |
Path to a previous run (pickle/table) for ini_mix='vulcan_ini'/'table' and atm_type='vulcan_ini'/'table'. |
use_solar |
True |
If True, FastChem uses built-in solar abundances; the custom *_H values below are ignored. |
fastchem_met_scale |
1.0 |
Metallicity scaling for elements not tracked by VULCAN (used when use_solar=False). |
O_H, C_H, N_H, S_H |
5.37e-4, 2.95e-4, 7.08e-5, 1.41e-5 |
Custom elemental abundances relative to H (used only when ini_mix='eq' and use_solar=False). |
He_H |
0.0838 |
Helium-to-hydrogen ratio. |
Custom abundances require use_solar = False
With the default use_solar = True, C_H, O_H, N_H, S_H are not used -- FastChem
initializes from solar. The C/O ratio is simply C_H / O_H.
Photochemistry & radiation
| Parameter |
Default |
Description |
use_photo |
True |
Enable photochemistry (optical depth, actinic flux, photolysis). |
use_ion |
False |
Enable photoionization and charge balance. |
r_star |
0.805 |
Stellar radius (\(R_\odot\)), for flux scaling. |
orbit_radius |
0.03142 |
Orbital distance (au), for flux scaling. |
sl_angle |
\(48^\circ\) (rad) |
Stellar zenith angle \(\theta\) (radians). |
f_diurnal |
1.0 |
Diurnal-averaging factor (1.0 tidally locked, 0.5 rotating, e.g. Earth). |
scat_sp |
['H2', 'He'] |
Species included in Rayleigh scattering. |
T_cross_sp |
[] |
Species using temperature-dependent UV cross sections (need per-temperature files). |
edd |
0.5 |
First Eddington coefficient \(\bar\epsilon\) for the two-stream radiative transfer. |
dbin1 |
0.1 |
Wavelength bin width (nm) below dbin_12trans. |
dbin2 |
2.0 |
Wavelength bin width (nm) above dbin_12trans. |
dbin_12trans |
240.0 |
Wavelength (nm) where the bin width switches from dbin1 to dbin2. |
ini_update_photo_frq |
100 |
Initial step interval for recomputing the actinic flux/optical depth. |
final_update_photo_frq |
5 |
Step interval near convergence. |
Vertical mixing & transport
| Parameter |
Default |
Description |
use_Kzz |
True |
Enable eddy diffusion. |
Kzz_prof |
'file' |
\(K_{zz}\) source: 'file', 'const', 'Pfunc' (Tsai 2021 form), 'JM16' (Moses 2016 form). |
const_Kzz |
1e10 |
Constant \(K_{zz}\) (cm\(^2\) s\(^{-1}\)), used only when Kzz_prof='const'. |
K_max, K_p_lev |
1e5, 0.1 |
Parameters for Kzz_prof='Pfunc'. |
use_vz |
True |
Enable vertical advection. |
vz_prof |
'const' |
Vertical-wind source: 'const' or 'file'. |
const_vz |
0.0 |
Constant vertical velocity (cm s\(^{-1}\)) when vz_prof='const'. |
use_moldiff |
True |
Include molecular + thermal diffusion. |
use_vm_mol |
False |
Upwind molecular-diffusion scheme -- under development, must stay False (raises an error otherwise). |
update_frq |
100 |
Step interval for updating mean molecular weight and layer thicknesses. |
const_Kzz only applies with Kzz_prof = 'const'
Under the default Kzz_prof = 'file', the value comes from atm_file and const_Kzz is
ignored. (The 'JM16' profile additionally expects a K_deep value to be set.)
Boundary conditions
| Parameter |
Default |
Description |
use_topflux |
False |
Apply constant top-boundary fluxes from top_BC_flux_file. |
use_botflux |
False |
Apply bottom fluxes and deposition velocities from bot_BC_flux_file. |
use_fix_sp_bot |
{} |
Fixed mixing ratios at the bottom for selected species. |
diff_esc |
['H'] |
Species given diffusion-limited escape at the top boundary. |
max_flux |
1e13 |
Cap on the diffusion-limited escape flux (molecules cm\(^{-2}\) s\(^{-1}\)). |
Condensation & settling
| Parameter |
Default |
Description |
use_condense |
False |
Enable condensation/evaporation. |
use_settling |
False |
Enable gravitational particle settling. |
condense_sp |
[] |
Species allowed to condense (e.g. 'H2O', 'NH3', 'S2', 'S8'). |
non_gas_sp |
[] |
Condensate (non-gaseous) species, excluded from gas-phase mixing ratios. |
r_p |
{'H2O_l_s': 5e-3} |
Particle radius (cm) per condensate. |
rho_p |
{'H2O_l_s': 1} |
Particle density (g cm\(^{-3}\)) per condensate. |
humidity |
1.0 |
Relative-humidity multiplier on the H\(_2\)O saturation. |
start_conden_time, stop_conden_time |
0.0, 1e5 |
Simulation times (s) bracketing the condensation/fixing phase. |
fix_species, fix_species_time |
[], 0 |
Species to hold fixed after condensation equilibrium, and when. |
AGNI climate coupling (optional)
| Parameter |
Default |
Description |
agni_call_frq |
0 |
Step interval for calling AGNI; 0 disables the coupling. |
solve_rce |
False |
If True, solve radiative-convective equilibrium; else apply a prescribed profile and fill \(K_{zz}\). |
spectral_file |
'greygas' |
AGNI spectral file (or grey-gas solution). |
use_rayleigh |
False |
Include Rayleigh scattering in AGNI. |
surf_albedo |
0.0 |
Surface albedo. |
Tsurf_guess |
2000.0 |
Initial surface-temperature guess (K). |
agni_atol, agni_rtol |
1e-3, 1e-3 |
AGNI convergence tolerances. |
agni_nlev |
60 |
Number of AGNI atmospheric levels. |
Steady-state & convergence
| Parameter |
Default |
Description |
yconv_cri |
0.01 |
Threshold on the long-term relative change of mixing ratios. |
slope_cri |
1e-4 |
Threshold on the rate of that change. |
yconv_min |
0.1 |
Relaxed convergence threshold (paired with an internal minimum slope). |
flux_cri |
0.1 |
Threshold on the actinic-flux change for convergence (photochemistry runs). |
flux_atol |
1.0 |
Actinic-flux floor below which changes are ignored (photons cm\(^{-2}\) s\(^{-1}\) nm\(^{-1}\)). |
st_factor |
0.5 |
Fraction of the runtime used as the convergence look-back window. |
conv_step |
500 |
Maximum number of steps to look back for convergence. |
conver_ignore |
[] |
Species excluded from the convergence test (e.g. sinkless species like HC\(_3\)N). |
ODE solver & time stepping
| Parameter |
Default |
Description |
ode_solver |
'Ros2' |
Integration scheme (second-order Rosenbrock). |
dttry |
1e-6 |
Initial time step (s). |
dt_min, dt_max |
1e-8, 1e18 |
Bounds on the time step (s). |
dt_var_min, dt_var_max |
0.5, 2.0 |
Per-step shrink/grow factors. |
trun_min |
1e2 |
Minimum simulated time (s) before convergence is allowed. |
runtime |
1e22 |
Maximum simulated time (s). |
count_min, count_max |
120, 30000 |
Minimum/maximum number of steps. |
rtol |
0.25 |
Relative tolerance controlling Rosenbrock step size. |
use_adapt_rtol |
True |
Adapt rtol from element loss during the run. |
rtol_min, rtol_max |
0.02, 2.5 |
Bounds for the adaptive rtol. |
post_conden_rtol |
0.1 |
rtol used after condensable species are fixed. |
atol |
1e-1 |
Absolute number-density floor for error control. |
mtol |
1e-22 |
Minimum mixing ratio considered. |
mtol_conv |
1e-20 |
Minimum mixing ratio considered for convergence. |
pos_cut, nega_cut |
0, -1.0 |
Clipping thresholds for small/negative number densities. |
loss_eps |
1e-1 |
Per-step element-conservation tolerance (steps exceeding it are rejected). |
Output, logging & plotting
| Parameter |
Default |
Description |
output_dir |
output/ |
Output directory (created at runtime). |
plot_dir |
output/plot/ |
Plot directory. |
out_name |
'example.pkl' |
Output filename. |
clean_output |
True |
Wipe the output directory at startup. |
output_humanread |
False |
Write human-readable text output instead of a pickle. |
save_evolution |
False |
Save the time evolution (y_time, t_time). |
save_evo_frq |
10 |
Step interval for storing evolution data. |
log_level |
'INFO' |
Logging verbosity ('DEBUG', 'INFO', 'WARNING', 'ERROR'). |
use_print_prog, print_prog_num |
True, 20 |
Print progress, and how often (steps). |
use_print_delta |
False |
Print the largest truncation error each progress step. |
plot_TP |
True |
Plot the T-P/\(K_{zz}\) profile at startup. |
use_live_plot, live_plot_frq |
True, 50 |
Live mixing-ratio plotting and its step interval. |
use_live_flux |
False |
Live flux plotting. |
use_plot_end, use_plot_evo |
True, True |
Plot final profiles / time evolution at the end. |
use_flux_movie |
False |
Save flux frames for a movie. |
plot_height |
False |
Plot against height instead of pressure. |
plot_spec |
['H2','H','H2O','CH4','CO','CO2','C2H2'] |
Species to plot. |
plot_dpi |
130 |
Figure resolution. |
y_time_freq |
1 |
Step interval for storing time-series data. |
clean_output on networked filesystems
On NFS home directories (e.g. HPC clusters), clean_output = True can fail with
OSError: [Errno 39] Directory not empty because the open log file is silly-renamed during
the directory wipe. Set clean_output = False, or point output_dir/plot_dir at local
scratch.