Methods to treat the particle phase as immersed boundaries in particle-resolved direct numerical simulations (PR-DNS)
An extended Lagrangian object that represents particle represented as an Immersed Boundary
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | public | :: | Fc(3) |
Collision force applied on particle |
|||
real(kind=wp), | public | :: | Fcold(3) |
Old collision force |
|||
real(kind=wp), | public | :: | Fh(3) |
Hydrodynamic force applied on particle |
|||
real(kind=wp), | public | :: | Fhold(3) |
Old hydrodynamic force |
|||
real(kind=wp), | public | :: | Tc(3) |
Collision torque applied on particle |
|||
real(kind=wp), | public | :: | Tcold(3) |
Old collision torque |
|||
real(kind=wp), | public | :: | Th(3) |
Hydrodynamic torque applied on particle |
|||
real(kind=wp), | public | :: | Thold(3) |
Old hydrodynamic torque |
|||
integer, | public | :: | c(3) |
nearest cell |
|||
real(kind=wp), | public | :: | d |
Diameter of the particle |
|||
integer(kind=leapI8), | public | :: | id |
Identifying number (inactive if <0) |
|||
real(kind=WP), | public | :: | p(3) |
position |
|||
real(kind=wp), | public | :: | pold(3) |
Old particle position |
|||
real(kind=wp), | public | :: | rho |
Particle density |
|||
integer, | public | :: | s |
A tag |
|||
real(kind=wp), | public | :: | v(3) |
Particle velocity |
|||
real(kind=wp), | public | :: | vold(3) |
Old particle velocity |
|||
real(kind=wp), | public | :: | w(3) |
Particle angular velocity |
|||
real(kind=wp), | public | :: | wold(3) |
Old particle angular velocity |
procedure, public :: Extrapolate => lagrangian_obj_Extrapolate | |
procedure, public :: Interpolate => lagrangian_obj_Interpolate | |
procedure, public :: Locate => lagrangian_obj_Locate | |
procedure, public :: assign => ResPart_obj_assign | |
generic, public :: assignment(=) => assign |
An extended Lagrgian set representing resolved particles
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |
type(block_obj), | public | :: | cblock |
Collision block |
|||
integer, | public | :: | count | = | 0 |
Total count across all MPI ranks |
|
integer, | public | :: | count_ | = | 0 |
Local count for this rank |
|
integer, | public, | allocatable | :: | count_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 |
|||
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(sllist_obj), | public, | allocatable | :: | neighbors(:,:,:) |
Singly linked list of neighbors |
||
integer, | public, | allocatable | :: | objincell(:,:,:) |
Number of objects in this list |
||
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 |
Return MPI rank of the lagrangian centroid owning this marker.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(lagrangian_set), | intent(inout) | :: | this |
Set of resolved particles |
||
class(lagrangian_obj), | intent(in) | :: | marker |
A surface marker |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | u(3) | |||
real(kind=wp), | intent(in) | :: | v(3) |
Assignment
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ResPart_obj), | intent(inout) | :: | this | |||
class(lagrangian_obj), | intent(in) | :: | val |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 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 |
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 |