mus_geom_module Module

This module contains the definition of geometry type and routines to geometry information like mesh, boundary, immersed_boundary and restart


Used by

  • module~~mus_geom_module~~UsedByGraph module~mus_geom_module mus_geom_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 module~mus_construction_module mus_construction_module module~mus_construction_module->module~mus_geom_module program~musubi musubi program~musubi->module~mus_geom_module module~mus_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_geom_module module~mus_geomincr_module mus_geomIncr_module module~mus_geomincr_module->module~mus_geom_module module~mus_control_module mus_control_module module~mus_control_module->module~mus_geom_module module~mus_tracking_module mus_tracking_module module~mus_tracking_module->module~mus_geom_module module~mus_config_module mus_config_module module~mus_config_module->module~mus_geom_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_dynloadbal_module mus_dynLoadBal_module module~mus_dynloadbal_module->module~mus_geom_module module~mus_program_module mus_program_module module~mus_program_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_aux_module mus_aux_module module~mus_aux_module->module~mus_geom_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_geom_module module~mus_scheme_module mus_scheme_module module~mus_scheme_module->module~mus_geom_module


Derived Types

type, public :: mus_geom_type

Geometric information and definitions


type(treelmesh_type), private :: tree

tree data type

type(tem_BC_prop_type), private :: boundary

boundary information as stored on disk

type(mus_geomIncrHead_type), private, allocatable:: geomIncr(:)

The header type containing all the geometry increase information

logical, private :: dynamicGeom =.false.

Logical to define whether geometry increase is active or not

integer, private, allocatable:: posInBndID(:)

Tree element position in the boundary_ID( nDir, nElems) in bc_prop_type it has a size of tree%nElems How to use: do iElem = 1, tree%nElems posInBndID = posInBndID( iElem ) ! current element has boundary only if posInBndID>0 ! else posInBndID = -1 if (posInBnd > 0 ) bnd_ID(1:nDir) = bc_prop%boundary_ID( 1:nDir, posInBndID ) end if end do

integer, private, allocatable:: posInQVal(:)

Tree element position in the qVal( nDir, nElems) in bc_prop_type it has a size of tree%nElems How to use: do iElem = 1, tree%nElems posInQVal = posInQVal( iElem ) ! current element has qVal if posInQVal>0 else posInQVal = -1 if (posInQVal > 0 ) qVal(1:nDir) = bc_prop%qVal( 1:nDir, posInQVal ) end if end do

integer, private, allocatable:: levelPointer(:)

tree element position in level descriptor total list it has a size of tree%nElems How to use: do iElem = 1, tree%nElems treeID = tree%treeID( iElem ) level = tem_levelOf( treeID ) posInTotal = levelPointer( iElem ) treeID = LevelDesc( iLevel )%total( posInTotal ) end do

integer, private, allocatable:: bcLevelPointer(:)

Boundary element poisition in the levelwise globBC%elemLvl(:)%elem%val It has a size of geometry%boundary%property%nElems. It is used in tracking to extract value stored in boundary types. Hot to use this access normal direction of boundary element: do iElem = 1, tree%nElems level = tem_levelOf( treeID ) posInBndID = posInBndID(iElem) if (posInBndID > 0) then BCIDs = bc_prop%boundary_ID(:, posInBndID) minBCID = minval(BCIDs, BCIDs > 0) posInBcElem = bcLevelPointer(posInBndID) normal = globBC%elemLvl(iLevel)%normal(posInBcElem) end if end do

integer, private, allocatable:: minBcID(:)

Minimum bcID for each boundary element. if a element has more than one boundary then use minBcID which depends on boundary order in seeder configuration.

type(mus_IBM_globType), private :: globIBM

immersed boundary data

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

Contains Forces on boundary elements computed using momentum exchange method. This will be used to derive_bndForce routine to compute force of certain boundaries. Forces are stored in level-independent fashion as geometry%boundaryID loaded from mesh files. Dim1: geometry%boundaryi%property%nElems Dim2: 3


public subroutine mus_load_geom(me, restart, solverHead, simControl, proc, scaleFactor, initial_balance)

This routine load all geometry related datas like mesh, boundary and immersed_boundary. Restart is also loaded here because mesh is loaded in tem_load_restart if restart read is defined.


type(mus_geom_type), intent(out) :: me
type(tem_restart_type), intent(out) :: restart

contains restart information

type(tem_solveHead_type), intent(inout) :: solverHead

contains general description of the solver including flu_state

type(tem_simControl_type), intent(inout) :: simControl

contains simulation time control information

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

contains MPI communication environment

integer, intent(in) :: scaleFactor

Temporal scaling factor for multilevel mesh

logical, intent(in) :: initial_balance

If true, do initial balancing using level_weights

public subroutine mus_load_bc_data(geometry, rank, comm)

This routine invokes the treelm routines to load the boundary conditions


type(mus_geom_type), intent(inout) :: geometry
integer, intent(in) :: rank
integer, intent(in) :: comm

public subroutine mus_build_posInProp(me)

This routine builds mapping between elements in tree to to propery list


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

private subroutine mus_build_minBcID(minBcID, bc_prop, posInBndID)

This routine build minBcID for boundary elements, it is required if a element has more than one boundary in its directions. if a element has more than one boundary then use minBcID which depends on boundary order in seeder configuration


integer, intent(out), allocatable:: minBcID(:)
type(tem_BC_prop_type), intent(in) :: bc_prop

boundary information from mesh

integer, intent(in) :: posInBndID(:)

tree element position in boundaryID