lagrangian_set Derived Type

type, public, abstract :: lagrangian_set

Base structure for a collection of Lagrangian objects


Inherits

type~~lagrangian_set~~InheritsGraph type~lagrangian_set lagrangian_set MPI_Datatype MPI_Datatype type~lagrangian_set->MPI_Datatype MPI_TYPE type~block_obj block_obj type~lagrangian_set->type~block_obj 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~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~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 MPI_Comm MPI_Comm type~communicators->MPI_Comm w, g

Inherited by

type~~lagrangian_set~~InheritedByGraph type~lagrangian_set lagrangian_set type~marker_set marker_set type~marker_set->type~lagrangian_set type~particle_set particle_set type~particle_set->type~lagrangian_set type~respart_set ResPart_set type~respart_set->type~lagrangian_set type~respart_set->type~marker_set ib type~cdifs_obj cdifs_obj type~cdifs_obj->type~marker_set IB type~cdifs_obj->type~respart_set RP type~collision_obj collision_obj type~cdifs_obj->type~collision_obj collisions type~collision_obj->type~marker_set IB type~collision_obj->type~particle_set PP type~collision_obj->type~respart_set RP type~grans_obj grans_obj type~grans_obj->type~marker_set IB type~grans_obj->type~particle_set PP type~grans_obj->type~respart_set RP type~grans_obj->type~collision_obj collisions type~solid_obj solid_obj type~solid_obj->type~marker_set type~solid_set solid_set type~solid_set->type~solid_obj p

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

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

logical, public :: is_initialized = .false.

Flag to determine whether this has been initialized

real(kind=wp), public :: l_filter

Half filter width

character(len=:), public, allocatable :: name

Name of the Lagrangian set

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

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

character(len=str64), public :: write_file

file to write


Type-Bound Procedures

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

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 :: FreeMPIType => lagrangian_set_FreeMPIType

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 :: 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(lagrangian_read), public, deferred :: Read

  • subroutine lagrangian_read(this, iter, time, step) Prototype

    Read lagrangian objects from file in parallel

    Arguments

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

    A set of Lagrangian objects

    integer, intent(out) :: iter

    Iteration at write

    real(kind=wp), intent(out) :: time

    Time at write

    integer, intent(in), optional :: step

    Optional step

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 :: 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 => lagrangian_set_SetFilterSize

  • private subroutine lagrangian_set_SetFilterSize(this, l_filter)

    Adjust the size of the filter

    Arguments

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

    Set of Lagrangian objects

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

    Filter size

procedure(lagrangian_SetMPIDataTypeParams), public, deferred :: SetMPIDataTypeParams

  • subroutine lagrangian_SetMPIDataTypeParams(this, types, lengths, displacement) Prototype

    Set up parameters used to create the MPI derived type

    Arguments

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

    Set of Lagrangian objects

    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(lagrangian_SetObjectType), public, deferred :: SetObjectType

  • subroutine lagrangian_SetObjectType(this) Prototype

    Set the type of the polymorphic sample

    Arguments

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

    A set of Lagrangian objects

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 => lagrangian_set_SetReadFileName

  • private subroutine lagrangian_set_SetReadFileName(this, name)

    Set the base name of file to read

    Arguments

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

    A collection of Eulerian objects

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

    Name of file

procedure, public :: SetWriteFileName => lagrangian_set_SetWriteFileName

  • private subroutine lagrangian_set_SetWriteFileName(this, name)

    Set the base name of file to write

    Arguments

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

    A collection of Eulerian objects

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

    Name of file

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, dist)

    Updates ghost objects Copies objects that lie "dist"-away from the block's boundaries to neighboring MPI-ranks and designate copies as Ghost Objects (id<0)

    Arguments

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

    Set of Lagrangian objects

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

    Distance from boundaries

procedure(lagrangian_write), public, deferred :: Write

  • subroutine lagrangian_write(this, iter, time) Prototype

    Write lagrangian objects to file in parallel

    Arguments

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

    A set of Lagrangian objects

    integer, intent(in) :: iter

    Iteration at write

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

    Time at write

procedure, public :: lagrangian_set_Final

  • private subroutine lagrangian_set_Final(this)

    Finalize the structure

    Arguments

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

    A set of Lagrangian objects

procedure, public :: lagrangian_set_Init

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

    Initialize lagrangian objects related IO

    Arguments

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

    A set of Lagrangian objects

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

    Name of variable

    type(block_obj), intent(in), target :: block

    A block object

    type(parallel_obj), intent(in), target :: parallel

    parallel structure from main program