Skip to content

adam_prism_pml_object

Source: src/app/prism/common/adam_prism_pml_object.F90

Dependencies

Contents

Variables

NameTypeAttributesDescription
INI_SECTION_NAMEcharacter(len=3)parameter
PML_TYPE_NONEcharacter(len=8)parameter
PML_TYPE_CLASSICcharacter(len=8)parameter
PML_TYPE_CFScharacter(len=8)parameter
PML_TYPE_BERMUDEZcharacter(len=8)parameter
PML_VARS_PER_FACEinteger(kind=I4P)parameter
PML_FACE_X_Minteger(kind=I4P)parameter
PML_FACE_X_Pinteger(kind=I4P)parameter
PML_FACE_Y_Minteger(kind=I4P)parameter
PML_FACE_Y_Pinteger(kind=I4P)parameter
PML_FACE_Z_Minteger(kind=I4P)parameter
PML_FACE_Z_Pinteger(kind=I4P)parameter
FACE_LABELcharacter(len=2)parameter
PML_X_VAR_NAMEcharacter(len=8)parameter
PML_Y_VAR_NAMEcharacter(len=8)parameter
PML_Z_VAR_NAMEcharacter(len=8)parameter

Derived Types

prism_pml_object

PRISM PML class definition. Each face-local state array stores four split variables in the order "electric first, magnetic second", e.g. q_pml_x_* = [psi_Ey_x, psi_Ez_x, psi_Hy_x, psi_Hz_x]. Storage is reduced to boundary blocks only and compacted face by face.

Components

NameTypeAttributesDescription
pml_typecharacter(len=99)
enabledlogical
layerlogical
widthreal(kind=R8P)
gamma_maxreal(kind=R8P)
gamma_exponentreal(kind=R8P)
alpha_maxreal(kind=R8P)
k_maxreal(kind=R8P)
betareal(kind=R8P)
profile_spanreal(kind=R8P)Face-wise maximum center distance inside the PML.
ni_pmlinteger(kind=I4P)allocatableLocal i-range of active PML support [2,nb,6].
nj_pmlinteger(kind=I4P)allocatableLocal j-range of active PML support [2,nb,6].
nk_pmlinteger(kind=I4P)allocatableLocal k-range of active PML support [2,nb,6].
block_lidinteger(kind=I4P)allocatableGlobal-block to compact face-local slot [nb,6]; 0 if inactive.
max_cellsinteger(kind=I4P)Max local PML thickness on each face.
active_blocksinteger(kind=I4P)Boundary blocks carrying PML on each face.
blocks_x_minteger(kind=I4P)allocatableGlobal block ids carrying x-minus PML.
blocks_x_pinteger(kind=I4P)allocatableGlobal block ids carrying x-plus PML.
blocks_y_minteger(kind=I4P)allocatableGlobal block ids carrying y-minus PML.
blocks_y_pinteger(kind=I4P)allocatableGlobal block ids carrying y-plus PML.
blocks_z_minteger(kind=I4P)allocatableGlobal block ids carrying z-minus PML.
blocks_z_pinteger(kind=I4P)allocatableGlobal block ids carrying z-plus PML.
q_pml_x_mreal(kind=R8P)allocatable[4,Cmax_xm,nj,nk,nblocks_xm]
q_pml_x_preal(kind=R8P)allocatable[4,Cmax_xp,nj,nk,nblocks_xp]
q_pml_y_mreal(kind=R8P)allocatable[4,ni,Cmax_ym,nk,nblocks_ym]
q_pml_y_preal(kind=R8P)allocatable[4,ni,Cmax_yp,nk,nblocks_yp]
q_pml_z_mreal(kind=R8P)allocatable[4,ni,nj,Cmax_zm,nblocks_zm]
q_pml_z_preal(kind=R8P)allocatable[4,ni,nj,Cmax_zp,nblocks_zp]

Type-Bound Procedures

NameAttributesDescription
descriptionpass(self)
initializepass(self)
load_from_filepass(self)

Subroutines

initialize

Initialize the PML support and allocate reduced face-local states.

fortran
subroutine initialize(self, field, grid, tree, file_parameters)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout
fieldtype(field_object)in
gridtype(grid_object)in
treetype(tree_object)in
file_parameterstype(file_ini)in

Call graph

load_from_file

Load PML configuration from file.

fortran
subroutine load_from_file(self, file_parameters, go_on_fail)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout
file_parameterstype(file_ini)in
go_on_faillogicalinoptional

Call graph

allocate_face_metadata

Allocate per-face block lists only where the local rank owns boundary blocks.

fortran
subroutine allocate_face_metadata(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout

Call graph

allocate_face_storage

Allocate reduced face-local PML state arrays.

fortran
subroutine allocate_face_storage(self, grid)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout
gridtype(grid_object)in

Call graph

reset_pml_configuration

Reset the input-driven configuration, leaving storage handling to reset_pml_object.

fortran
subroutine reset_pml_configuration(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout

Call graph

reset_pml_object

Reset configuration and release all derived storage.

fortran
subroutine reset_pml_object(self)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)inout

Call graph

Functions

description

Return a pretty-formatted object description.

Returns: character(len=:)

fortran
function description(self) result(desc)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)in

Call graph

face_is_active

Return true if the given block carries PML support on the selected face.

Attributes: pure

Returns: logical

fortran
function face_is_active(self, block_id, face) result(is_active)

Arguments

NameTypeIntentAttributesDescription
selfclass(prism_pml_object)in
block_idinteger(kind=I4P)in
faceinteger(kind=I4P)in

Call graph