Skip to content

adam_flume_fnl_object ​

ADAM, FLUME FNL (OpenACC / OpenMP offload) backend object.

Implements the forest contract on the device. The state lives on the device for the whole run in the transposed layout (b, i, j, k, v); full-field device-to-host copies happen only on save steps. The FNL helpers (field, IB, RK, WENO) are per-realm components initialized after the common initialization from the realm's own objects; mpih_fnl is the only FNL singleton and is initialized once per process. Space operator: characteristic (or conservative) WENO flux splitting, face fluxes then flux difference (issue #35, section 3.4); the per-face physics is the shared adam_flume_euler_library, so only the kernels are FNL-specific.

Source: src/app/flume/fnl/adam_flume_fnl_object.F90

Dependencies

Contents ​

Derived Types ​

flume_fnl_object ​

FLUME FNL 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.
field_fnltype(field_fnl_object)Field helper (coordinates, maps, ghost exchange).
ib_fnltype(ib_fnl_object)Immersed boundary helper.
rk_fnltype(rk_fnl_object)Runge-Kutta helper.
weno_fnltype(weno_fnl_object)WENO helper.
q_gpureal(kind=R8P)pointerConservative variables [nb, i, j, k, nv].
dq_gpureal(kind=R8P)pointerResiduals [nb, i, j, k, nv].
q_aux_gpureal(kind=R8P)pointerAuxiliary variables [nb, i, j, k, nv_aux].
flx_f_gpureal(kind=R8P)pointerX-face fluxes [nb, 0:ni, 1:nj, 1:nk, nv].
fly_f_gpureal(kind=R8P)pointerY-face fluxes [nb, 1:ni, 0:nj, 1:nk, nv].
flz_f_gpureal(kind=R8P)pointerZ-face fluxes [nb, 1:ni, 1:nj, 0:nk, nv].
q_inflow_gpureal(kind=R8P)pointerConservative inflow state of each face [nv, 6].
wall_sign_gpureal(kind=R8P)pointerWall mirror sign per variable and direction [nv, 3].
divb_seam_gpuinteger(kind=I4P)pointerSeam faces flags of the div(B) history [nb, 6].
buf_5D_R8Preal(kind=R8P)allocatableTransposed copy buffer, extent identical to q_gpu.
db5integer(kind=I4P)Device bounds of the transposed copies.
hb5integer(kind=I4P)Host bounds of the transposed copies.
compute_residuals_devprocedure(compute_residuals_dev_interface)pass(self), pointerSpace operator.
integrate_devprocedure(integrate_dev_interface)pass(self), pointerTime operator.

Type-Bound Procedures ​

NameAttributesDescription
load_fdv_from_filepass(self)Load FDV config from file.
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_gpupass(self)Allocate device 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.
copy_cpu_gpupass(self)Copy state and topology from host to device.
copy_gpu_cpupass(self)Copy state from device to host.
copy_phi_gpupass(self)Copy the immersed solids distance function to the device.
destroypass(self)Free device and host data.
initialize_flumepass(self)Initialize the FNL 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 device crown maps.
update_ghostpass(self)Update ghost cells: local, MPI, boundary conditions.
advance_one_step_forestpass(self)Advance one full step (fast path).
after_topology_build_forestpass(self)Copy the forest-built seam and BC maps to the device.
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.
finalize_mpi_forestpass(self)Finalize the FNL MPI handler.
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.

The register is host-side: each seam face skin is packed on the device and copied to the host (a few KB per face and stage), then routed by the shared accumulate_seam_skin, as on the CPU.

fortran
subroutine accumulate_seam_fluxes(self, s, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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_gpu)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
q_gpureal(kind=R8P)inoutConservative variables.

Call graph

allocate_gpu ​

Allocate device data (every dev_alloc checked) and the host staging buffer.

fortran
subroutine allocate_gpu(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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_fnl_object)inoutThe equation.

Call graph

compute_conservation ​

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

fortran
subroutine compute_conservation(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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. The seam faces flags are rebuilt and copied to the device at every call (6 nb integers): at step 0 the forest may not have registered the seams yet.

fortran
subroutine compute_divb_history(self, realm)

Arguments

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

Call graph

compute_q_aux ​

Compute the auxiliary variables on the device, ghost cells included.

fortran
subroutine compute_q_aux(self, q_gpu)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
q_gpureal(kind=R8P)inConservative variables.

Call graph

copy_cpu_gpu ​

Copy state and topology (coordinates, maps) from host to device.

fortran
subroutine copy_cpu_gpu(self, verbose)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
verboselogicalinoptionalTrigger verbose output.

Call graph

copy_gpu_cpu ​

Copy state and residuals from device to host.

fortran
subroutine copy_gpu_cpu(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

copy_phi_gpu ​

Copy the immersed solids distance function (computed on the host, the solids are static) to the device, transposed from (s, i, j, k, b) to (b, i, j, k, s); the staging buffer has the extent of the device array (issue #31).

fortran
subroutine copy_phi_gpu(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

destroy ​

Free device and host data: own device buffers, the FNL helpers (library teardown) and the common data.

fortran
subroutine destroy(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

initialize_flume ​

Initialize the FNL backend: MPI and device (once per process), device budget, common data, FNL helpers, device data, dispatch.

fortran
subroutine initialize_flume(self, filename, realms_number)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inouttargetThe equation.
filenamecharacter(len=*)inInput file name.
realms_numberinteger(kind=I4P)inoptionalRealm count; divides the device budget.

Call graph

save_residuals ​

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

fortran
subroutine save_residuals(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

save_simulation_data ​

Save fields, restart, slices and conservation history, each on its own cadence; state copied to host only when saved.

fortran
subroutine save_simulation_data(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

set_boundary_conditions ​

Set boundary conditions on the device crown maps, crown by crown.

fortran
subroutine set_boundary_conditions(self, q_gpu)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
q_gpureal(kind=R8P)inoutConservative variables.

Call graph

update_ghost ​

Update ghost cells on the device: intra-realm local copies, GPU-direct MPI exchange, boundary conditions.

fortran
subroutine update_ghost(self, q_gpu)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
q_gpureal(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_fnl_object)inoutThe equation.
dtreal(kind=R8P)inTime step from the forest's global reduction.

Call graph

after_topology_build_forest ​

Copy the host maps the forest built after the realm initialization to the device: the inter-realm seam map and buffers (maps%seam_local_*) and the BC crown map, whose seam rows the forest rewrote to BC_SEAM (issue #37; without it the seam fill kernel reads an unset device map and the BC kernel extrapolates over the seam ghosts).

fortran
subroutine after_topology_build_forest(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

apply_reflux_to_stage_forest ​

Apply the Berger-Colella reflux correction to the committed q_gpu (the forest calls it once per step, after close_step_forest, with the final stage); device twin of the CPU apply.

For every register face whose coarse side this realm and this rank own, the host mismatch slab F_coarse - F_fine_sum (step fluxes, sum_s beta_s F_s) is copied to the device and added, scaled by sgn dt / dx_coarse, to the coarse skin cells.

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_fnl_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_fnl_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_fnl_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 on the device, dt = CFL / max(sum_d (|u_d| + a) / dx_d); with GLM, also dt <= CFL / (c_h max sum_d 1 / dx_d) (glm_lambda, host data, issue #41, section 3.5).

fortran
subroutine compute_local_dt_forest(self, dt_local)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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_fnl_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 device buffers (q_gpu when stage_active == 0, else the active stage of q_rk_gpu) of both realms.

fortran
subroutine fill_seam_from_peer_forest(self, peer, p_idx)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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 device and host data (MPI is finalized once by the forest).

fortran
subroutine finalize_forest(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

finalize_mpi_forest ​

Finalize the FNL MPI handler (called once by the forest after every realm is finalized).

fortran
subroutine finalize_mpi_forest(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation (carries no MPI state).

Call graph

initialize_forest ​

Initialize the realm (issue #35, section 6.1): backend init, IC (or restart) and initial AMR on the host, device topology and state sync, 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_fnl_object)inoutThe equation.
filenamecharacter(len=*)inInput file name.
realms_numberinteger(kind=I4P)inoptionalRealm count; divides the device budget.
memory_availreal(kind=R8P)inoptionalUnused: the budget comes from the device.
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_fnl_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_fnl_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_fnl_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_residuals_weno_dev ​

Compute the residuals with the WENO space operator on the device: ghost update, auxiliary variables, face fluxes of the active directions, flux difference.

The face fluxes of a null direction are never computed: they keep their zero initialization (dev_alloc). On the staged path (AMR seam faces), the seam face fluxes of every stage are accumulated into the forest's flux register.

fortran
subroutine compute_residuals_weno_dev(self, q_gpu, dq_gpu, s, flux_register)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
q_gpureal(kind=R8P)inoutConservative variables.
dq_gpureal(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_dev ​

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

fortran
subroutine integrate_rk_ls_dev(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

integrate_rk_ssp_dev ​

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

fortran
subroutine integrate_rk_ssp_dev(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.

Call graph

rk_assign_stage ​

Assign the residual of stage s to the Runge-Kutta stage buffer; the solid cells are masked with immersed solids.

fortran
subroutine rk_assign_stage(self, s)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
sinteger(kind=I4P)inStage.

Call graph

rk_compute_stage ​

Compute the state of stage s; the solid cells are masked with immersed solids.

fortran
subroutine rk_compute_stage(self, s)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
sinteger(kind=I4P)inStage.

Call graph

rk_compute_stage_ls ​

Advance low-storage stage s; the solid cells are masked with immersed solids.

fortran
subroutine rk_compute_stage_ls(self, s)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_object)inoutThe equation.
sinteger(kind=I4P)inStage.

Call graph

rk_update_q ​

Assemble the committed state of a strong stability preserving step; the solid cells are masked with immersed solids.

fortran
subroutine rk_update_q(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(flume_fnl_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_fnl_object)inThe equation.

Call graph