Tools to represent a collection of immersed solids for Fluid-Solid Interaction.
A solid_obj represents a single solid and contains information about: - the position, linear, and angular velocities of the solid's centroid - its type of motion (fixed, forcibly moving, freely moving) - and its immersed boundary
A solid_set is a collecation of solid objects. These may be part of the same system and maybe in contact (e.g. rotator and stator in the same engine). Or they can be completely unrelated (e.g. two separate boxes). The solid_set derived type offers additional methods for I/O.
An object that represents a solid
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=WP), | public | :: | Ac(3) |
Angluar velocity of center of mass |
|||
| 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 |
||
| real(kind=WP), | public | :: | fr | = | 0.0_WP |
Frequency of oscillation |
|
| 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 |
| integer, | public | :: | motion | = | 0 |
Type of motion |
|
| 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 |
| real(kind=WP), | public | :: | vc(3) |
Velocity of center of mass |
|||
| character(len=str64), | public | :: | write_file |
File to write |
|||
| real(kind=WP), | public | :: | xc(3) |
Position of center of mass |
Collection of solids
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(block_obj), | public, | pointer | :: | block | => | null() |
Associated block structure |
| integer, | public | :: | count | = | 0 |
Total count of solid_obj |
|
| character(len=:), | public, | allocatable | :: | name |
Name of the collection of solid_obj |
||
| logical, | public | :: | overwrite | = | .true. |
Switch to overwrite IO files |
|
| type(solid_obj), | public, | allocatable | :: | p(:) |
Array of solid_obj |
||
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Associated parallel structure |
| character(len=str64), | public | :: | read_file |
File to read |
|||
| character(len=str64), | public | :: | write_file |
File to write |
| procedure, public :: Communicate => solid_set_Communicate | |
| procedure, public :: Filter => solid_set_Filter | |
| procedure, public :: Finalize => solid_set_Final | |
| procedure, public :: Initialize => solid_set_Init | |
| procedure, public :: Localize => solid_set_Localize | |
| procedure, public :: Read => solid_set_ReadH5HUT | |
| procedure, public :: ReadH5HUT => solid_set_ReadH5HUT | |
| procedure, public :: ReadHDF5 => solid_set_ReadHDF5 | |
| procedure, public :: SetFilterKernel => solid_set_SetFilterKernel | |
| procedure, public :: SetFilterSize => solid_set_SetFilterSize | |
| procedure, public :: SetOverwrite => solid_set_SetOverwrite | |
| procedure, public :: SetReadFileName => solid_set_SetReadFileName | |
| procedure, public :: SetWriteFileName => solid_set_SetWriteFileName | |
| procedure, public :: Write => solid_set_WriteH5HUT | |
| procedure, public :: WriteH5HUT => solid_set_WriteH5HUT | |
| procedure, public :: WriteHDF5 => solid_set_WriteHDF5 |
Communicates markers of all solids in this set.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
Filters a quantity to the Eulerian grid.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| character(len=*), | intent(in) | :: | var |
Variable to compute |
||
| type(eulerian_obj_r), | intent(inout) | :: | field |
Filtered quantity |
Finalizes object and frees memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
Initializes a collection of solids.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| character(len=*), | intent(in) | :: | name |
Name of variable |
||
| integer, | intent(in) | :: | nobj |
Number of solid_obj |
||
| type(block_obj), | intent(in), | target | :: | block |
A block object |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
Localizes markers of all solids in this set on the grid.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
Reads all solids from disk using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| integer, | intent(out) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(out) | :: | time |
Time at write |
Reads all solids from disk using HDF5.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| integer, | intent(out) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(out) | :: | time |
Time at write |
Selects interpolation and extrapolation kernels.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| integer, | intent(in) | :: | kernel_interp |
Filter kernel for interpolations |
||
| integer, | intent(in) | :: | kernel_extrap |
Filter kernel for extrapolations |
Changes filter size to desired value.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| real(kind=wp), | intent(in) | :: | l_filter |
Filter size |
Sets file overwritting
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| logical, | intent(in) | :: | overwrite |
Toggle |
Sets the names of files to read.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| character(len=*), | intent(in) | :: | name |
Name of file |
Sets the names of files to write.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| character(len=*), | intent(in) | :: | name |
Name of file |
Writes all solids to disk using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
Writes all solids to disk using HDF5. Add some attributes
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solid_set), | intent(inout) | :: | this |
A collection of solids |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |