HYDRAD Configuration Parameters#

The tables below give an exhaustive list of all of the different HYDRAD configuration options. If the units are listed, the input must have units that can be converted to the listed unit with the Astropy units module, e.g. loop_length can be input in Mm.

General#

Name

Description

Type

Units

total_time

Total duration of the simulation

float

s

output_interval

How often results are printed to file

float

s

loop_length

Footpoint-to-footpoint distance of the coronal loop

float

cm

loop_inclination

Angle between loop and surface normal

float

degree

footpoint_height

Length of the chromosphere

float

cm

poly_fit_gravity

Configuration parameters for the piecewise polynomial fit to the gravitational profile

dict

poly_fit_magnetic_field

Configuration parameters for the piecewise polynomial fit to the magnetic field profile

dict

logging_frequency

Frequency (in number of timesteps) that progress is printed to the screen

int

initial_amr_file

Adaptive mesh file to initialize loop from; if not given, uses the result from the initial conditions code

str

write_file_physical

Toggle writing .phy solutions file

bool

write_file_ion_populations

Toggle writing .ine file

bool

write_file_hydrogren_level_populations

Toggle writing .hstate file

bool

write_file_timescales

Toggle writing .scl file

bool

write_file_equation_terms

Toggle writing .trm file

bool

heat_flux_limiting_coefficient

See Eq. A15 of BC13

float

heat_flux_timestep_limit

Minimum value the heat flux will limit timestep to

float

s

use_kinetic_model

Toggle using the kinetic model for the heat flux

bool

minimum_collisional_coupling_timescale

float

s

force_single_fluid

If true, force electron and ion quantities to be equal

bool

use_openmp

If true, parallelize over threads with OpenMP. This option is most useful when including a NLTE chromosphere.

bool

grid_cells_per_thread

If using OpenMP parallelization, approximate number of grid cells assigned to each thread

int

open_field

If true, one footpoint is assumed to not connect to the surface

bool

force_symmetry

bool

The poly_fit_gravity and poly_fit_magnetic_field entries are both dictionaries and must contain the following keys,

Name

Description

Type

Units

x

Spatial coordinate of the profile

array-like

cm

y

Profile, either gravity or magnetic field

array-like

cm s\(-2\) or G

domains

Left and right edges, in normalized spatial coordinates, over which to perform the fit. If fitting a single polynomial over the entire domain, this can just be [0,1].

array-like

order

Order of the polynomial fit

int

Initial Conditions#

Name

Description

Type

Units

footpoint_temperature

Temperature at the loop footpoints

float

K

footpoint_density

Density at the loop footpoints

float

cm\(^{-3}\)

heating_location

Loop coordinate where heating is deposited to get equilibrium solution

float

cm

heating_scale_height

Spatial scale of heating to get equilibrium solution

float

cm

isothermal

If true, initial temperature profile is uniform

bool

heating_range_lower_bound

Lower bound on rate search range

float

erg cm\(^{-3}\) s\(^{-1}\)

heating_range_upper_bound

Upper bound on rate search range

float

erg cm\(^{-3}\) s\(^{-1}\)

heating_range_step_size

Resolution of heating rate search range

float

heating_range_fine_tuning

float

use_poly_fit_gravity

If true, use polynomial fit to gravitational profile when calculating initial conditions

bool

use_poly_fit_magnetic_field

If true, use polynomial fit to magnetic field profile when calculating initial conditions

bool

Heating#

Name

Description

Type

electron_heating

Fraction of energy partitioned to the electrons. If 1, all of the heat is deposited in the electrons. If 0, all of the heat is deposited in the ions.

float

beam

Toggle beam heating model

bool

alfven_wave

Toggle Alfvèn wave heating model (experimental)

bool

background

Parameters for configuring the background heating

dict

events

List of properties for each heating event.

list

The background entry can have the following keys. If use_initial_conditions is set to True, none of the other keys need be included

Name

Description

Type

Units

use_initial_conditions

If true, use the heating parameters from the initial conditions and the computed equilibrium heating rate; if true, all other background heating parameters are ignored.

bool

location

Location of the energy deposition

float

cm

scale_height

Spatial scale of the energy deposition

float

cm

rate

Peak heating rate of the Gaussian heating profile

float

erg cm\(^{-3}\) s\(^{-1}\)

Each entry in the events list should be a dictionary with the following seven keys (and appropriate units) corresponding to each heating event. If the list is empty, it is assumed that the loop is not subject to any heating events.

Name

Description

Type

Units

time_start

The starting time in the simulation of a given heating event

float

s

rise_duration

The duration it takes to increase from the background heating rate to peak heating rate

float

s

decay_duration

The duration it takes to decrease from peak heating rate back to the background heating rate

float

s

total_duration

The total duration of the heating event. The time profile of the event is trapezoidal in shape.

float

s

location

The location along the loop where the heating event is centered. Must have a value between 0 and the total loop length.

float

cm

scale_height

The spatial width (Gaussian) of the heating event.

float

cm

rate

The peak heating rate of the heating event

float

erg cm\(^{-3}\) s\(^{-1}\)

Radiation#

Name

Description

Type

Units

use_power_law_radiative_losses

If true, use piecewise power-law to calculate radiative losses

bool

lookup_table

Path (relative to the root of the HYDRAD directory) to lookup table for radiative losses. Ignored unless use_power_law_radiative_losses is also set.

str

decouple_ionization_state_solver

If true, the non-equilibrium population fractions are not fed back into the radiative loss calculation. This option will be ignored unless a list of elements is also passed to elements_nonequilibrium. If use_power_law_radiative_losses is false, the equilibrium population fractions will be used to calculate the radiative losses.

bool

density_dependent_rates

If true, uses density-dependent ionization/recombination rates from the ADAS database.

bool

optically_thick_radiation

If true, include optically thick lines in radiative losses

bool

nlte_chromosphere

Treat the chromosphere as being in non-local thermodynamic equilibrium. NOTE: This may significantly increase the computation time.

bool

minimum_density_limit

Density floor of the corona. This option is required if nlte_chromosphere is true.

float

cm\(^{-3}\)

ranges_dataset

Temperature and density ranges dataset

str

emissivity_dataset

Name of emissivity dataset

str

abundance_dataset

Name of abundance dataset

str

rates_dataset

Name of ionization/recombination dataset

str

elements_equilibrium

Elements for which the population fractions will be calculated assuming ionization equilibrium

list

elements_nonequilibrium

Elements for which the time-dependent, non-equilibrium population fractions will be calculated

list

In the lists of equilibrium and non-equilibrium elements, each entry can either be the atomic symbol, number, or the element name. As an example, each entry in the list below (which includes hydrogen, helium, carbon, and iron) is a valid element identifier,

elements = ['hydrogen', 'He', 'c', 26]

Solver#

Name

Description

Type

Units

epsilon

float

safety_radiation

A multiplicative factor applied to the radiative timescale. Should be strictly greater than 0 and less than or equal to 1.

float

safety_conduction

A multiplicative factor applied to the conductive timescale. Should be strictly greater than 0 and less than or equal to 1.

float

safety_advection

A multiplicative factor applied to the advective timescale. Should be strictly greater than 0 and less than or equal to 1.

float

safety_atomic

A multiplicative factor applied to the atomic timescale. Should be strictly greater than 0 and less than or equal to 1.

float

safety_viscosity

A multiplicative factor applied to the viscous timescale. Should be strictly greater than 0 and less than or equal to 1.

float

cutoff_ion_fraction

Population fractions below this value are set to 0

float

epsilon_d

Safety factor for ion population solver; see B09

float

epsilon_r

Safety factor for ion population solver; see B09

float

timestep_increase_limit

Allowed fractional difference (between 0 and 1) between consecutive timesteps

float

relative_viscous_timescale

float

minimum_radiation_temperature

float

K

zero_over_temperature_interval

Temperature interval over which the chromospheric radiative losses are set to zero

float

K

minimum_temperature

Minimum allowed temperature in the grid

float

K

maximum_optically_thin_density

float

cm\(^{-3}\)

cutoff_temperature_fraction

Ratio between cutoff temperature and peak temperature. If set, use the method of JB19 to model the transition region.

float

Grid#

Name

Description

Type

Units

adapt

Toggle using adaptive mesh refinement

bool

adapt_every_n_time_steps

How often to adapt on timestep

int

maximum_cell_width

The maximum allowed width of any grid cell

float

cm

maximum_refinement_level

The maximum number of times a grid cell can be split; see BC13

int

minimum_cells

Minimum allowed number of grid cells. If this is not set explicitly, it is calculated as \(n_{min}=\lceil L/\Delta s_{max}\rceil\), where \(L\) is the loop length and \(\Delta s_{max}\) is the maximum allowed grid cell width.

int

maximum_cells

Maximum allowed number of grid cells. If this is not set explicitly, \(n_{max}=\lfloor 2^{L_R}n_{min}\rfloor\), where \(L_R\) is the maximum refinement level and \(n_{min}\) is the minimum allowed number of grid cells.

int

minimum_delta_s

Smallest allowed grid cell width in the initial setup

float

cm

maximum_variation

float

refine_on_density

Use spatial variations in density to adaptively refine the grid

bool

refine_on_electron_energy

Use spatial variations in the electron energy to adaptively refine the grid

bool

refine_on_hydrogen_energy

Use spatial variations in the hydrogen energy to adaptively refine the grid

bool

minimum_fractional_difference

Minimum allowed difference (between 0 and 1) between adjacent cells

float

maximum_fractional_difference

Maximum allowed difference (between 0 and 1) between adjacent cells

float

linear_restriction

Use linear interpolation only

bool

enforce_conservation

Check whether energy has been conserved (i.e. correct numerical errors)

bool