Appearance
adam_prism_fnl_object
ADAM, PRISM (Plasma Research usIng Simulation Methods) equations system class definition, GPU (FNL) backend.
Source: src/app/prism/fnl/adam_prism_fnl_object.F90
Dependencies
Contents
- prism_fnl_object
- compute_curl_interface_dev
- compute_derivative1_interface_dev
- compute_derivative2_interface_dev
- compute_derivative4_interface_dev
- compute_divergence_interface_dev
- compute_gradient_interface_dev
- compute_laplacian_interface_dev
- compute_residuals_interface_dev
- integrate_interface_dev
- allocate_gpu
- copy_cpu_gpu
- copy_gpu_cpu
- initialize_prism
- load_restart_files
- save_residuals
- save_simulation_data
- apply_fwl_correction
- compute_coils_current
- set_boundary_conditions
- set_initial_conditions
- update_ghost
- update_rk_ghost
- compute_curl_fd_dev
- compute_curl_fv_dev
- compute_derivative1_fd_dev
- compute_derivative1_fv_dev
- compute_derivative2_fd_dev
- compute_derivative2_fv_dev
- compute_derivative4_fd_dev
- compute_divergence_fd_dev
- compute_divergence_fv_dev
- compute_gradient_fd_dev
- compute_gradient_fv_dev
- compute_laplacian_fd_dev
- compute_laplacian_fv_dev
- compute_residuals_fd_centered_dev
- integrate_blanesmoan_dev
- integrate_cfm_dev
- integrate_leapfrog_dev
- integrate_leapfrog_pic
- integrate_rk_ls_dev
- integrate_rk_ssp_dev
- integrate_rk_yoshida_dev
- simulate
- compute_dt
- compute_energy
- compute_energy_error
- compute_max_divergence
- impose_ct_correction
- impose_div_free
Derived Types
prism_fnl_object
PRISM equations system class definition, GPU (FNL) backend.
Inheritance
Extends: prism_common_object
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
io | type(io_object) | IO handler. | |
adam | type(adam_object) | ADAM. | |
amr | type(amr_object) | AMR marker handler. | |
slices | type(slices_object) | Slices handler. | |
blanesmoan | type(blanesmoan_object) | Blanes-Moan integrator. | |
cfm | type(cfm_object) | Commutator-Free Magnus integrator. | |
leapfrog | type(leapfrog_object) | Leapfrog integrator. | |
flail | type(flail_object) | Linear algebra methods handler. | |
fdv_scheme | character(len=:) | allocatable | FDV scheme, fd/fv. |
fdv_order | integer(kind=I4P) | Order of finite difference/volume schemes, general order. | |
fdv_half_stencil | integer(kind=I4P) | Half stencil length of finite difference/volume schemes. | |
fdv_half_stencils | integer(kind=I4P) | Half stencil length of fdv schemes for each derivative up to 6. | |
ngc | integer(kind=I4P) | pointer | Number of ghost cells. |
ni | integer(kind=I4P) | pointer | Number of cells in i direction. |
nj | integer(kind=I4P) | pointer | Number of cells in j direction. |
nk | integer(kind=I4P) | pointer | Number of cells in k direction. |
nb | integer(kind=I4P) | pointer | Total blocks number for MPI. |
blocks_number | integer(kind=I4P) | pointer | Actual blocks number. |
nv | integer(kind=I4P) | pointer | Number of variables in q vector. |
compute_block_total_variation | procedure(compute_block_total_variation_interface) | pass(self), pointer | Compute TV. |
compute_curl | procedure(compute_curl_interface) | pass(self), pointer | Compute curl. |
compute_derivative1 | procedure(compute_derivative1_interface) | pass(self), pointer | Compute deriv1. |
compute_derivative2 | procedure(compute_derivative2_interface) | pass(self), pointer | Compute deriv2. |
compute_derivative4 | procedure(compute_derivative4_interface) | pass(self), pointer | Compute deriv4. |
compute_divergence | procedure(compute_divergence_interface) | pass(self), pointer | Compute dive. |
compute_gradient | procedure(compute_gradient_interface) | pass(self), pointer | Compute grad. |
compute_laplacian | procedure(compute_laplacian_interface) | pass(self), pointer | Compute laplac. |
nv_c | integer(kind=I4P) | pointer | Number of conservative variables in q vector. |
nv_s | integer(kind=I4P) | pointer | Number of source variables in q vector. |
nv_cl | integer(kind=I4P) | pointer | Number of divergence cleaning variables in q vector. |
q | real(kind=R8P) | allocatable | Conservative cell centered variables. |
dq | real(kind=R8P) | allocatable | Residuals right hand side. |
q_pic | real(kind=R8P) | allocatable | PIC variables. |
pic_fields | real(kind=R8P) | allocatable | Fields value at particle locations. |
curl | real(kind=R8P) | allocatable | Curl fields. |
divergence | real(kind=R8P) | allocatable | Divergence fields. |
q_name | type(string) | allocatable | Fields names [1:nv]. |
dq_name | type(string) | allocatable | Residuals names [1:nv]. |
q_pic_name | type(string) | allocatable | PIC Fields names. |
curl_name | type(string) | allocatable | Curl fields names. |
div_name | type(string) | allocatable | Divergence fields names. |
energy_D | real(kind=R8P) | allocatable | Energy of field D, time history. |
energy_B | real(kind=R8P) | allocatable | Energy of field B, time history. |
coil_power | real(kind=R8P) | allocatable | Power of coils, time history. |
Poynting_flux | real(kind=R8P) | allocatable | Total Poynting flux from boundary, time history. |
rms_energy_error_D | real(kind=R8P) | RMS energy error of D field. | |
rms_energy_error_B | real(kind=R8P) | RMS energy error of B field. | |
max_divergence_D | real(kind=R8P) | Maximum of divergence of D field. | |
max_divergence_B | real(kind=R8P) | Maximum of divergence of B field. | |
max_divergence_J | real(kind=R8P) | Maximum of divergence of J field. | |
q_gpu | real(kind=R8P) | pointer | Field cell centered variables. |
dq_gpu | real(kind=R8P) | pointer | Residuals right hand side. |
flxyz_c_gpu | real(kind=R8P) | pointer | Fluxes at cell center with +/- decomposition for all directions. |
flx_f_gpu | real(kind=R8P) | pointer | Fluxes along x at cell face. |
fly_f_gpu | real(kind=R8P) | pointer | Fluxes along y at cell face. |
flz_f_gpu | real(kind=R8P) | pointer | Fluxes along z at cell face. |
curl_gpu | real(kind=R8P) | pointer | Curl fields. |
divergence_gpu | real(kind=R8P) | pointer | Divergence fields. |
db5 | integer(kind=I4P) | Device data bounds (rank 5): bb(1,:)=lower, bb(2,:)=upper. | |
hb5 | integer(kind=I4P) | Host buffer data bounds (rank 5): bb(1,:)=lower, bb(2,:)=upper. | |
buf_5D_R8P | real(kind=R8P) | allocatable | Buffer (host memory, device shape), rank 5, R8P. |
compute_curl_dev | procedure(compute_curl_interface_dev) | pass(self), pointer | Compute curl. |
compute_derivative1_dev | procedure(compute_derivative1_interface_dev) | pass(self), pointer | Compute derivative1. |
compute_derivative2_dev | procedure(compute_derivative2_interface_dev) | pass(self), pointer | Compute derivative2. |
compute_derivative4_dev | procedure(compute_derivative4_interface_dev) | pass(self), pointer | Compute derivative4. |
compute_divergence_dev | procedure(compute_divergence_interface_dev) | pass(self), pointer | Compute divergence. |
compute_gradient_dev | procedure(compute_gradient_interface_dev) | pass(self), pointer | Compute gradient. |
compute_laplacian_dev | procedure(compute_laplacian_interface_dev) | pass(self), pointer | Compute laplacian. |
compute_residuals_dev | procedure(compute_residuals_interface_dev) | pass(self), pointer | Compute residuals. |
integrate_dev | procedure(integrate_interface_dev) | pass(self), pointer | Integrate, time operator. |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
load_fdv_from_file | pass(self) | Load FDV config from file. |
close_block_xh5f | nopass | Close XH5F file block. |
close_file_xh5f | nopass | Close XH5F file. |
open_block_xh5f | pass(self) | Open block file XH5F. |
open_file_xh5f | pass(self) | Open file XH5F. |
save_q_xh5f | pass(self) | Save in XH5F (XDMF/HDF5) format. |
allocate_common | pass(self) | Allocate common data. |
compute_auxiliary_fields | pass(self) | Compute auxiliary fields. |
initialize | pass(self) | Initialize the equation common data. |
save_energy_error | pass(self) | Save energy error history. |
save_energy_history | pass(self) | Save energy history. |
save_divergence_history | pass(self) | Save divergence history. |
save_restart_files | pass(self) | Save restart files. |
save_xh5f | pass(self) | Save simulation data in XH5F format. |
initialize_coils | pass(self) | Initialize coils. |
set_rectangular_coil_x | pass(self) | Subroutine to set a rectangular coil source with +-x normal |
set_rectangular_coil_y | pass(self) | Subroutine to set a rectangular coil source with +-y normal |
set_rectangular_coil_z | pass(self) | Subroutine to set a rectangular coil source with +-z normal |
set_circular_coil_x | pass(self) | Subroutine to set a circular coil source with +-x normal |
set_circular_coil_y | pass(self) | Subroutine to set a circular coil source with +-y normal |
set_circular_coil_z | pass(self) | Subroutine to set a circular coil source with +-z normal |
set_solenoid_x | pass(self) | Subroutine to set a solenoid source with +-x normal |
set_solenoid_y | pass(self) | Subroutine to set a solenoid source with +-y normal |
set_solenoid_z | pass(self) | Subroutine to set a solenoid source with +-z normal |
allocate_gpu | pass(self) | Allocate GPU data. |
copy_cpu_gpu | pass(self) | Copy data from CPU to GPU. |
copy_gpu_cpu | pass(self) | Copy data from GPU to CPU. |
initialize_prism | pass(self) | Initialize PRISM equation. |
load_restart_files | pass(self) | Load restart files. |
save_residuals | pass(self) | Save residuals history. |
save_simulation_data | pass(self) | Save all simulation data. |
apply_fwl_correction | pass(self) | Apply fWLayer correction (if present) |
compute_coils_current | pass(self) | Compute current coils sources. |
set_boundary_conditions | pass(self) | Set boundary conditions of equation. |
set_initial_conditions | pass(self) | Set initial conditions of equation. |
update_ghost | pass(self) | Update ghost cells and set boundary conditions. |
update_rk_ghost | pass(self) | Update RK stage ghost cells. |
compute_curl_fd_dev | pass(self) | Compute curl of vector field by finite difference. |
compute_curl_fv_dev | pass(self) | Compute curl of vector field by finite volume. |
compute_derivative1_fd_dev | pass(self) | Compute derivative1 of scalar fields, finite difference schemes. |
compute_derivative1_fv_dev | pass(self) | Compute derivative1 of scalar fields, finite volume schemes. |
compute_derivative2_fd_dev | pass(self) | Compute derivative2 of scalar fields, finite difference schemes. |
compute_derivative2_fv_dev | pass(self) | Compute derivative2 of scalar fields, finite volume schemes. |
compute_derivative4_fd_dev | pass(self) | Compute derivative4 of scalar fields, finite difference schemes. |
compute_divergence_fd_dev | pass(self) | Compute divergence of vector field by finite difference. |
compute_divergence_fv_dev | pass(self) | Compute divergence of vector field by finite volume. |
compute_gradient_fd_dev | pass(self) | Compute gradient of scalar field, finite difference schemes. |
compute_gradient_fv_dev | pass(self) | Compute gradient of scalar field, finite volume schemes. |
compute_laplacian_fd_dev | pass(self) | Compute laplacian of scalar field, finite difference schemes. |
compute_laplacian_fv_dev | pass(self) | Compute laplacian of scalar field, finite volume schemes. |
compute_residuals_fd_centered_dev | pass(self) | Compute residuals, centered finite difference schemes. |
integrate_blanesmoan_dev | pass(self) | Blanes and Moan scheme. |
integrate_cfm_dev | pass(self) | Commutator-Free Magnus scheme. |
integrate_leapfrog_dev | pass(self) | Leapfrog scheme. |
integrate_rk_ls_dev | pass(self) | RK classical low storage schemes. |
integrate_rk_ssp_dev | pass(self) | SSP RK schemes. |
integrate_rk_yoshida_dev | pass(self) | Yoshida schemes. |
compute_dt | pass(self) | Compute time step. |
compute_energy | pass(self) | Compute energy. |
compute_energy_error | pass(self) | Compute energy error. |
compute_max_divergence | pass(self) | Compute divergence of D, B and J fields for diagnostics. |
impose_ct_correction | pass(self) | Impose Constrained Transport correction on q(ivar:ivar+2). |
impose_div_free | pass(self) | Impose divergence-free property. |
simulate | pass(self) | Perform the simulation. |
Interfaces
compute_curl_interface_dev
compute_derivative1_interface_dev
compute_derivative2_interface_dev
compute_derivative4_interface_dev
compute_divergence_interface_dev
compute_gradient_interface_dev
compute_laplacian_interface_dev
compute_residuals_interface_dev
integrate_interface_dev
Subroutines
allocate_gpu
Allocate GPU data.
fortran
subroutine allocate_gpu(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
copy_cpu_gpu
Copy data from CPU to GPU.
fortran
subroutine copy_cpu_gpu(self, verbose)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
verbose | logical | in | optional | Trigger verbose output. |
Call graph
copy_gpu_cpu
Copy data from GPU to CPU.
fortran
subroutine copy_gpu_cpu(self, compute_copy_q_aux, copy_phi, verbose)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
compute_copy_q_aux | logical | in | optional | Flag to compute auxiliary variables. |
copy_phi | logical | in | optional | Copy also phi. |
verbose | logical | in | optional | Trigger verbose output. |
Call graph
initialize_prism
Initialize PRISM equation.
fortran
subroutine initialize_prism(self, filename)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
filename | character(len=*) | in | Input file name. |
Call graph
load_restart_files
Save restart files.
fortran
subroutine load_restart_files(self, t, time)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
t | integer(kind=I4P) | out | Time iteration. | |
time | real(kind=R8P) | out | Time. |
Call graph
save_residuals
Save residuals history.
fortran
subroutine save_residuals(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
save_simulation_data
Save all simulation data.
fortran
subroutine save_simulation_data(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
apply_fwl_correction
Apply correction if a fWL is present.
fortran
subroutine apply_fwl_correction(self, q_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
q_gpu | real(kind=R8P) | inout | Conservative variables. |
Call graph
compute_coils_current
Compute current coils sources.
fortran
subroutine compute_coils_current(self, q_gpu, gamm)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
q_gpu | real(kind=R8P) | inout | Conservative variables. | |
gamm | real(kind=R8P) | in | optional | RK coefficient. |
Call graph
set_boundary_conditions
Set boundary conditions of equation.
fortran
subroutine set_boundary_conditions(self, q_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
q_gpu | real(kind=R8P) | inout | Conservative variables. |
Call graph
set_initial_conditions
Set initial conditions of field.
fortran
subroutine set_initial_conditions(self, is_restart)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
is_restart | logical | in | Branching sentinel for restart/non restart path. |
Call graph
update_ghost
Update ghost cells. If not specified all steps are perfermod, syncronous computation
fortran
subroutine update_ghost(self, q_gpu, step, s)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
q_gpu | real(kind=R8P) | inout | Conservative variables. | |
step | integer(kind=I4P) | in | optional | Step to be perfordmed in asyncronous comp. |
s | integer(kind=I4P) | in | optional | Stage counter. |
Call graph
update_rk_ghost
Update RK ghost cells.
fortran
subroutine update_rk_ghost(self, dt, phi_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | RK object. | |
dt | real(kind=R8P) | in | Current time step. | |
phi_gpu | real(kind=R8P) | in | optional | IB distance. |
compute_curl_fd_dev
Compute curl of vector fields, div(q(ivar:ivar+2), using finite difference schemes.
fortran
subroutine compute_curl_fd_dev(self, ivar, q_gpu, curl_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
curl_gpu | real(kind=R8P) | inout | Curl. |
Call graph
compute_curl_fv_dev
Compute curl of vector fields, div(q(ivar:ivar+2), using finite volume schemes.
fortran
subroutine compute_curl_fv_dev(self, ivar, q_gpu, curl_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
curl_gpu | real(kind=R8P) | inout | Curl. |
compute_derivative1_fd_dev
Compute derivative1 of scalar fields, dq(ivar)/ds, using finite difference schemes.
fortran
subroutine compute_derivative1_fd_dev(self, dir, ivar, q_gpu, dq_ds_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
dir | integer(kind=I4P) | in | Direction, 1=X, 2=Y, 3=Z. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
dq_ds_gpu | real(kind=R8P) | inout | Derivative1, dq/ds. |
compute_derivative1_fv_dev
Compute derivative1 of scalar fields, dq(ivar)/ds, using finite volume schemes.
fortran
subroutine compute_derivative1_fv_dev(self, dir, ivar, q_gpu, dq_ds_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
dir | integer(kind=I4P) | in | Direction, 1=X, 2=Y, 3=Z. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
dq_ds_gpu | real(kind=R8P) | inout | Derivative1, dq/ds. |
compute_derivative2_fd_dev
Compute derivative2 of scalar fields, d2q(ivar)/ds2, using finite difference schemes.
fortran
subroutine compute_derivative2_fd_dev(self, dir, ivar, q_gpu, d2q_ds2_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
dir | integer(kind=I4P) | in | Direction, 1=X, 2=Y, 3=Z. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
d2q_ds2_gpu | real(kind=R8P) | inout | Derivative2, d2q/ds2. |
compute_derivative2_fv_dev
Compute derivative2 of scalar fields, d2q(ivar)/ds2, using finite volume schemes.
fortran
subroutine compute_derivative2_fv_dev(self, dir, ivar, q_gpu, d2q_ds2_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
dir | integer(kind=I4P) | in | Direction, 1=X, 2=Y, 3=Z. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
d2q_ds2_gpu | real(kind=R8P) | inout | Derivative2, d2q/ds2. |
compute_derivative4_fd_dev
Compute derivative4 of scalar fields, d4q(ivar)/ds4, using finite difference schemes.
fortran
subroutine compute_derivative4_fd_dev(self, dir, ivar, q_gpu, d4q_ds4_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
dir | integer(kind=I4P) | in | Direction, 1=X, 2=Y, 3=Z. | |
ivar | integer(kind=I4P) | in | Start index of variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
d4q_ds4_gpu | real(kind=R8P) | inout | Derivative4, d4q/ds4. |
compute_divergence_fd_dev
Compute divergence of vector fields, div(q(ivar:ivar+2), using finite difference schemes. Directly computes divergence from transposed GPU layout (b,i,j,k,v).
fortran
subroutine compute_divergence_fd_dev(self, ivar, ovar, q_gpu, divergence_gpu, maxdiv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Start index of field of q. | |
ovar | integer(kind=I4P) | in | Output index in div. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
divergence_gpu | real(kind=R8P) | inout | Divergence. | |
maxdiv | real(kind=R8P) | out | optional | Max divergence, for checking. |
Call graph
compute_divergence_fv_dev
Compute divergence of vector fields, div(q(ivar:ivar+2), using finite volume schemes. Directly computes divergence from transposed GPU layout (b,i,j,k,v).
fortran
subroutine compute_divergence_fv_dev(self, ivar, ovar, q_gpu, divergence_gpu, maxdiv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Start index of field of q. | |
ovar | integer(kind=I4P) | in | Output index in divergence. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
divergence_gpu | real(kind=R8P) | inout | Divergence. | |
maxdiv | real(kind=R8P) | out | optional | Max divergence, for checking. |
compute_gradient_fd_dev
Compute gradient of scalar variable q(ivar), finite difference schemes.
fortran
subroutine compute_gradient_fd_dev(self, ivar, q_gpu, gradient_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Index of scalar var of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
gradient_gpu | real(kind=R8P) | inout | Gradient. |
compute_gradient_fv_dev
Compute gradient of scalar variable q(ivar), finite volume schemes.
fortran
subroutine compute_gradient_fv_dev(self, ivar, q_gpu, gradient_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Index of scalar var of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
gradient_gpu | real(kind=R8P) | inout | Gradient. |
compute_laplacian_fd_dev
Compute laplacian of scalar variable q(ivar), finite difference schemes.
fortran
subroutine compute_laplacian_fd_dev(self, ivar, q_gpu, laplacian_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Index of scalar variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
laplacian_gpu | real(kind=R8P) | inout | Gradient. |
compute_laplacian_fv_dev
Compute laplacian of scalar variable q(ivar), finite volume schemes.
fortran
subroutine compute_laplacian_fv_dev(self, ivar, q_gpu, laplacian_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | in | The equation. | |
ivar | integer(kind=I4P) | in | Index of scalar variable of q. | |
q_gpu | real(kind=R8P) | in | Field variables. | |
laplacian_gpu | real(kind=R8P) | inout | Gradient. |
compute_residuals_fd_centered_dev
Compute residuals of equation, space operator, centered finite difference schemes.
fortran
subroutine compute_residuals_fd_centered_dev(self, q_gpu, dq_gpu, s)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
q_gpu | real(kind=R8P) | inout | Conservative variables. | |
dq_gpu | real(kind=R8P) | inout | Residuals. | |
s | integer(kind=I4P) | in | optional | Stage counter. |
Call graph
integrate_blanesmoan_dev
Integrate equation, time operator, Blanes and Moan scheme.
fortran
subroutine integrate_blanesmoan_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
integrate_cfm_dev
Integrate equation, time operator, Commutator-Free Magnus integrator.
fortran
subroutine integrate_cfm_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
integrate_leapfrog_dev
Integrate equation, time operator, leapfrog scheme.
fortran
subroutine integrate_leapfrog_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
integrate_leapfrog_pic
Integrate equation, time operator, leapfrog scheme.
fortran
subroutine integrate_leapfrog_pic(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
integrate_rk_ls_dev
Integrate equation, time operator, RK classical low storage schemes. Low storage RK working on q_rk(:,:,:,:,:,1)/q as stages, update q in place.
fortran
subroutine integrate_rk_ls_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
integrate_rk_ssp_dev
Integrate equation, time operator, SSP RK schemes. SSP RK working on q_rk as stages.
fortran
subroutine integrate_rk_ssp_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
integrate_rk_yoshida_dev
Integrate equation, time operator, Yoshida RK scheme.
fortran
subroutine integrate_rk_yoshida_dev(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
simulate
Perform the simulation.
fortran
subroutine simulate(self, filename)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
filename | character(len=*) | in | Input file name. |
Call graph
compute_dt
Compute maximum time step accordingly to CFL stabilty criterion.
fortran
subroutine compute_dt(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
compute_energy
Compute energy.
fortran
subroutine compute_energy(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
compute_energy_error
Compute energy error.
fortran
subroutine compute_energy_error(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
compute_max_divergence
Compute maximum divergence.
fortran
subroutine compute_max_divergence(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph
impose_ct_correction
Impose Constrained Transport Correction on vectorial variable q(ivar:ivar+2). Note that self%divergence memory is used as buffer, be carefull.
fortran
subroutine impose_ct_correction(self, ivar)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. | |
ivar | integer(kind=I4P) | in | Variable (start) index in q. |
Call graph
impose_div_free
Impose divergence-free property.
fortran
subroutine impose_div_free(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_object) | inout | The equation. |
Call graph