mus_absorbLayer_module Module

Module containing subroutines for building MUSUBI specific absorbLayer source variables

Make target_pressure and target_velocity as stFun.



Derived Types

type, public ::  mus_absorbLayer_dynAvg_type

Stores time average values of density and velocity for dynamic absorbLayer

Components

Type Visibility Attributes Name Initial
real(kind=rk), public, allocatable :: dens(:)

density time average in lattice unit

real(kind=rk), public, allocatable :: velX(:)

velocity time average in lattice unit

real(kind=rk), public, allocatable :: velY(:)
real(kind=rk), public, allocatable :: velZ(:)
logical, public :: isInitDens = .true.

It is used to initialiye dynamic average density with initial condition

logical, public :: isInitVel = .true.

It is used to initialiye dynamic average velocity with initial condition

type, public ::  mus_absorbLayer_type

Contains information for absorblayer

Components

Type Visibility Attributes Name Initial
type(absorbLayer_config_type), public :: config

Information loaded from configuration file

real(kind=rk), public :: smoothFac

Smoothing factor for expoential moving average = 2 / (nRecord+1)

type, private ::  absorbLayer_config_type

Contains additional information for absorblayer source

Components

Type Visibility Attributes Name Initial
real(kind=rk), public :: target_pressure

target pressure

real(kind=rk), public :: target_velocity(3)

target velocityX, velocityY and velocityZ

logical, public :: isPressDyn = .false.

Use time average for pressure. Default: false.

logical, public :: isVelDyn = .false.

Use time average for Velocity. Default: false.

integer, public :: nRecord = 100

Number of iterations to record for time-averaging


Subroutines

public subroutine mus_load_absorbLayer(me, conf, key, parent, loadPres, loadVel)

This routine load additional information for absorblayer

Arguments

Type IntentOptional Attributes Name
type(absorbLayer_config_type), intent(out) :: me

Absorb layer

type(flu_State) :: conf

flu state

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

Table name to load target states

integer, intent(in) :: parent

parent source handle

logical, intent(in) :: loadPres

Load pressure if true else set to dynamic

logical, intent(in) :: loadVel

Load velocity if true else set to dynamic

public subroutine mus_init_absorbLayer(absLayer, dynAvg, nElems)

Initialize arrays to store time average density and velocity for dynamic absorbing layer. \todo KM: 20210301 Allocate only pressure or velocity depending on absorb_layer_inlet or absorb_layer_outlet

Arguments

Type IntentOptional Attributes Name
type(mus_absorbLayer_type), intent(inout) :: absLayer

Absorblayer type

type(mus_absorbLayer_dynAvg_type), intent(inout) :: dynAvg

Contains dynamic average density and velocity for absorblayer

integer, intent(in) :: nElems

Number of source elements