Input Parameters
Resolution
i_N
- Number of outer core radial grid points.
- Integer
- In practice, set to somewhere between 16 and 512. For best performance, set to \(2^n\) for an integer \(n\).
i_Nic
- Number of inner core radial grid points
- Integer
- Set to 1 for insulating inner core.
- Set to \(>1\) for rotating inner core (also need to set b_rot_tstep to
.true.).
i_L
- Maximum Spherical Harmonic Degree.
- Integer.
- For best performance, set to \(2^n\) for integer \(n\).
i_M
- Maximum Spherical Harmonic Order.
- Integer.
- Must be \(<=\text{i_L}\).
- Set to \(2^n\) for best performance.
i_Mp
- Azimuthal periodicity.
- Integer
- Used to reduce effective computational domain in azimuthal direction. Causes code to only compute every \(\text{i_Mp}^{th}\) harmonic order, so azimuthal resolution can be increased but only for e.g. a half or quarter spherical shell.
i_H
- Total number of spherical harmonics. Set automatically by selection of i_L, i_M, and i_Mp. $$ \text{i_L}\times\text{i_M} - \frac{\text{i_Mp}\times(\text{i_M}-1)*\text{i_M}}{2} $$
i_Th
- Number of grid points in \(\theta\) direction.
- Set automatically from i_L, set for dealiasing.
- \(\text{i_Th}= 3/2(\text{i_L})\).
i_Ph
- Number of grid points in \(\phi\) direction
- Set automatically from i_M, for dealiasing.
- \(\text{i_Ph}= 3 \text{i_M}\).
i_KL
- Number of adjacent points in finite difference stencil
- default set to 3.
- must be \(<=2\).
Non-dimensional Control parameters
d_Ra
- Thermal Rayleigh number
- Float
- Generally set to \(10^3<\text{Ra}< 10^{12}\).
- Higher Ra requires higher i_N, and possibly higher i_L, i_M.
- Generally used as codensity buoyancy term in single component simulations, and as the thermal Ra for doubly-diffusive convection.
- Requires b_cod_tstep to be
.true.to take effect.
d_Ra_comp
- Compositional Rayleigh Number.
- Generally only used for doubly diffusive convection simulations.
- Required b_comp_tstep to be
.true.to take effect.
d_Pr
- Thermal Prandtl number.
- Float
d_Sc
- Schmidt number/compositional Prandtl number.
- Float.
d_Pm
- Magnetic Prandtl Number.
- Float.
- For non-magnetic simulations, set Pm=Pr for thermal diffusive timescale, set Pm=1 for viscous diffusive timescale, or Pm=Sc for compositional diffusive timescale.
d_E
- Ekman number.
- Float
- Generally set to \(10^{-6}<\text{d_E}<10^{-2}\).
d_rratio
- Shell aspect ratio.
- For earth like geometry, set to 0.35.
- Float.
Simulation options
b_rot_tstep
Choose whether to calculate rotation of the inner core, based on viscous and magnetic torques.
- Boolean.
- If set to
.true., i_Nic should be greater than 1.
b_vel_tstep
Choose whether to allow the velocity field to change in time.
- Boolean.
b_cod_tstep
Choose whether to allow the temperature field to change in time.
- Boolean
b_comp_tstep
Choose whether to allow the composition field to change in time.
- Boolean
b_mag_tstep
Choose whether to calculate the magnetic field.
Magnetic field is set to zero if .false..
Magneto-convection can be carried out by using b_inhom_magPol.
b_boussinesq
Choose whether to use the [boussinesq] or [anelastic] approximations.
Numerical options
d_Hyp
- traditional hyperdiffusivity.
- generally set to small positive e.g. 0.01.
- float.
smart_hyperdiffusion
Controls whether smart hyperdiffusion
of form
\(q_h^{l-l_h}\nabla^2\)
is used for the velocity and temperature fields or not.
If .true., controlled by ldiff and qhyper.
- Boolean
qhyper
\(q_h\), controls how quickly smart hyperdiffusion surpresses the high spherical harmonic degree energy.
smart_hyperdiffusion must be set to .true. for this to have any effect.
ldiff
\(l_h\), controls the cutoff spherical harmonic degree for smart hyperdiffusion.
smart_hyperdiffusion must be set to .true. for this to have any effect.
Velocity Boundary Conditions
i_vel_bc
Controls the mechanical boundary conditions.
- must be an integer between 1 and 4.
| option | inner boundary | outer boundary |
|---|---|---|
| 1 | no-slip | no-slip |
| 2 | no-slip | stress-free |
| 3 | stress-free | no-slip |
| 4 | stress-free | stress-free |
Codensity Boundary Conditions
i_cod_bc
Controls thermal boundary conditions.
If i_inhombc_C is not 1, d_qo and d_qi are replaced
by codBC.cdf.inor codBC.txt.in
(but setting for Fixed Flux or Fixed temperature is still used).
| option | inner boundary | outer boundary |
|---|---|---|
| 1 | \(T=1\) | \(T=0\) |
| 2 | \(T=1\) | \(\partial T/\partial r =\) d_qo |
| 3 | \(\partial T/\partial r =\) d_qi | \(T=0\) |
| 4 | \(\partial T/\partial r =\) d_qi | \(\partial T/\partial r =\) d_qo |
i_inhombc_C
| option | description |
|---|---|
| 1 | Homogeneous boundary conditions |
| 2 | Inhomogeneous boundary conditions, loaded from codBC.cdf.in |
| 3 | Inhomogeneous boundary conditions, loaded from codBC.txt.in |
d_qo
Flux on outer core temperature boundary.
- Float
- normalised such that should be set to \(\leq 0\) for convection
- ignored if i_inhombc_C is 2 or 3.
d_qi
Flux on inner core temperature boundary.
- Float
- normalised such that should be set to \(\leq 0\) for convection
- ignored if i_inhombc_C is 2 or 3.
i_source_load
Where internal heat source is read in from:
| option | description |
|---|---|
| 1 | Uniform, set by d_source |
| 2 | load from codBC.cdf.in |
| 3 | load from codS.txt.in |
d_source
Uniform internal heat source. Only used if i_source_load = 1. For radially varying internal heat source, see options 2 and 3 of i_source_load.
Composition Boundary Conditions
i_comp_bc
Controls compositional boundary conditions.
If i_inhombc_comp is not 1, d_qo_comp and d_qi_comp are replaced by compBC.cdf.in or compBC.txt.in (but setting for Fixed Flux or Fixed Composition is still used).
| option | inner boundary | outer boundary |
|---|---|---|
| 1 | \(\xi=1\) | \(\xi=0\) |
| 2 | \(\xi=1\) | \(\partial \xi/\partial r =\) d_qo_comp |
| 3 | \(\partial \xi/\partial r =\) d_qi_comp | \(\xi=0\) |
| 4 | \(\partial \xi/\partial r =\) d_qi_comp | \(\partial \xi/\partial r =\) d_qo_comp |
i_inhombc_comp
| option | description |
|---|---|
| 1 | Homogeneous boundary conditions |
| 2 | Inhomogeneous boundary conditions, loaded from compBC.cdf.in |
| 3 | Inhomogeneous boundary conditions, loaded from compBC.txt.in |
d_qo_comp
Flux on outer core composition boundary.
- Float
- normalised such that should be set to \(\leq 0\) for convection
- ignored if i_inhombc_comp is 2 or 3.
d_qi_comp
Flux on inner core composition boundary.
- Float
- normalised such that should be set to \(\leq 0\) for convection
- ignored if i_inhombc_comp is 2 or 3.
i_source_comp_load
Where internal composition source is read from.
| option | description |
|---|---|
| 1 | Uniform, set by d_source_comp |
| 2 | load from compBC.cdf.in |
| 3 | load from compS.txt.in |
d_source_comp
Uniform internal composition source. Only used if i_source_comp_load = 1. For radially varying internal composition source, see options 2 and 3 of i_source_comp_load.
Magnetic Field Boundary Conditions
b_inhom_magPol
- Boolean
Toggle to specify whether to determine custom magnetic boundary conditions.
If true, the poloidal magnetic field boundaries are read in from mag_PolBC.txt.in.
At least one of b_fixed_at_outer or b_fixed_at_inner must be set to
.true..
b_fixed_at_outer
- Boolean
Determine whether poloidal magnetic at outer boundary is set by mag_PolBC.txt.in.
b_inhom_magPol must be .true. for this to have any effect.
b_fixed_at_inner
- Boolean
Determine whether poloidal magnetic at inner boundary is set by mag_PolBC.txt.in.
b_inhom_magPol must be .true. for this to have any effect.
Code outputs
i_save_rate_1
- integer
How often savestates should be written out. Written out every i_save_rate_1 timesteps
i_save_rate_2
- integer
How often time-series data should be written out. Written out every i_save_rate_2 timesteps
i_save_rate_3
- integer
How often spectra and profiles should be written out. Written out every i_save_rate_3 timesteps
Code stopping criteria
i_maxstep
- integer
Stop the code after i_maxstep timesteps. Set to \(\lt 0\) to set no limit.
d_cpuhours
- float
Number of hours to run for. Decimal parts of hours are allowed, e.g. to run
for thirty minutes. set to 0.5d0.
Code Start time
d_time
- float
What is the in-simulation start time, in magnetic diffusion time units. Set to \(\lt 0\) to take this time from the statefile instead.
Timestep control
d_timestep
- float
Specify a fixed timestep in magnetic diffusion time units. Set to \(\lt 0\) to use automatic time step control.