mus_IBM_module Module

This module contains datatypes and subroutines for the immersed boundary method (IBM).


Uses

Used by

  • module~~mus_ibm_module~~UsedByGraph module~mus_ibm_module mus_IBM_module module~mus_geom_module mus_geom_module module~mus_geom_module->module~mus_ibm_module module~mus_construction_module mus_construction_module module~mus_construction_module->module~mus_ibm_module module~mus_construction_module->module~mus_geom_module module~mus_control_module mus_control_module module~mus_control_module->module~mus_ibm_module module~mus_control_module->module~mus_geom_module module~mus_aux_module mus_aux_module module~mus_control_module->module~mus_aux_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_dynloadbal_module->module~mus_ibm_module module~mus_dynloadbal_module->module~mus_geom_module module~mus_dynloadbal_module->module~mus_construction_module module~mus_tools_module mus_tools_module module~mus_dynloadbal_module->module~mus_tools_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_ibm_module module~mus_program_module->module~mus_geom_module module~mus_program_module->module~mus_construction_module module~mus_program_module->module~mus_control_module module~mus_program_module->module~mus_dynloadbal_module module~mus_program_module->module~mus_aux_module module~mus_program_module->module~mus_tools_module module~mus_aux_module->module~mus_ibm_module module~mus_aux_module->module~mus_geom_module module~mus_aux_module->module~mus_tools_module module~mus_tools_module->module~mus_ibm_module module~mus_debug_module mus_debug_module module~mus_debug_module->module~mus_geom_module module~mus_hvs_config_module mus_hvs_config_module module~mus_hvs_config_module->module~mus_geom_module program~musubi musubi program~musubi->module~mus_geom_module program~musubi->module~mus_control_module program~musubi->module~mus_program_module program~musubi->module~mus_aux_module module~mus_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_geom_module module~mus_hvs_aux_module->module~mus_tools_module module~mus_geomincr_module mus_geomIncr_module module~mus_geomincr_module->module~mus_geom_module module~mus_config_module mus_config_module module~mus_config_module->module~mus_geom_module module~mus_config_module->module~mus_tools_module module~mus_varsys_module mus_varSys_module module~mus_varsys_module->module~mus_geom_module module~mus_mesh_adaptation_module mus_mesh_adaptation_module module~mus_mesh_adaptation_module->module~mus_geom_module module~mus_hvs_construction_module mus_hvs_construction_module module~mus_hvs_construction_module->module~mus_geom_module module~mus_hvs_construction_module->module~mus_construction_module module~mus_tracking_module mus_tracking_module module~mus_tracking_module->module~mus_geom_module module~mus_tracking_module->module~mus_tools_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_geom_module program~mus_harvesting->module~mus_construction_module module~mus_scheme_module mus_scheme_module module~mus_scheme_module->module~mus_geom_module

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private, parameter:: nTimers =14

log units for the IBM

integer, private, save:: IBM_logUnit(0:tem_last_lu)
integer, private, save:: mess_velX =22
integer, private, save:: mess_forceXk =23
integer, private, save:: mess_amountXk =24
integer, private, save:: mess_posXk =25
integer, private, save:: mess_pointsXk =26
integer, private, save:: mess_velXk =27
integer, private, save:: mess_posXk2 =28
integer, private, save:: mess_velXk2 =29
integer, private, save:: fileID =1

Derived Types

type, public :: mus_IBM_type

Datatype containing information on the immersed boundary method

Components

TypeVisibilityAttributesNameInitial
logical, private :: active =.false.

is this IBM active?

type(tem_surfData_type), private :: surfData

surface data information incl. the filenames, point coordinates and corresponding triangle data

character(len=LabelLen), private :: label

label for indentifying the type of IBM

integer, private :: stencilPos

position of the stencil in layout%stencil array

logical, private :: useInitPos

use the initial positions in the movement function or use the updated values

logical, private :: movPredef

is the motion predefined? If a movement and velocity spacetime function is provided the new positions can be caluclated locally. This reduced the amount of communication.

type(tem_spacetime_fun_type), private :: movement

spacetime function type describing the movement of the points

type(tem_spacetime_fun_type), private :: velocity

spacetime function type describing the velocity of movement

integer, private :: nInaIters

number of iterations for calculating the force

type(dyn_intarray_type), private :: neighs_Xk

temporary dynamic array for storing the actual neighbor positions of the Xk

integer, private :: locNeighs_Xk =0

number of local neighbor elements

type(tem_labeledtimer_type), private :: timings

timer type for evaluating runtime in different routines

integer, private, allocatable:: timerHandles(:)

array of timer handles (definition in mus_init_IBM)

type(mus_IBM_tmpData_type), private :: IBMData

temporary data used

type, public :: mus_IBM_globType

This datatype is a wrapper for the immersed boundary information and a possible logging type for debugging

Components

TypeVisibilityAttributesNameInitial
type(mus_IBM_type), private, allocatable:: IBM(:)

the immersed boundary data

integer, private :: nIBMs

number of immersed boundaries

type(tem_logging_type), private :: logIBM

logging unit for IBM debug output to file

type, private :: mus_IBM_tmpData_type

This datatype includes all necessary variables needed for 1 IBM step. It will be filled at every timestep.

Components

TypeVisibilityAttributesNameInitial
real(kind=rk), private, allocatable:: force_Xk(:)

tmp array holding the body force at the lagrangian surface points Xk (Inamuro paper: \f$ g_{l}(X_{k}, t+\delta t) \f$) size: nPoints*3

real(kind=rk), private, allocatable:: force_X(:)

tmp array holding the body force at the eulerian grid elements X (Inamuro paper: \f$ g_{l}(x, t+\delta t) \f$) size: nPoints*stencil%QQ, 3

real(kind=rk), private, allocatable:: vel_Xk(:)

tmp array holding the velocity at the lagrangian surface points Xk (Inamuro paper: \f$ u_{l}(X_{k}, t+\delta t) \f$) size: nPoints*3

real(kind=rk), private, allocatable:: vel_X(:)

tmp array holding the velocity at the eulerian grid elements X (Inamuro paper: \f$ u_{l}(x, t+\delta t) \f$) size: nPoints*stencil%QQ, 3

real(kind=rk), private, allocatable:: vel_Xk_ini(:)

tmp array holding the initial velocity at the lagrangian points Xk (Inamuro paper: \f$ u(X_{k}, t+\delta t) \f$) size: nPoints3

real(kind=rk), private, allocatable:: vel_X_ini(:)

tmp array holding the initial velocity at the eulerian grid elements X (Inamuro paper: \f$ u(x, t+\delta t) \f$) size: nPointsstencil%QQ, 3

real(kind=rk), private, allocatable:: vel_Xk_surf(:)

tmp array holding the predef. velocity at the lagrangian surface points X (Inamuro paper: \f$ U_{k}(t+\delta t) \f$) size: nPoints*3

integer, private, allocatable:: ptrs_neighs_Xk(:)

temporary array storing pointers to the dynamic array of neighbor positions in the total treeID list of the parent elements of Xk size: nPoints * stencil%QQ

type(grw_intarray_type), private, allocatable:: neighs_x(:)

temporary dynamic array for storing the actual neighbor positions of the Xk tmp array for storing the neighbor positions in the total treeID list of the eulerian grid points

real(kind=rk), private, allocatable:: inaDelta_Xk(:)

tmp array for the result of the inamura delta function for the lagrangian points X size: nPoints * stencil%QQ

type(grw_realarray_type), private, allocatable:: inaDelta_X(:)

tmp array for the result of the inamura delta function for the eulerian points X size: nElems (fluid, ghosts, halos)

type(tem_communication_type), private :: IBMSend_Xk

sendBuffer to communicate the force values on Xk (on this process)

type(tem_communication_type), private :: IBMRecv_Xk

recvBuffer to communicate the force values on Xk (on this process)

type(grw_intarray_type), private, allocatable:: posXk(:)

tmp array of growing arrays storing the Xk positions

type(tem_communication_type), private :: IBMSend_X

sendBuffer to communicate the force values on X (on this process)

type(tem_communication_type), private :: IBMRecv_X

recvBuffer to communicate the force values on X (on this process)

integer, private, allocatable:: map2globSend(:)

map from the global send proc array to the local one

integer, private, allocatable:: map2globRecv(:)

map from the global recv proc array to the local one

type(tem_communication_type), private :: IBMSend_X_pdf

sendBuffer to communicate the pdf values on X (on this process)

type(tem_communication_type), private :: IBMRecv_X_pdf

recvBuffer to communicate the pdf values on X (on this process)

integer, private, allocatable:: map2globSend_pdf(:)

map from the global send proc array to the local one

integer, private, allocatable:: map2globRecv_pdf(:)

map from the global recv proc array to the local one

type(grw_intarray_type), private, allocatable:: treeIDs(:)

tmp array of growing arrays storing the treeID position at the send proc


Subroutines

public subroutine mus_load_IBM(me, conf, rank)

Load the IBM information from the lua config file.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_globType), intent(inout) :: me

datatype to store the surface information

type(flu_state), intent(in) :: conf

handle of the lua config file

integer, intent(in) :: rank

the current rank

public subroutine mus_init_IBM(me, globTree)

This subroutine initializes the IBM data incl. reading the stl, unifying the coordinates, storing the connectivity, allocating the parentIDs array and initializing the stencil used.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_globType), intent(inout) :: me

datatype to store the surface information

type(treelmesh_type), intent(in) :: globTree

global tree information

public subroutine mus_IBM_setParentIDs(nIBMs, me, levelDesc, tree)

This subroutine sets the positions of the parent IDs in the level descriptor.

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: nIBMs

number of IBM types

type(mus_IBM_type), intent(inout) :: me(:)

datatype to store the surface information

type(tem_levelDesc_type), intent(inout) :: levelDesc(:)

the level descriptor incl. ghost and halo elements as well as the communicator information on the level iLevel

type(treelmesh_type), intent(inout) :: tree

global Tree information

public subroutine mus_buildBuffIBM(me, commPattern, globTree, params, layout, levelDesc, iLevel)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me(:)

datatype to store the surface information

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern

type(treelmesh_type) :: globTree

global tree information

type(mus_param_type) :: params

global parameters

type(mus_scheme_layout_type) :: layout

scheme layout of the current scheme incl. array of stencils

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. ghost and halo elements as well as the communicator information on the level iLevel

integer, intent(in) :: iLevel

the current level

public subroutine mus_inamuro_IBM(me, commPattern, globTree, general, pdf, layout, levelDesc, globSys, stateVarMap, convFac, iField, iLevel, state)

This subroutine modifies the state vector according to the method described in the paper \a Lift generation by a two-dimensional symmetric flapping wing: immersed boundary-lattice Boltzmann simulations \a by Inamuro et al. @cite Ota:2012bx .

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me(:)

datatype to store the surface information

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern

type(treelmesh_type) :: globTree

global tree information

type(tem_general_type), intent(in) :: general

general data

type(pdf_data_type), intent(inout) :: pdf

pdf_data_type incl. connectivity array on all levels

type(mus_scheme_layout_type) :: layout

scheme layout of the current scheme incl. array of stencils

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. ghost and halo elements as well as the communicator information on the level iLevel

type(tem_varSys_type) :: globSys

global variable system of the current scheme

integer, intent(in) :: stateVarMap(:)

Position of state variables in globSys

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

integer, intent(in) :: iField

the current field

integer, intent(in) :: iLevel

the current level

real(kind=rk), intent(inout) :: state(:,:)

state_data type

public subroutine mus_finishIBM(me, params, useTime)

This routine dumps the timings%timedat to disc

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_globType), intent(inout) :: me

global IBM datatype incl. array of IBM datatypes

type(mus_param_type), intent(in) :: params

global parameters

logical, intent(in) :: useTime

use the timestamps when dumping the info?

public subroutine mus_unload_IBM(me, proc, minLevel, maxLevel)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me(:)

IBM data type

type(tem_comm_env_type), intent(in) :: proc

Global parameters

integer, intent(in) :: minLevel

Level range

integer, intent(in) :: maxLevel

Level range

public subroutine mus_reload_IBM(me, iField, LevelDesc, tree)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me(:)

IBM data type

integer, intent(in) :: iField

scheme and field number

type(tem_levelDesc_type), intent(inout) :: LevelDesc(:)

Global parameters Level desc

type(treelmesh_type), intent(inout) :: tree

tree

private subroutine mus_load_IBM_single(me, conf, sub_handle)

Load a single IBM table from the config file.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me

datatype to store the surface information

type(flu_state), intent(in) :: conf

handle of the lua config file

integer, intent(in) :: sub_handle

handle for the surfaceData table

private subroutine mus_fillNeigh_surfData(me, IBMData, stencil, levelDesc, globTree, parentIDs, commPattern, params)

This routine builds the neighbor lists for Xk -> x (neigh_Xk) and x->Xk (neigh_x) as well as the send and receive buffers for the eulerian elements.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me

IBM data including the surface data

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(tem_stencilHeader_type), intent(in) :: stencil(:)

array of stencils (1 is the fluid stencil)

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. ghost and halo elements on the level iLevel

type(treelmesh_type), intent(in) :: globTree

global tree information

integer, intent(in) :: parentIDs(:)

array of parentID positions hosting the lagrangian points

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern to be used

type(mus_param_type), intent(inout) :: params

global parameters

private subroutine mus_inamuroIni(me, IBMData, state, globTree, stencil, stencilPos, levelDesc, globSys, pdfPos, iLevel, convFac)

This subroutine fills the initial force, initial velocity, predef. velocity array for the surface points Xk as well as the velocity array for the neighbors.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(in) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

real(kind=rk), intent(in) :: state(:)

the state array holding the pdfs

type(treelmesh_type), intent(in) :: globTree

global tree information

type(tem_stencilHeader_type), intent(in) :: stencil(:)

stencil used by the IBM

integer, intent(in) :: stencilPos

position of the IBM stencil

type(tem_levelDesc_type), intent(in) :: levelDesc

level descriptor incl. ghost and fluid elements

type(tem_varSys_type) :: globSys

global variable system of the current scheme

integer :: pdfPos

position of the velocity in the global variable system

integer :: iLevel

the current level

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

private subroutine mus_calcForce_X(me, IBMData, nElems_fluid, convFac)

This subroutine fills the force array for the X (neighbors). (Inamuro paper: step 1, fill g_l(X))

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(in) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

integer, intent(in) :: nElems_fluid

number of fluid elements on this process

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

private subroutine mus_corrVel_X(me, IBMData, convFac)

This subroutine corrects the velocity values according to the force on X (neighbors). (Inamuro paper: step 2, correct u_l(X))

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(in) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

private subroutine mus_intpVel_Xk(IBMData, nNeighs, convFac, nPoints, parentIDs, nElems_fluid)

This subroutine interpolates the velocity values using the velocity on Xk. (neighbors). (Inamuro paper: step 3, correct u_l(X_k))

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

integer, intent(in) :: nNeighs

the number of neighbors for the surface points

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

integer, intent(in) :: nPoints

number of points

integer, intent(in) :: parentIDs(:)

array of parentID positions hosting the lagrangian points

integer, intent(in) :: nElems_fluid

number of fluid elements on this process

private subroutine mus_corrForce_Xk(IBMData, convFac, nPoints, parentIDs, nElems_fluid)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

integer, intent(in) :: nPoints

number of points

integer, intent(in) :: parentIDs(:)

array of parentID positions hosting the lagrangian points

integer, intent(in) :: nElems_fluid

number of fluid elements on this process

private subroutine mus_applyForce_X(me, state, IBMData, layout, varPos, nScalars, nElems_fluid, convFac, time, levelDesc)

This subroutine applies the force calculated to the eulerian elements.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(in) :: me

datatype to store the surface information

real(kind=rk), intent(inout) :: state(:)

the state array holding the pdfs

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(mus_scheme_layout_type), intent(in) :: layout

scheme layout of the current scheme incl. array of stencils and weights

integer, intent(in) :: varPos(:)

variable positions of the state variables in the levelDesc/state vector

integer, intent(in) :: nScalars

number of scalars in the global variable system

integer, intent(in) :: nElems_fluid

number of fluid elements on this partition and level

type(mus_convertFac_type), intent(in) :: convFac

conversion factors

type(tem_time_type), intent(in) :: time

current time

type(tem_levelDesc_type), intent(in) :: levelDesc

level descriptor incl. ghost and fluid elements

private subroutine mus_IBM_buildSendRecv_Xk(me, IBMData, levelDesc, commPattern, globTree, iLevel, params)

This subroutine builds the communication types for the lagrangian elements Xk.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. the global send and receive buffers

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern to be used

type(treelmesh_type), intent(inout) :: globTree

global tree information

integer, intent(in) :: iLevel

current level

type(mus_param_type), intent(inout) :: params

global parameters

private subroutine mus_IBM_prepareSendRecv_X(IBMData)

This subroutine prepares the send and receive buffers for the eulerian elements by copying information from the send and receive buffers for the lagrangian elements.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

private subroutine mus_IBM_fillSendPos_X(IBMData, globSend, treeIDPos, startPos, parentID, globTree, added, match)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

IBM temporary datatype incl. map2glob and communicator for send and recv

type(tem_communication_type), intent(in) :: globSend

global send communicator

integer, intent(in) :: treeIDPos

element position in the level desc total list

integer, intent(in) :: startPos

starting position of what to send as elemPos

integer(kind=long_k), intent(in) :: parentID

element position in the level desc total list

type(treelmesh_type), intent(in) :: globTree

global tree information

logical, intent(inout) :: added(:)

is this element added to the communication

logical :: match

private subroutine mus_IBM_fillRecvPos_X(IBMData, globRecv, treeIDPos, startPos, added, match)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

IBM temporary datatype incl. map2glob and communicator for send and recv

type(tem_communication_type), intent(in) :: globRecv

global recv communicator

integer, intent(in) :: treeIDPos

element position in the level desc total list

integer, intent(in) :: startPos

starting position of what to recv as elemPos

logical, intent(inout) :: added(:)

is this element added to the communication

logical :: match

private subroutine mus_init_IBMData(me, IBM, totNeighs, nElems_fluid)

This subroutine initializes all arrays in the mus_IBM_tmpData_type.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: me

tmpData type to be initialized

type(mus_IBM_type), intent(inout) :: IBM

IBM datatype

integer, intent(in) :: totNeighs

total number of neighbors: number of surface points*stencil%QQ

integer, intent(in) :: nElems_fluid

number of fluid nodes on this process

private subroutine mus_free_IBMData(me, commPattern, nElems_fluid)

This routine frees all temporary variables and destroys growing arrays as well as the communicators.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: me

tmpData type to be initialized

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern to be used

integer, intent(in) :: nElems_fluid

number of fluid nodes on this process

private subroutine mus_IBM_getSurfVel(me, IBMData, levelDesc, general, iLevel)

This routine calculates the surface velocity for all local xk.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(in) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(tem_levelDesc_type), intent(in) :: levelDesc

level descriptor incl. ghost and fluid elements

type(tem_general_type), intent(in) :: general

general info

integer :: iLevel

the current level

private subroutine mus_IBM_commNewPos(IBMData, levelDesc, commPattern, globTree, surfData, iLevel, comm)

This subroutine communicates all elements which just moved from the fluids to the halo elements.

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. the global send and receive buffers

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern to be used

type(treelmesh_type), intent(inout) :: globTree

global tree information

type(tem_surfData_type), intent(inout) :: surfData

the surface data incl. the coordinates for the Xk

integer, intent(in) :: iLevel

current level

integer, intent(in) :: comm

process description to use

private subroutine mus_IBMFinishBuff(me, IBMData, levelDesc, commPattern, globTree, iLevel, comm, stencil)

This routine finishes the buffers for Xk and X_pdf. This is moved to a seperate routine since both buffers depend on a local communication which should be done nearby the global synchronization point (mus_exchange)

Arguments

TypeIntentOptionalAttributesName
type(mus_IBM_type), intent(inout) :: me

datatype to store the surface information

type(mus_IBM_tmpData_type), intent(inout) :: IBMData

tmp IBMData type to be filled

type(tem_levelDesc_type), intent(inout) :: levelDesc

the level descriptor incl. the global send and receive buffers

type(tem_commPattern_type), intent(inout) :: commPattern

communication pattern to be used

type(treelmesh_type), intent(inout) :: globTree

global tree information

integer, intent(in) :: iLevel

current level

integer, intent(in) :: comm

MPI communicator

type(tem_stencilHeader_type), intent(in) :: stencil(:)

array of stencils (1 is the fluid stencil)