Appearance
adam_prism_pml_object
Source: src/app/prism/common/adam_prism_pml_object.F90
Dependencies
Contents
- prism_pml_object
- initialize
- load_from_file
- allocate_face_metadata
- allocate_face_storage
- reset_pml_configuration
- reset_pml_object
- description
- face_is_active
Variables
| Name | Type | Attributes | Description |
|---|---|---|---|
INI_SECTION_NAME | character(len=3) | parameter | |
PML_TYPE_NONE | character(len=8) | parameter | |
PML_TYPE_CLASSIC | character(len=8) | parameter | |
PML_TYPE_CFS | character(len=8) | parameter | |
PML_TYPE_BERMUDEZ | character(len=8) | parameter | |
PML_VARS_PER_FACE | integer(kind=I4P) | parameter | |
PML_FACE_X_M | integer(kind=I4P) | parameter | |
PML_FACE_X_P | integer(kind=I4P) | parameter | |
PML_FACE_Y_M | integer(kind=I4P) | parameter | |
PML_FACE_Y_P | integer(kind=I4P) | parameter | |
PML_FACE_Z_M | integer(kind=I4P) | parameter | |
PML_FACE_Z_P | integer(kind=I4P) | parameter | |
FACE_LABEL | character(len=2) | parameter | |
PML_X_VAR_NAME | character(len=8) | parameter | |
PML_Y_VAR_NAME | character(len=8) | parameter | |
PML_Z_VAR_NAME | character(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
| Name | Type | Attributes | Description |
|---|---|---|---|
pml_type | character(len=99) | ||
enabled | logical | ||
layer | logical | ||
width | real(kind=R8P) | ||
gamma_max | real(kind=R8P) | ||
gamma_exponent | real(kind=R8P) | ||
alpha_max | real(kind=R8P) | ||
k_max | real(kind=R8P) | ||
beta | real(kind=R8P) | ||
profile_span | real(kind=R8P) | Face-wise maximum center distance inside the PML. | |
ni_pml | integer(kind=I4P) | allocatable | Local i-range of active PML support [2,nb,6]. |
nj_pml | integer(kind=I4P) | allocatable | Local j-range of active PML support [2,nb,6]. |
nk_pml | integer(kind=I4P) | allocatable | Local k-range of active PML support [2,nb,6]. |
block_lid | integer(kind=I4P) | allocatable | Global-block to compact face-local slot [nb,6]; 0 if inactive. |
max_cells | integer(kind=I4P) | Max local PML thickness on each face. | |
active_blocks | integer(kind=I4P) | Boundary blocks carrying PML on each face. | |
blocks_x_m | integer(kind=I4P) | allocatable | Global block ids carrying x-minus PML. |
blocks_x_p | integer(kind=I4P) | allocatable | Global block ids carrying x-plus PML. |
blocks_y_m | integer(kind=I4P) | allocatable | Global block ids carrying y-minus PML. |
blocks_y_p | integer(kind=I4P) | allocatable | Global block ids carrying y-plus PML. |
blocks_z_m | integer(kind=I4P) | allocatable | Global block ids carrying z-minus PML. |
blocks_z_p | integer(kind=I4P) | allocatable | Global block ids carrying z-plus PML. |
q_pml_x_m | real(kind=R8P) | allocatable | [4,Cmax_xm,nj,nk,nblocks_xm] |
q_pml_x_p | real(kind=R8P) | allocatable | [4,Cmax_xp,nj,nk,nblocks_xp] |
q_pml_y_m | real(kind=R8P) | allocatable | [4,ni,Cmax_ym,nk,nblocks_ym] |
q_pml_y_p | real(kind=R8P) | allocatable | [4,ni,Cmax_yp,nk,nblocks_yp] |
q_pml_z_m | real(kind=R8P) | allocatable | [4,ni,nj,Cmax_zm,nblocks_zm] |
q_pml_z_p | real(kind=R8P) | allocatable | [4,ni,nj,Cmax_zp,nblocks_zp] |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
description | pass(self) | |
initialize | pass(self) | |
load_from_file | pass(self) |
Subroutines
initialize
Initialize the PML support and allocate reduced face-local states.
fortran
subroutine initialize(self, field, grid, tree, file_parameters)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
tree | type(tree_object) | in | ||
file_parameters | type(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
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout | ||
file_parameters | type(file_ini) | in | ||
go_on_fail | logical | in | optional |
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
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout |
Call graph
allocate_face_storage
Allocate reduced face-local PML state arrays.
fortran
subroutine allocate_face_storage(self, grid)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout | ||
grid | type(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
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout |
Call graph
reset_pml_object
Reset configuration and release all derived storage.
fortran
subroutine reset_pml_object(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | inout |
Call graph
Functions
description
Return a pretty-formatted object description.
Returns: character(len=:)
fortran
function description(self) result(desc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(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
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_pml_object) | in | ||
block_id | integer(kind=I4P) | in | ||
face | integer(kind=I4P) | in |
Call graph