Appearance
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:
| key | value |
|---|---|
temperatures | the node temperatures T_1 < ... < T_N, 2 <= N <= COOLING_NODES_MAX (64), all > 0 (a list) |
lambdas | Lambda_k > 0 at the nodes (a list, as many as the temperatures) |
particle_mass | m > 0, the mass per particle of n (for n_H: m_H / X) |
dt_factor | optional, 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
| Name | Type | Attributes | Description |
|---|---|---|---|
INI_SECTION_NAME | character(len=7) | parameter | INI section name. |
Derived Types
flume_cooling_object
FLUME radiative cooling, code units.
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
is_active | logical | True with a [cooling] section. | |
n_nodes | integer(kind=I4P) | Nodes number. | |
t_nodes | real(kind=R8P) | allocatable | Node temperatures [n_nodes]. |
l_nodes | real(kind=R8P) | allocatable | Node values of Lambda [n_nodes]. |
alpha | real(kind=R8P) | allocatable | Segment exponents [n_nodes], alpha(N) = alpha(N-1). |
y_nodes | real(kind=R8P) | allocatable | Evolution function at the nodes [n_nodes], Y_N = 0. |
particle_mass | real(kind=R8P) | Mass per particle. | |
dt_factor | real(kind=R8P) | Time step limiter factor, 0 = off. | |
dy_rate | real(kind=R8P) | (gamma - 1) Lambda_N / (m^2 R T_N). | |
radiated | real(kind=R8P) | Energy radiated since the start of the run (all ranks). |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
description | pass(self) | Return pretty-printed object description. |
load_from_file | pass(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
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(flume_cooling_object) | inout | Cooling. | |
file_parameters | type(file_ini) | in | Simulation parameters ini file handler. | |
model | integer(kind=I4P) | in | Physical model id. | |
gamma | real(kind=R8P) | in | Specific heats ratio. | |
R | real(kind=R8P) | in | Gas constant. |
Call graph
Functions
description
Return a pretty-formatted object description.
Returns: character(len=:)
fortran
function description(self) result(desc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(flume_cooling_object) | in | Cooling. |
Call graph