# Procedures

ProcedureLocationProcedure TypeDescription

interface to the different equilibrium submodules

allow_geometry_overridemod_equilibriumSubroutine

Allows overriding geometry and grid-related parameters. Sets default values for the geometry and grid start/end. If this subroutine is used to set geometry/grid values in the submodule it becomes possible to override them through the parfile. Warnings will always be printed if this happens.

apply_boundary_conditionsmod_boundary_managerSubroutine
apply_essential_boundaries_leftmod_boundary_managerInterface
apply_essential_boundaries_rightmod_boundary_managerInterface
apply_natural_boundaries_leftmod_boundary_managerInterface
apply_natural_boundaries_rightmod_boundary_managerInterface
arnoldimod_solversInterface

interface to the different solution methods implemented in submodules

assemble_eigenfunctionmod_eigenfunctionsInterface
assemble_eigenfunction_gridmod_eigenfunctionsSubroutine

Allocates and assembles the eigenfunction grid, checks the corresponding scale factor as well.

assertmod_assertSubroutine

Utility function used by assert.fpp's assert macro.

build_matricesmod_matrix_managerSubroutine

calculate_base_eigenfunctionsmod_eigenfunctionsInterface
calculate_derived_eigenfunctionsmod_eigenfunctionsInterface
calculate_eigenfunctionsmod_eigenfunctionsSubroutine

Calculates both the base eigenfunctions and the derived quantities thereof based on a 2D array of right eigenvectors.

check_and_set_supplied_unit_normalisationsmod_inputSubroutine

Checks the unit normalisations that are supplied (if any), sets the unit normalisations if valid.

check_global_eigenfunction_subset_parametersmod_inputSubroutine

Called when the eigenfunction subset selection is enabled, this checks if the global variables are properly set.

check_if_normalisations_setmod_unitsSubroutine

Checks if normalisations are set. If normalisations are not set, set them to default values. These are 1 MK as unit temperature, 10 Gauss as unit magnetic field and 1e9 cm as a unit length. If normalisations are already set through the equilibrium submodule or parfiles nothing is done.

check_if_pp_quantities_can_be_calculatedsmod_derived_efsSubroutine

Determines if parallel/perpendicular quantities can be calculated and sets the corresponding module flag. This flag will be false if there is a non-zero B01 component present, or no magnetic field.

check_matrix_compatibilitymod_matrix_operationsSubroutine

Checks if two matrices (or a matrix and a vector) are compatible for matrix multiplication.

check_on_axis_valuesmod_inspectionsSubroutine

Checks if on-axis regularity conditions are satisfied in cylindrical geometry. We check if $B_\theta, B_z', v_\theta$ and $v_z'$ are smaller than 1e-3 on-axis. Nothing is checked if the geometry is Cartesian.

check_wavenumbersmod_inspectionsSubroutine

Sanity check on the wavenumbers. Checks if k2 is an integer in cylindrical geometry.

clean_derived_eigenfunctionsmod_eigenfunctionsInterface
cleanuplegolasSubroutine

Deallocates all main variables, then calls the cleanup routines of all relevant subroutines to do the same thing.

cmat_x_cvecmod_matrix_operationsSubroutine

Matrix multiplication using the LAPACK routine zgemm, multiplies a complex matrix with a complex vector

cmat_x_rmatmod_matrix_operationsSubroutine

Matrix multiplication using the LAPACK routine zgemm, multiplies a complex with a real matrix.

complex_is_equalmod_check_valuesFunction

Equality check between complex values

complex_is_zeromod_check_valuesFunction

Checks if complex values are zero

complex_tostrmod_loggingFunction

Converts a given complex number to a string, the default format is "f20.8". This will be printed in the form xxxx + xxxxi.

constant_current_eqmod_equilibriumInterface

interface to the different equilibrium submodules

contains_NaN_complexmod_check_valuesFunction

Checks a given complex value/array/matrix for NaN.

contains_NaN_realmod_check_valuesFunction

Checks a given real value/array/matrix for NaN.

continuity_equil_conditionsmod_inspectionsSubroutine

Checks the continuity equation for the equilibrium state. This is given by

coronal_flux_tube_eqmod_equilibriumInterface

interface to the different equilibrium submodules

couette_flow_eqmod_equilibriumInterface

interface to the different equilibrium submodules

cputicmod_timingSubroutine

Subroutine to start a CPU timer.

cputocmod_timingSubroutine

Subroutine to end a CPU timer.

create_atmosphere_curvesmod_solar_atmosphereSubroutine

Interpolates the atmospheric tables to the desired resolution. The temperature derivative is obtained numerically.

Creates an interpolated cooling curve based on the chosen table. Calls a second-order polynomial interpolation routine and takes care of normalisations.

create_datfilemod_outputSubroutine

Writes the datfile, where eigenfunctions and matrices are optionally included. First a header is written containing default information on the configuration, then the actual data.

create_eigenfunctionslegolasSubroutine

Initialises and calculates the eigenfunctions if requested.

create_logfilemod_outputSubroutine

Creates a logfile. If basename_logfile is specified in the datfile, a logfile is written. This is a pure textfile containing the real and imaginary parts of the eigenvalues, written in an exponential format. This is mainly used for testing purposes but may come in handy to do some quick inspections on the data.

create_matricesmod_matrix_creationSubroutine

Main subroutine to assemble the matrices A and B, which are already allocated when entering this subroutine but not yet initialised. The quadblock is calculated for every grid interval and used to assemble both matrices. On exit, both matrices are fully assembled and boundary conditions are imposed.

cubic_factorsmod_spline_functionsSubroutine

Calculates the cubic basis functions.

cubic_factors_derivmod_spline_functionsSubroutine

@brief Calculates the derivatives of the cubic basis functions.

cubic_factors_deriv2mod_spline_functionsSubroutine

@brief Calculates the second derivatives of the cubic basis functions.

deallocate_bfield_typemod_typesSubroutine

Deallocates all attributes contained in the magnetic field type.

deallocate_conduction_typemod_typesSubroutine

Deallocates all attributes contained in the thermal conduction type.

deallocate_cooling_typemod_typesSubroutine

Deallocates all attributes contained in the radiative cooling type.

deallocate_density_typemod_typesSubroutine

Deallocates all attributes contained in the density type.

deallocate_gravity_typemod_typesSubroutine

Deallocates all attributes contained in the gravity type.

deallocate_hall_typemod_typesSubroutine

Deallocates all attributes contained in the Hall type.

deallocate_resistivity_typemod_typesSubroutine

Deallocates all attributes contained in the resistivity type.

deallocate_temperature_typemod_typesSubroutine

Deallocates all attributes contained in the temperature type.

deallocate_typemod_typesInterface

interface to deallocate all the different types

deallocate_velocity_typemod_typesSubroutine

Deallocates all attributes contained in the velocity type.

default_b02_profilemod_solar_atmosphereFunction

Sets the default profile for B02, taken to be zero.

default_b03_profilemod_solar_atmosphereFunction

Sets the default profile for B03, taken to be a uniform field of 10 Gauss.

default_db02_profilemod_solar_atmosphereFunction

Sets the default profile for dB02, taken to be zero.

default_db03_profilemod_solar_atmosphereFunction

Sets the default profile for dB03, taken to be zero.

default_gravity_profilemod_solar_atmosphereFunction

Sets the default profile for the gravitational field, taken to be

discrete_alfven_eqmod_equilibriumInterface

interface to the different equilibrium submodules

eigenfunctions_cleanmod_eigenfunctionsSubroutine

Cleaning routine.

Checks if a specific eigenvalue is within the provided subset radius.

equilibrium_cleanmod_equilibriumSubroutine

Cleaning routine, deallocates the equilibrium types.

find_name_loc_in_arraymod_eigenfunctionsFunction

Function to locate the index of a given name in a character array. Iterates over the elements and returns on the first hit, if no match was found zero is returned.

float_tostrmod_loggingFunction

Converts a given float to a string, the default format is "f20.8".

flow_driven_instabilities_eqmod_equilibriumInterface

interface to the different equilibrium submodules

get_A_elementsmod_matrix_creationSubroutine

Retrieves the A-matrix elements for a given quadblock corresponding to a particular point in the grid and a particular Gaussian weight. This routine is called n_gauss times for every grid interval.

get_B_elementsmod_matrix_creationSubroutine

Retrieves the B-matrix elements for a given quadblock corresponding to a particular point in the grid and a particular Gaussian weight. This routine is called n_gauss times for every grid interval.

get_constantsmod_unitsSubroutine

Returns the Boltzmann constant, proton mass, magnetic constant and gas constant in either cgs (default) or SI units.

get_constantsmod_resistivitySubroutine

Retrieves resistivity constants. Returns all physical constants used to calculate the Spitzer resistivity, either in cgs (default) or SI depending on the unit system chosen.

get_detasmod_resistive_matrixFunction

Calculates the total derivative of , given as

get_deta_dTmod_resistivitySubroutine

Calculates the derivative of the resistivity. Returns the derivative of the full Spitzer resistivity with respect to the equilibrium temperature, if a fixed resistivity was set instead this routine returns zero.

get_diagonal_factorsmod_essential_boundariesFunction
get_diffF_operatormod_matrix_shortcutsFunction

Calculates the derivative of the operator, given as

get_etamod_resistivitySubroutine

Calculates the resistivity. Returns either the full Spitzer resistivity based on the equilibrium parameters, or a fixed resistivity value if specified in the global variables module. The unit resistivity is also set in this routine. If a fixed resistivity is used, eta is assumed to be normalised and the unit resistivity remains unity.

get_F_operatormod_matrix_shortcutsFunction

Calculates the operator, given as

get_flow_operatorsmod_flow_matrixFunction

Calculates the operator, given as

get_G_operatormod_matrix_shortcutsFunction

Calculates the operator, given as

get_Kp_operatormod_matrix_shortcutsFunction

Calculates the (modified) conduction prefactor, given as \boldsymbol{K_p^+} = \left(\boldsymbol{K_p} + \frac{\partial \kappa_\perp}{\partial(B^2)}\right) \boldsymbol{K_p^{++}} = \left( \frac{\partial \kappa_\perp}{\partial(B^2)} - \frac{B_{01}^2}{B_0^2}\boldsymbol{K_p^+} \right) 

get_numerical_derivativemod_interpolationSubroutine

Calculates the numerical derivative of a given array. A sixth-order accurate central difference stencil is used to calculate the derivative. Near the edges a sixth-order accurate forward and backward difference stencil is used for the left and right boundary, respectively. It is assumed that the x values are all equally spaced. If this is not the case, a polynomial interpolation on a uniform grid can be done and that one can be differentiated instead. The stencils are as follows:

get_parfilemod_inputSubroutine

Parses the command line arguments and retrieves the parfile passed.

get_R_operatorsmod_resistive_matrixFunction

Calculates the operator, given as

get_rosner_coolingmod_cooling_curvesSubroutine

Uses the piecewise rosner cooling curve to calculate the radiative cooling values based on the equilibrium temperature.

get_splinesmod_ef_operationsFunction

Returns the finite element basis functions for the given eigenfunction and position in the grid.

get_values_from_eigenvectorsmod_ef_operationsFunction

Retrieves the correct values from the eigenvector that correspond to the requested eigenfunction at the current subblock index mapping.

get_viscosity_termsmod_viscositySubroutine
get_wv_operatormod_matrix_shortcutsFunction

Calculates the wave vector operator , given as

gold_hoyle_eqmod_equilibriumInterface

interface to the different equilibrium submodules

gravito_acoustic_eqmod_equilibriumInterface

interface to the different equilibrium submodules

gravito_mhd_eqmod_equilibriumInterface

interface to the different equilibrium submodules

grid_cleanmod_gridSubroutine

Cleanup routine, deallocates the arrays at module scope.

handle_spurious_eigenvaluesmod_inspectionsSubroutine

Handles spurious eigenvalue through removal. If requested, this can remove spurious eigenvalues on the edges of the spectrum. This usually only occurs in cylindrical geometries with forced on-axis conditions. The amount of eigenvalues to handle on every side of the imaginary axis is specified in the parfile. Example: nb_spurious_eigenvalues = 1 removes the outermost eigenvalue on each side of the imaginary axis (so two in total).

harris_sheet_eqmod_equilibriumInterface

interface to the different equilibrium submodules

induction_equil_conditionsmod_inspectionsSubroutine

Checks the induction equation for the equilibrium state. The two (nonzero) resulting expressions are and should both be fulfilled.

init_equilibrium_paramsmod_equilibrium_paramsSubroutine

Initialises all variables defined at module scope to NaN, including the wave numbers. This ensures that these have to be explicitly set.

initialisationlegolasSubroutine

Subroutine responsible for all initialisations. Allocates and initialises main and global variables, then the equilibrium state and eigenfunctions are initialised and the equilibrium is set.

initialisemod_arpack_typeSubroutine

Initialises the derived type based on the given dimension of the eigenvalue problem. Everything is allocated and the variables (nev, which, maxiter, iparam, ido etc.) are prepared for their calls in the ARPACK routines.

initialise_base_eigenfunctionsmod_eigenfunctionsInterface
initialise_bfield_typemod_typesSubroutine

Allocates the magnetic field type and initialises all values to zero.

initialise_conduction_typemod_typesSubroutine

Allocates the thermal conduction type and initialises all values to zero.

initialise_cooling_typemod_typesSubroutine

Allocates the radiative cooling type and initialises all values to zero.

initialise_density_typemod_typesSubroutine

Allocates the density type and initialises all values to zero.

initialise_derived_eigenfunctionsmod_eigenfunctionsInterface
initialise_eigenfunctionsmod_eigenfunctionsSubroutine

Initialises the eigenfunctions based on an array of eigenvalues. Before initialising all arrays we check which subset of eigenvalues, if any, needs its eigenfunctions saved.

initialise_equilibriummod_equilibriumSubroutine

Initialises the equilibrium types by calling the corresponding subroutine, which allocates all necessary attributes.

initialise_exceptionsmod_exceptionsSubroutine

Private subroutine, sets the pointer to the default method to be used when raising exceptions.

initialise_globalsmod_global_variablesSubroutine

Initialises the global variables in this module. All variables in this module are first set to their default values. These are either regular values or NaN, the latter in case variables must be explicitly set in the parfile or equilibrium submodule.

initialise_gravity_typemod_typesSubroutine

Allocates the gravity type and initialises all values to zero.

initialise_gridmod_gridSubroutine

General grid initialisations. Initialises both the regular grid and the Gaussian grid. Does calls to the mesh accumulation routines if needed, and sets the scale factor and its derivative.

initialise_hall_typemod_typesSubroutine

Allocates the Hall type and initialises all values to zero.

Initialises the radiative cooling variables. This routine first selects and allocates the correct cooling tables, depending on the desired curve. These tables are used to interpolate the final cooling curve using \p ncool points.

initialise_resistivity_typemod_typesSubroutine

Allocates the resistivity type and initialises all values to zero.

initialise_temperature_typemod_typesSubroutine

Allocates the temperature type and initialises all values to zero.

initialise_typemod_typesInterface

interface to initialise all the different types

initialise_velocity_typemod_typesSubroutine

Allocates the velocity type and initialises all values to zero.

int_tostrmod_loggingFunction

Converts a given integer to a string, the default format is "i8".

integrate_ode_rkmod_integrationSubroutine

Integrates a first order differential equation of the form using a fifth-order Runge-Kutta method. The argument nbpoints determines the stepsize through If the arrays $A(x), B(x)$ are not of size nbpoints, then these are interpolated to that resolution. The differential equation is then integrated, the solution will also be of size nbpoints and can be downsampled using the appropriate subroutine. If desired the optional argument dyvalues can be provided, which contains the (numerical) derivative of y.

interchange_modes_eqmod_equilibriumInterface

interface to the different equilibrium submodules

internal_kink_eqmod_equilibriumInterface

interface to the different equilibrium submodules

interpolate_tablemod_interpolationSubroutine

Interpolates a given set of tables (x, y(x)) into a smooth curve. Assumes that x_table is an array with a monotone increase in values. Interpolation is done using n_interp points, in general a second order polynomial approximation is used except near sharp jumps.

invert_matrixmod_matrix_operationsInterface

Interface to invert a matrix

invert_matrix_complexmod_matrix_operationsSubroutine

Handles the inversion of a complex square matrix using LAPACK routines. First a LU-factorisation is performed using zgetrf, then inversion is done using zgetri.

invert_matrix_realmod_matrix_operationsSubroutine

Handles the inversion of a real square matrix using LAPACK routines. First a LU-factorisation is performed using dgetrf, then inversion is done using dgetri.

is_constantmod_check_valuesInterface

interface to check if an array is constant

is_equalmod_check_valuesInterface

interface to check equality between values/arrays

is_NaNmod_check_valuesInterface

interface to check for NaN values

is_negativemod_check_valuesInterface

interface to check for negative values

is_zeromod_check_valuesInterface

interface to check if values/arrays are zero

isothermal_atmosphere_eqmod_equilibriumInterface

interface to the different equilibrium submodules

kh_cd_instability_eqmod_equilibriumInterface

interface to the different equilibrium submodules

KHI_eqmod_equilibriumInterface

interface to the different equilibrium submodules

Loads a previously calculated profile and uses that to set the resolution, density and density derivatives.

log_messagemod_loggingSubroutine

Logs messages to the console. Every message will be prepended by [ LEVEL ] to indicate its type. If this is not desired, set use_prefix = .false..

logical_tostrmod_loggingFunction

Converts a given logical to a string "True" or "False".

lookup_table_valuemod_interpolationFunction

Function for fast table-lookup, returns the corresponding y-value in y_values based on a given based on a given $x0$. If the allow_outside flag is given as .true. then values on the edge of the table are returned when the lookup value is outside the array. Uses simple linear interpolation.

magnetothermal_instability_eqmod_equilibriumInterface

interface to the different equilibrium submodules

make_filenamemod_outputSubroutine

Builds a filename based on a given base filename and the output folder defined in the global variables module. The output folder is prepended to the base filename.

MRI_accretion_eqmod_equilibriumInterface

interface to the different equilibrium submodules

multiply_matricesmod_matrix_operationsInterface

Interface to do matrix multiplication

needs_resamplingmod_integrationFunction

Checks if an array needs resampling.

on_exception_raisedmod_exceptionsSubroutine

Workflow that is executed by default when an exception is raised. The argument message is printed to the console and program execution is terminated.

open_filemod_outputSubroutine

Opens a file with a given IO unit and filename. All files are opened using access='stream', status='unknown' and action='write'.

paint_stringmod_paintingSubroutine

Subroutine to paint a given string to the desired colour, returns a new string with ANSI escape sequences prepended and appended. If the 'colour' argument is not known, simply returns the string itself.

parse_znaupd_infomod_arpack_typeSubroutine

Parses the info parameter that comes out of ARPACK's znaupd method. If info = 0, everything behaved nicely the reverse communication subroutines exited properly. If info is any other value something went wrong and we handle it accordingly.

parse_zneupd_infomod_arpack_typeSubroutine

Parses the info parameter that comes out of ARPACK's zneupd method. If info = 0, the eigenvalues extraction routines exited properly, if info is any other value something went wrong and we handle it accordingly.

perform_NaN_and_negative_checksmod_inspectionsSubroutine

General routine to do initial sanity checks on the various equilibrium attributes. We check the equilibrium arrays for NaN and see if all density and temperature values are positive.

perform_sanity_checksmod_inspectionsSubroutine

General routine to do sanity checks on the different equilibrium types. We check the wavenumbers and on-axis values, as well as standard and non-adiabatic equilibrium force balance.

photospheric_flux_tube_eqmod_equilibriumInterface

interface to the different equilibrium submodules

print_console_infomod_loggingSubroutine

Prints various console messages showing geometry, grid parameters, equilibrium parameters etc. Only for logging level "info" or above.

print_logomod_loggingSubroutine

Prints the Legolas logo to the console. The logo is wrapped in 1 whitespace at the top and two at the bottom. Only for logging level 'warning' (1) and above

print_whitespacemod_loggingSubroutine

Prints an empty line to the console. Only if logging level is 'warning' or above.

qr_invertmod_solversInterface

interface to the different solution methods implemented in submodules

Calculates the derivatives of the quadratic basis functions.

qz_directmod_solversInterface

interface to the different solution methods implemented in submodules

Cleanup routine, deallocates all variables allocated at module-scope.

raise_exceptionmod_exceptionsSubroutine

Raises an exception with a given message. By default, exceptions terminate program execution. Calls the initialisation routine if not already done.

Reads in the supplied parfile and sets the equilibrium parameters and global variables to their specified values.

real_array_is_constantmod_check_valuesFunction

Check if an array has constant values

real_is_equalmod_check_valuesFunction

Equality check between real values

real_is_negativemod_check_valuesFunction

Check if values are or contain negative numbers

real_is_zeromod_check_valuesFunction

Checks if real values are zero

reset_factor_positionssmod_natural_boundariesSubroutine

Resets the factors and positions arrays to a given new size.

reset_factor_positionsmod_matrix_managerSubroutine

Resets the factors and positions arrays to a given new size.

resistive_homo_eqmod_equilibriumInterface

interface to the different equilibrium submodules

resistive_tearing_modes_eqmod_equilibriumInterface

interface to the different equilibrium submodules

resistive_tearing_modes_flow_eqmod_equilibriumInterface

interface to the different equilibrium submodules

resonant_absorption_eqmod_equilibriumInterface

interface to the different equilibrium submodules

retransform_eigenfunctionmod_eigenfunctionsInterface
retrieve_eigenfunction_from_indexmod_eigenfunctionsFunction

Retrieves a single eigenfunction based on its index in the attribute of the main array. For example, if name equals "rho" and ef_idx equals 2 then this routine returns the quantities attribute evaluated at index 2 for the "rho" eigenfunctions.

retrieve_eigenfunctionsmod_eigenfunctionsFunction

Returns the full set of eigenfunctions corresponding to the given eigenfunction name.

rk45mod_integrationSubroutine

Calculates the Runge-Kutta coefficients and calculates the fourth and fifth order solutions for step i+1 based on the values at step i.

rmat_x_cmatmod_matrix_operationsSubroutine

Matrix multiplication using the LAPACK routine zgemm, multiplies a real with a complex matrix.

rmat_x_cvecmod_matrix_operationsSubroutine

Matrix multiplication using the LAPACK routine zgemm, multiplies a real matrix with a complex vector

rotating_plasma_cyl_eqmod_equilibriumInterface

interface to the different equilibrium submodules

RTI_eqmod_equilibriumInterface

interface to the different equilibrium submodules

RTI_KHI_eqmod_equilibriumInterface

interface to the different equilibrium submodules

RTI_theta_pinch_eqmod_equilibriumInterface

interface to the different equilibrium submodules

save_profile_to_filemod_solar_atmosphereSubroutine

Saves the density and density derivatives to the given filename. These can be used later on to set the values instead of solving the differential equation.

select_eigenfunctions_to_savemod_eigenfunctionsSubroutine

Selects a subset of eigenfunctions to be saved.

set_basis_functionssmod_natural_boundariesSubroutine
set_boundary_flagsmod_boundary_managerSubroutine
set_conduction_prefactormod_thermal_conductionSubroutine

Sets the thermal conduction prefactor, given by . The radial derivative of the prefactor is also set, given by

set_conduction_valuesmod_thermal_conductionSubroutine

This routines sets all thermal conduction values in kappa_field, and calls all other relevant subroutines defined in this module.

set_energy_balancemod_inspectionsSubroutine

Enforces the non-adiabatic force-balance equation for the equilibrium state. This is given by This subroutine essentially sets $\mathscr{L}0$ in such a way that this equation is satisfied. If the heating is assumed to only depend on the equilibrium, and if there is no $B$, $v_{01}$ or perpendicular thermal conduction, then $\mathscr{L}_0 = 0$. If one (or more) of these effects are present, then $\mathscr{L}_0 = 0$ is no longer true. The rc_field % heat_loss attribute is modified on exit.

set_entropysmod_derived_efsSubroutine

Calculates the entropy S1 and places it at location "loc" in the main array.

set_equilibriummod_equilibriumSubroutine

Calls the routine to set the equilibrium pointer, then calls the correct submodule. Performs some sanity checks (negative values, NaNs etc.) when the equilibrium is set, then calls additional physics modules if needed.

set_equilibrium_on_eigenfunction_gridsmod_derived_efsSubroutine

Sets the B02, B03, rho0 and T0 equilibrium components on the eigenfunction grid instead of on the Gaussian grid, these are used for calculating the derived eigenfunction quantities. No interpolation needed since the Gaussian grid is always finer than the eigenfunction grid, so we can get away by simply looking up the nearest values for every point in the eigenfunction grid.

set_equilibrium_pointermod_equilibriumSubroutine

Selects the submodule based on the specified equilibrium in the parfile. Works on a case-select basis.

set_eta_dropoffmod_resistivitySubroutine

Sets a hyperbolic tangent profile for the resistivity so it goes smoothly to zero near the edges. The location and width of the dropoff profile can be controlled through dropoff_edge_dist and dropoff_width.

set_gammamod_global_variablesSubroutine

Sets the ratio of specific heats gamma and its corresponding value gamma - 1.

set_grid_gaussmod_gridSubroutine

Sets up grid_gauss, that is, the grid evaluated in the four Gaussian points. This is done by evaluating the weights at the four Gaussian nodes.

set_gridptsmod_global_variablesSubroutine

Sets all gridpoint-related variables: sets the base number of gridpoints, the gridpoints of the Gaussian grid, matrix sizes and size of the eigenfunction arrays.

set_hall_factorsmod_hallSubroutine

Retrieves the normalised Hall factor as described by Porth et al. (2014), with a dropoff at the boundary, if desired. Additionally defines the inertia term factor if included, with a dropoff profile, if desired.

set_kappa_paramod_thermal_conductionSubroutine

Calculates the parallel thermal conduction. Returns either the full parallel thermal conduction based on the equilibrium parameters, or a fixed value if specified in the global variables module.

set_kappa_para_derivativesmod_thermal_conductionSubroutine

Calculates the temperature derivative of the parallel thermal conduction component.

set_kappa_perpmod_thermal_conductionSubroutine

Calculates the perpendicular thermal conduction. Returns either the full perpendicular thermal conduction based on the equilibrium parameters, or a fixed value if specified in the global variables module.

set_kappa_perp_derivativesmod_thermal_conductionSubroutine

Calculates the thermal conduction derivatives. Returns the derivative of the perpendicular thermal conduction with respect to density, magnetic field squared and temperature.

Sets the radial derivative of the perpendicular thermal conduction coefficient. This is defined as

set_magnetic_fieldsmod_derived_efsSubroutine

Calculates the perturbed magnetic field.

set_magnetic_field_curlsmod_derived_efsSubroutine

Calculates the curl of the perturbed magnetic field.

set_magnetic_field_curl_ppsmod_derived_pp_efsSubroutine

Sets the parallel and perpendicular components of the perturbed magnetic field curl with respect to the background magnetic field.

set_magnetic_field_divergencesmod_derived_efsSubroutine

Calculates the divergence of the perturbed magnetic field

set_magnetic_field_ppsmod_derived_pp_efsSubroutine

Sets the parallel and perpendicular components of the perturbed magnetic field with respect to the background magnetic field.

set_maxitermod_arpack_typeSubroutine

Setter for the maximum number of iterations that ARPACK can take, defaults to 10N with N the dimension of the eigenvalue problem.

set_modemod_arpack_typeSubroutine

Sets the mode for the ARPACK solver and passes this on to the iparam array.

set_nevmod_arpack_typeSubroutine

Setter for the number of eigenvalues that should be calculated. The requested number of eigenvalues should be positive and smaller than the dimension of the eigenvalue problem.

set_normalisationsmod_unitsSubroutine

Defines unit normalisations based on a magnetic field unit, length unit, and a density OR temperature unit. Calling this routine automatically sets normalisations_are_set to True. An optional mean molecular weight can be passed, which defaults to 1/2 corresponding to an electron-proton plasma.

set_pp_quantitiessmod_derived_efsInterface

Sets the radiative cooling attributes of the corresponding types. This is called after the equilibrium is initialised in the submodule.

set_raise_methodmod_exceptionsSubroutine

Subroutine meant to be publicly called, sets the routine to be used when raising exceptions. Calls the initialisation routine if not already done.

set_resistivity_valuesmod_resistivitySubroutine

This routines sets all resistivity values in \p eta_field, and calls all other relevant subroutines defined in this module.

set_row_col_to_valuesmod_essential_boundariesSubroutine
set_scale_factormod_gridSubroutine

The scale factor to switch between Cartesian and cylindrical geometries is set here, along with its derivative. For cylindrical the scale factor is simply equal to the Gaussian grid, and its derivative is unity. For Cartesian the scale factor is unity and its derivative is zero.

set_sigmamod_arpack_typeSubroutine

Sets the sigma value for the shift-invert mode of ARPACK. Sigma can't be zero since the A-matrix can have zero rows, and then we run into troubles.

set_small_values_to_zeromod_check_valuesInterface

interface to check for small values

set_solar_atmospheremod_solar_atmosphereSubroutine

Sets the density, temperature, gravity and magnetic field attributes of the respective fields to a realistic solar atmosphere profile. This routine first interpolates the temperature and numberdensity table at n_interp resolution, then solves the following ODE for the density: using a fifth order Runge-Kutta method. If the optional argument save_to is provided then the density profiles are saved to that file, which can be loaded back in on subsequent runs through the optional argument load_from. The integration is done over the entire table, the curve is sampled on the Gaussian grid, meaning that grid variations can all use the same result.

set_unit_resistivitymod_unitsSubroutine

Sets the unit resistivity. This routine is called by the resistivity module and is used to set the resistivity unit in such a way that eta equals 0.1 when the temperature is 1 MK.

set_velocity_curlsmod_derived_efsSubroutine

Sets the three components of velocity curl.

set_velocity_curl_ppsmod_derived_pp_efsSubroutine

Sets the parallel and perpendicular components of the velocity curl with respect to the background magnetic field.

set_velocity_divergencesmod_derived_efsSubroutine

Calculates the divergence of the perturbed velocity v1

set_velocity_ppsmod_derived_pp_efsSubroutine

Sets the parallel and perpendicular components of the perturbed velocity with respect to the background magnetic field.

set_whichmod_arpack_typeSubroutine

Setter for the 'which' argument of ARPACK routines. Should be one of the following: "LM", "SM", "LR", "SR", "LI" or "SI".

small_values_complexmod_check_valuesSubroutine

Small value checks for a complex variable/array/matrix, with the real and imaginary parts checked separately. Values that are smaller than the specified tolerance tol are set to zero. If tol is not present, DP_LIMIT is used as tolerance.

small_values_realmod_check_valuesSubroutine

Small value checks for a real variable/array/matrix. Values that are smaller than the specified tolerance tol are set to zero. If tol is not present, DP_LIMIT is used as tolerance.

Main subroutine to solve the eigenvalue problem. Depending on the solvelist passed in the parfile, different solvers are called.

Cleanup routine.

standard_equil_conditionsmod_inspectionsSubroutine

Checks the standard force-balance equation for the equilibrium state. This results in three expressions, and they should all be fulfilled.

strmod_loggingInterface

a convenient "tostring" interface, used for easy console writing

subblockmod_make_subblockSubroutine

Builds the quadblock. The four subblocks are calculated based on the specified factors, positions in the block, weights and basis functions. These four subblocks are then added to the quadblock that is passed along, and the filled quadblock is returned.

suydam_cluster_eqmod_equilibriumInterface

interface to the different equilibrium submodules

taylor_couette_eqmod_equilibriumInterface

interface to the different equilibrium submodules

tc_pinch_eqmod_equilibriumInterface

interface to the different equilibrium submodules

tear_downmod_arpack_typeSubroutine

Cleanup routine, deallocates type attributes.

ticmod_timingSubroutine

Subroutine to start a wall clock timer.