immersed_boundaries_solids Module

Tools to represent a collection of immersed solids for Fluid-Solid Interaction.

A solid_obj represents a single solid and contains information about: - the position, linear, and angular velocities of the solid's centroid - its type of motion (fixed, forcibly moving, freely moving) - and its immersed boundary

A solid_set is a collecation of solid objects. These may be part of the same system and maybe in contact (e.g. rotator and stator in the same engine). Or they can be completely unrelated (e.g. two separate boxes). The solid_set derived type offers additional methods for I/O.



Uses

  • module~~immersed_boundaries_solids~~UsesGraph module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries_markers immersed_boundaries_markers module~immersed_boundaries_solids->module~immersed_boundaries_markers module~leapblock leapBlock module~immersed_boundaries_solids->module~leapblock module~leapeulerian leapEulerian module~immersed_boundaries_solids->module~leapeulerian module~leapio leapIO module~immersed_boundaries_solids->module~leapio module~leapkinds leapKinds module~immersed_boundaries_solids->module~leapkinds module~leaplagrangian leapLagrangian module~immersed_boundaries_solids->module~leaplagrangian module~leapparallel leapParallel module~immersed_boundaries_solids->module~leapparallel module~immersed_boundaries_markers->module~leapblock module~immersed_boundaries_markers->module~leapeulerian module~immersed_boundaries_markers->module~leapio module~immersed_boundaries_markers->module~leapkinds module~immersed_boundaries_markers->module~leaplagrangian module~immersed_boundaries_markers->module~leapparallel iso_fortran_env iso_fortran_env module~immersed_boundaries_markers->iso_fortran_env module~leapbc leapBC module~immersed_boundaries_markers->module~leapbc module~leapdiffop leapDiffOp module~immersed_boundaries_markers->module~leapdiffop module~leaphypre leapHypre module~immersed_boundaries_markers->module~leaphypre module~leapmonitor leapMonitor module~immersed_boundaries_markers->module~leapmonitor module~leapparser leapParser module~immersed_boundaries_markers->module~leapparser module~leaptimer leapTimer module~immersed_boundaries_markers->module~leaptimer module~leapblock->module~leapkinds module~leapblock->module~leapparallel module~leapblock->iso_fortran_env module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 mpi_f08 mpi_f08 module~leapblock->mpi_f08 module~leapeulerian->module~leapblock module~leapeulerian->module~leapio module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->iso_fortran_env module~leaputils leapUtils module~leapeulerian->module~leaputils module~leapeulerian->mpi_f08 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio->module~leapio_hdf5 module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_xdmf leapIO_xdmf module~leapio->module~leapio_xdmf module~leapkinds->iso_fortran_env module~leaplagrangian->module~leapblock module~leaplagrangian->module~leapio module~leaplagrangian->module~leapkinds module~leaplagrangian->module~leapparallel module~leapfilters leapfilters module~leaplagrangian->module~leapfilters module~leaplagrangian->module~leaputils module~leaplagrangian->mpi_f08 module~leapparallel->module~leapkinds module~leapparallel->iso_fortran_env module~leapparallel->mpi_f08 module~leapbc->module~leapblock module~leapbc->module~leapeulerian module~leapbc->module~leapio module~leapbc->module~leapkinds module~leapbc->module~leapparallel module~leapbc->iso_fortran_env module~leapbc->module~leaputils module~leapbc->mpi_f08 module~leapdiffop->module~leapblock module~leapdiffop->module~leapeulerian module~leapdiffop->module~leapkinds module~leapdiffop->module~leapparallel module~leapdiffop->module~leapbc module~leapfilters->module~leapkinds module~leaphypre->module~leapblock module~leaphypre->module~leapeulerian module~leaphypre->module~leapkinds module~leaphypre->module~leapparallel module~leaphypre->mpi_f08 iso_c_binding iso_c_binding module~leaphypre->iso_c_binding module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel module~leapio_h5hut->module~leapio_hdf5 module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08 module~leapio_xdmf->module~leapkinds module~leapio_xdmf->module~leaputils module~leapmonitor->module~leapkinds module~leapmonitor->module~leapparallel module~leapmonitor->iso_fortran_env module~leapmonitor->module~leaputils module~leapparser->module~leapkinds module~leapparser->iso_fortran_env module~leapcli leapCli module~leapparser->module~leapcli module~leaptimer->module~leapkinds module~leaptimer->module~leapparallel module~leaptimer->module~leapparser module~leaptimer->module~leaputils module~leaputils->module~leapkinds module~leapcli->module~leapkinds

Used by

  • module~~immersed_boundaries_solids~~UsedByGraph module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries immersed_boundaries module~immersed_boundaries->module~immersed_boundaries_solids module~cdifs cdifs module~cdifs->module~immersed_boundaries module~collisions collisions module~cdifs->module~collisions module~particles_resolved particles_resolved module~cdifs->module~particles_resolved module~collisions->module~immersed_boundaries module~particles_point particles_point module~collisions->module~particles_point module~collisions->module~particles_resolved module~grans grans module~grans->module~immersed_boundaries module~grans->module~collisions module~grans->module~particles_point module~grans->module~particles_resolved module~particles_point->module~immersed_boundaries module~particles_resolved->module~immersed_boundaries 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 program~main main program~main->module~cdifs program~main->module~grans

Derived Types

type, public, extends(marker_set) ::  solid_obj

An object that represents a solid

Components

Type Visibility Attributes Name Initial
real(kind=WP), public :: Ac(3)

Angluar velocity of center of mass

type(bc_set), public, pointer :: bcs => null()

boundary conditions object

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

Nbr of lagrangian objects per proc

real(kind=WP), public :: fr = 0.0_WP

Frequency of oscillation

procedure(kernel_1D), public, pointer, nopass :: g1ex => int_g1_triangle

1D kernel used in extrapolations

procedure(kernel_1D), public, pointer, nopass :: 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

type(monitor_set), public, pointer :: monitors => null()

Monitors to print to stdout and files

integer, public :: motion = 0

Type of motion

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

Name of the Lagrangian set

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

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

type(timer_obj), public, pointer :: timer => null()

Timer utility

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

Velocity of center of mass

character(len=str64), public :: write_file

File to write

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

Position of center of mass

Type-Bound Procedures

procedure, public :: AddCylinder => marker_set_AddCylinder
procedure, public :: AddPlane => marker_set_AddPlane
procedure, public :: AddSphere => marker_set_AddSphere
procedure, public :: ApplyPeriodicity => lagrangian_set_ApplyPeriodicity
procedure, public :: CoM => marker_set_CoM
procedure, public :: Communicate => lagrangian_set_Communicate
procedure, public :: ComputeSolidVolFrac => marker_set_ComputeSolidVolFrac
procedure, public :: CreateMPIType => lagrangian_set_CreateMPIType
procedure, public :: Filter => marker_set_Filter
generic, public :: Finalize => lagrangian_set_Final
procedure, public :: FreeMPIType => lagrangian_set_FreeMPIType
procedure, public :: GetIBForcing => marker_set_GetIBForcing
procedure, public :: GetOverwrite => lagrangian_set_GetOverwrite
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 :: LoadSTL => marker_set_LoadSTL
procedure, public :: Localize => lagrangian_set_Localize
procedure, public :: Prepare => marker_set_Prepare
procedure, public :: Read => marker_set_ReadH5HUT
procedure, public :: ReadH5HUT => marker_set_ReadH5HUT
procedure, public :: ReadHDF5 => marker_set_ReadHDF5
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, public :: SetMPIDataTypeParams => marker_set_SetMPIDataTypeParams
procedure, public :: SetObjectType => marker_set_SetObjectType
procedure, public :: SetOverwrite => lagrangian_set_SetOverwrite
procedure, public :: SetReadChunkSize => marker_set_SetReadChunkSize
procedure, public :: SetReadFileName => lagrangian_set_SetReadFileName
procedure, public :: SetWriteFileName => lagrangian_set_SetWriteFileName
procedure, public :: UpdateCount => lagrangian_set_UpdateCount
procedure, public :: UpdateGhostObjects => lagrangian_set_UpdateGhostObjects
procedure, public :: UpdateNormals => marker_set_UpdateNormals
procedure, public :: UpdateSDF => marker_set_UpdateSDF
procedure, public :: Write => marker_set_WriteH5HUT
procedure, public :: WriteH5HUT => marker_set_WriteH5HUT
procedure, public :: WriteHDF5 => marker_set_WriteHDF5
procedure, public :: lagrangian_set_Final => marker_set_Final
procedure, public :: lagrangian_set_Init => marker_set_Init

type, public ::  solid_set

Collection of solids

Components

Type Visibility Attributes Name Initial
type(block_obj), public, pointer :: block => null()

Associated block structure

integer, public :: count = 0

Total count of solid_obj

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

Name of the collection of solid_obj

logical, public :: overwrite = .true.

Switch to overwrite IO files

type(solid_obj), public, allocatable :: p(:)

Array of solid_obj

type(parallel_obj), public, pointer :: parallel => null()

Associated parallel structure

character(len=str64), public :: read_file

File to read

character(len=str64), public :: write_file

File to write

Type-Bound Procedures

procedure, public :: Communicate => solid_set_Communicate
procedure, public :: Filter => solid_set_Filter
procedure, public :: Finalize => solid_set_Final
procedure, public :: Initialize => solid_set_Init
procedure, public :: Localize => solid_set_Localize
procedure, public :: Read => solid_set_ReadH5HUT
procedure, public :: ReadH5HUT => solid_set_ReadH5HUT
procedure, public :: ReadHDF5 => solid_set_ReadHDF5
procedure, public :: SetFilterKernel => solid_set_SetFilterKernel
procedure, public :: SetFilterSize => solid_set_SetFilterSize
procedure, public :: SetOverwrite => solid_set_SetOverwrite
procedure, public :: SetReadFileName => solid_set_SetReadFileName
procedure, public :: SetWriteFileName => solid_set_SetWriteFileName
procedure, public :: Write => solid_set_WriteH5HUT
procedure, public :: WriteH5HUT => solid_set_WriteH5HUT
procedure, public :: WriteHDF5 => solid_set_WriteHDF5

Subroutines

private impure subroutine solid_set_Communicate(this)

Communicates markers of all solids in this set.

Arguments

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

A collection of solids

private impure subroutine solid_set_Filter(this, var, field)

Filters a quantity to the Eulerian grid.

Arguments

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

A collection of solids

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

Variable to compute

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

Filtered quantity

private impure subroutine solid_set_Final(this)

Finalizes object and frees memory.

Arguments

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

A collection of solids

private impure subroutine solid_set_Init(this, name, nobj, block, parallel)

Initializes a collection of solids.

Arguments

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

A collection of solids

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

Name of variable

integer, intent(in) :: nobj

Number of solid_obj

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

A block object

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

Parallel structure to link with

private impure subroutine solid_set_Localize(this)

Localizes markers of all solids in this set on the grid.

Arguments

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

A collection of solids

private impure subroutine solid_set_ReadH5HUT(this, iter, time)

Reads all solids from disk using H5HUT.

Arguments

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

A collection of solids

integer, intent(out) :: iter

Iteration at write

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

Time at write

private impure subroutine solid_set_ReadHDF5(this, iter, time)

Reads all solids from disk using HDF5.

Arguments

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

A collection of solids

integer, intent(out) :: iter

Iteration at write

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

Time at write

private impure subroutine solid_set_SetFilterKernel(this, kernel_interp, kernel_extrap)

Selects interpolation and extrapolation kernels.

Arguments

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

A collection of solids

integer, intent(in) :: kernel_interp

Filter kernel for interpolations

integer, intent(in) :: kernel_extrap

Filter kernel for extrapolations

private impure subroutine solid_set_SetFilterSize(this, l_filter)

Changes filter size to desired value.

Arguments

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

A collection of solids

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

Filter size

private pure subroutine solid_set_SetOverwrite(this, overwrite)

Sets file overwritting

Arguments

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

A collection of solids

logical, intent(in) :: overwrite

Toggle

private pure subroutine solid_set_SetReadFileName(this, name)

Sets the names of files to read.

Arguments

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

A collection of solids

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

Name of file

private pure subroutine solid_set_SetWriteFileName(this, name)

Sets the names of files to write.

Arguments

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

A collection of solids

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

Name of file

private impure subroutine solid_set_WriteH5HUT(this, iter, time)

Writes all solids to disk using H5HUT.

Arguments

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

A collection of solids

integer, intent(in) :: iter

Iteration at write

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

Time at write

private impure subroutine solid_set_WriteHDF5(this, iter, time)

Writes all solids to disk using HDF5. Add some attributes

Arguments

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

A collection of solids

integer, intent(in) :: iter

Iteration at write

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

Time at write