Base structure for Rulerian data. This typically represents a field quantity.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(block_obj), | public, | pointer | :: | block | => | null() |
Associated block structure |
| character(len=:), | public, | allocatable | :: | name |
Variable name |
||
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Associated parallel structure |
| integer, | public | :: | staggering | = | 0 |
0 = cell centered; 1 = X1-face centered 2 = X2-face centered; 3 = X3-face centered |
Updates and add-up the ghostcells.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Adds up ghostcells in the x direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Adds up ghostcells in the y direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Adds up ghostcells in the z direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Allocates Cell array in Eulerian object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Deallocate Cell array in Eulerian object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Finalizes the Eulerian object and free memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Prints info about this structure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Initializes an Eulerian field.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| character(len=*), | intent(in) | :: | name |
Name of variable |
||
| type(block_obj), | intent(in), | target | :: | block |
A block object |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
|
| integer, | intent(in) | :: | stag |
Staggering |
Computes the mean of an Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
Computes norm2 of an Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
Updates the ghostcells.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Updates the ghostcells in the x direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Updates the ghostcells in the y direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Updates the ghostcells in the z direction with non-blocking mpi directives.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| class(eulerian_obj_base), | intent(in) | :: | in |
Object to assign |
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| real(kind=wp), | intent(in) | :: | in |
Object to assign |
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| integer, | intent(in) | :: | in |
Object to assign |
Performs multiplication of real Eulerian objects by real scalar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| real(kind=wp), | intent(in) | :: | in |
An Eulerian object |
Result
Performs multiplication of integer Eulerian objects by integer scalar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| integer, | intent(in) | :: | in |
An Eulerian object |
Result
Performs addition of real Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_r), | intent(in) | :: | in |
An Eulerian object |
Result
Performs addition of integer Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_i), | intent(in) | :: | in |
An Eulerian object |
Result
Performs subtraction of real Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_r), | intent(in) | :: | in |
An Eulerian object |
Result
Performs subtraction of integer Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_i), | intent(in) | :: | in |
An Eulerian object |
Result
Performs addition of integer Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_i), | intent(in) | :: | in |
An Eulerian object |
Result
Performs addition of real Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_r), | intent(in) | :: | in |
An Eulerian object |
Result
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| class(eulerian_obj_base), | intent(in) | :: | in |
Object to assign |
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| integer, | intent(in) | :: | in |
Object to assign |
Performs assignment for Eulerian_obj.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(inout) | :: | this |
An Eulerian object |
||
| real(kind=wp), | intent(in) | :: | in |
Object to assign |
Performs multiplication of integer Eulerian objects by integer scalar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| integer, | intent(in) | :: | in |
An Eulerian object |
Result
Performs multiplication of real Eulerian objects by real scalar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| real(kind=wp), | intent(in) | :: | in |
An Eulerian object |
Result
Performs subtraction of integer Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_i), | intent(in) | :: | in |
An Eulerian object |
Result
Performs subtraction of real Eulerian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(eulerian_obj_base), | intent(in) | :: | this |
An Eulerian object |
||
| type(eulerian_obj_r), | intent(in) | :: | in |
An Eulerian object |
Result
type, abstract :: eulerian_obj_base !> Base structure for Rulerian data. This typically represents ! a field quantity. character(len=:), allocatable :: name !! Variable name integer :: staggering = 0 !! 0 = cell centered; 1 = X1-face centered !! 2 = X2-face centered; 3 = X3-face centered type(parallel_obj), pointer :: parallel => null() !! Associated parallel structure type(block_obj), pointer :: block => null() !! Associated block structure contains procedure :: Initialize => eulerian_obj_Init procedure :: Finalize => eulerian_obj_Final procedure :: UpdateGhostCells => eulerian_obj_UpdateGhostCells procedure :: AddUpGhostCells => eulerian_obj_AddUpGhostCells procedure :: Allocate => eulerian_obj_Allocate procedure :: Deallocate => eulerian_obj_Deallocate procedure :: UpdateGhostCells_x => eulerian_obj_UpdateGhostCells_x procedure :: UpdateGhostCells_y => eulerian_obj_UpdateGhostCells_y procedure :: UpdateGhostCells_z => eulerian_obj_UpdateGhostCells_z procedure :: AddUpGhostCells_x => eulerian_obj_AddUpGhostCells_x procedure :: AddUpGhostCells_y => eulerian_obj_AddUpGhostCells_y procedure :: AddUpGhostCells_z => eulerian_obj_AddUpGhostCells_z procedure :: Info => eulerian_obj_Info procedure :: Mean => eulerian_obj_Mean procedure :: Norm2 => eulerian_obj_Norm2 generic :: assignment(=) => eulerian_obj_AssignEulerianObj, & eulerian_obj_AssignReal0D, & eulerian_obj_AssignInt0D generic :: operator(+) => eulerian_obj_AddEulerianRObj, & eulerian_obj_AddEulerianIObj generic :: operator(-) => eulerian_obj_SubEulerianRObj, & eulerian_obj_SubEulerianIObj generic :: operator(*) => eulerian_obj_MulReal0D, & eulerian_obj_MulInt0D ! Internal/private procedures procedure, private :: eulerian_obj_AssignEulerianObj procedure, private :: eulerian_obj_AssignReal0D procedure, private :: eulerian_obj_AssignInt0D procedure, private :: eulerian_obj_AddEulerianRObj procedure, private :: eulerian_obj_AddEulerianIObj procedure, private :: eulerian_obj_SubEulerianRObj procedure, private :: eulerian_obj_SubEulerianIObj procedure, private :: eulerian_obj_MulReal0D procedure, private :: eulerian_obj_MulInt0D end type eulerian_obj_base