An extended Lagrgian set representing resolved particles
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | public | :: | CPG(3) | = | 0.0_wp | 
                 Constant Pressure Gradient forcing  | 
        |
| integer, | public | :: | MPI_SIZE | = | 44 | 
                 MPI size  | 
        |
| type(MPI_Datatype), | public | :: | MPI_TYPE | 
                 MPI variable type  | 
        |||
| 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(:) | 
                of lagrangian objects per proc | 
        ||
| procedure(kernel_1D), | public, | nopass, pointer | :: | g1ex | => | int_g1_triangle | 
                 1D kernel used in extrapolations  | 
        
| procedure(kernel_1D), | public, | nopass, pointer | :: | g1in | => | g1_triangle | 
                 1D kernel used in interpolations  | 
        
| real(kind=wp), | public | :: | gravity(3) | = | 0.0_wp | 
                 Gravity  | 
        |
| type(marker_set), | public | :: | ib | 
                 Surface markers  | 
        |||
| logical, | public | :: | is_initialized | = | .false. | 
                 Flag to determine whether this has been initialized  | 
        |
| real(kind=wp), | public | :: | l_filter | 
                 Half filter width  | 
        |||
| integer, | public, | allocatable | :: | lookup(:) | 
                 Lookup array  | 
        ||
| 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  | 
        
| integer, | public, | allocatable | :: | ranks(:) | 
                 MPI ranks of the lagrangian objects  | 
        ||
| character(len=str64), | public | :: | read_file | 
                 file to read  | 
        |||
| real(kind=wp), | public | :: | rhof | = | 1.0_wp | 
                 Fluid density  | 
        |
| 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  | 
        
Advance centers to next timestep
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| real(kind=wp), | intent(in) | :: | dt | 
 Timestep  | 
        
Advance markers to next timestep
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| real(kind=wp), | intent(in) | :: | dt | 
 Timestep  | 
        
Apply periodic boundary conditions
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Set of Lagrangian objects  | 
        
Communicate lagrangian objects across MPI_rank
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Set of Lagrangian objects  | 
        ||
| procedure(locator), | optional | :: | GetOwnerRankOpt | 
 MPI Rank locator for communications  | 
        
Determines the size of the MPI derived type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
Create monitor file for Resolved Particles
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        
Filter a quantity to the Eulerian grid
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| character(len=*), | intent(in) | :: | var | 
 Variable to compute  | 
        ||
| type(eulerian_obj_r), | intent(inout) | :: | field | 
 Filtered quantity  | 
        
Finalize 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 derived type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
Compute hydrodynamic force on particle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | P | 
 Fluid pressure field  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | U | 
 Fluid velocity field in 1-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | V | 
 Fluid velocity field in 2-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | W | 
 Fluid velocity field in 3-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | ibVF | 
 Solid volume fraction  | 
        ||
| real(kind=wp), | intent(in) | :: | visc | 
 Fluid viscosity  | 
        
Compute the IB forcing
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| 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) | :: | SA | 
 Surface area  | 
        ||
| type(eulerian_obj_r), | intent(inout) | :: | ibF(3) | 
 IB forcing  | 
        ||
| real(kind=wp), | intent(in) | :: | dt | 
 Timestep  | 
        
Returns the MPI rank that should own this lagrangian object based on which block it belongs to
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 A set of Lagrangian objects  | 
        ||
| class(lagrangian_obj), | intent(in) | :: | lagobj | 
 Lagrangian obj to locate  | 
        
rank that should own lagobj
Return the base name of file to write
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 A collection of Eulerian objects  | 
        
Name of file
Compute hydrodynamic stresses on markers
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | P | 
 Fluid pressure field  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | U | 
 Fluid velocity field in 1-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | V | 
 Fluid velocity field in 2-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | W | 
 Fluid velocity field in 3-dir  | 
        ||
| type(eulerian_obj_r), | intent(in) | :: | ibVF | 
 Solid volume fraction  | 
        ||
| real(kind=wp), | intent(in) | :: | visc | 
 Fluid viscosity  | 
        
Return the base name of file to write
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 A collection of Eulerian objects  | 
        
Name of file
Prints diagnostics information about the derived type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Lagrangian array to dump  | 
        
Initialize 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 from main program  | 
        
Localize a Lagrangian object on the grid Returns the location of the closest collocated cell (staggering=0
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Lagrangian array to dump  | 
        
Prepare ResPart_set for use with solvers
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| 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(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  | 
        
Read ResPart data from file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| 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  | 
        
Sorting routine: stacks active lagrangian objects at the beginning of the array then resizes
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Lagrangian array to dump  | 
        
Regroup markers with their respective centroids on the same MPI block
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        
Changes the size of an array of Lagrangian objects
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Lagrangian array to dump  | 
        ||
| integer, | intent(in) | :: | n | 
 New size  | 
        
Reset the filter kerrnel Default is Triangle for interpolation and extrapolation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Set of Lagrangian objects  | 
        ||
| integer, | intent(in) | :: | kernel_interp | 
 Filter kernel for interpolations  | 
        ||
| integer, | intent(in) | :: | kernel_extrap | 
 Filter kernel for extrapolations  | 
        
Filter a quantity to the Eulerian grid
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| real(kind=wp), | intent(in) | :: | l_filter | 
 Filter size  | 
        
Set up parameters used when creating the MPI derived type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| 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  | 
        
description
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        
Set file overwritting
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 A collection of Eulerian objects  | 
        ||
| logical, | intent(in) | :: | overwrite | 
 Name of file  | 
        
Set the base name of file to write
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| character(len=*), | intent(in) | :: | name | 
 Name of file  | 
        
Set the base name of file to write
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| character(len=*), | intent(in) | :: | name | 
 Name of file  | 
        
Store values from previous timestep
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        
Updates the total count of Lagrangian objects
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Lagrangian array to dump  | 
        
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)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lagrangian_set), | intent(inout) | :: | this | 
 Set of Lagrangian objects  | 
        ||
| real(kind=wp), | intent(in) | :: | dist | 
 Distance from boundaries  | 
        
Update lookup array -- The lookup array returns the local (MPI rank) index of a centroid when given the global ID of that centroid
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        
Updates the Normals field
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| type(eulerian_obj_r), | intent(inout) | :: | ibN(3) | 
Updates the Surface Density Function
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Collection of Resolved Particles  | 
        ||
| type(eulerian_obj_r), | intent(inout) | :: | SA | 
description
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| integer, | intent(in) | :: | iter | 
 Iteration at write  | 
        ||
| real(kind=wp), | intent(in) | :: | time | 
 Time at write  | 
        
Write data to disk in Silo format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ResPart_set), | intent(inout) | :: | this | 
 Set of resolved particles  | 
        ||
| integer, | intent(in) | :: | iter | 
 Iteration at write  | 
        ||
| real(kind=wp), | intent(in) | :: | time | 
 Time at write  | 
        ||
| character(len=str8), | intent(in), | optional | :: | list(:) | 
 Names of components to write  | 
        
Finalize 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  | 
        
Initialize 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 from main program  |