Module to create the actual mesh out of the flooded protoTree.
This module provides the functionality to refine the computational domain down to the requested level everywhere and identify the boundary conditions in all 26 directions of the elements, which have boundaries.
Data type contains final fluid info dumped into mesh file
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(grw_longarray_type), | public | :: | treeID |
list of fluid treeIDs |
|||
type(grw_longarray_type), | public | :: | propertyBits |
list of property bits for fluid nodes |
|||
type(grw_longarray_type), | public | :: | bc_ID(qQQQ) |
list of boundary iDs for fluid nodes in 26 directions |
|||
type(grw_char2darray_type), | public | :: | colors |
list of color characters |
|||
type(grw_char2darray_type), | public | :: | subres |
list of color characters indicating their subresolution status. |
|||
integer, | public, | allocatable | :: | color_subres_count(:) |
Count number of subresolved elements for each color. |
||
integer, | public, | allocatable | :: | color_subres_unit(:) |
File unit for the subresolution information of each color. |
||
real(kind=rk), | public, | allocatable | :: | color_volume(:) |
Measure of the volume covered by each color |
||
integer, | public | :: | maxLevel |
maxlevel in the fluid domain |
|||
integer, | public | :: | minLevel |
minlevel in the fluid domain |
|||
type(grw_realarray_type), | public | :: | qVal(qQQQ) |
link-wise distances from boundary for fluid nodes in 26 directions |
|||
type(grw_realarray_type), | public | :: | bc_normal(3) |
Surface normals in boundary elements for which it is to be stored |
|||
type(treelmesh_type), | public | :: | meshUniverse |
treelm mesh type contains only bounding cube info needed to identify boundary and compute q-values |
|||
integer, | public | :: | nSolids | = | 0 |
number of fluidifyable ( solids ) |
|
integer, | public | :: | nFluids(globalMaxLevels) |
Number of fluids on each level |
|||
type(ply_poly_project_type), | public | :: | projection |
Projection workspace. |
This subroutine creates the treelmesh from the flooded prototree.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_protoTree_type), | intent(inout) | :: | proto |
preliminary tree |
||
type(sdr_geometry_type), | intent(in) | :: | geometry |
contains all geometrical objects |
||
type(sdr_temData_type), | intent(inout) | :: | temData |
temData contains final mesh created by this routine |
||
type(sdr_confHead_type), | intent(inout) | :: | header |
Header data. |
Recursively traverse the tree in a depth first manner to obtain the the ordering required by treelm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | node_pos |
Position of leaf in the preliminary tree |
||
type(levelValues_type), | intent(in) | :: | leVal |
level value of current node |
||
type(sdr_protoTree_type), | intent(in) | :: | proto |
preliminary tree |
||
type(sdr_geometry_type), | intent(in) | :: | geometry |
contains all geometrical objects |
||
type(sdr_temData_type), | intent(inout) | :: | temData |
temData contains final treelmesh |
||
type(sdr_confHead_type), | intent(in) | :: | header |
Header information |
||
type(treelmesh_type), | intent(inout) | :: | meshUniverse |
contains bounding cube information |
Routine to convert protoTree to Treelm data format. append all leaves to the temData%treeID
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | node_pos |
Position of leaf in the preliminary tree |
||
integer(kind=long_k), | intent(in) | :: | treeID |
treeID of current node |
||
type(levelValues_type), | intent(in) | :: | leVal |
level value of current node |
||
type(sdr_protoTree_type), | intent(in) | :: | proto |
preliminary tree |
||
type(sdr_geometry_type), | intent(in) | :: | geometry |
contains all geometrical objects |
||
logical, | intent(in) | :: | check_bnd |
does this node has boundary neighbor |
||
type(sdr_temData_type), | intent(inout) | :: | temData | |||
integer, | intent(in) | :: | nodeprops |
propertyBits of current node |
||
character(len=1), | intent(in) | :: | nodecolors(:) |
Color information of the cuurent node |
||
type(treelmesh_type), | intent(inout) | :: | meshUniverse |
contains bounding cube information |
Routine to create an element with subelement resolution.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | node_pos |
Position of leaf in the preliminary tree |
||
type(sdr_protoTree_type), | intent(in) | :: | proto |
preliminary tree |
||
type(sdr_geometry_type), | intent(in) | :: | geometry |
contains all geometrical objects |
||
type(levelValues_type), | intent(in) | :: | leVal |
level value of parent node |
||
type(treelmesh_type), | intent(inout) | :: | meshUniverse |
contains bounding cube information |
||
type(sdr_confHead_type), | intent(in) | :: | header |
Configuration header. |
||
type(sdr_temData_type), | intent(inout) | :: | temData |
Data for the final mesh. |
Get the color at all given points.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(out) | :: | nodals(:) | |||
integer, | intent(in) | :: | nPoints | |||
real(kind=rk), | intent(in) | :: | point(:,:) |
Point for which to evaluate the color. |
||
integer, | intent(in) | :: | target_pos |
Position of leaf in the preliminary tree |
||
real(kind=rk), | intent(in) | :: | fill | |||
real(kind=rk), | intent(in) | :: | void | |||
type(sdr_protoTree_type), | intent(in) | :: | proto |
preliminary tree |
||
integer, | intent(in) | :: | iColor |
This routine dumps the final fluid tree leaves in the disk
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_temData_type), | intent(in) | :: | temData |
temData contains final treelmesh |
||
type(sdr_geometry_type), | intent(in) | :: | geometry |
Bounding cube, the prototree lives in. |
||
type(sdr_confHead_type), | intent(inout) | :: | confHeader |
config header info. |