Skip to content

adam_flume_cpu_object ​

ADAM, FLUME CPU backend object.

Implements the forest contract on the host (MPI + OpenMP). The dispatch procedure pointers are type components, bound in initialize_flume by exhaustive select case with a fatal case default (issue #35, D-10). Space operator: characteristic (or conservative) WENO flux splitting, face fluxes then flux difference (issue #35, section 3.4); the per-model loops live in adam_flume_cpu_<model>_kernels, selected here by select case on the physical model, never inside a loop (issue #41, section 4).

Source: src/app/flume/cpu/adam_flume_cpu_object.F90

Dependencies

Contents ​

Derived Types ​

flume_cpu_object ​

FLUME CPU backend object.

Inheritance

Extends: flume_common_object

Components ​

NameTypeAttributesDescription
iotype(io_object)IO handler.
amrtype(amr_object)AMR marker handler.
slicestype(slices_object)Slices handler.
blanesmoantype(blanesmoan_object)Blanes-Moan integrator.
cfmtype(cfm_object)Commutator-Free Magnus integrator.
leapfrogtype(leapfrog_object)Leapfrog integrator.
flailtype(flail_object)Linear algebra methods handler.
wenotype(weno_object)WENO reconstructor.
ibtype(ib_object)Immersed boundary.
rktype(rk_object)Runge-Kutta integrator.
adamtype(adam_object)ADAM, grid + tree + field + maps orchestrator.
fdv_schemecharacter(len=:)allocatableFDV scheme, fd/fv.
fdv_orderinteger(kind=I4P)Order of finite difference/volume schemes, general order.
fdv_half_stencilinteger(kind=I4P)Half stencil length of finite difference/volume schemes.
fdv_half_stencilsinteger(kind=I4P)Half stencil length of fdv schemes for each derivative up to 6.
ngcinteger(kind=I4P)pointerNumber of ghost cells.
niinteger(kind=I4P)pointerNumber of cells in i direction.
njinteger(kind=I4P)pointerNumber of cells in j direction.
nkinteger(kind=I4P)pointerNumber of cells in k direction.
nbinteger(kind=I4P)pointerTotal blocks number for MPI.
blocks_numberinteger(kind=I4P)pointerActual blocks number.
nvinteger(kind=I4P)pointerNumber of variables in q vector.
realm_indexinteger(kind=I4P)Inter-realm seam coupling — currently-published stage buffer key.
stage_activeinteger(kind=I4P)Procedure pointer TBPs for FDV operators (set at initialization by backend).
compute_block_total_variationprocedure(compute_block_total_variation_interface)pass(self), pointerCompute TV.
compute_curlprocedure(compute_curl_interface)pass(self), pointerCompute curl.
compute_curl_extendedprocedure(compute_curl_interface)pass(self), pointerCompute curl on extended support.
compute_derivative1procedure(compute_derivative1_interface)pass(self), pointerCompute deriv1.
compute_derivative2procedure(compute_derivative2_interface)pass(self), pointerCompute deriv2.
compute_derivative4procedure(compute_derivative4_interface)pass(self), pointerCompute deriv4.
compute_divergenceprocedure(compute_divergence_interface)pass(self), pointerCompute dive.
compute_gradientprocedure(compute_gradient_interface)pass(self), pointerCompute grad.
compute_gradient_extendedprocedure(compute_gradient_interface)pass(self), pointerCompute gradient on extended support.
compute_laplacianprocedure(compute_laplacian_interface)pass(self), pointerCompute laplac.
amr_locked_logicalRuntime AMR locked after initialization.
save_auxiliary_fieldslogicalSave the auxiliary variables with the fields.
glm_speed_reportedreal(kind=R8P)Largest wave speed above c_h reported so far.
divb_reportedreal(kind=R8P)Largest max|div B| above divb_tol reported so far.
divb_seaminteger(kind=I4P)allocatableSeam faces flags of the div(B) history [nb, 6].
qreal(kind=R8P)allocatableConservative variables [nv, 1-ngc:ni+ngc, ..., nb].
dqreal(kind=R8P)allocatableResiduals [nv, 1-ngc:ni+ngc, ..., nb].
q_auxreal(kind=R8P)allocatableAuxiliary variables [nv_aux, 1-ngc:ni+ngc, ..., nb].
q_nametype(string)allocatableConservative variables names.
dq_nametype(string)allocatableResiduals names.
q_aux_nametype(string)allocatableAuxiliary variables names.
bctype(flume_bc_object)Boundary conditions.
diagnosticstype(flume_diagnostics_object)Diagnostics.
ictype(flume_ic_object)Initial conditions.
numericstype(flume_numerics_object)Numerics.
physicstype(flume_physics_object)Physics.
timetype(flume_time_object)Time handler.
flx_freal(kind=R8P)allocatableX-face fluxes [nv, 0:ni, 1:nj, 1:nk, nb], face i = i+1/2.
fly_freal(kind=R8P)allocatableY-face fluxes [nv, 1:ni, 0:nj, 1:nk, nb], face j = j+1/2.
flz_freal(kind=R8P)allocatableZ-face fluxes [nv, 1:ni, 1:nj, 0:nk, nb], face k = k+1/2.
compute_residualsprocedure(compute_residuals_interface)pass(self), pointerSpace operator.
integrateprocedure(integrate_interface)pass(self), pointerTime operator.

Type-Bound Procedures ​

NameAttributesDescription
load_fdv_from_filepass(self)Load FDV config from file.
finalize_mpi_forestpass(self)Process-global MPI finalize; forest calls it ONCE after all.
after_topology_build_forestpass(self)Backend hook invoked once after the forest builds the seam maps.
close_block_xh5fnopassClose XH5F file block.
close_file_xh5fnopassClose XH5F file.
open_block_xh5fpass(self)Open block file XH5F.
open_file_xh5fpass(self)Open file XH5F.
save_q_xh5fpass(self)Save in XH5F (XDMF/HDF5) format.
compute_curl_fd_extendedpass(self)Compute curl of vector field, finite difference, even for half gcs.
compute_gradient_fd_extendedpass(self)Compute gradient of scalar field, finite difference, even for half
amr_updatepass(self)Do AMR update (initialization-time only).
mark_by_geometrypass(self)Mark blocks to be refined by a primitive geometric box.
mark_by_gradientpass(self)Mark blocks by the gradient of a conservative or auxiliary variable.
mark_by_solidpass(self)Mark blocks crossed by the surface of an immersed solid.
accumulate_seam_skinpass(self)Route one weighted seam face skin to the forest's flux register.
allocate_commonpass(self)Allocate common data.
compute_fields_numberpass(self)Compute the block-sized fields allocated per block.
compute_phipass(self)Compute the immersed solids distance function (host).
destroy_commonpass(self)Free common data.
glm_lambdapass(self)Return the GLM bound of the local dt, c_h max sum_d 1/dx_d.
initializepass(self)Initialize the common data.
null_freezepass(self)Return the variable each null direction freezes.
report_divbpass(self)Reduce and save the div(B) norms, apply the divb_tol monitor.
report_glm_speedpass(self)Check c_h against the fastest wave (warning or stop).
load_restart_filespass(self)Load restart files.
save_restart_filespass(self)Save restart files.
save_slicespass(self)Save the slices on their cadence.
save_xh5fpass(self)Save fields in XH5F format.
set_divb_seampass(self)Set the seam faces flags of the div(B) history.
set_glm_dampingpass(self)Set the GLM damping once the grid exists.
coupling_descriptor_forestpass(self)Return the realm coupling descriptor.
accumulate_seam_fluxespass(self)Accumulate the weighted seam face fluxes of one stage.
apply_floorspass(self)Apply the MHD positivity floors of a stage.
allocate_cpupass(self)Allocate CPU data.
check_glm_chpass(self)Check the GLM c_h against the fastest wave.
compute_conservationpass(self)Compute and save the conservation integrals.
compute_divb_historypass(self)Compute and save the div(B) norms (MHD).
compute_q_auxpass(self)Compute the auxiliary variables.
initialize_flumepass(self)Initialize the CPU backend.
save_residualspass(self)Save residuals history.
save_simulation_datapass(self)Save fields, restart and diagnostics on their cadence.
set_boundary_conditionspass(self)Set boundary conditions on the crown maps.
set_initial_conditionspass(self)Set initial conditions.
update_ghostpass(self)Update ghost cells: local, MPI, boundary conditions.
advance_one_step_forestpass(self)Advance one full step (fast path).
apply_reflux_to_stage_forestpass(self)Apply the reflux correction.
begin_stage_forestpass(self)Begin an integrator stage (staged path).
close_step_forestpass(self)Close a step (staged path).
compute_local_dt_forestpass(self)Compute the local stability-limited time step.
end_stage_forestpass(self)End an integrator stage (staged path).
fill_seam_from_peer_forestpass(self)Fill inter-realm seam ghosts from a peer.
finalize_forestpass(self)Finalize the realm.
initialize_forestpass(self)Initialize the realm.
is_done_forestpass(self)Return true if the realm is done.
open_step_forestpass(self)Open a step (staged path).
post_step_forestpass(self)Post-step IO and diagnostics.
stages_per_step_forestpass(self)Return the integrator stages per step.

Subroutines ​

accumulate_seam_fluxes ​

Accumulate the seam face fluxes of stage s, weighted by its SSP coefficient, into the forest's flux register.

Every stage contributes (issue #35, P5): the register holds sum_s beta_s F_s, the flux of the committed step.

fortran
subroutine accumulate_seam_fluxes(self, s, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
sinteger(kind=I4P)inRunge-Kutta stage.
flux_registerclass(flux_register_object)inoutForest's flux register.

Call graph

apply_floors ​

Apply the MHD positivity floors to the interior of a stage state, before its ghost exchange (issue #41, 3.8).

Euler has no floors (return before any work). MHD: the floored cells of the stage are logged by rank 0 when any; a non-positive density or pressure with the floors disabled (both zero) is fatal, reported with the global minimum density and pressure.

fortran
subroutine apply_floors(self, q)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
qreal(kind=R8P)inoutConservative variables.

Call graph

allocate_cpu ​

Allocate CPU data.

fortran
subroutine allocate_cpu(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

check_glm_ch ​

Check the GLM cleaning speed against the fastest wave of the committed state (issue #41, section 3.5); a no-op without GLM.

fortran
subroutine check_glm_ch(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

compute_conservation ​

Compute the volume integrals of the conservative variables and save them on the diagnostics cadence.

The cell volume includes the null directions: the tree splits them too, so a refined block's cells are smaller along them, and a volume without them overweights the fine cells (issue #37).

fortran
subroutine compute_conservation(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

compute_divb_history ​

Compute and save the div(B) norms of the committed state on the diagnostics cadence (issue #41, D-10); a no-op for Euler. The ghost cells are refreshed first and, with sibling realms, the inter-realm seam ghosts are refilled from the peers (update_ghost does not fill them, issue #31): the stencils of the seam-local cells read them.

fortran
subroutine compute_divb_history(self, realm)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
realmclass(realm_object)inouttarget, optionalSibling realms.

Call graph

compute_q_aux ​

Compute the auxiliary variables on every cell, ghost cells included.

fortran
subroutine compute_q_aux(self, q)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
qreal(kind=R8P)inConservative variables.

Call graph

initialize_flume ​

Initialize the CPU backend: MPI, memory budget, common data, CPU data, dispatch.

fortran
subroutine initialize_flume(self, filename, realms_number)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
filenamecharacter(len=*)inInput file name.
realms_numberinteger(kind=I4P)inoptionalRealm count; divides the per-process budget.

Call graph

save_residuals ​

Save residuals history (L2 norm of dq, MPI-reduced, rank 0 writes).

fortran
subroutine save_residuals(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

save_simulation_data ​

Save fields, restart, slices and conservation history, each on its own cadence (one predicate per output).

fortran
subroutine save_simulation_data(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

set_boundary_conditions ​

Set boundary conditions on the crown maps (face ghosts by kind, edge and corner ghosts by extrapolation).

Periodic faces have no crown rows: their ghosts are filled by the ghost exchange. Edge and corner ghosts (fec > 6) are never read by the directional stencils; they are extrapolated so that every ghost holds a finite, deterministic state for the auxiliary variables computation.

fortran
subroutine set_boundary_conditions(self, q)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
qreal(kind=R8P)inoutConservative variables.

Call graph

set_initial_conditions ​

Set initial conditions.

fortran
subroutine set_initial_conditions(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

update_ghost ​

Update ghost cells: intra-realm local copies, MPI exchange, boundary conditions.

Inter-realm seam ghosts are filled by the forest (fill_seam_from_peer_forest), not here.

fortran
subroutine update_ghost(self, q)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
qreal(kind=R8P)inoutConservative variables.

Call graph

advance_one_step_forest ​

Advance one full step of size dt (fast path: single realm, no AMR seam faces).

fortran
subroutine advance_one_step_forest(self, dt)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
dtreal(kind=R8P)inTime step from the forest's global reduction.

Call graph

apply_reflux_to_stage_forest ​

Apply the Berger-Colella reflux correction to the committed q (the forest calls it once per step, after close_step_forest, with the final stage).

For every register face whose coarse side this realm and this rank own, the coarse skin cells receive sgn dt / dx_coarse (F_coarse - F_fine_sum): the register holds the step fluxes sum_s beta_s F_s of both sides (accumulate_seam_fluxes), so the coarse flux the step used is replaced by the restricted fine one, and the coarse-fine interface conserves to round-off.

The scale uses the step the update used, time%dt: on the last step of a time-driven run the realm caps it to land on time_max, and the forest's dt argument is the uncapped value (with it the correction was off by the ratio of the two, 1.3e-9 of the mass on sod-amr; issue #37).

fortran
subroutine apply_reflux_to_stage_forest(self, stage, dt, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
stageinteger(kind=I4P)inIntegrator stage.
dtreal(kind=R8P)inForest time step (unused: see the scale below).
flux_registerclass(flux_register_object)inForest's flux register.

Call graph

begin_stage_forest ​

Begin integrator stage k (staged path): publish the stage and compute its state.

fortran
subroutine begin_stage_forest(self, k, K_total, dt, realm)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
kinteger(kind=I4P)inStage index (1..K_total).
K_totalinteger(kind=I4P)inForest-wide stage count for this step.
dtreal(kind=R8P)inTime step from the forest.
realmclass(realm_object)inouttarget, optionalSibling realms (contract parity).

Call graph

close_step_forest ​

Close a step (staged path): assemble q, save residuals, advance time, clear the active stage.

fortran
subroutine close_step_forest(self, dt)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
dtreal(kind=R8P)inTime step from the forest (the local capped value is time%dt).

Call graph

compute_local_dt_forest ​

Compute the local stability-limited time step, dt = CFL / max(sum_d (|u_d| + a) / dx_d) (no MPI reduction); with GLM, also dt <= CFL / (c_h max sum_d 1 / dx_d) (glm_lambda, issue #41, section 3.5).

The auxiliary variables are recomputed from the committed q (not read from q_aux, which holds the last stage state); null directions do not contribute.

fortran
subroutine compute_local_dt_forest(self, dt_local)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inThe equation.
dt_localreal(kind=R8P)outLocal stability-limited time step.

Call graph

end_stage_forest ​

End integrator stage k (staged path): residuals on the stage state, then stage assignment.

fortran
subroutine end_stage_forest(self, k, K_total, dt, realm, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
kinteger(kind=I4P)inStage index (1..K_total).
K_totalinteger(kind=I4P)inForest-wide stage count.
dtreal(kind=R8P)inTime step from the forest.
realmclass(realm_object)inouttarget, optionalSibling realms (parity only).
flux_registerclass(flux_register_object)inoutoptionalForest's flux register.

Call graph

fill_seam_from_peer_forest ​

Fill this realm's seam ghosts for peer slot p_idx from the peer's interior, on the active buffers (q when stage_active == 0, else the active stage of q_rk) of both realms.

fortran
subroutine fill_seam_from_peer_forest(self, peer, p_idx)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
peerclass(realm_object)intargetPeer realm.
p_idxinteger(kind=I4P)inPeer slot.

Call graph

finalize_forest ​

Finalize the realm: close the output files and free the data (MPI is finalized once by the forest).

fortran
subroutine finalize_forest(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

initialize_forest ​

Initialize the realm (issue #35, section 6.1): backend init, IC (or restart), initial AMR, ghost update, initial output, output files open, AMR lock.

fortran
subroutine initialize_forest(self, filename, realms_number, memory_avail, nv, verbose)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
filenamecharacter(len=*)inInput file name.
realms_numberinteger(kind=I4P)inoptionalRealm count; divides the per-process budget.
memory_availreal(kind=R8P)inoptionalUnused: the budget comes from the MPI handler.
nvinteger(kind=I4P)inoptionalUnused: nv is decided by the physics.
verboselogicalinoptionalUnused: initialization is always verbose.

Call graph

is_done_forest ​

Return true if the realm has reached its end.

fortran
subroutine is_done_forest(self, done)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inThe equation.
donelogicaloutTrue if the realm is done.

Call graph

open_step_forest ​

Open a step (staged path): time bookkeeping and Runge-Kutta stages initialization.

fortran
subroutine open_step_forest(self, dt)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
dtreal(kind=R8P)inTime step from the forest.

Call graph

post_step_forest ​

Post-step work: the GLM c_h check, the div(B) history (MHD), fields, restart and conservation history on their cadence.

fortran
subroutine post_step_forest(self, dt, t, it, do_save_state, do_save_residuals, do_save_restart, do_amr, realm)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
dtreal(kind=R8P)inTime step just advanced.
treal(kind=R8P)inTime after the advance.
itinteger(kind=I4P)inIteration after the advance.
do_save_statelogicalinoptionalUnused: cadence is internal.
do_save_residualslogicalinoptionalUnused: cadence is internal.
do_save_restartlogicalinoptionalUnused: cadence is internal.
do_amrlogicalinoptionalUnused: AMR is init-time only.
realmclass(realm_object)inouttarget, optionalSibling realms.

Call graph

compute_face_mirror_indexes ​

Return the donor indexes mirrored across a boundary face.

fortran
subroutine compute_face_mirror_indexes(face, ni, nj, nk, i_gc, j_gc, k_gc, idelta, jdelta, kdelta, i_d, j_d, k_d)

Arguments

NameTypeIntentAttributesDescription
faceinteger(kind=I4P)inFace index, 1 to 6.
niinteger(kind=I4P)inGrid dimensions.
njinteger(kind=I4P)inGrid dimensions.
nkinteger(kind=I4P)inGrid dimensions.
i_gcinteger(kind=I4P)inGhost cell indexes.
j_gcinteger(kind=I4P)inGhost cell indexes.
k_gcinteger(kind=I4P)inGhost cell indexes.
ideltainteger(kind=I4P)inInward steps.
jdeltainteger(kind=I4P)inInward steps.
kdeltainteger(kind=I4P)inInward steps.
i_dinteger(kind=I4P)outMirrored donor indexes.
j_dinteger(kind=I4P)outMirrored donor indexes.
k_dinteger(kind=I4P)outMirrored donor indexes.

Call graph

compute_flux_difference ​

Compute the residuals from the face fluxes, dq = -sum_d (F_{d,i+1/2} - F_{d,i-1/2}) / dx_d.

A null direction weighs zero, and the residual of the variable it freezes, freeze(d) (0: none), is zero: the normal momentum for Euler (CHASE semantics, issue #35, section 3.4), none for MHD (issue #41, M2-P3). With immersed solids (phi present, its last slot the all-solids summary), the spacing of a fluid cell is cut by the solid surface (ib_cut_spacing, CHASE semantics, D-9).

fortran
subroutine compute_flux_difference(nv, ni, nj, nk, ngc, blocks_number, is_null, freeze, dxyz, flx, fly, flz, dq, phi)

Arguments

NameTypeIntentAttributesDescription
nvinteger(kind=I4P)inConservative variables number.
niinteger(kind=I4P)inGrid dimensions.
njinteger(kind=I4P)inGrid dimensions.
nkinteger(kind=I4P)inGrid dimensions.
ngcinteger(kind=I4P)inGrid dimensions.
blocks_numberinteger(kind=I4P)inActual blocks number.
is_nulllogicalinNull directions.
freezeinteger(kind=I4P)inVariable frozen by each null direction.
dxyzreal(kind=R8P)inBlocks space steps [3, nb].
flxreal(kind=R8P)inX-face fluxes.
flyreal(kind=R8P)inY-face fluxes.
flzreal(kind=R8P)inZ-face fluxes.
dqreal(kind=R8P)inoutResiduals.
phireal(kind=R8P)inoptionalImmersed solids distance function.

Call graph

compute_rk_ssp_residual ​

Compute the residual of a strong stability preserving step, dq = sum_s beta_s dq_s, from the stored stages.

Used with immersed solids only: the library update_q computes the step residual on its unmasked path but not on the masked one. Same summation order as the FNL kernel compute_rk_ssp_residual_dev.

fortran
subroutine compute_rk_ssp_residual(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

compute_residuals_weno ​

Compute the residuals with the WENO space operator: ghost update, auxiliary variables, face fluxes of the active directions, flux difference, and with GLM the psi damping source.

The face fluxes of a null direction are never computed: they keep their zero initialization. On the staged path (AMR seam faces), the seam face fluxes of every stage are accumulated into the forest's flux register. With immersed solids, the eikonal extrapolation fills the solid cells first (n_eikonal Jacobi sweeps, each followed by a ghost exchange, then the wall inversion), and the flux difference uses the spacing cut by the surface.

fortran
subroutine compute_residuals_weno(self, q, dq, s, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.
qreal(kind=R8P)inoutConservative variables.
dqreal(kind=R8P)inoutResiduals.
sinteger(kind=I4P)inoptionalRunge-Kutta stage.
flux_registerclass(flux_register_object)inoutoptionalForest's flux register for reflux.

Call graph

integrate_rk_ls ​

Integrate one time step with a low-storage Runge-Kutta scheme.

fortran
subroutine integrate_rk_ls(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

integrate_rk_ssp ​

Integrate one time step with a strong stability preserving Runge-Kutta scheme.

fortran
subroutine integrate_rk_ssp(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inoutThe equation.

Call graph

Functions ​

stages_per_step_forest ​

Return the integrator stages per step: only SSP schemes are stage-splittable (staged path).

Returns: integer(kind=I4P)

fortran
function stages_per_step_forest(self) result(K)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_cpu_object)inThe equation.

Call graph