sdr_proto2treelm_module Module

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.


Uses

Used by

  • module~~sdr_proto2treelm_module~~UsedByGraph module~sdr_proto2treelm_module sdr_proto2treelm_module program~seeder seeder program~seeder->module~sdr_proto2treelm_module

Derived Types

type, public ::  sdr_temData_type

Data type contains final fluid info dumped into mesh file

Components

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.


Subroutines

public subroutine sdr_proto2treelm(proto, geometry, temData, header)

This subroutine creates the treelmesh from the flooded prototree.

Read more…

Arguments

Type IntentOptional 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.

public recursive subroutine traverse_tree(node_pos, leVal, proto, geometry, temData, header, meshUniverse)

Recursively traverse the tree in a depth first manner to obtain the the ordering required by treelm.

Read more…

Arguments

Type IntentOptional 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

public subroutine proto2Treelm(node_pos, treeID, leVal, proto, geometry, check_bnd, temData, nodeprops, nodecolors, meshUniverse)

Routine to convert protoTree to Treelm data format. append all leaves to the temData%treeID

Read more…

Arguments

Type IntentOptional 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

public subroutine create_target(node_pos, proto, geometry, leVal, meshUniverse, header, temData)

Routine to create an element with subelement resolution.

Read more…

Arguments

Type IntentOptional 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.

public subroutine sdr_color_points(nodals, nPoints, point, target_pos, fill, void, proto, iColor)

Get the color at all given points.

Read more…

Arguments

Type IntentOptional 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

public subroutine sdr_dump_treelm(temData, geometry, confHeader)

This routine dumps the final fluid tree leaves in the disk

Arguments

Type IntentOptional 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.