leapLagrangian Module

Module of abstract objets defining Lagrangian data structure


Uses

  • module~~leaplagrangian~~UsesGraph module~leaplagrangian leapLagrangian module~leapblock leapBlock module~leaplagrangian->module~leapblock module~leapio leapIO module~leaplagrangian->module~leapio module~leapkinds leapKinds module~leaplagrangian->module~leapkinds module~leapparallel leapParallel module~leaplagrangian->module~leapparallel module~leapparser leapParser module~leaplagrangian->module~leapparser module~leaputils leapUtils module~leaplagrangian->module~leaputils mpi_f08 mpi_f08 module~leaplagrangian->mpi_f08 module~leapblock->module~leapkinds module~leapblock->module~leapparallel module~leapblock->mpi_f08 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio_hdf5 leapIO_hdf5 module~leapio->module~leapio_hdf5 module~leapio_mpi leapIO_mpi module~leapio->module~leapio_mpi module~leapio_silo leapIO_silo module~leapio->module~leapio_silo iso_fortran_env iso_fortran_env module~leapkinds->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->module~leapparser module~leapparallel->mpi_f08 module~leapparser->module~leapkinds module~leapcli leapCli module~leapparser->module~leapcli module~leaputils->module~leapkinds module~leaputils->mpi_f08 module~leapcli->module~leapkinds module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel h5hut h5hut module~leapio_h5hut->h5hut module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leapio_mpi->module~leapblock module~leapio_mpi->module~leapkinds module~leapio_mpi->module~leapparallel module~leapio_mpi->mpi_f08 module~leapio_silo->module~leapblock module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08

Used by

  • module~~leaplagrangian~~UsedByGraph module~leaplagrangian leapLagrangian module~immersed_boundaries_markers immersed_boundaries_markers module~immersed_boundaries_markers->module~leaplagrangian module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries_solids->module~leaplagrangian module~immersed_boundaries_solids->module~immersed_boundaries_markers module~particles_point particles_point module~particles_point->module~leaplagrangian module~particles_resolved particles_resolved module~particles_resolved->module~leaplagrangian module~immersed_boundaries immersed_boundaries module~particles_resolved->module~immersed_boundaries module~cdifs cdifs module~cdifs->module~particles_resolved module~cdifs->module~immersed_boundaries module~grans grans module~grans->module~particles_point module~grans->module~particles_resolved module~grans_cases grans_cases module~grans->module~grans_cases module~grans->module~immersed_boundaries module~grans_cases->module~particles_point module~grans_cases->module~particles_resolved module~grans_cases->module~immersed_boundaries module~immersed_boundaries->module~immersed_boundaries_markers module~immersed_boundaries->module~immersed_boundaries_solids module~nga_smod nga_smod module~nga_smod->module~particles_point proc~add_markers add_markers proc~add_markers->module~particles_resolved proc~add_markers->module~immersed_boundaries proc~add_markers~2 add_markers proc~add_markers~2->module~particles_resolved proc~add_markers~2->module~immersed_boundaries proc~cdifs_rebound_respart cdifs_rebound_ResPart proc~cdifs_rebound_respart->module~particles_resolved proc~cdifs_settling_sphere_respart cdifs_settling_sphere_ResPart proc~cdifs_settling_sphere_respart->module~particles_resolved module~cdifs_advancesolution_smod cdifs_AdvanceSolution_smod module~cdifs_advancesolution_smod->module~cdifs module~cdifs_monitor_smod cdifs_Monitor_smod module~cdifs_monitor_smod->module~cdifs module~cdifs_preparesolver_smod cdifs_PrepareSolver_smod module~cdifs_preparesolver_smod->module~cdifs module~cdifs_writeoutputdata_smod cdifs_WriteOutputData_smod module~cdifs_writeoutputdata_smod->module~cdifs module~cdifs_writerestartdata_smod cdifs_WriteRestartData_smod module~cdifs_writerestartdata_smod->module~cdifs module~grans_advancesolution_smod grans_AdvanceSolution_smod module~grans_advancesolution_smod->module~grans module~grans_module_smod grans_module_smod module~grans_module_smod->module~grans module~grans_preparesolver_smod grans_PrepareSolver_smod module~grans_preparesolver_smod->module~grans module~grans_writeoutputdata_smod grans_WriteOutputData_smod module~grans_writeoutputdata_smod->module~grans module~grans_writerestartdata_smod grans_WriteRestartData_smod module~grans_writerestartdata_smod->module~grans module~headon_collision_smod headon_collision_smod module~headon_collision_smod->module~grans_cases module~homogeneous_cooling_smod homogeneous_cooling_smod module~homogeneous_cooling_smod->module~grans_cases module~rotating_drum_smod rotating_drum_smod module~rotating_drum_smod->module~grans_cases proc~cdifs_cylinder_ib cdifs_cylinder_IB proc~cdifs_cylinder_ib->module~immersed_boundaries proc~cdifs_rebound_ib cdifs_rebound_IB proc~cdifs_rebound_ib->module~immersed_boundaries proc~cdifs_settling_sphere_ib cdifs_settling_sphere_IB proc~cdifs_settling_sphere_ib->module~immersed_boundaries program~main main program~main->module~cdifs program~main->module~grans

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: KERNEL_BOX = 0
integer, public, parameter :: KERNEL_COSINE = 3
integer, public, parameter :: KERNEL_COSINE2 = 6
integer, public, parameter :: KERNEL_PARABOLIC = 2
integer, public, parameter :: KERNEL_ROMA = 5
integer, public, parameter :: KERNEL_TRIANGLE = 1
integer, public, parameter :: KERNEL_TRIWEIGHT = 4
real(kind=WP), private, parameter :: RESIZE_INCREMENT = 0.3_WP

Increment for resizing lagrangian arrays: 30% up or 30% smaller


Abstract Interfaces

abstract interface

  • public function kernel_1D(r) result(val)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=wp), intent(in) :: r

    Distance from center

    Return Value real(kind=wp)

    Kernel value

abstract interface

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

    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

abstract interface

  • private subroutine lagrangian_SetObjectType(this)

    Set the type of the polymorphic sample

    Arguments

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

    A set of Lagrangian objects

abstract interface

  • private subroutine lagrangian_obj_assign(this, val)

    Deferred assignemnt ofan extended type value

    Arguments

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

    A Lagrangian object

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

    Value to be assigned

abstract interface

  • private subroutine lagrangian_read(this, iter, time)

    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

abstract interface

  • private subroutine lagrangian_write(this, iter, time)

    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

abstract interface

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

    Returns the MPI rank that owns the lagrangian object

    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


Derived Types

type, public, abstract ::  lagrangian_obj

Base lagrangian object

Components

Type Visibility Attributes Name Initial
integer, public :: c(3)

nearest cell

integer(kind=leapI8), public :: id

Identifying number (inactive if <0)

real(kind=WP), public :: p(3)

position

Type-Bound Procedures

procedure, public :: Extrapolate => lagrangian_obj_Extrapolate
procedure, public :: Interpolate => lagrangian_obj_Interpolate
procedure, public :: Locate => lagrangian_obj_Locate
procedure(lagrangian_obj_assign), public, deferred :: assign
generic, public :: assignment(=) => assign

type, public, abstract ::  lagrangian_set

Base structure for a collection of Lagrangian objects

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(:) Read more…
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 :: l_filter

Half filter width

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

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
procedure, public :: CreateMPIType => lagrangian_set_CreateMPIType
generic, public :: Finalize => lagrangian_set_Final
procedure, public :: FreeNeighborList => lagrangian_set_FreeNeighborList
procedure, public :: GetOwnerRankByBlock => lagrangian_set_GetOwnerRankByBlock
procedure, public :: GetReadFileName => lagrangian_set_GetReadFileName
procedure, public :: GetWriteFileName => lagrangian_set_GetWriteFileName
procedure, public :: Info => lagrangian_set_Info
generic, public :: Initialize => lagrangian_set_Init
procedure, public :: Localize => lagrangian_set_Localize
procedure(lagrangian_read), public, deferred :: Read
procedure, public :: Recycle => lagrangian_set_Recycle
procedure, public :: Resize => lagrangian_set_Resize
procedure, public :: SetFilterKernel => lagrangian_set_SetFilterKernel
procedure, public :: SetFilterSize => lagrangian_set_SetFilterSize
procedure(lagrangian_SetMPIDataTypeParams), public, deferred :: SetMPIDataTypeParams
procedure(lagrangian_SetObjectType), public, deferred :: SetObjectType
procedure, public :: SetOverwrite => lagrangian_set_SetOverwrite
procedure, public :: SetReadFileName => lagrangian_set_SetReadFileName
procedure, public :: SetWriteFileName => lagrangian_set_SetWriteFileName
procedure, public :: SetupCollisionBlock => lagrangian_set_SetupCollisionBlock
procedure, public :: UpdateCount => lagrangian_set_UpdateCount
procedure, public :: UpdateGhostObjects => lagrangian_set_UpdateGhostObjects
procedure, public :: UpdateNeighborList => lagrangian_set_UpdateNeighborList
procedure(lagrangian_write), public, deferred :: Write
procedure, public :: lagrangian_set_Final
procedure, public :: lagrangian_set_Init

Functions

public pure function g1_box(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Box filter (step function)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_cosine(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Parabolic filter

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_cosine2(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Parabolic filter

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_parabolic(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Parabolic filter

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_roma(r) result(val)

Filtering kernel with support from -1 to 1 Roma and Peskin's filter

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_triangle(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Triangular filter (linear interpolation)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

public pure function g1_triweight(r) result(val)

Filtering kernel with support from -1.0 to 1.0 Triweight filter

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_box(r) result(val)

Integral of filtering kernel from 0 to r Box filter (step function) Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_cosine(r) result(val)

Integral of filtering kernel from 0 to r Cosine filter Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_cosine2(r) result(val)

Integral of filtering kernel from 0 to r Cosine filter Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_parabolic(r) result(val)

Integral of filtering kernel from 0 to r Parabolic filter Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_roma(r) result(val)

Integral of filtering kernel from 0 to r Roma and Peskin filter Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_triangle(r) result(val)

Integral of filtering kernel from 0 to r Triangular filter (linear interpolation) Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private pure function int_g1_triweight(r) result(val)

Integral of filtering kernel from 0 to r Triweight filter Here : r=x/l_f (non-dimensional position)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: r

Return Value real(kind=wp)

private function lagrangian_obj_Interpolate(this, l_filter, slo, shi, block, g1in, f) result(inter)

Routine to interpolate a field f defined on an Eulerian stencil to the location of a lagrangian object

Arguments

Type IntentOptional Attributes Name
class(lagrangian_obj), intent(in) :: this

A Lagrangian object

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

Filter size

integer, intent(in) :: slo(3)

Stencil lower bound

integer, intent(in) :: shi(3)

Stencil higher bound

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

A block object

procedure(kernel_1D), intent(in), pointer :: g1in

Filter kernel

real(kind=WP), intent(in) :: f(slo(1):shi(1),slo(2):shi(2),slo(3):shi(3))

Quantity to interpolate

Return Value real(kind=WP)

private function lagrangian_obj_Locate(this, block) result(cell)

Locate a Lagrangian object on an external grid. Returns the location of the cell containing the object.

Arguments

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

A Lagrangian object

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

External block

Return Value integer, (3)

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

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

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


Subroutines

private subroutine lagrangian_obj_Extrapolate(this, l_filter, slo, shi, block, int_g1ex, bump)

Get a bump function centered on the lagrangian object

Arguments

Type IntentOptional Attributes Name
class(lagrangian_obj), intent(in) :: this

A Lagrangian object

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

Filter size

integer, intent(in) :: slo(3)

Stencil lower bound

integer, intent(in) :: shi(3)

Stencil higher bound

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

A block object

procedure(kernel_1D), intent(in), pointer :: int_g1ex

Integrated filter kernel

real(kind=wp), allocatable :: bump(:,:,:)

The bump function

private subroutine lagrangian_set_ApplyPeriodicity(this)

Apply periodic boundary conditions

Arguments

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

Set of Lagrangian objects

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

private subroutine lagrangian_set_CreateMPIType(this)

Determines the size of the MPI derived type

Arguments

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

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

private subroutine lagrangian_set_FreeNeighborList(this)

Arguments

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

A set of Lagrangian objects

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

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

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

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

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

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

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

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

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

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

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

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

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

private subroutine lagrangian_set_UpdateGhostObjectsDir(this, block, idir)

Update ghost objects in the idir direction NOTE: Ghost objects must have negative IDs

Arguments

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

Set of Lagrangian objects

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

Block object

integer, intent(in) :: idir

Direction of communication

private subroutine lagrangian_set_UpdateNeighborList(this)

Arguments

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

A set of Lagrangian objects