\ref mus_construct "Creation of the data structures"
env_module | w | mus_construction_module | |
w | |||
mpi | w | ||
w | |||
mus_auxField_module | w | ||
w | |||
mus_bc_header_module | w | ||
w | |||
mus_comm_module | w | ||
w | |||
mus_connectivity_module | w | ||
w | |||
mus_debug_module | w | ||
w | |||
mus_field_module | w | ||
w | |||
mus_geom_module | w | ||
w | |||
mus_IBM_module | w | ||
w | |||
mus_interpolate_module | w | ||
w | |||
mus_param_module | w | ||
w | |||
mus_pdf_module | w | ||
w | |||
mus_scheme_layout_module | w | ||
w | |||
mus_scheme_type_module | w | ||
w | |||
mus_statistics_module | w | ||
w | |||
mus_timer_module | w | ||
w | |||
tem_aux_module | w | ||
w | |||
tem_bc_prop_module | w | ||
w | |||
tem_comm_env_module | w | ||
w | |||
tem_comm_module | w | ||
w | |||
tem_construction_module | w | ||
w | |||
tem_debug_module | w | ||
w | |||
tem_dyn_array_module | w | ||
w | |||
tem_element_module | w | ||
w | |||
tem_geometry_module | w | ||
w | |||
tem_grow_array_module | w | ||
w | |||
tem_logging_module | w | ||
w | |||
tem_param_module | w | ||
w | |||
tem_property_module | w | ||
w | |||
tem_stencil_module | w | ||
w | |||
tem_subTree_module | w | ||
w | |||
tem_timer_module | w | ||
w | |||
tem_tools_module | w | ||
w | |||
tem_topology_module | w | ||
w | |||
treelmesh_module | w | ||
w |
Contains bitmask to reduce halo elements communciation links. This type is used only in init_levelBuffers
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | private, | allocatable | :: | bitmask(:,:) | Bitmask of which direction to send, only directions of fluid neighbor need to be update Size: nDofs, nElems |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | private, | allocatable | :: | val(:) |
Initialize Musubi data strucutres based on data provided by Treelm
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_scheme_type), | intent(inout) | :: | scheme | scheme information including fluid, boundary and flow information |
||
type(mus_geom_type), | intent(inout) | :: | geometry | geometric information |
||
type(mus_param_type), | intent(in) | :: | params | run-time Parameters |
Initialize the communication buffers for a single level
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_communication_type), | intent(inout) | :: | send | Communication structure to send and receive property |
||
type(tem_communication_type), | intent(inout) | :: | recv | Communication structure to send and receive property |
||
integer(kind=long_k), | intent(inout) | :: | property(:) | property to communicate |
||
integer, | intent(in) | :: | flag | communication flag |
||
type(tem_comm_env_type), | intent(in) | :: | proc | Process description to use. |
||
type(tem_commPattern_type), | intent(in) | :: | pattern |
Calculate global and sum of levels numbers of elements
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_levelDesc_type), | intent(in) | :: | levelDesc(minLevel:maxLevel) | |||
type(tem_comm_env_type), | intent(in) | :: | proc | mpi communication enviroment with mpi communicator |
||
integer, | intent(in) | :: | minLevel | Level range |
||
integer, | intent(in) | :: | maxLevel |
set the sendHalo bit for all fluid elements which are send to remote procs
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=long_k), | intent(inout) | :: | property(:) | |||
type(tem_communication_type), | intent(in) | :: | sendBuffer |
Initialize the communication buffers for a single level
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_communication_type) | :: | send | Communication structure to initialize |
|||
type(tem_communication_type) | :: | recv | Communication structure to initialize |
|||
type(pdf_data_type), | intent(in) | :: | iLevel pdf info with neigh array |
|||
type(tem_commPattern_type), | intent(in) | :: | pattern | communication pattern |
||
integer, | intent(in) | :: | offset(2,eT_minRelevant:eT_maxRelevant) | |||
logical, | intent(in) | :: | requireAll | different place to take values from for interpolation |
||
type(mus_scheme_type), | intent(in) | :: | scheme | fluid, bnd and flow info |
||
type(mus_statistics_type), | intent(inout) | :: | stat | Statistics |
||
integer, | intent(in) | :: | comm | mpi communication enviroment with mpi communicator |
||
logical, | intent(in) | :: | haloRequired(:) |
Select the halo elements which require all links
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_scheme_type), | intent(in) | :: | scheme | scheme information including fluid, boundary and flow information |
||
integer, | intent(in) | :: | minLevel | Global information |
||
integer, | intent(in) | :: | maxLevel | Global information |
||
integer, | intent(in) | :: | nBCs | Global information |
||
logical, | intent(in) | :: | comm_reduced | reduced communication |
||
type(logical_array_type), | intent(inout), | allocatable | :: | haloRequired(:) |
Create the communication buffers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_communication_type), | intent(inout) | :: | me | receive communication buffer |
||
type(halo_commBitmask_type), | intent(inout) | :: | myHalos(:) | contains bitmask of my halos with array size of recv%nProcs |
||
type(tem_commPattern_type), | intent(in) | :: | pattern | communication pattern |
||
logical, | intent(in) | :: | requireAll | requires complete element information or only required links? |
||
logical, | intent(in) | :: | haloRequired(:) | |||
integer, | intent(in) | :: | halo_offset | Level descriptor |
||
type(mus_scheme_type), | intent(in) | :: | scheme | Scheme information on fluid, boundary and flow properties |
||
type(mus_statistics_type), | intent(inout) | :: | stat | Statistics |
||
integer, | intent(in) | :: | neigh(:) | PDF neighbor array |
||
integer, | intent(in) | :: | nSize | number of Elements in neigh array |
Create the communication buffers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_communication_type), | intent(inout) | :: | send | send communication buffer |
||
type(halo_commBitmask_type), | intent(in) | :: | remoteHalos(:) | contains bitmask of remote halos with array size send%nProcs |
||
integer, | intent(in) | :: | neigh(:) | neighbor array for state array |
||
type(tem_commPattern_type), | intent(in) | :: | pattern | communication pattern |
||
type(mus_scheme_type), | intent(in) | :: | scheme | fluid, boundary and flow information |
||
integer, | intent(in) | :: | nSize |
Update the neighbor stencil positions for the Boundaries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_scheme_type), | intent(inout) | :: | scheme | scheme information including fluid, boundary and flow information |
||
integer, | intent(in) | :: | minLevel | |||
integer, | intent(in) | :: | maxLevel | |||
integer, | intent(in) | :: | nBCs | |||
integer, | intent(in) | :: | LP(:) | Level Pointer |
||
logical, | intent(in) | :: | remove_solid |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_scheme_type), | intent(inout) | :: | scheme | scheme information including fluid, boundary and flow information |
||
type(tem_comm_env_type), | intent(in) | :: | proc | mpi communication enviroment with mpi communicator |
||
integer, | intent(in) | :: | minLevel | |||
integer, | intent(in) | :: | maxLevel | |||
integer, | intent(in) | :: | nBCs |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(inout), | allocatable | :: | bcLevelPointer(:) | levelPointer from posInBndID to globBC%elemLVl(:)%elem |
|
integer, | intent(in) | :: | posInBndID(:) | tree element position in boundaryID |
||
integer, | intent(in) | :: | minBCID(:) | minBCID for each element |
||
integer, | intent(in) | :: | levelPointer(:) | tree element position in levelDesc total list |
||
type(tem_BC_prop_type), | intent(in) | :: | bc_prop | boundary information from mesh |
||
type(treelmesh_type), | intent(in) | :: | tree | fluid tree from mesh |
||
type(glob_boundary_type), | intent(in) | :: | globBC(bc_prop%nBCtypes) | global boundary information |
This routine sets field BC neigh array with position of neighbor element in the inward normal direction of boundary in the levelwise list. if valid 1st neighbor does not exist return current element position. if valid higher order neighbor does not exist return last valid neighbor
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(boundary_type), | intent(inout) | :: | fieldBC | field boundary with boundary neighbor info |
||
type(glob_boundary_type), | intent(in) | :: | globBC | boundaries for the elements with bnd property set |
||
type(tem_levelDesc_type), | intent(in) | :: | levelDesc(minLevel:maxLevel) | Level descriptor |
||
integer, | intent(in) | :: | minLevel | Level range |
||
integer, | intent(in) | :: | maxLevel |
Assemble the level-wise list of elements which adhere to the boundary conditions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(glob_boundary_type), | intent(out), | allocatable | :: | globBC(:) | boundaries for the elements with bnd property set |
|
type(treelmesh_type), | intent(in) | :: | tree | fluid tree from mesh |
||
type(tem_BC_prop_type), | intent(in) | :: | bc_prop | boundary information from mesh |
||
integer, | intent(in) | :: | minLevel | contains pdf global information |
||
integer, | intent(in) | :: | maxLevel | contains pdf global information |
||
type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout |
||
type(mus_field_type), | intent(in) | :: | field(:) | field type |
||
integer, | intent(in) | :: | comm | mpi communication enviroment with mpi communicator |
Identify the number of boundary condition elements of each BC type and number of elements with multiple BC types. This is 1st step in Build_BClists
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(glob_boundary_type), | intent(inout) | :: | globBC(nBCs) | boundaries for the elements with bnd property set |
||
integer(kind=long_k), | intent(in) | :: | boundaryID(:,:) | boundary information from mesh |
||
type(treelmesh_type), | intent(in) | :: | tree | fluid tree from mesh |
||
type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil |
||
integer, | intent(in) | :: | nBCs | contains pdf global information |
||
integer, | intent(in) | :: | comm | mpi communication enviroment with mpi communicator |
Allocate BC lists, 2nd step in Build_BClists
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(glob_boundary_type), | intent(inout) | :: | globBC(nBCs) | boundaries for the elements with bnd property set |
||
integer, | intent(in) | :: | nBCs | |||
integer, | intent(in) | :: | minLevel | |||
integer, | intent(in) | :: | maxLevel | |||
integer, | intent(in) | :: | QQN |
This routine assigns the BC lists Run over all the elements with the property boundary and check each direction. Assign all common boundaries to the level-wise representation 3rd step in build_BCLists
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(treelmesh_type), | intent(in) | :: | tree | fluid tree from mesh |
||
type(tem_BC_prop_type), | intent(in) | :: | bc_prop | boundary information from mesh |
||
type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil |
||
type(glob_boundary_type), | intent(inout) | :: | globBC(:) | boundaries for the elements with bnd property set |
This routine normalizes the normal vectors of boundary elements including the corner elements as well as assigns the corresponding prevailing direction from the stencil
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nBCs | number of boundaries |
||
integer, | intent(in) | :: | minLevel | number of boundaries |
||
integer, | intent(in) | :: | maxLevel | number of boundaries |
||
type(glob_boundary_type), | intent(inout) | :: | globBC(:) | boundaries for the elements with bnd property set |
||
type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout |
||
type(mus_field_type), | intent(in) | :: | field(:) | field type |
||
integer, | intent(in) | :: | comm | mpi communication enviroment with mpi communicator |
subroutine to find neighbours of element with individual (for each element) stencil definitions. Unique stencil label for boundary stencils are created with boundary label and stencil%cxDir therefore each stencil is limited to one boundary type
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(glob_boundary_type), | intent(in) | :: | globBC | boundaries for the elements with bnd property set |
||
type(boundary_type), | intent(inout) | :: | bc | field boundary with boundary neighbor info |
||
real(kind=rk), | intent(in) | :: | prevailDir(:,:) | scheme layout |
||
character(len=*), | intent(in) | :: | prefix | field label |
||
integer, | intent(in) | :: | minLevel | min and max level |
||
integer, | intent(in) | :: | maxLevel | min and max level |
||
type(dyn_labelarray_type), | intent(inout) | :: | stencil_labels | dynamic array of stencil labels |
||
type(grw_stencilheaderarray_type), | intent(inout) | :: | grwStencil | growing array of stencils |
This routine build and append IBM stencils to scheme stencil array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mus_IBM_globType), | intent(inout) | :: | globIBM | datatype to store the surface information |
||
type(mus_scheme_layout_type), | intent(inout) | :: | layout | scheme stencil layout |
||
type(grw_stencilheaderarray_type), | intent(inout) | :: | grwStencil | contains array of stencils |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | minLevel | Min and max level |
||
integer, | intent(in) | :: | maxLevel | Min and max level |
||
type(tem_levelDesc_type), | intent(inout) | :: | levelDesc(minLevel:maxLevel) | Level Descriptor |
||
type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout |
||
type(tem_BC_prop_type), | intent(in) | :: | bc_prop | boundary information from mesh |
||
type(glob_boundary_type), | intent(inout) | :: | globBC(:) | boundaries for the elements with bnd property set |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_levelDesc_type), | intent(inout) | :: | levelDesc | Level Descriptor for iLevel |
||
type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil |
||
type(tem_BC_prop_type), | intent(in) | :: | bc_prop | boundary information from mesh |
||
type(glob_boundary_type), | intent(inout) | :: | globBC(:) | boundaries for the elements with bnd property set |
||
integer | :: | nGhosts | ||||
integer, | intent(in) | :: | offset | |||
integer, | intent(in) | :: | weight(stencil%QQN) | |||
integer, | intent(in) | :: | iLevel |