This module contains the definition of geometry type and routines to geometry information like mesh, boundary, immersed_boundary and restart
Geometric information and definitions
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |
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 | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
This routine invokes the treelm routines to load the boundary conditions
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_geom_type), | intent(inout) | :: | geometry | |||
integer, | intent(in) | :: | rank | |||
integer, | intent(in) | :: | comm |
This routine builds mapping between elements in tree to to propery list
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_geom_type), | intent(inout) | :: | me |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |