mod_equilibrium Module

Parent module governing all equilibrium types and submodules. This module contains all equilibrium types and the initial declarations of the module subroutines. Every equilibrium submodule extends this module, implementing one of the module subroutines declared here. All "main" equilibrium configurations are set in the submodules. The ones that depend on "main" arrays, like radiative cooling, are set here through calls to their respective modules.



Contents


Variables

TypeVisibility AttributesNameInitial
procedure, private, pointer:: set_equilibrium_values=> null()

pointer for the submodule, initialised to null

type(density_type), public :: rho_field

type containing all density-related equilibrium variables

type(temperature_type), public :: T_field

type containing all temperature-related equilibrium variables

type(bfield_type), public :: B_field

type containing all magnetic field-related equilibrium variables

type(velocity_type), public :: v_field

type containing all velocity-related equilibrium variables

type(gravity_type), public :: grav_field

type containing all gravity-related equilibrium variables

type(resistivity_type), public :: eta_field

type containing all resistivity-related equilibrium variables

type(cooling_type), public :: rc_field

type containig all radiative cooling-related equilibrium variables

type(conduction_type), public :: kappa_field

type containing all thermal conduction-related equilibrium variables

type(hall_type), public :: hall_field

type containing all Hall related variables


Interfaces

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine constant_current_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

  • private module module subroutine coronal_flux_tube_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine flow_driven_instabilities_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine gravito_acoustic_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine interchange_modes_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine isothermal_atmosphere_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine kh_cd_instability_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

  • private module module subroutine magnetothermal_instability_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine photospheric_flux_tube_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

  • private module module subroutine resistive_tearing_modes_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

  • private module module subroutine resistive_tearing_modes_flow_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

  • private module module subroutine resonant_absorption_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

  • private module module subroutine rotating_plasma_cyl_eq()

    Arguments

    None

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules

interface

interface to the different equilibrium submodules


Subroutines

public subroutine initialise_equilibrium()

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

Arguments

None

public subroutine set_equilibrium()

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…

Arguments

None

private subroutine set_equilibrium_pointer()

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

Read more…

Arguments

None

public subroutine allow_geometry_override(default_geometry, default_x_start, default_x_end)

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.

Read more…

Arguments

Type IntentOptional AttributesName
character, intent(in), optional :: default_geometry

default geometry to set

real(kind=dp), intent(in), optional :: default_x_start

default start of the grid

real(kind=dp), intent(in), optional :: default_x_end

default end of the grid

public subroutine equilibrium_clean()

Cleaning routine, deallocates the equilibrium types.

Arguments

None