Collection of regions
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(block_obj), | public, | pointer | :: | block | => | null() |
Associated block structure |
| integer, | public | :: | count | = | 0 |
Total number of regions across all MPI ranks |
|
| type(hdf5_obj), | public, | pointer | :: | hdf5 | => | null() |
HDF5 object for IO |
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Associated parallel structure |
| type(region_obj), | public, | allocatable | :: | region(:) |
Array of regions |
||
| type(hashtbl_obj), | private | :: | tbl |
Hash table |
Adds a new region to bc_set.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | name |
Name of region |
||
| real(kind=wp), | intent(in) | :: | xlo(3) |
Position of lower left corner |
||
| real(kind=wp), | intent(in) | :: | xhi(3) |
Position of upper right corner |
||
| character(len=*), | intent(in) | :: | normal |
Oriented normal |
Builds an integer field, where cells=0 denotes interior cells, and cells=1 denotes boundary cells for input variable.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | name |
Name of the variable |
||
| type(eulerian_obj_i), | intent(inout) | :: | mask |
Mask for this variable |
Checks whether there is BC for a given variable on a given region.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| character(len=*), | intent(in) | :: | var |
Variable name |
Result
Makes sure bounds represent a plane.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | xlo(3) |
Lower left corner |
||
| real(kind=wp), | intent(in) | :: | xhi(3) |
Upper right corner |
True, if bounds represent a plane
Resizes array to accomodate a new element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
Finalizes bc_set and frees memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
Fetches a pointer to the val array describing the Dirichlet or Neumann BC of a given variable on a given region.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| character(len=*), | intent(in) | :: | var |
Variable name |
||
| real(kind=wp), | intent(inout), | pointer | :: | val(:,:,:) |
Pointer |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| character(len=*), | intent(in) | :: | var |
Variable name |
Result
Returns the extents (lo and hi bounds) of a region.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | name |
Region name |
Result
Returns the index of a region, or -1 if not found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | name |
Region name |
Result
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | normal |
String denoting the normal direction |
||
| integer, | intent(out) | :: | side |
Side (=BC_LEFT,BC_RIGHT) |
||
| integer, | intent(out) | :: | dir |
Direction (=1,2,3,) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| integer, | intent(out) | :: | side |
Side (=BC_LEFT,BC_RIGHT) |
||
| integer, | intent(out) | :: | dir |
Direction (=1,2,3,) |
Prints to stdout information on bc_set, for debugging.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
Initializes bc_set.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| type(block_obj), | intent(in), | target | :: | block |
A block object |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
Reads boundary conditions from file.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| integer, | intent(out) | :: | iter |
Iteration read from file |
||
| real(kind=wp), | intent(out) | :: | time |
Time read from file |
||
| character(len=*), | intent(in), | optional | :: | name |
Name of file to write |
Sets boundary condition of a given type, for a given variable on a given region.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| integer, | intent(in) | :: | type |
BC type |
||
| character(len=*), | intent(in), | optional | :: | var |
Variable name |
Imposes boundary conditions for a scalar variable.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Imposes boundary conditions for a vector field. For symmetry BC, the sign depends is 'plus' or 'minus' depending on the alignment between the vector component and the symmetry direction.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| type(eulerian_obj_r), | intent(inout) | :: | var(3) |
Eulerian variable |
Updates ghost cells to enforce Dirichlet BC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Updates ghostcells to enforce Neumann BC.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Updates ghostcells to enforce symmetry BC. Minus version.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Updates ghostcells to enforce symmetry BC. Plus version.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | region |
Region name |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Finds the intersection between block owned by this MPI rank, and the plane defining the region.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| character(len=*), | intent(in) | :: | name |
Region name |
Writes bc_set to disk using HDF5. The file structure follows this convention:
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(inout) | :: | this |
Boundary conditions utility |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
||
| character(len=*), | intent(in), | optional | :: | name |
Name of file to write |
Imposes boundary conditions for a scalar variable.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| type(eulerian_obj_r), | intent(inout) | :: | var |
Eulerian variable |
Imposes boundary conditions for a vector field. For symmetry BC, the sign depends is 'plus' or 'minus' depending on the alignment between the vector component and the symmetry direction.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(bc_set), | intent(in) | :: | this |
Boundary conditions utility |
||
| type(eulerian_obj_r), | intent(inout) | :: | var(3) |
Eulerian variable |
type :: bc_set !> Collection of regions type(region_obj), allocatable:: region(:) !! Array of regions type(parallel_obj), pointer :: parallel => null() !! Associated parallel structure type(block_obj), pointer :: block => null() !! Associated block structure type(hdf5_obj), pointer :: hdf5 => null() !! HDF5 object for IO type(hashtbl_obj), private :: tbl !! Hash table integer :: count = 0 !! Total number of regions across all MPI ranks contains procedure :: Initialize => bc_set_Init procedure :: Finalize => bc_set_Final procedure :: Add => bc_set_Add procedure :: Expand => bc_set_Expand procedure :: UpdateExtents => bc_set_UpdateExtents procedure :: BuildMask => bc_set_BuildMask procedure :: GetRegionIndex => bc_set_GetRegionIndex procedure :: GetExtents => bc_set_GetExtents procedure :: SetBC => bc_set_SetBC procedure :: GetSideDirByNormal => bc_set_GetSideDirByNormal procedure :: GetSideDirByRegion => bc_set_GetSideDirByRegion procedure :: GetBCType => bc_set_GetBCType procedure :: GetBCPointer => bc_set_GetBCPointer generic :: UpdateBoundary => bc_set_UpdateBoundaryScalar, & bc_set_UpdateBoundaryVector procedure :: UpdateBoundaryDirichlet & => bc_set_UpdateBoundaryDirichlet procedure :: UpdateBoundaryNeumann & => bc_set_UpdateBoundaryNeumann procedure :: UpdateBoundarySymmetryPlus & => bc_set_UpdateBoundarySymmetryPlus procedure :: UpdateBoundarySymmetryMinus & => bc_set_UpdateBoundarySymmetryMinus procedure :: Info => bc_set_Info procedure :: Write => bc_set_Write procedure :: Read => bc_set_Read procedure, nopass :: CheckBounds => bc_set_CheckBounds procedure :: CheckBCExists => bc_set_CheckBCExists ! Internal/private procedures procedure, private :: bc_set_UpdateBoundaryScalar procedure, private :: bc_set_UpdateBoundaryVector end type bc_set