Skip to content

adam_flume_cooling_object ​

ADAM, FLUME optically thin radiative cooling: the [cooling] input (issue #93, M11).

d(rho e)/dt = -n^2 Lambda(T), n = rho / particle_mass, T = p / (rho R), applied once per step on the committed state by Townsend's exact integration (adam_flume_cooling_library; D-M11-1: operator split, first order in the coupling with the dynamics, exact and stable for any dt / t_cool). The keys:

keyvalue
temperaturesthe node temperatures T_1 < ... < T_N, 2 <= N <= COOLING_NODES_MAX (64), all > 0 (a list)
lambdasLambda_k > 0 at the nodes (a list, as many as the temperatures)
particle_massm > 0, the mass per particle of n (for n_H: m_H / X)
dt_factoroptional, default 0 (off): also dt <= dt_factor * min t_cool, t_cool = rho e / (n^2 Lambda)

Lambda is the piecewise power law through the nodes; above T_N its last segment continues, below T_1 there is no cooling (D-M11-2: cooling only, T_1 the floor, reached exactly). The hydrodynamic models only (D-M11-3): with mhd-ideal the section is fatal. Every key, the gas constant and the temperatures are in the units of the input; the [reference] layer converts the temperatures, Lambda (L0^5 u0^3 rho0) and particle_mass (rho0 L0^3). Without the section is_active is false and nothing changes.

The object precomputes the segment exponents alpha_k and the evolution function at the nodes, Y_k, so a cell step costs two segment searches, two powers and one logarithm. One step raises Y by dt * dy_rate * rho, dy_rate = (gamma - 1) Lambda_N / (m^2 R T_N) (n^2 / rho = rho / m^2).

Source: src/app/flume/common/adam_flume_cooling_object.F90

Dependencies

Contents ​

Variables ​

NameTypeAttributesDescription
INI_SECTION_NAMEcharacter(len=7)parameterINI section name.

Derived Types ​

flume_cooling_object ​

FLUME radiative cooling, code units.

Components ​

NameTypeAttributesDescription
is_activelogicalTrue with a [cooling] section.
n_nodesinteger(kind=I4P)Nodes number.
t_nodesreal(kind=R8P)allocatableNode temperatures [n_nodes].
l_nodesreal(kind=R8P)allocatableNode values of Lambda [n_nodes].
alphareal(kind=R8P)allocatableSegment exponents [n_nodes], alpha(N) = alpha(N-1).
y_nodesreal(kind=R8P)allocatableEvolution function at the nodes [n_nodes], Y_N = 0.
particle_massreal(kind=R8P)Mass per particle.
dt_factorreal(kind=R8P)Time step limiter factor, 0 = off.
dy_ratereal(kind=R8P)(gamma - 1) Lambda_N / (m^2 R T_N).
radiatedreal(kind=R8P)Energy radiated since the start of the run (all ranks).

Type-Bound Procedures ​

NameAttributesDescription
descriptionpass(self)Return pretty-printed object description.
load_from_filepass(self)Load [cooling] and precompute the tables.

Subroutines ​

load_from_file ​

Load [cooling], check it and precompute the exponents and the evolution function at the nodes.

fortran
subroutine load_from_file(self, file_parameters, model, gamma, R)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cooling_object)inoutCooling.
file_parameterstype(file_ini)inSimulation parameters ini file handler.
modelinteger(kind=I4P)inPhysical model id.
gammareal(kind=R8P)inSpecific heats ratio.
Rreal(kind=R8P)inGas constant.

Call graph

Functions ​

description ​

Return a pretty-formatted object description.

Returns: character(len=:)

fortran
function description(self) result(desc)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cooling_object)inCooling.

Call graph