Skip to content

adam_flume_cpu_euler_kernels ​

ADAM, FLUME CPU kernels of the Euler model.

The model-agnostic loop bodies (adam_flume_cpu_{face,aux}_kernels_agnostic.INC) instantiated on the Euler physics: the local arrays are sized by the Euler constants NV_K = NV_EULER, NV_AUX_K = NV_AUX (issue #41, section 4), plus the Euler signal-speed loop.

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

Dependencies

Contents ​

Subroutines ​

compute_face_fluxes ​

Compute the WENO face fluxes of direction d: face (i,j,k) lies between cells (i,j,k) and (i+di,j+dj,k+dk), so the face array starts at index 0 along d.

Per face: gather the stencil m = 1-S ... S into constant-bound locals, project and split it, reconstruct every field (the local v is the packed stencil of the WENO primitive), back-project.

fortran
subroutine compute_face_fluxes(d, di, dj, dk, ni, nj, nk, ngc, blocks_number, gamma, ch, is_characteristic, weno, q, q_aux, fl)

Arguments

NameTypeIntentAttributesDescription
dinteger(kind=I4P)inDirection, 1=x, 2=y, 3=z.
diinteger(kind=I4P)inUnit step along d.
djinteger(kind=I4P)inUnit step along d.
dkinteger(kind=I4P)inUnit step along d.
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.
gammareal(kind=R8P)inSpecific heats ratio.
chreal(kind=R8P)inGLM cleaning speed (models with GLM only).
is_characteristiclogicalinCharacteristic (or conservative) variables.
wenotype(weno_object)inWENO coefficients.
qreal(kind=R8P)inConservative variables.
q_auxreal(kind=R8P)inAuxiliary variables.
flreal(kind=R8P)inoutFace fluxes of direction d.

Call graph

compute_q_aux ​

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

fortran
subroutine compute_q_aux(ni, nj, nk, ngc, blocks_number, gamma, R, q, q_aux)

Arguments

NameTypeIntentAttributesDescription
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.
gammareal(kind=R8P)inSpecific heats ratio.
Rreal(kind=R8P)inGas constant.
qreal(kind=R8P)inConservative variables.
q_auxreal(kind=R8P)inoutAuxiliary variables.

Call graph

compute_lambda_max ​

Compute max(sum_d (|u_d| + a) / dx_d) over the interior cells (null directions excluded).

fortran
subroutine compute_lambda_max(ni, nj, nk, ngc, blocks_number, gamma, R, dxyz, is_null, q, lambda_max)

Arguments

NameTypeIntentAttributesDescription
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.
gammareal(kind=R8P)inSpecific heats ratio.
Rreal(kind=R8P)inGas constant.
dxyzreal(kind=R8P)inBlocks space steps [3, nb].
is_nulllogicalinNull directions.
qreal(kind=R8P)inConservative variables.
lambda_maxreal(kind=R8P)outMaximum of sum_d (|u_d| + a) / dx_d.

Call graph

face_split_fluxes ​

Split adapter of the shared face kernel (issue #41, M2-P3): the Euler split, ch unused.

Attributes: pure

fortran
subroutine face_split_fluxes(gamma, ch, d, S, is_characteristic, qs, qas, fsplit, er)

Arguments

NameTypeIntentAttributesDescription
gammareal(kind=R8P)inSpecific heats ratio.
chreal(kind=R8P)inGLM cleaning speed.
dinteger(kind=I4P)inDirection, 1=x, 2=y, 3=z.
Sinteger(kind=I4P)inWENO stencil half-width, S <= S_MAX.
is_characteristiclogicalinCharacteristic (or conservative) variables.
qsreal(kind=R8P)inStencil conservative variables.
qasreal(kind=R8P)inStencil auxiliary variables.
fsplitreal(kind=R8P)outSplit fields in the WENO upwind layout.
erreal(kind=R8P)outRight eigenvectors.

Call graph