collision_obj Derived Type

type, public :: collision_obj

A utility that handles collisions


Inherits

type~~collision_obj~~InheritsGraph type~collision_obj collision_obj type~block_obj block_obj type~collision_obj->type~block_obj cblock type~marker_set marker_set type~collision_obj->type~marker_set IB type~monitor_set monitor_set type~collision_obj->type~monitor_set monitors type~parallel_obj parallel_obj type~collision_obj->type~parallel_obj parallel type~parser_obj parser_obj type~collision_obj->type~parser_obj parser type~particle_set particle_set type~collision_obj->type~particle_set PP type~respart_set ResPart_set type~collision_obj->type~respart_set RP type~sllist_obj sllist_obj type~collision_obj->type~sllist_obj RPneighbors, PPneighbors, IBneighbors type~timer_obj timer_obj type~collision_obj->type~timer_obj timer type~block_obj->type~parallel_obj parallel MPI_Datatype MPI_Datatype type~block_obj->MPI_Datatype gc_slab_r, gc_slab_i type~axis_obj axis_obj type~block_obj->type~axis_obj axis, axis_partition type~marker_set->type~monitor_set monitors type~marker_set->type~parser_obj parser type~marker_set->type~timer_obj timer type~lagrangian_set lagrangian_set type~marker_set->type~lagrangian_set type~op_obj op_obj type~marker_set->type~op_obj op type~monitor_set->type~parallel_obj parallel type~hashtbl_obj hashtbl_obj type~monitor_set->type~hashtbl_obj tbl type~monitor_obj monitor_obj type~monitor_set->type~monitor_obj m type~parallel_obj->MPI_Datatype REAL_SP, REAL_DP, REAL_WP, COMPLEX_SP, COMPLEX_DP, COMPLEX_WP, INTEGER, INT8, LOGICAL MPI_Info MPI_Info type~parallel_obj->MPI_Info mpi_info type~communicators communicators type~parallel_obj->type~communicators comm type~patch patch type~parallel_obj->type~patch rank type~entry_obj entry_obj type~parser_obj->type~entry_obj entries type~particle_set->type~monitor_set monitors type~particle_set->type~parser_obj parser type~particle_set->type~timer_obj timer type~particle_set->type~lagrangian_set type~particle_set->type~op_obj op type~respart_set->type~marker_set ib type~respart_set->type~monitor_set monitors type~respart_set->type~parser_obj parser type~respart_set->type~timer_obj timer type~respart_set->type~lagrangian_set type~respart_set->type~op_obj op type~sllist_obj->type~sllist_obj child type~timer_obj->type~parallel_obj parallel type~timer_obj->type~parser_obj parser type~timer_obj->type~hashtbl_obj tbl MPI_Comm MPI_Comm type~communicators->MPI_Comm w, g type~hashtbl_obj->type~sllist_obj vec type~lagrangian_set->type~block_obj block type~lagrangian_set->type~parallel_obj parallel type~lagrangian_set->MPI_Datatype MPI_TYPE type~lagrangian_obj lagrangian_obj type~lagrangian_set->type~lagrangian_obj p, sample type~column_obj column_obj type~monitor_obj->type~column_obj col type~op_obj->type~block_obj block type~op_obj->type~parallel_obj parallel type~eulerian_obj_i eulerian_obj_i type~op_obj->type~eulerian_obj_i mask type~eulerian_obj_base eulerian_obj_base type~eulerian_obj_i->type~eulerian_obj_base type~eulerian_obj_base->type~block_obj block type~eulerian_obj_base->type~parallel_obj parallel

Inherited by

type~~collision_obj~~InheritedByGraph type~collision_obj collision_obj type~cdifs_obj cdifs_obj type~cdifs_obj->type~collision_obj collisions type~grans_obj grans_obj type~grans_obj->type~collision_obj collisions

Components

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
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
integer, public :: wall_dir
real(kind=wp), public :: wall_top

Type-Bound Procedures

procedure, public :: ComputeCollisions => collision_obj_ComputeCollisions

procedure, public :: Finalize => collision_obj_Final

procedure, public :: Initialize => collision_obj_Init

  • private subroutine collision_obj_Init(this, parallel)

    Arguments

    Type IntentOptional Attributes Name
    class(collision_obj), intent(inout) :: this
    type(parallel_obj), intent(in), target :: parallel

    parallel structure from main program

procedure, public :: Prepare => collision_obj_Prepare

  • private subroutine collision_obj_Prepare(this, timer, parser, monitors)

    Arguments

    Type IntentOptional Attributes Name
    class(collision_obj), intent(inout) :: this
    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

procedure, public :: Sanitize => collision_obj_Sanitize

procedure, public :: SetupCollisionBlock => collision_obj_SetupCollisionBlock

  • private subroutine collision_obj_SetupCollisionBlock(this, ds, ngc, block)

    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.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(collision_obj), intent(inout) :: this
    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

procedure, public :: SetupCollisionBlock2 => collision_obj_SetupCollisionBlock2

  • private subroutine collision_obj_SetupCollisionBlock2(this, ds, ngc, block)

    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.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(collision_obj), intent(inout) :: this
    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

procedure, public :: UpdateGhostObjects => collision_obj_UpdateGhostObjects

procedure, public :: UpdateNeighborList => collision_obj_UpdateNeighborList

procedure, private :: collision_obj_AddImmersedBoundaries

procedure, private :: collision_obj_AddPointParticles

procedure, private :: collision_obj_AddResolvedParticles

procedure, private :: collision_obj_ComputeCollisionsPPvIB

procedure, private :: collision_obj_ComputeCollisionsPPvPP

procedure, private :: collision_obj_ComputeCollisionsPPvWALL

procedure, private :: collision_obj_ComputeCollisionsRPvIB

procedure, private :: collision_obj_ComputeCollisionsRPvPP

procedure, private :: collision_obj_ComputeCollisionsRPvRP

procedure, private :: collision_obj_ComputeCollisionsRPvWALL