A collection of elements that form the tesseleation of an IB surface.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(bc_set), | public, | pointer | :: | bcs | => | null() |
boundary conditions object |
| type(block_obj), | public, | pointer | :: | block | => | null() |
Associated block structure |
| integer, | public | :: | count | = | 0 |
Total count across all MPI ranks |
|
| integer, | public | :: | count_ | = | 0 |
Local count for this rank |
|
| integer, | public, | allocatable | :: | count_proc(:) |
Nbr of lagrangian objects per proc |
||
| procedure(kernel_1D), | public, | pointer, nopass | :: | g1ex | => | int_g1_triangle |
1D kernel used in extrapolations |
| procedure(kernel_1D), | public, | pointer, nopass | :: | g1in | => | g1_triangle |
1D kernel used in interpolations |
| logical, | public | :: | is_initialized | = | .false. |
Flag to determine whether this has been initialized |
|
| real(kind=wp), | public | :: | l_filter |
Half filter width |
|||
| type(monitor_set), | public, | pointer | :: | monitors | => | null() |
Monitors to print to stdout and files |
| character(len=:), | public, | allocatable | :: | name |
Name of the Lagrangian set |
||
| type(op_obj), | public, | pointer | :: | op | => | null() |
operators object |
| logical, | public | :: | overwrite | = | .true. |
Switch to overwrite IO files |
|
| class(lagrangian_obj), | public, | allocatable | :: | p(:) |
Array of Lagrangian_obj or any extended type |
||
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Associated parallel structure |
| type(parser_obj), | public, | pointer | :: | parser | => | null() |
Parser for input file |
| character(len=str64), | public | :: | read_file |
File to read |
|||
| class(lagrangian_obj), | public, | allocatable | :: | sample |
Sample used in allocation of polymorphic data |
||
| integer, | public | :: | stib | = | 3 |
Stencil size for filtering |
|
| type(timer_obj), | public, | pointer | :: | timer | => | null() |
Timer utility |
| character(len=str64), | public | :: | write_file |
File to write |
|||
| integer, | private | :: | R_chunk_size |
Read chunk size |
Adds an IB cylinder (with open faces).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| real(kind=wp), | intent(in) | :: | base(3) |
Base point for extrusion |
||
| real(kind=wp), | intent(in) | :: | L(3) |
Extrusion length |
||
| real(kind=wp), | intent(in) | :: | radius |
Cylinder radius |
||
| real(kind=wp), | intent(in) | :: | vel(3) |
Cylinder translational velocity |
||
| real(kind=wp), | intent(in) | :: | dl |
Element size |
||
| integer(kind=8), | intent(in), | optional | :: | tag |
Tag |
Adds an IB plane.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| real(kind=wp), | intent(in) | :: | center(3) |
Plane center |
||
| character(len=*), | intent(in) | :: | normal |
Plane normal |
||
| real(kind=wp), | intent(in) | :: | width(3) |
Plane extents |
||
| real(kind=wp), | intent(in) | :: | vel(3) |
Plane velocity |
||
| real(kind=wp), | intent(in) | :: | dl |
Element size |
||
| integer(kind=8), | intent(in), | optional | :: | tag |
Tag |
Adds an IB sphere.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| real(kind=wp), | intent(in) | :: | center(3) |
Sphere center |
||
| real(kind=wp), | intent(in) | :: | radius |
Sphere radius |
||
| real(kind=wp), | intent(in) | :: | vel(3) |
Sphere velocity |
||
| real(kind=wp), | intent(in) | :: | dl |
Element size |
||
| integer(kind=8), | intent(in), | optional | :: | tag |
Tag |
Applies periodic boundary conditions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Finds the center of area.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
Position of center of area
Communicates lagrangian objects across MPI_rank. This subroutine relies on a rank locator procedure (GetOwnerRankOpt) to determine the rank that should own each Lagrangian object. The default rank locator is the one provided by the block object associated with this Lagrangian_set. From there, each rank will send objects that they no longer own and receive objects from other ranks that belongs to it. Note that this subroutine allocates an array (buf_send) of size (MAX NUMBER of OBJECTS to SEND) x (NUMBER OF MPI RANKS) For massively parallel simulations, this may cause out of memory issues. In those cases, care must be exercised to reduce the number of objects to be sent at any given time (e.g.: by doing communications in small batches).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| procedure(locator), | optional | :: | GetOwnerRankOpt |
MPI Rank locator for communications |
Computes the solid volume fraction on the mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(eulerian_obj_r), | intent(inout) | :: | VF |
Volume fraction |
||
| character(len=*), | intent(in) | :: | solver |
Name of solver to be used |
||
| real(kind=wp), | intent(in) | :: | MaxTol |
Maximum relative tolerance |
||
| integer, | intent(in) | :: | MaxIt |
Maximum number of subiterations |
||
| integer, | intent(in), | optional | :: | RelaxType |
Relaxation type |
|
| real(kind=wp), | intent(out), | optional | :: | Rel |
Relative error at end of solve |
|
| integer, | intent(out), | optional | :: | It |
Number of iterations performed |
|
| real(kind=wp), | intent(out), | optional | :: | intRHS |
Magnitude of RHS |
Creates an MPI data type for parallel communication of the Lagrangian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Computes a filtered quantity on the Eulerian grid.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| character(len=*), | intent(in) | :: | var |
Variable to compute |
||
| type(eulerian_obj_r), | intent(inout) | :: | field |
Filtered quantity |
Finalizes the ResPart_set type. This subourtine replaces the inheritted lagrangian_final.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this |
Set of resolved partilces |
Frees the MPI data type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
Computes the IB forcing Interpolation are carried out by trilinear interpolations.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(eulerian_obj_r), | intent(in) | :: | Um |
Velocity in 1-dir |
||
| type(eulerian_obj_r), | intent(in) | :: | Vm |
Velocity in 2-dir |
||
| type(eulerian_obj_r), | intent(in) | :: | Wm |
Velocity in 3-dir |
||
| real(kind=wp), | intent(in) | :: | rhof |
Fluid density |
||
| type(eulerian_obj_r), | intent(in) | :: | SDF |
Surface density function |
||
| type(eulerian_obj_r), | intent(inout) | :: | ibF(3) |
IB forcing |
||
| real(kind=wp), | intent(in) | :: | dt |
Timestep |
Returns whether overwriting is true or false.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(in) | :: | this |
A set of Lagrangian objects |
Overwrite value
Returns the base name of file to read.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(in) | :: | this |
A set of Lagrangian objects |
Name of file
Returns the base name of file to write.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(in) | :: | this |
A set of Lagrangian objects |
Name of file
Prints diagnostics information about the derived type to the standard output.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Initializes the ResPart_set type. This subourtine replaces the inheritted lagrangian_init.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this |
Set of resolved partilces |
||
| character(len=*), | intent(in) | :: | name |
Name of instance |
||
| type(block_obj), | intent(in), | target | :: | block |
A block object |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
Loads markers from a binary STL. This is a serial routine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| character(len=*), | intent(in) | :: | STL_file |
Variable to compute |
Localizes all Lagrangian object on the grid. For each Lagrangian object in the set, this subroutine finds the cell (staggering=0) where this object is located and updates its cell indices.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Prepares marker_set for use with solvers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(timer_obj), | intent(in), | target | :: | timer |
Timer utility |
|
| type(parser_obj), | intent(in), | target | :: | parser |
Parser for input file |
|
| type(op_obj), | intent(in), | target | :: | operators |
Operators object |
|
| type(bc_set), | intent(in), | target | :: | bcs |
Boundary conditions object |
|
| type(monitor_set), | intent(in), | target | :: | monitors |
Monitors to print to stdout and files |
|
| logical, | intent(in), | optional | :: | update_time |
Update time and iteration based on read file |
Reads marker data from file in parallel using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(out) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(out) | :: | time |
Time at write |
||
| integer, | intent(in), | optional | :: | step |
User supplied step to open |
Reads marker data from file in parallel using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(out) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(out) | :: | time |
Time at write |
||
| integer, | intent(in), | optional | :: | step |
User supplied step to open |
Reads marker data from file in parallel using HDF5.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(out) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(out) | :: | time |
Time at write |
Sorting routine: stacks active lagrangian objects (i.e., who's id is >=1) at the beginning of the array then resizes. Objects with id <= 0 (such as ghost objects) are removed by this subroutine.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Changes the size of an array of Lagrangian objects. To avoid excessive reallocating, the object array will be reallocated only if the new size is (1+RESIZE_INCREMENT) larger or (1-RESIZE_INCREMENT) smaller than previous size. When the size change does not justify reallocating, the excess objects at the end tail of the object array will be marked as inactive with a large negative ID.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| integer, | intent(in) | :: | n |
New target size |
Sets the interpolation and extrapolation filter kernels. Default is the Triangle kernel.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| integer, | intent(in) | :: | kernel_interp |
Filter kernel for interpolations |
||
| integer, | intent(in) | :: | kernel_extrap |
Filter kernel for extrapolations |
Adjusts the filter half size. Note that the block needs to contain enough ghost cells to be able to represent a filter kernel centered on the edge of the domain. Otherwise, an error will be returnned. The larger the filter size, the more ghost cells are required.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
Set of Lagrangian objects |
||
| real(kind=wp), | intent(in) | :: | l_filter |
Filter size |
Sets up parameters for creating the MPI derived type. Create the MPI structure
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(MPI_Datatype), | intent(out), | allocatable | :: | types(:) |
Array of types |
|
| integer, | intent(out), | allocatable | :: | lengths(:) |
Array of lengths |
|
| integer(kind=MPI_ADDRESS_KIND), | intent(out), | allocatable | :: | displacement(:) |
Array of displacements |
Sets the sample type used in allocation of polymorphic variables.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
Sets file overwritting.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| logical, | intent(in) | :: | overwrite |
Overwrite value |
Sets the chunk size.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(in) | :: | chunk_size |
Chunk size |
Sets the base name of file to read.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| character(len=*), | intent(in) | :: | name |
Name of file |
Sets the base name of file to write.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| character(len=*), | intent(in) | :: | name |
Name of file |
Updates the total count of Lagrangian objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
Updates ghost objects. Copies objects that lie "dist"-away from the block's boundaries to neighboring MPI-ranks and designate copies as Ghost Objects (id<0). This subroutine will also update the local count (i.e., this%count_) to (NBR of ACTIVE OBJECTS) + (NBR of GHOST OBJECTS). However, the global count (this%count) will remain unchanged (i.e., equal to the total count of active ojbects only)0
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this |
A set of Lagrangian objects |
||
| real(kind=wp), | intent(in) | :: | dist |
Distance from boundaries |
Updates the Normals field.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(eulerian_obj_r), | intent(inout) | :: | ibN(3) |
Normals field |
Updates the Surface Density Function.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(eulerian_obj_r), | intent(inout) | :: | SDF |
Surface Density Function |
Writes marker data to file in parallel using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
Writes marker data to file in parallel using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
Write marker data to file in parallel using HDF5.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
Finalizes the marker_set type. This subourtine replaces the inheritted lagrangian_final.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
Initializes the marker_set type. This subourtine replaces the inheritted lagrangian_init.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| character(len=*), | intent(in) | :: | name |
Name of this IB surface |
||
| type(block_obj), | intent(in), | target | :: | block |
A block object |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
type, extends(lagrangian_set) :: marker_set !> A collection of elements that form the tesseleation ! of an IB surface. type(timer_obj), pointer :: timer => null() !! Timer utility type(parser_obj), pointer :: parser => null() !! Parser for input file type(monitor_set), pointer :: monitors => null() !! Monitors to print to stdout and files type(op_obj), pointer :: op => null() !! operators object type(bc_set), pointer :: bcs => null() !! boundary conditions object integer, private :: R_chunk_size !! Read chunk size contains procedure :: lagrangian_set_Init => marker_set_Init procedure :: lagrangian_set_Final => marker_set_Final ! Solver subroutines procedure :: Prepare => marker_set_Prepare procedure :: UpdateSDF => marker_set_UpdateSDF procedure :: UpdateNormals => marker_set_UpdateNormals procedure :: GetIBForcing => marker_set_GetIBForcing procedure :: Filter => marker_set_Filter procedure :: CoM => marker_set_CoM procedure :: ComputeSolidVolFrac => marker_set_ComputeSolidVolFrac procedure :: AddSphere => marker_set_AddSphere procedure :: AddPlane => marker_set_AddPlane procedure :: AddCylinder => marker_set_AddCylinder ! I/O subroutines procedure :: SetReadChunkSize => marker_set_SetReadChunkSize procedure :: Read => marker_set_ReadH5HUT procedure :: ReadH5HUT => marker_set_ReadH5HUT procedure :: ReadHDF5 => marker_set_ReadHDF5 procedure :: Write => marker_set_WriteH5HUT procedure :: WriteH5HUT => marker_set_WriteH5HUT procedure :: WriteHDF5 => marker_set_WriteHDF5 procedure :: LoadSTL => marker_set_LoadSTL ! MPI subroutines procedure :: SetObjectType => marker_set_SetObjectType procedure :: SetMPIDataTypeParams => marker_set_SetMPIDataTypeParams end type marker_set