Toolkit that handles collisions between resolved particles, point particles, immersed boundaries, and walls.
A utility that handles collisions
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(marker_set), | public, | pointer | :: | IB | => | null() |
Immersed solids (walls) |
| type(sllist_obj), | public, | allocatable | :: | IBneighbors(:,:,:) |
Singly linked list of neighbors |
||
| integer, | public, | allocatable | :: | IBobjincell(:,:,:) |
Number of objects in this list |
||
| type(particle_set), | public, | pointer | :: | PP | => | null() |
Point particles |
| type(sllist_obj), | public, | allocatable | :: | PPneighbors(:,:,:) |
Singly linked list of neighbors |
||
| integer, | public, | allocatable | :: | PPobjincell(:,:,:) |
Number of objects in this list |
||
| type(ResPart_set), | public, | pointer | :: | RP | => | null() |
Resolved particles |
| type(sllist_obj), | public, | allocatable | :: | RPneighbors(:,:,:) |
Singly linked list of neighbors |
||
| integer, | public, | allocatable | :: | RPobjincell(:,:,:) |
Number of objects in this list |
||
| type(block_obj), | public | :: | cblock |
Collision block |
|||
| real(kind=wp), | public | :: | edry |
Dry restitution coefficient |
|||
| type(monitor_set), | public, | pointer | :: | monitors | => | null() |
Monitors to print to stdout and files |
| real(kind=wp), | public | :: | muc |
Coulomb friction factor |
|||
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Parallel/MPI utility |
| type(parser_obj), | public, | pointer | :: | parser | => | null() |
Parser for input file |
| real(kind=wp), | public | :: | tcol |
Collision time |
|||
| type(timer_obj), | public, | pointer | :: | timer | => | null() |
Timer utility |
| logical, | public | :: | use_wall | = | .false. |
Walls for collisions |
|
| real(kind=wp), | public | :: | wall_bottom |
Wall position at the high bound |
|||
| integer, | public | :: | wall_dir |
Wall normal direction (0=no walls, 1=x1, 2=x2, or 3=x3). |
|||
| real(kind=wp), | public | :: | wall_top |
Wall position at the low bound |
Computes collisions with a Linearized Spring Dashpot model.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | r1(3) |
Position |
||
| real(kind=wp), | intent(in) | :: | r2(3) |
Position |
||
| real(kind=wp), | intent(in) | :: | d1 |
Diameter |
||
| real(kind=wp), | intent(in) | :: | d2 |
Diameter |
||
| real(kind=wp), | intent(in) | :: | m1 |
Masses of each particle |
||
| real(kind=wp), | intent(in) | :: | m2 |
Masses of each particle |
||
| real(kind=wp), | intent(in) | :: | v1(3) |
Velocities |
||
| real(kind=wp), | intent(in) | :: | v2(3) |
Velocities |
||
| real(kind=wp), | intent(in) | :: | w1(3) |
Rotation rates |
||
| real(kind=wp), | intent(in) | :: | w2(3) |
Rotation rates |
||
| real(kind=wp), | intent(in) | :: | tcol |
Collision time |
||
| real(kind=wp), | intent(in) | :: | edry |
Dry restitution coefficent |
||
| real(kind=wp), | intent(in) | :: | muc |
Coulomb friction factor |
Returns the cross product of two vectors.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | x(3) |
Input vector |
||
| real(kind=wp), | intent(in) | :: | y(3) |
Input vector |
Result
Adds an Immersed Boundary to list of collisional objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| type(marker_set), | intent(in), | target | :: | IB |
Immersed Boundaries |
Adds Point Particles to list of collisional objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| type(particle_set), | intent(in), | target | :: | PP |
Point particles |
Adds Resolved Particles to list of collisional objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| type(ResPart_set), | intent(in), | target | :: | RP |
Resolved Particles |
Computes collisions between all added objects.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between Point Particles and Immersed Boundaries.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between pairs of Point Particles.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between Point Particles and Walls.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between Resolved Particles and Immersed Boundaries.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between Point and Resolved Particles.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between pairs of Resolved Particles.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Computes collisions between Resolved Particles and Walls.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Finalizes object and frees memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Initializes object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel structure to link with |
Prepares object for use in solvers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| type(timer_obj), | intent(in), | target | :: | timer |
Timer utility |
|
| type(parser_obj), | intent(in), | target | :: | parser |
Parser for input file |
|
| type(monitor_set), | intent(in), | target | :: | monitors |
Monitors to print to stdout and files |
Frees data: removes ghost objects and frees neighbor lists.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Initializes cblock to handle collisions. This extra block is expected to be coarser than the simulation block, but larger than the maximum object size. It is used to expedite neighbor searches.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| real(kind=wp), | intent(in) | :: | ds |
Target grid spacing |
||
| integer, | intent(in) | :: | ngc |
Number of ghost cells for collision block |
||
| type(block_obj), | intent(in), | optional | :: | block |
Optional block to conform to |
Initializes cblock to handle collisions. This extra block is expected to be coarser than the simulation block, but larger than the maximum object size. It is used to expedite neighbor searches.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
||
| real(kind=wp), | intent(in) | :: | ds |
Target grid spacing |
||
| integer, | intent(in) | :: | ngc |
Number of ghost cells for collision block |
||
| type(block_obj), | intent(in), | optional | :: | block |
Optional block to conform to |
Updates ghost objects in preparation for collisions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |
Updates neighbor lists in preparation for collisions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_obj), | intent(inout) | :: | this |
Collision utility |