Procedures

ProcedureLocationProcedure TypeDescription
add_bmatrix_terms mod_matrix_manager Interface
add_conduction_matrix_terms mod_matrix_manager Interface
add_conduction_matrix_terms_bfield smod_conduction_matrix Subroutine
add_element mod_matrix_structure Subroutine

Adds a given element at a certain (row, column) position to the matrix datastructure. Elements that are zero are not added, sanity checks are done on the row and column indices.

add_flow_matrix_terms mod_matrix_manager Interface
add_hall_bmatrix_terms mod_matrix_manager Interface
add_hall_matrix_terms mod_matrix_manager Interface
add_heatloss_matrix_terms mod_matrix_manager Interface
add_natural_conduction_terms mod_natural_boundaries Interface
add_natural_conduction_terms_bfield smod_natural_bounds_conduction Subroutine
add_natural_flow_terms mod_natural_boundaries Interface
add_natural_hall_Bterms mod_natural_boundaries Interface
add_natural_hall_terms mod_natural_boundaries Interface
add_natural_regular_terms mod_natural_boundaries Interface
add_natural_resistive_terms mod_natural_boundaries Interface
add_natural_viscosity_terms mod_natural_boundaries Interface
add_node mod_matrix_elements Subroutine
add_node mod_matrix_row Subroutine

Adds a new node to the linked list with a given column index and value.

add_regular_matrix_terms mod_matrix_manager Interface
add_resistive_matrix_terms mod_matrix_manager Interface
add_to_node_element mod_matrix_node Subroutine

Adds a given element to the node element, does type-checking of the polymorphic element given. Allowed types are complex, real, integer.

add_to_quadblock mod_build_quadblock Subroutine

This routine builds the quadblock at one particular grid point in the Gaussian grid and for one particular Gaussian weight. For a 2x2 block at index in the top-left block we have as index of the bottom-right corner of the 2x2 block. The other corners are then filled by subtracting one from an index.

add_viscosity_matrix_terms mod_matrix_manager Interface
adiabatic_homo_eq mod_equilibrium Interface

interface to the different equilibrium submodules

append_node mod_matrix_row Subroutine

Subroutine to append a new node to an already existing list of nodes. A new node is created, appended, and the tail is updated.

apply_boundary_conditions mod_boundary_manager Subroutine
apply_essential_boundaries_left mod_essential_boundaries Subroutine
apply_essential_boundaries_right mod_essential_boundaries Subroutine
apply_natural_boundaries_left mod_natural_boundaries Subroutine
apply_natural_boundaries_right mod_natural_boundaries Subroutine
are_set mod_units Function
arnoldi mod_solvers Interface

interface to the different solution methods implemented in submodules

array_to_banded mod_transform_matrix Interface
array_to_complex_banded mod_transform_matrix Subroutine

Converts a given array to a banded datastructure.

array_to_complex_hermitian_banded mod_transform_matrix Subroutine

Converts a given array to a Hermitian banded datastructure.

array_to_hermitian_banded mod_transform_matrix Interface
array_to_matrix mod_transform_matrix Interface
assemble mod_base_efs Subroutine
assemble mod_eigenfunctions Subroutine
assemble mod_derived_efs Subroutine
assemble mod_state_vector Subroutine
assemble_eigenfunction mod_ef_assembly Function
assert mod_assert Subroutine

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

Read more…
ax_values mod_solar_atmosphere Function
B0 smod_equil_resistive_homo Function
B0 smod_equil_harris_sheet Function
B0 smod_equil_resistive_tearing_flow Function
B0 smod_equil_resistive_tearing Function
B01_and_cylindrical mod_inspections Function
B02 smod_equil_MRI Function
B02 smod_equil_kelvin_helmholtz_cd Function
B02 smod_equil_interchange_modes Function
B02 smod_equil_resonant_absorption Function
B02 smod_equil_flow_driven_instabilities Function
B02 smod_equil_resistive_homo Function
B02 smod_equil_rotating_plasma_cylinder Function
B02 smod_equil_adiabatic_homo Function
B02 smod_equil_harris_sheet Function
B02 smod_equil_suydam_cluster Function
B02 smod_equil_resistive_tearing_flow Function
B02 smod_numerical Function
B02 mod_solar_atmosphere Function
B02 smod_equil_magnetothermal_instabilities Function
B02 smod_equil_isothermal_atmosphere Function
B02 smod_equil_resistive_tearing Function
B02 smod_equil_discrete_alfven Function
B02 smod_equil_tc_pinch Function
B02 smod_equil_gold_hoyle Function
B02 smod_equil_constant_current Function
B02 smod_equil_internal_kink_instability Function
B03 smod_equil_RTI_theta_pinch Function
B03 smod_equil_MRI Function
B03 smod_equil_kelvin_helmholtz_cd Function
B03 smod_equil_coronal_flux_tube Function
B03 smod_equil_interchange_modes Function
B03 smod_equil_resonant_absorption Function
B03 smod_equil_flow_driven_instabilities Function
B03 smod_equil_photospheric_flux_tube Function
B03 smod_equil_resistive_homo Function
B03 smod_equil_rotating_plasma_cylinder Function
B03 smod_equil_adiabatic_homo Function
B03 smod_equil_harris_sheet Function
B03 smod_equil_suydam_cluster Function
B03 smod_equil_gravito_mhd Function
B03 smod_equil_resistive_tearing_flow Function
B03 smod_numerical Function
B03 smod_user_defined Function
B03 mod_solar_atmosphere Function
B03 smod_equil_isothermal_atmosphere Function
B03 smod_equil_resistive_tearing Function
B03 smod_equil_discrete_alfven Function
B03 smod_equil_gold_hoyle Function
B03 smod_equil_constant_current Function
B03 smod_equil_internal_kink_instability Function
banded_matrix_x_vector mod_banded_operations Function

Calculates the matrix-vector product of a general complex banded matrix and a complex vector. Uses the level 2 BLAS routine zgbmv.

banded_to_array mod_transform_matrix Interface
banded_to_complex_array mod_transform_matrix Function

Converts a banded datastructure to a full complex array.

basis_function mod_basis_functions Interface
build_matrices mod_matrix_manager Subroutine

The quadblock is shifted along the main (tri)diagonal. We add dim_subblock instead of dim_quadblock to the indices, due to overlapping of the bottom-right part of the quadblock with the top-left part of the next grid interval.

Read more…
bx_values mod_solar_atmosphere Function
can_calculate_pp_quantities mod_derived_ef_names Function
can_get_B1 mod_derived_ef_names Function
can_get_B2 mod_derived_ef_names Function
can_get_B3 mod_derived_ef_names Function
can_get_B_pp mod_derived_ef_names Function
can_get_curl_B_i mod_derived_ef_names Function
can_get_curl_B_pp mod_derived_ef_names Function
can_get_curl_v_1 mod_derived_ef_names Function
can_get_curl_v_2 mod_derived_ef_names Function
can_get_curl_v_3 mod_derived_ef_names Function
can_get_curl_v_pp mod_derived_ef_names Function
can_get_dB1 mod_derived_ef_names Function
can_get_div_B mod_derived_ef_names Function
can_get_div_v mod_derived_ef_names Function
can_get_entropy mod_derived_ef_names Function
can_get_v_pp mod_derived_ef_names Function
cast_node_element_to_complex mod_matrix_elements Function
character_array_tostring mod_logging Function
check_bfield mod_settings Subroutine
check_eigenfunction_subset_params mod_input Subroutine

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

check_if_thermal_balance_needs_enforcing mod_heatloss Subroutine
cleanup legolas Subroutine

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

complex_is_equal mod_check_values Function

Equality check between complex values

complex_is_zero mod_check_values Function

Checks if complex values are zero

complex_tostring mod_logging Function
constant_current_eq mod_equilibrium Interface

interface to the different equilibrium submodules

contains_inf_complex mod_check_values Function

checks a given complex value/array/matrix for infinity.

contains_inf_real mod_check_values Function

checks a given real value/array/matrix for infinity.

contains_NaN mod_inspections Function
contains_NaN_complex mod_check_values Function

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

contains_NaN_real mod_check_values Function

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

contains_negative mod_inspections Function
contains_on_component mod_state_vector Function
contains_on_name mod_state_vector Function
continuity_condition mod_inspections Function
copy mod_matrix_structure Function

Dedicated function to copy a matrix structure into a new matrix structure. The datastructure contains pointers, such that simply setting matrix1 = matrix2 may result in pointer target losses (and wrong results).

Read more…
coronal_flux_tube_eq mod_equilibrium Interface

interface to the different equilibrium submodules

couette_flow_eq mod_equilibrium Interface

interface to the different equilibrium submodules

cputic mod_timing Subroutine

Subroutine to start a CPU timer.

Read more…
cputoc mod_timing Subroutine

Subroutine to end a CPU timer.

Read more…
create_and_set_derived_state_vector mod_derived_ef_names Function
create_atmosphere_curves mod_solar_atmosphere Subroutine

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

create_datfile mod_output Subroutine
create_first_node mod_matrix_row Subroutine

Subroutine to add the first node to the linked list. Allocates a new node and sets both the head and tail to this node.

dB02 smod_equil_MRI Function
dB02 smod_equil_kelvin_helmholtz_cd Function
dB02 smod_equil_interchange_modes Function
dB02 smod_equil_flow_driven_instabilities Function
dB02 smod_equil_rotating_plasma_cylinder Function
dB02 smod_equil_harris_sheet Function
dB02 smod_equil_suydam_cluster Function
dB02 smod_equil_resistive_tearing_flow Function
dB02 smod_numerical Function
dB02 mod_solar_atmosphere Function
dB02 smod_equil_magnetothermal_instabilities Function
dB02 smod_equil_resistive_tearing Function
dB02 smod_equil_discrete_alfven Function
dB02 smod_equil_tc_pinch Function
dB02 smod_equil_gold_hoyle Function
dB02 smod_equil_constant_current Function
dB02 smod_equil_internal_kink_instability Function
dB03 smod_equil_RTI_theta_pinch Function
dB03 smod_equil_MRI Function
dB03 smod_equil_interchange_modes Function
dB03 smod_equil_flow_driven_instabilities Function
dB03 smod_equil_harris_sheet Function
dB03 smod_equil_suydam_cluster Function
dB03 smod_equil_gravito_mhd Function
dB03 smod_equil_resistive_tearing_flow Function
dB03 smod_numerical Function
dB03 mod_solar_atmosphere Function
dB03 smod_equil_resistive_tearing Function
dB03 smod_equil_gold_hoyle Function
dB03 smod_equil_internal_kink_instability Function
ddB02 smod_equil_harris_sheet Function
ddB02 smod_equil_resistive_tearing_flow Function
ddB02 smod_numerical Function
ddB02 smod_equil_resistive_tearing Function
ddB02 smod_equil_tc_pinch Function
ddB03 smod_equil_harris_sheet Function
ddB03 smod_equil_resistive_tearing_flow Function
ddB03 smod_numerical Function
ddB03 smod_equil_resistive_tearing Function
ddhcubic mod_basis_functions Function
ddspline mod_state_vector_component Subroutine
ddT0 smod_numerical Function
ddv02 smod_numerical Function
ddv02 smod_user_defined Function
ddv02 smod_equil_taylor_couette Function
ddv02 smod_equil_tc_pinch Function
ddv03 smod_numerical Function
deallocate_cooling_curves mod_cooling_curves Subroutine
deallocate_derived_ef_module_variables mod_derived_efs Subroutine
deallocate_input mod_arrays Subroutine

Deallocates this module's arrays. Called in main as part of cleanup.

debug mod_logging Subroutine
delete mod_equilibrium_settings Subroutine
delete mod_state_vector_component Subroutine
delete mod_thermal_conduction Subroutine
delete mod_matrix_elements Subroutine
delete mod_gravity Subroutine
delete mod_grid_settings Subroutine
delete mod_background Subroutine
delete mod_io_settings Subroutine
delete mod_bg_temperature Subroutine
delete mod_bg_velocity Subroutine
delete mod_settings Subroutine
delete mod_matrix_node Subroutine

Destructor, deallocates the node attributes.

delete mod_hall Subroutine
delete mod_base_efs Subroutine
delete mod_bg_density Subroutine
delete mod_radiative_cooling Subroutine
delete mod_grid Subroutine
delete mod_resistivity Subroutine
delete mod_solver_settings Subroutine
delete mod_eigenfunctions Subroutine
delete mod_matrix_element_node Subroutine
delete mod_derived_efs Subroutine
delete mod_heating Subroutine
delete mod_state_vector Subroutine
delete mod_heatloss Subroutine
delete mod_physics Subroutine
delete mod_bg_magnetic Subroutine
delete_matrix mod_matrix_structure Subroutine

Deallocates the matrix datastructure, nullifies all corresponding pointers and deallocates the various nodes in the rows.

delete_node_from_row mod_matrix_row Subroutine

Deletes a given node from the current row.

delete_row mod_matrix_row Subroutine

Deletes a given linked list row by recursively iterating over all nodes. Nullifies the pointers and deallocates the elements.

derived_ef_func mod_derived_efs Interface
derived_state_vector_is_set mod_settings Function
destroy mod_banded_matrix Subroutine

Destructor, deallocates the datastructure.

destroy mod_banded_matrix_hermitian Subroutine

Destructor, deallocates the datastructure.

destroy mod_arpack_type Subroutine

Destructor, deallocates variables.

dfx smod_equil_RTI_theta_pinch Function
dhcubic mod_basis_functions Function
dhquad mod_basis_functions Function
dimensions_are_valid mod_banded_matrix Function

Checks if the given matrix dimensions are valid. For now, we only accept square matrices. Returns .true. if rows equals cols, .false. otherwise.

disable mod_conduction_settings Subroutine
disable mod_viscosity_settings Subroutine
disable mod_resistivity_settings Subroutine
disable mod_cooling_settings Subroutine
disable mod_hall_settings Subroutine
disable mod_gravity_settings Subroutine
disable mod_flow_settings Subroutine
disable mod_heating_settings Subroutine
disable_prefix mod_logging Subroutine
discrete_alfven_eq mod_equilibrium Interface

interface to the different equilibrium submodules

DJ0 smod_equil_suydam_cluster Function
dJ0 smod_equil_internal_kink_instability Function
DJ1 smod_equil_suydam_cluster Function
dJ1 smod_equil_internal_kink_instability Function
do_eigenvalue_problem_allocations legolas Subroutine
do_equilibrium_inspections mod_inspections Subroutine
dp0 smod_equil_MRI Function
dp0 smod_equil_discrete_alfven Function
dp0 smod_equil_constant_current Function
dp_func mod_inspections Interface
drho0 smod_equil_RTI_theta_pinch Function
drho0 smod_equil_MRI Function
drho0 smod_equil_interchange_modes Function
drho0 smod_equil_resonant_absorption Function
drho0 smod_equil_flow_driven_instabilities Function
drho0 smod_equil_gravito_mhd Function
drho0 smod_numerical Function
drho0 smod_equil_gravito_acoustic Function
drho0 smod_user_defined Function
drho0 mod_solar_atmosphere Function

Sets density derivative using the differential equation to ensure force balance, instead of relying on numerical differentiation.

drho0 smod_equil_magnetothermal_instabilities Function
drho0 smod_equil_isothermal_atmosphere Function
drho0 smod_equil_discrete_alfven Function
drho0 smod_equil_internal_kink_instability Function
dspline mod_state_vector_component Subroutine
dT0 smod_equil_MRI Function
dT0 smod_equil_kelvin_helmholtz_cd Function
dT0 smod_equil_flow_driven_instabilities Function
dT0 smod_equil_rotating_plasma_cylinder Function
dT0 smod_equil_harris_sheet Function
dT0 smod_equil_suydam_cluster Function
dT0 smod_numerical Function
dT0 mod_solar_atmosphere Function
dT0 smod_equil_discrete_alfven Function
dT0 smod_equil_taylor_couette Function
dT0 smod_equil_tc_pinch Function
dT0 smod_equil_constant_current Function
dT0 smod_equil_internal_kink_instability Function
dv02 smod_equil_RTI_theta_pinch Function
dv02 smod_equil_MRI Function
dv02 smod_equil_flow_driven_instabilities Function
dv02 smod_equil_rotating_plasma_cylinder Function
dv02 smod_equil_resistive_tearing_flow Function
dv02 smod_numerical Function
dv02 smod_user_defined Function
dv02 smod_equil_couette_flow Function
dv02 smod_equil_taylor_couette Function
dv02 smod_equil_tc_pinch Function
dv03 smod_equil_kelvin_helmholtz_cd Function
dv03 smod_equil_flow_driven_instabilities Function
dv03 smod_equil_suydam_cluster Function
dv03 smod_numerical Function
dv03 smod_equil_couette_flow Function
dv03 smod_equil_internal_kink_instability Function
dx_func_i mod_grid Interface
eigenvalue_is_inside_subset_radius mod_eigenfunctions Function
enable mod_resistivity_settings Subroutine
enable mod_cooling_settings Subroutine
enable mod_hall_settings Subroutine
enable mod_gravity_settings Subroutine
enable mod_flow_settings Subroutine
enable mod_heating_settings Subroutine
enable_cooling mod_physics_settings Subroutine
enable_electron_inertia mod_hall_settings Subroutine
enable_flow mod_physics_settings Subroutine
enable_gravity mod_physics_settings Subroutine
enable_hall mod_physics_settings Subroutine
enable_heating mod_physics_settings Subroutine
enable_para_conduction mod_conduction_settings Subroutine
enable_parallel_conduction mod_physics_settings Subroutine
enable_perp_conduction mod_conduction_settings Subroutine
enable_perpendicular_conduction mod_physics_settings Subroutine
enable_prefix mod_logging Subroutine
enable_resistivity mod_physics_settings Subroutine
enable_viscosity mod_physics_settings Subroutine
enable_viscous_heating mod_viscosity_settings Subroutine
end_timer mod_timing Function
energy_balance_condition mod_inspections Function
error mod_logging Subroutine
fetch_boundary_quadblock mod_natural_boundaries Subroutine
find_index_in_character_array mod_get_indices Function

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

find_indices_in_character_array mod_get_indices Function

Function to locate the indices of an array of characters in another character array. Returns the indices of the first hit, it no match was found zero is returned.

flow_driven_instabilities_eq mod_equilibrium Interface

interface to the different equilibrium submodules

force_balance_1_condition mod_inspections Function
force_balance_2_condition mod_inspections Function
force_balance_3_condition mod_inspections Function
from_function mod_function_utils Function
func mod_integration Interface
fx smod_equil_RTI_theta_pinch Function
g0 smod_equil_MRI Function
g0 smod_equil_interchange_modes Function
g0 smod_equil_flow_driven_instabilities Function
g0 smod_equil_gravito_mhd Function
g0 smod_equil_gravito_acoustic Function
g0 smod_user_defined Function
g0 mod_solar_atmosphere Function

Default profile for the solar gravitational field

g0 smod_equil_isothermal_atmosphere Function
general_array_to_matrix mod_transform_matrix Function

Converts a given 2D array to the linked-list matrix datastructure.

generate_grid mod_grid Subroutine
get_arpack_mode mod_solver_settings Function
get_array_element mod_transform_matrix Function

Retrieves the element at index (i, j) for an array of general type. Returns the element as a (casted) complex type.

get_B0 mod_bg_magnetic Function
get_B1 mod_derived_efs Function
get_B2 mod_derived_efs Function
get_B3 mod_derived_efs Function
get_B_para mod_derived_efs Function
get_B_perp mod_derived_efs Function
get_base_eigenfunction mod_derived_efs Function
get_basename_datfile mod_io_settings Function
get_basis_function_name mod_state_vector_component Function
get_basis_functions mod_state_vector Function
get_block_index_for_single_component mod_essential_boundaries Function
get_block_indices mod_essential_boundaries Function
get_bmat mod_arpack_type Function

Getter for kind of B-matrix in eigenvalue problem.

get_boundary_type mod_equilibrium_settings Function
get_combined_value_from_eigenvector mod_ef_assembly Function
get_complex_element mod_matrix_structure Function

Returns the complex element associated with the linked-list node at position (row, column) in the matrix datastructure. Non-existing nodes correspond to zero values, so when a node at (row, column) is not found this function returns (complex) zero.

get_components_from_basis_function mod_state_vector Function
get_cooling_curve mod_cooling_settings Function
get_cooling_table mod_cooling_curves Subroutine
get_curl_B_1 mod_derived_efs Function
get_curl_B_2 mod_derived_efs Function
get_curl_B_3 mod_derived_efs Function
get_curl_B_para mod_derived_efs Function
get_curl_B_perp mod_derived_efs Function
get_curl_v_1 mod_derived_efs Function
get_curl_v_2 mod_derived_efs Function
get_curl_v_3 mod_derived_efs Function
get_curl_v_para mod_derived_efs Function
get_curl_v_perp mod_derived_efs Function
get_datfile_path mod_output Function
get_dB0 mod_bg_magnetic Function
get_dB1 mod_derived_efs Function
get_default_basis_function mod_state_vector_component Function
get_deps mod_grid Function
get_derived_state_vector mod_settings Function
get_diagonal_factor mod_essential_boundaries Function
get_dim_integralblock mod_dims Function
get_dim_matrix mod_dims Function
get_dim_quadblock mod_dims Function
get_dim_subblock mod_dims Function
get_div_B mod_derived_efs Function
get_div_v mod_derived_efs Function
get_dlambdadT mod_radiative_cooling Function
get_dLdrho mod_heatloss Function
get_dLdT mod_heatloss Function
get_dropoff mod_physics_utils Function
get_dropoff_dr mod_physics_utils Function
get_dtcparadr mod_thermal_conduction Function
get_dtcparadT mod_thermal_conduction Function
get_dtcperpdB2 mod_thermal_conduction Function
get_dtcperpdr mod_thermal_conduction Function
get_dtcperpdrho mod_thermal_conduction Function
get_dtcperpdT mod_thermal_conduction Function
get_dtcprefactordr mod_thermal_conduction Function
get_ef_gridpts mod_grid_settings Function
get_eigenfunctions legolas Subroutine

Initialises and calculates the eigenfunctions if requested.

get_electron_fraction mod_hall_settings Function
get_element mod_banded_matrix Function

Retrieves the element at position (row, col) of the original matrix. See the LAPACK documentation, element $a_{ij}$ of the original matrix is stored at position $(ku + 1 + i - j, j)$ (with $ku$ the number of superdiagonals).

get_element mod_banded_matrix_hermitian Function

Retrieves the element at position (row, col) of the original matrix. See the LAPACK documentation, element $a_{ij}$ of the original matrix is stored at position $(kd + 1 + i - j, j)$ if uplo = "U" and at position $(1 + i - j, j)$ if uplo = "L" in the banded storage.

get_element mod_matrix_element_node Function
get_elements mod_matrix_elements Function
get_entropy mod_derived_efs Function
get_eps mod_grid Function
get_equilibrium_type mod_equilibrium_settings Function
get_evpdim mod_arpack_type Function

Getter for dimension of eigenvalue problem.

get_fixed_resistivity mod_resistivity_settings Function
get_fixed_tc_para mod_conduction_settings Function
get_fixed_tc_perp mod_conduction_settings Function
get_gamma mod_physics_settings Function
get_gamma_1 mod_physics_settings Function
get_gauss_gridpts mod_grid_settings Function
get_geometry mod_grid_settings Function
get_grid_end mod_grid_settings Function
get_grid_start mod_grid_settings Function
get_gridpts mod_grid_settings Function
get_hallfactor mod_hall Function

Retrieves the normalised Hall factor as described by Porth et al. (2014).

get_index mod_get_indices Interface

interface to retrieve the index of an element in an array.

Read more…
get_inertiafactor mod_hall Function
get_interpolated_dlambdadT mod_cooling_curves Function
get_interpolated_lambdaT mod_cooling_curves Function
get_interpolation_points mod_cooling_settings Function
get_L0 mod_heatloss Function
get_label mod_matrix_structure Function

Returns the current label.

get_lambdaT mod_radiative_cooling Function
get_logging_level mod_logging Function
get_LU_factorisation_banded mod_linear_systems Subroutine

Calculates the LU factorisation of a complex banded matrix . Uses the LAPACK routine zgbtrf.

get_lworkl mod_arpack_type Function

Getter for length of workl array, returns 3 * ncv**2 + 5 * ncv

get_maxiter mod_arpack_type Function

Getter for maximum number of iterations.

get_mean_molecular_weight mod_units Function
get_name mod_state_vector_component Function
get_names mod_state_vector Function
get_nb_diagonals mod_matrix_structure Subroutine

Subroutine to get the number of super- and sub-diagonals in the matrix.

get_nb_elements mod_matrix_elements Function
get_nb_eqs mod_settings Function
get_ncv mod_arpack_type Function

Getter for number of Arnoldi basis vectors that should be calculated.

get_nev mod_arpack_type Function

Getter for number of eigenvalues to calculate.

get_node mod_matrix_elements Function
get_node mod_matrix_row Function

Returns a pointer to the node corresponding to the given column. Returns a nullified pointer if no node containing the given column index was found.

get_node_element mod_matrix_node Function

Returns the node element.

get_numerical_derivative mod_interpolation Subroutine

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:

Read more…
get_odd_parity_from_basis_function_name mod_essential_boundaries Function

This relies on the behaviour of the basis functions. If a variable needs to be zero, then this is done by forcing the basis functions on that edge to zero. For both left and right edges the quadratic basis functions have a non-zero entry in their even rows/columns, whereas the cubic basis functions have a non-zero entry in their odd rows/columns. Concrete: - cubic, left: C2 is non-zero, zero out elements with spline(2) - cubic, right: C1 is non-zero, zero out elements with spline(1) - quad, left: Q4 is non-zero, zero out elements with spline(4) - quad, right: Q3 is non-zero, zero out elements with spline(3) See also ordening of a quadblock in mod_build_quadblock.

get_output_folder mod_io_settings Function
get_parfile mod_input Subroutine

Parses the command line arguments and retrieves the parfile passed.

Read more…
get_physics_type mod_settings Function
get_position mod_matrix_element_node Function
get_positions mod_matrix_elements Function
get_residual mod_output Function
get_rosner_dlambdadT mod_cooling_curves Function
get_rosner_index mod_cooling_curves Function
get_rosner_lambdaT mod_cooling_curves Function
get_second_numerical_derivative mod_interpolation Subroutine

Calculates the second 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.

Read more…
get_solver mod_solver_settings Function
get_spline_function mod_state_vector_component Subroutine
get_state_vector mod_settings Function
get_tcpara mod_thermal_conduction Function
get_tcperp mod_thermal_conduction Function
get_tcprefactor mod_thermal_conduction Function
get_tolerance mod_arpack_type Function

Getter for tolerance (relative accuracy) to indicate eigenvalue convergence.

get_total_nb_elements mod_banded_matrix Function

Returns the total number of elements inside the banded matrix.

get_total_nb_elements mod_banded_matrix_hermitian Function

Returns the total number of elements inside the banded matrix

get_total_nb_elements mod_matrix_structure Function

Returns the total number of elements (nodes) across the various rows.

get_total_nb_nonzero_elements mod_banded_matrix Function

Returns the total number of nonzero elements inside the banded matrix.

get_total_time mod_timing Function
get_unit_conduction mod_units Function
get_unit_density mod_units Function
get_unit_gravity mod_units Function
get_unit_lambdaT mod_units Function
get_unit_length mod_units Function
get_unit_magneticfield mod_units Function
get_unit_mass mod_units Function
get_unit_numberdensity mod_units Function
get_unit_pressure mod_units Function
get_unit_resistivity mod_units Function
get_unit_temperature mod_units Function
get_unit_time mod_units Function
get_unit_velocity mod_units Function
get_updated_number_of_gridpoints mod_grid Function
get_v0 mod_bg_velocity Function
get_v_para mod_derived_efs Function
get_v_perp mod_derived_efs Function
get_viscosity_value mod_viscosity_settings Function
get_which mod_arpack_type Function

Getter for which eigenvalues to return.

gold_hoyle_eq mod_equilibrium Interface

interface to the different equilibrium submodules

gravito_acoustic_eq mod_equilibrium Interface

interface to the different equilibrium submodules

gravito_mhd_eq mod_equilibrium Interface

interface to the different equilibrium submodules

H_for_thermal_balance mod_heatloss Function
harris_sheet_eq mod_equilibrium Interface

interface to the different equilibrium submodules

has_bfield mod_settings Function
has_electron_inertia mod_hall_settings Function
has_fixed_resistivity mod_resistivity_settings Function
has_fixed_tc_para mod_conduction_settings Function
has_fixed_tc_perp mod_conduction_settings Function
has_parallel_conduction mod_conduction_settings Function
has_perpendicular_conduction mod_conduction_settings Function
has_viscous_heating mod_viscosity_settings Function
hcubic mod_basis_functions Function
hermitian_banded_to_array mod_transform_matrix Interface
hermitian_banded_to_complex_array mod_transform_matrix Function

Converts a Hermitian banded datastructure to a full complex array.

hquad mod_basis_functions Function
import_equilibrium_data mod_arrays Subroutine

Imports arrays from the file specified by the parfile parameter input_file. To be called in the equilibrium submodule.

in_cgs mod_units Function
increment_nb_elements mod_matrix_elements Subroutine
induction_1_condition mod_inspections Function
induction_2_condition mod_inspections Function
info mod_logging Subroutine
init_equilibrium_params mod_equilibrium_params Subroutine

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

initialise mod_base_efs Subroutine
initialise mod_radiative_cooling Subroutine
initialise mod_grid Subroutine
initialise mod_logging Subroutine
initialise mod_eigenfunctions Subroutine
initialise mod_derived_efs Subroutine
initialise_exceptions mod_exceptions Subroutine

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

initialise_globals mod_global_variables Subroutine
initialise_sv_components mod_state_vector Subroutine
integer_array_tostring mod_logging Function
integer_tostring mod_logging Function
integrate_ode_rk45 mod_integration Subroutine

Numerically integrates the differential equation using a fifth-order Runge-Kutta method. The functions A(x) and B(x) are passed as arguments and should be conform to the given interface, that is, these should be real(dp) functions which take a single real(dp), intent(in) argument. The integration is performed on the interval [x0, x1] with a stepsize of dh = (x1 - x0) / (nbpoints - 1).

interchange_modes_eq mod_equilibrium Interface

interface to the different equilibrium submodules

internal_kink_eq mod_equilibrium Interface

interface to the different equilibrium submodules

interpolate_and_derive mod_arrays Subroutine
interpolate_array_on_ef_grid mod_derived_efs Function
interpolate_cooling_curves mod_cooling_curves Subroutine

The cooling tables contain dimensionfull values on a logarithmic scale. To avoid resampling the table on an unequally spaced temperature grid by doing 10**T, we interpolate the logarithmic table values on an equally spaced T grid in log scale, so we get log10(lambda(T)) and log10(T) values.

Read more…
interpolate_table mod_interpolation Subroutine

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.

Read more…
inverse_iteration mod_solvers Interface

interface to the different solution methods implemented in submodules

is_adiabatic mod_heatloss Function
is_compatible_with mod_banded_matrix Function

Checks if a banded matrix is compatibe with another banded matrix. This implies that the following attributes should be equal: - dimensions of the original matrices - number of superdiagonals and subdiagonals - dimensions of the banded matrices themselves Returns .true. if these three criteria are satisfied, .false. otherwise.

is_compatible_with mod_banded_matrix_hermitian Function

Checks if a Hermitian band matrix is compatible with another Hermitian band matrix. This implies that the following attributes should be equal: - number of rows/columns - number of sub/superdiagonals - storage of upper or lower triangular part - dimensions of the banded matrices themselves Returns .true. if all criteria are satisfied, .false. otherwise.

is_compatible_with mod_state_vector Function
is_constant mod_check_values Interface

interface to check if an array is constant

is_enabled mod_conduction_settings Function
is_enabled mod_viscosity_settings Function
is_enabled mod_resistivity_settings Function
is_enabled mod_cooling_settings Function
is_enabled mod_hall_settings Function
is_enabled mod_gravity_settings Function
is_enabled mod_flow_settings Function
is_enabled mod_heating_settings Function
is_equal mod_check_values Interface

interface to check equality between values/arrays

is_in_state_vector mod_derived_ef_names Function
is_inf_element mod_matrix_elements Function
is_infinite mod_check_values Interface

interface to check for inf values

is_NaN mod_check_values Interface

interface to check for NaN values

is_NaN_element mod_matrix_elements Function
is_negative mod_check_values Interface

interface to check for negative values

is_using_substitution mod_hall_settings Function
is_valid_cooling_curve mod_cooling_curves Function
is_valid_custom_base_grid mod_grid Function
is_valid_dx mod_grid Function
is_valid_element mod_matrix_structure Function

Checks if a given element is valid in order to add it to the matrix. Returns .true. if the element is of type real or complex, .false. otherwise.

is_valid_index mod_matrix_structure Function

Checks if a given index is valid for the current matrix datastructure. Returns .true. if the index (either row or column) is larger than 0 and smaller than the dimension of the matrix. Returns .false. otherwise.

is_valid_position mod_matrix_elements Function
is_within_band mod_banded_matrix Function

Checks if a given position (row, col) is within the banded structure, i.e. with $ku$ the number of superdiagonals and $kl$ the number of subdiagonals.

is_within_band mod_banded_matrix_hermitian Function

Checks if a given position (row, col) is within the banded structure. For uplo = "U" the position is within the band if for uplo = "L" the position is within the band if with $kd$ the number of sub/superdiagonals and $n$ the number of rows/columns.

is_zero mod_check_values Interface

interface to check if values/arrays are zero

isothermal_atmosphere_eq mod_equilibrium Interface

interface to the different equilibrium submodules

J0 smod_equil_suydam_cluster Function
J0 smod_equil_internal_kink_instability Function
J1 smod_equil_suydam_cluster Function
J1 smod_equil_internal_kink_instability Function
J2 smod_equil_internal_kink_instability Function
kh_cd_instability_eq mod_equilibrium Interface

interface to the different equilibrium submodules

KHI_eq mod_equilibrium Interface

interface to the different equilibrium submodules

log_equilibrium_info mod_console Subroutine
log_function_warning mod_physics Subroutine
log_grid_info mod_console Subroutine
log_io_info mod_console Subroutine
log_msg_by_gridpoint_change mod_grid Subroutine
log_physics_info mod_console Subroutine
log_solver_info mod_console Subroutine
log_usr_H_func_warning mod_heatloss Subroutine
logical_tostring mod_logging Function
lookup_equilibrium_value mod_arrays Subroutine

Looks up the equilibrium value for given quantity and position.

lookup_table_value mod_interpolation Function

Function for fast table-lookup, returns the corresponding y-value in y_values based on a given based on a given . 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_eq mod_equilibrium Interface

interface to the different equilibrium submodules

matrix_to_array mod_transform_matrix Interface
matrix_to_banded mod_transform_matrix Interface
matrix_to_complex_array mod_transform_matrix Subroutine

Converts a given matrix data structure with complex nodes to a 2D complex array.

matrix_to_complex_banded mod_transform_matrix Subroutine

Converts a matrix data structure into a complex banded matrix.

matrix_to_complex_hermitian_banded mod_transform_matrix Subroutine

Converts a matrix data structure into a complex Hermitian banded matrix.

matrix_to_hermitian_banded mod_transform_matrix Interface
MRI_accretion_eq mod_equilibrium Interface

interface to the different equilibrium submodules

multiply mod_banded_operations Interface
nan_values_present mod_inspections Function
needs_noslip_left mod_essential_boundaries Function

Check if we need a no-slip condition on the left-hand side (i.e. viscosity). Does not apply on-axis for cylindrical unless two coaxial wall are present.

needs_noslip_right mod_essential_boundaries Function

Check if we need a no-slip condition on the right-hand side (i.e. viscosity).

needs_T_bounds mod_essential_boundaries Function

Checks if we need regularity conditions on temperature, this is the case if we have perpendicular thermal conduction.

negative_values_present mod_inspections Function
new_arpack_config mod_arpack_type Function

Constructor for a new ARPACK configuration based on the dimension of the eigenvalue problem, mode of the solver and type of the B-matrix. Initialises required variables and allocates work arrays to be used when calling the solvers.

new_background mod_background Function
new_banded_matrix mod_banded_matrix Function

Constructor for a new banded matrix with a given number of rows, columns, subdiagonals and superdiagonals. Allocates and initialises the datatype.

new_bg_density mod_bg_density Function
new_bg_magnetic mod_bg_magnetic Function
new_bg_temperature mod_bg_temperature Function
new_bg_velocity mod_bg_velocity Function
new_block_dims mod_dims Function
new_conduction mod_thermal_conduction Function
new_conduction_settings mod_conduction_settings Function
new_cooling mod_radiative_cooling Function
new_cooling_settings mod_cooling_settings Function
new_eigenfunctions mod_eigenfunctions Function
new_equilibrium_settings mod_equilibrium_settings Function
new_flow_settings mod_flow_settings Function
new_gravity mod_gravity Function
new_gravity_settings mod_gravity_settings Function
new_grid mod_grid Function
new_grid_settings mod_grid_settings Function
new_hall mod_hall Function
new_hall_settings mod_hall_settings Function
new_heating mod_heating Function
new_heating_settings mod_heating_settings Function
new_heatloss mod_heatloss Function
new_hermitian_banded_matrix mod_banded_matrix_hermitian Function

Constructor for a new Hermitian banded matrix with a given number of rows and diagonals. Allocates and initialises the datatype. initialise all to zero

new_io_settings mod_io_settings Function
new_matrix mod_matrix_structure Function

Constructor for a new matrix matrix with a given number of rows. Allocates and initialises the matrix datatype.

new_matrix_element_node mod_matrix_element_node Function
new_matrix_elements mod_matrix_elements Function
new_node mod_matrix_node Function

Constructor for a new node, sets the column and element attributes. The element passed is polymorphic, but will be cast to complex in the node itself. No nodes are linked yet; the pointer to the next node is initialised to null().

new_physics mod_physics Function
new_physics_settings mod_physics_settings Function
new_resistivity mod_resistivity Function
new_resistivity_settings mod_resistivity_settings Function
new_row mod_matrix_row Function

Constructor for a new row, initialises the linked list datastructure and sets the current head and tail pointers to null().

new_settings mod_settings Function
new_solver_settings mod_solver_settings Function
new_sv_component mod_state_vector_component Function
new_timer mod_timing Function
new_unit_system mod_units Function
new_viscosity_settings mod_viscosity_settings Function
node_has_spline mod_build_quadblock Function
numerical_eq mod_equilibrium Interface

interface to the different equilibrium submodules

on_exception_raised mod_exceptions Subroutine

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_file mod_output Subroutine
p0 smod_equil_MRI Function
p0 smod_equil_coronal_flux_tube Function
p0 smod_equil_magnetothermal_instabilities Function
p0 smod_equil_discrete_alfven Function
p0 smod_equil_constant_current Function
p_prof smod_equil_flow_driven_instabilities Function
paint_string mod_painting Function

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_finished_stats mod_arpack_type Subroutine

Parses the statistics that come out of ARPACK when the run is finished. Displays the number of OPX and BX operations and the number of re-orthogonalisation steps that were needed.

parse_io_info mod_input Subroutine
parse_znaupd_info mod_arpack_type Subroutine

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

parse_zneupd_info mod_arpack_type Subroutine

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.

phi_prof smod_equil_flow_driven_instabilities Function
photospheric_flux_tube_eq mod_equilibrium Interface

interface to the different equilibrium submodules

print_console_info mod_console Subroutine

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

print_logo mod_console Subroutine

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_startup_info mod_console Subroutine
print_timelog legolas Subroutine
print_whitespace mod_console Subroutine

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

qr_cholesky mod_solvers Interface

interface to the different solution methods implemented in submodules

qr_invert mod_solvers Interface

interface to the different solution methods implemented in submodules

qz_direct mod_solvers Interface

interface to the different solution methods implemented in submodules

raise_exception mod_exceptions Subroutine

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

read_equilibriumlist mod_input Subroutine
read_gridlist mod_input Subroutine
read_paramlist mod_input Subroutine
read_parfile mod_input Subroutine
read_physicslist mod_input Subroutine
read_savelist mod_input Subroutine
read_solvelist mod_input Subroutine
read_unitlist mod_input Subroutine
read_user_parfile legolas Subroutine
real_array_is_constant mod_check_values Function

Check if an array has constant values

real_is_equal mod_check_values Function

Equality check between real values

real_is_negative mod_check_values Function

Check if values are or contain negative numbers

real_is_zero mod_check_values Function

Checks if real values are zero

real_tostring mod_logging Function
resistive_homo_eq mod_equilibrium Interface

interface to the different equilibrium submodules

resistive_tearing_modes_eq mod_equilibrium Interface

interface to the different equilibrium submodules

resistive_tearing_modes_flow_eq mod_equilibrium Interface

interface to the different equilibrium submodules

resonant_absorption_eq mod_equilibrium Interface

interface to the different equilibrium submodules

retransform_eigenfunction mod_ef_assembly Function
rho0 smod_equil_RTI_theta_pinch Function
rho0 smod_equil_MRI Function
rho0 smod_equil_kelvin_helmholtz_cd Function
rho0 smod_equil_coronal_flux_tube Function
rho0 smod_equil_interchange_modes Function
rho0 smod_equil_resonant_absorption Function
rho0 smod_equil_flow_driven_instabilities Function
rho0 smod_equil_photospheric_flux_tube Function
rho0 smod_equil_resistive_homo Function
rho0 smod_equil_rotating_plasma_cylinder Function
rho0 smod_equil_adiabatic_homo Function
rho0 smod_equil_harris_sheet Function
rho0 smod_equil_suydam_cluster Function
rho0 smod_equil_gravito_mhd Function
rho0 smod_equil_resistive_tearing_flow Function
rho0 smod_numerical Function
rho0 smod_equil_gravito_acoustic Function
rho0 smod_user_defined Function
rho0 mod_solar_atmosphere Function
rho0 smod_equil_couette_flow Function
rho0 smod_equil_magnetothermal_instabilities Function
rho0 smod_equil_isothermal_atmosphere Function
rho0 smod_equil_resistive_tearing Function
rho0 smod_equil_discrete_alfven Function
rho0 smod_equil_taylor_couette Function
rho0 smod_equil_tc_pinch Function
rho0 smod_equil_gold_hoyle Function
rho0 smod_equil_constant_current Function
rho0 smod_equil_internal_kink_instability Function
rk45 mod_integration Subroutine

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

rotating_plasma_cyl_eq mod_equilibrium Interface

interface to the different equilibrium submodules

RTI_eq mod_equilibrium Interface

interface to the different equilibrium submodules

RTI_KHI_eq mod_equilibrium Interface

interface to the different equilibrium submodules

RTI_theta_pinch_eq mod_equilibrium Interface

interface to the different equilibrium submodules

select_eigenfunctions_to_save mod_eigenfunctions Subroutine
set_all_io_to_false mod_io_settings Subroutine
set_arpack_mode mod_solver_settings Subroutine
set_base_grid mod_grid Subroutine
set_based_on_to_false mod_units Subroutine
set_basename_datfile mod_io_settings Subroutine
set_basis_function mod_state_vector_component Subroutine
set_basis_functions mod_state_vector Subroutine
set_block_dims mod_dims Subroutine
set_bmat mod_arpack_type Subroutine

Sets the type of B-matrix.

set_boundary_type mod_equilibrium_settings Subroutine
set_cooling_curve mod_cooling_settings Subroutine
set_cooling_funcs mod_physics Subroutine
set_custom_grid mod_grid Subroutine
set_custom_spline mod_state_vector_component Subroutine
set_default_basis_functions mod_state_vector Subroutine
set_density_funcs mod_background Subroutine
set_derived_state_vector mod_settings Subroutine
set_ef_grid mod_grid Subroutine
set_electron_fraction mod_hall_settings Subroutine
set_element mod_banded_matrix Subroutine

Sets the element $a_{ij}$ of the original array into the banded structure. The row and col arguments refer to the row and column indices of the element in the original array. This routine has no effect if the location falls outside of the banded structure.

set_element mod_banded_matrix_hermitian Subroutine

Sets the element $a_{ij}$ of the original array into the banded structure. The row and col arguments refer to the row and column indices of the element in the original array. This routine has no effect if the location falls outside of the banded structure.

set_equilibrium mod_equilibrium Subroutine

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.

Read more…
set_equilibrium_arrays_on_ef_grid mod_derived_efs Subroutine
set_equilibrium_pointer mod_equilibrium Subroutine

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

Read more…
set_equilibrium_type mod_equilibrium_settings Subroutine
set_fixed_resistivity mod_resistivity_settings Subroutine
set_fixed_tc_para mod_conduction_settings Subroutine
set_fixed_tc_perp mod_conduction_settings Subroutine
set_function_pointer mod_derived_efs Subroutine
set_gamma mod_physics_settings Subroutine
set_gaussian_grid mod_grid Subroutine
set_geometry mod_grid_settings Subroutine
set_gravity_funcs mod_physics Subroutine
set_grid_boundaries mod_grid_settings Subroutine
set_gridpts mod_grid_settings Subroutine
set_heating_funcs mod_physics Subroutine
set_incompressible mod_physics_settings Subroutine
set_interpolation_points mod_cooling_settings Subroutine
set_label mod_matrix_structure Subroutine

Sets the label of the current matrix.

set_logging_level mod_logging Subroutine
set_magnetic_1_funcs mod_background Subroutine
set_magnetic_2_funcs mod_background Subroutine
set_magnetic_3_funcs mod_background Subroutine
set_maxiter mod_arpack_type Subroutine

Sets the maximum number of iterations that ARPACK is allowed to take, defaults to max(100, 10 * k) with k the number of eigenvalues.

Read more…
set_mean_molecular_weight mod_units Subroutine
set_mode mod_arpack_type Subroutine

Sets the mode for the solver.

set_module_pointers mod_heatloss Subroutine
set_nb_eqs mod_settings Subroutine
set_ncv mod_arpack_type Subroutine

Setter for ncv, the number of Arnoldi basis vectors to calculate. This should satisfy 1 <= ncv - nev and ncv <= evpdim, with recommended value ncv = 2 * nev (see arpack docs).

set_nev mod_arpack_type Subroutine

Setter for number of eigenvalues to calculate.

set_output_folder mod_io_settings Subroutine
set_parallel_conduction_funcs mod_physics Subroutine
set_perpendicular_conduction_funcs mod_physics Subroutine
set_raise_method mod_exceptions Subroutine

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

set_residual mod_arpack_type Subroutine

Setter for the residual vector, allocates and manually initialises the residual (= starting) vector using a uniform distribution on (-1, 1) for both the real and imaginary parts. Relies on the LAPACK routine zlarnv.

set_resistivity_funcs mod_physics Subroutine
set_small_values_to_zero mod_check_values Interface

interface to check for small values

set_solar_atmosphere mod_solar_atmosphere Subroutine

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.

Read more…
set_solver mod_solver_settings Subroutine
set_spacing_function mod_grid Subroutine
set_state_vector mod_settings Subroutine
set_temperature_funcs mod_background Subroutine
set_units_from_density mod_units Subroutine
set_units_from_numberdensity mod_units Subroutine
set_units_from_temperature mod_units Subroutine
set_velocity_1_funcs mod_background Subroutine
set_velocity_2_funcs mod_background Subroutine
set_velocity_3_funcs mod_background Subroutine
set_viscosity_value mod_viscosity_settings Subroutine
set_which mod_arpack_type Subroutine

Setter for the "which" argument of ARPACK routines.

should_compute_eigenvectors mod_io_settings Function
small_values_complex mod_check_values Subroutine

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_real mod_check_values Subroutine

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.

solar_atmosphere_dealloc mod_solar_atmosphere Subroutine
solve_arpack_general smod_arpack_main Interface
solve_arpack_shift_invert smod_arpack_main Interface
solve_evp mod_solvers Subroutine

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

Read more…
solve_linear_system_complex_banded mod_linear_systems Function

Calculates the solution to a system of linear equations where is a complex banded matrix and is a complex vector.

solve_linear_system_complex_banded_LU mod_linear_systems Function

Calculates the solution to a system of linear equations where is a complex banded matrix and is a complex vector. Uses the LU factorisation of and pivoting information from zgbtrf.

spitzer_detadr mod_resistivity Function

Default profile for the derivative of the resistivity $\eta$ with respect to position. Returns zero unless a dropoff profile was chosen.

spitzer_detadT mod_resistivity Function

Default profile for the derivative of the resistivity $\eta$ with respect to the temperature $T$. Returns one of the following: - zero (if resistivity is disabled or for fixed resistivity) - derivative of Spitzer resistivity with respect to T Values are normalised on return.

spitzer_eta mod_resistivity Function

Default profile for the resistivity $\eta$. Returns one of the following: - The Spitzer resistivity based on the equilibrium temperature profile - a fixed resistivity value - zero (if resistivity is disabled) Values are normalised on return.

spline mod_state_vector_component Subroutine
start_timer mod_timing Subroutine
state_vector_is_set mod_settings Function
str mod_logging Interface
suydam_cluster_eq mod_equilibrium Interface

interface to the different equilibrium submodules

T0 smod_equil_RTI_theta_pinch Function
T0 smod_equil_MRI Function
T0 smod_equil_kelvin_helmholtz_cd Function
T0 smod_equil_coronal_flux_tube Function
T0 smod_equil_interchange_modes Function
T0 smod_equil_resonant_absorption Function
T0 smod_equil_flow_driven_instabilities Function
T0 smod_equil_photospheric_flux_tube Function
T0 smod_equil_resistive_homo Function
T0 smod_equil_rotating_plasma_cylinder Function
T0 smod_equil_adiabatic_homo Function
T0 smod_equil_harris_sheet Function
T0 smod_equil_suydam_cluster Function
T0 smod_equil_gravito_mhd Function
T0 smod_equil_resistive_tearing_flow Function
T0 smod_numerical Function
T0 smod_equil_gravito_acoustic Function
T0 smod_user_defined Function
T0 mod_solar_atmosphere Function
T0 smod_equil_couette_flow Function
T0 smod_equil_magnetothermal_instabilities Function
T0 smod_equil_isothermal_atmosphere Function
T0 smod_equil_resistive_tearing Function
T0 smod_equil_discrete_alfven Function
T0 smod_equil_taylor_couette Function
T0 smod_equil_tc_pinch Function
T0 smod_equil_gold_hoyle Function
T0 smod_equil_constant_current Function
T0 smod_equil_internal_kink_instability Function
tag_to_index mod_arrays Subroutine

Translates equilibrium name to index.

taylor_couette_eq mod_equilibrium Interface

interface to the different equilibrium submodules

tc_pinch_eq mod_equilibrium Interface

interface to the different equilibrium submodules

throw_info_nonzero_warning mod_linear_systems Subroutine
tic mod_timing Subroutine

Subroutine to start a wall clock timer.

Read more…
toc mod_timing Subroutine

Subroutine to end a wall clock timer.

Read more…
update_block_dimensions mod_settings Subroutine
update_dependent_units mod_units Subroutine
uplo_is_valid mod_banded_matrix_hermitian Function

Checks whether the given uplo parameter is valid.

user_defined_eq mod_equilibrium Interface

interface to the different equilibrium submodules

v02 smod_equil_RTI_theta_pinch Function
v02 smod_equil_MRI Function
v02 smod_equil_flow_driven_instabilities Function
v02 smod_equil_rotating_plasma_cylinder Function
v02 smod_equil_suydam_cluster Function
v02 smod_equil_resistive_tearing_flow Function
v02 smod_numerical Function
v02 smod_user_defined Function
v02 smod_equil_couette_flow Function
v02 smod_equil_taylor_couette Function
v02 smod_equil_tc_pinch Function
v03 smod_equil_kelvin_helmholtz_cd Function
v03 smod_equil_flow_driven_instabilities Function
v03 smod_equil_rotating_plasma_cylinder Function
v03 smod_equil_suydam_cluster Function
v03 smod_numerical Function
v03 smod_equil_couette_flow Function
v03 smod_equil_internal_kink_instability Function
v_prof smod_equil_flow_driven_instabilities Function
validate_equilibrium_conditions mod_inspections Subroutine
validate_grid_start mod_grid_settings Subroutine
validate_on_axis_values mod_inspections Subroutine
validate_scale_ratio mod_hall Subroutine
warning mod_logging Subroutine
wave_numbers_are_valid mod_inspections Function
write_background_data mod_output Subroutine
write_background_names mod_output Subroutine
write_base_eigenfunction_data mod_output Subroutine
write_derived_eigenfunction_data mod_output Subroutine
write_eigenvector_data mod_output Subroutine
write_equilibrium_info mod_output Subroutine
write_grid_info mod_output Subroutine
write_header mod_output Subroutine
write_io_info mod_output Subroutine
write_matrix_data mod_output Subroutine
write_parameters mod_output Subroutine
write_physics_info mod_output Subroutine
write_physics_type_info mod_output Subroutine
write_residual_data mod_output Subroutine
write_solver_info mod_output Subroutine
write_units_info mod_output Subroutine
zero_func mod_function_utils Function
zero_out_row_and_col mod_essential_boundaries Subroutine

Zeroes out the row and column corresponding to the given indices. Afterwards diagonal_factor is introduced in that row/column on the main diagonal.