ResPart_set Derived Type

type, public, extends(lagrangian_set) :: ResPart_set

An extended Lagrgian set representing resolved particles


Inherits

type~~respart_set~~InheritsGraph type~respart_set ResPart_set type~lagrangian_set lagrangian_set type~respart_set->type~lagrangian_set type~marker_set marker_set type~respart_set->type~marker_set ib type~monitor_set monitor_set type~respart_set->type~monitor_set monitors type~op_obj op_obj type~respart_set->type~op_obj op type~parser_obj parser_obj type~respart_set->type~parser_obj parser type~timer_obj timer_obj type~respart_set->type~timer_obj timer MPI_Datatype MPI_Datatype type~lagrangian_set->MPI_Datatype MPI_TYPE type~block_obj block_obj type~lagrangian_set->type~block_obj cblock, block type~lagrangian_obj lagrangian_obj type~lagrangian_set->type~lagrangian_obj p, sample type~parallel_obj parallel_obj type~lagrangian_set->type~parallel_obj parallel type~sllist_obj sllist_obj type~lagrangian_set->type~sllist_obj neighbors type~marker_set->type~lagrangian_set type~marker_set->type~monitor_set monitors type~marker_set->type~op_obj op type~marker_set->type~parser_obj parser type~marker_set->type~timer_obj timer 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~monitor_set->type~parallel_obj parallel type~op_obj->type~block_obj block type~eulerian_obj_i eulerian_obj_i type~op_obj->type~eulerian_obj_i mask type~op_obj->type~parallel_obj parallel type~entry_obj entry_obj type~parser_obj->type~entry_obj entries type~timer_obj->type~parser_obj parser type~block_obj->MPI_Datatype gc_slab_r, gc_slab_i type~block_obj->type~parallel_obj parallel type~axis_obj axis_obj type~block_obj->type~axis_obj axis, axis_partition type~eulerian_obj_base eulerian_obj_base type~eulerian_obj_i->type~eulerian_obj_base type~hashtbl_obj->type~sllist_obj vec type~column_obj column_obj type~monitor_obj->type~column_obj col 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~sllist_obj->type~sllist_obj child MPI_Comm MPI_Comm type~communicators->MPI_Comm w, g type~eulerian_obj_base->type~block_obj block type~eulerian_obj_base->type~parallel_obj parallel

Inherited by

type~~respart_set~~InheritedByGraph type~respart_set ResPart_set type~cdifs_obj cdifs_obj type~cdifs_obj->type~respart_set RP type~grans_obj grans_obj type~grans_obj->type~respart_set RP

Components

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(:)

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

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


Type-Bound Procedures

procedure, public :: AdvanceCenters => ResPart_set_AdvanceCenters

  • private subroutine ResPart_set_AdvanceCenters(this, dt)

    Advance centers to next timestep

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

    real(kind=wp), intent(in) :: dt

    Timestep

procedure, public :: AdvanceMarkers => ResPart_set_AdvanceMarkers

  • private subroutine ResPart_set_AdvanceMarkers(this, dt)

    Advance markers to next timestep

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

    real(kind=wp), intent(in) :: dt

    Timestep

procedure, public :: ApplyPeriodicity => lagrangian_set_ApplyPeriodicity

procedure, public :: Communicate => lagrangian_set_Communicate

  • private subroutine lagrangian_set_Communicate(this, GetOwnerRankOpt)

    Communicate lagrangian objects across MPI_rank

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Set of Lagrangian objects

    procedure(locator), optional :: GetOwnerRankOpt

    MPI Rank locator for communications

procedure, public :: CreateMPIType => lagrangian_set_CreateMPIType

procedure, public :: CreateMonitor => ResPart_set_CreateMonitor

  • private subroutine ResPart_set_CreateMonitor(this)

    Create monitor file for Resolved Particles

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

procedure, public :: Filter => ResPart_set_Filter

  • private subroutine ResPart_set_Filter(this, var, field)

    Filter a quantity to the Eulerian grid

    Arguments

    Type IntentOptional 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

generic, public :: Finalize => lagrangian_set_Final

  • private subroutine ResPart_set_Final(this)

    Finalize the ResPart_set type. This subourtine replaces the inheritted lagrangian_final.

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved partilces

procedure, public :: FreeNeighborList => lagrangian_set_FreeNeighborList

procedure, public :: GetHydroForces => ResPart_set_GetHydroForces

  • private subroutine ResPart_set_GetHydroForces(this, P, U, V, W, ibVF, visc)

    Compute hydrodynamic force on particle

    Arguments

    Type IntentOptional 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

procedure, public :: GetIBForcing => ResPart_set_GetIBForcing

  • private subroutine ResPart_set_GetIBForcing(this, Um, Vm, Wm, rhof, SA, ibF, dt)

    Compute the IB forcing

    Arguments

    Type IntentOptional 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

procedure, public :: GetOwnerRankByBlock => lagrangian_set_GetOwnerRankByBlock

  • private function lagrangian_set_GetOwnerRankByBlock(this, lagobj) result(rank)

    Returns the MPI rank that should own this lagrangian object based on which block it belongs to

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    A set of Lagrangian objects

    class(lagrangian_obj), intent(in) :: lagobj

    Lagrangian obj to locate

    Return Value integer

    rank that should own lagobj

procedure, public :: GetReadFileName => lagrangian_set_GetReadFileName

  • private function lagrangian_set_GetReadFileName(this) result(name)

    Return the base name of file to write

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    A collection of Eulerian objects

    Return Value character(len=str64)

    Name of file

procedure, public :: GetSurfaceStresses => ResPart_set_GetSurfaceStresses

  • private subroutine ResPart_set_GetSurfaceStresses(this, P, U, V, W, ibVF, visc)

    Compute hydrodynamic stresses on markers

    Arguments

    Type IntentOptional 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

procedure, public :: GetWriteFileName => lagrangian_set_GetWriteFileName

  • private function lagrangian_set_GetWriteFileName(this) result(name)

    Return the base name of file to write

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    A collection of Eulerian objects

    Return Value character(len=str64)

    Name of file

procedure, public :: Info => lagrangian_set_Info

  • private subroutine lagrangian_set_Info(this)

    Prints diagnostics information about the derived type

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Lagrangian array to dump

generic, public :: Initialize => lagrangian_set_Init

  • private subroutine ResPart_set_Init(this, name, block, parallel)

    Initialize the ResPart_set type. This subourtine replaces the inheritted lagrangian_init.

    Arguments

    Type IntentOptional 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

procedure, public :: Localize => lagrangian_set_Localize

  • private subroutine lagrangian_set_Localize(this)

    Localize a Lagrangian object on the grid Returns the location of the closest collocated cell (staggering=0

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Lagrangian array to dump

procedure, public :: Prepare => ResPart_set_Prepare

  • private subroutine ResPart_set_Prepare(this, timer, parser, operators, monitors)

    Prepare ResPart_set for use with solvers

    Arguments

    Type IntentOptional 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

procedure, public :: Read => ResPart_set_Read

  • private subroutine ResPart_set_Read(this, iter, time)

    Read ResPart data from file

    Arguments

    Type IntentOptional 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

procedure, public :: Recycle => lagrangian_set_Recycle

  • private subroutine lagrangian_set_Recycle(this)

    Sorting routine: stacks active lagrangian objects at the beginning of the array then resizes

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Lagrangian array to dump

procedure, public :: Regroup => ResPart_set_Regroup

  • private subroutine ResPart_set_Regroup(this)

    Regroup markers with their respective centroids on the same MPI block

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved particles

procedure, public :: Resize => lagrangian_set_Resize

  • private subroutine lagrangian_set_Resize(this, n)

    Changes the size of an array of Lagrangian objects

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Lagrangian array to dump

    integer, intent(in) :: n

    New size

procedure, public :: SetFilterKernel => lagrangian_set_SetFilterKernel

  • private subroutine lagrangian_set_SetFilterKernel(this, kernel_interp, kernel_extrap)

    Reset the filter kerrnel Default is Triangle for interpolation and extrapolation

    Arguments

    Type IntentOptional 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

procedure, public :: SetFilterSize => ResPart_set_SetFilterSize

  • private subroutine ResPart_set_SetFilterSize(this, l_filter)

    Filter a quantity to the Eulerian grid

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved particles

    real(kind=wp), intent(in) :: l_filter

    Filter size

procedure, public :: SetMPIDataTypeParams => ResPart_set_SetMPIDataTypeParams

  • private subroutine ResPart_set_SetMPIDataTypeParams(this, types, lengths, displacement)

    Set up parameters used when creating the MPI derived type

    Arguments

    Type IntentOptional 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

procedure, public :: SetObjectType => ResPart_set_SetObjectType

procedure, public :: SetOverwrite => lagrangian_set_SetOverwrite

  • private subroutine lagrangian_set_SetOverwrite(this, overwrite)

    Set file overwritting

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    A collection of Eulerian objects

    logical, intent(in) :: overwrite

    Name of file

procedure, public :: SetReadFileName => ResPart_set_SetReadFileName

  • private subroutine ResPart_set_SetReadFileName(this, name)

    Set the base name of file to write

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved particles

    character(len=*), intent(in) :: name

    Name of file

procedure, public :: SetWriteFileName => ResPart_set_SetWriteFileName

  • private subroutine ResPart_set_SetWriteFileName(this, name)

    Set the base name of file to write

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved particles

    character(len=*), intent(in) :: name

    Name of file

procedure, public :: SetupCollisionBlock => lagrangian_set_SetupCollisionBlock

  • private subroutine lagrangian_set_SetupCollisionBlock(this, ds, ngc)

    Initializes cblock to handle collisions. This is extra block is expected to be coarser than the simulation block. It is used for cheap neighbor searches.

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    A set of Lagrangian objects

    real(kind=wp), intent(in) :: ds

    Target grid spacing

    integer, intent(in) :: ngc

    Number of ghost cells for collision block

procedure, public :: StoreOld => ResPart_set_StoreOld

  • private subroutine ResPart_set_StoreOld(this)

    Store values from previous timestep

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

procedure, public :: UpdateCount => lagrangian_set_UpdateCount

  • private subroutine lagrangian_set_UpdateCount(this)

    Updates the total count of Lagrangian objects

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Lagrangian array to dump

procedure, public :: UpdateGhostObjects => lagrangian_set_UpdateGhostObjects

  • private subroutine lagrangian_set_UpdateGhostObjects(this, block)

    Updates ghost objects Copies objects that lie near or cross the block's boundaries

    Arguments

    Type IntentOptional Attributes Name
    class(lagrangian_set), intent(inout) :: this

    Set of Lagrangian objects

    class(block_obj), intent(in), optional :: block

    Optional alternative block

procedure, public :: UpdateLookup => ResPart_set_UpdateLookup

  • private subroutine ResPart_set_UpdateLookup(this)

    Update lookup array -- The lookup array returns the local (MPI rank) index of a centroid when given the global ID of that centroid

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved particles

procedure, public :: UpdateMonitor => ResPart_set_UpdateMonitor

procedure, public :: UpdateNeighborList => lagrangian_set_UpdateNeighborList

procedure, public :: UpdateNormals => ResPart_set_UpdateNormals

  • private subroutine ResPart_set_UpdateNormals(this, ibN)

    Updates the Normals field

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

    type(eulerian_obj_r), intent(inout) :: ibN(3)

procedure, public :: UpdateSDF => ResPart_set_UpdateSDF

  • private subroutine ResPart_set_UpdateSDF(this, SA)

    Updates the Surface Density Function

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Collection of Resolved Particles

    type(eulerian_obj_r), intent(inout) :: SA

procedure, public :: Write => ResPart_set_Write

  • private subroutine ResPart_set_Write(this, iter, time)

    description

    Arguments

    Type IntentOptional 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

procedure, public :: lagrangian_set_Final => ResPart_set_Final

  • private subroutine ResPart_set_Final(this)

    Finalize the ResPart_set type. This subourtine replaces the inheritted lagrangian_final.

    Arguments

    Type IntentOptional Attributes Name
    class(ResPart_set), intent(inout) :: this

    Set of resolved partilces

procedure, public :: lagrangian_set_Init => ResPart_set_Init

  • private subroutine ResPart_set_Init(this, name, block, parallel)

    Initialize the ResPart_set type. This subourtine replaces the inheritted lagrangian_init.

    Arguments

    Type IntentOptional 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