Run through all the elements, check the vertices and return the fluid bounding cube
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_subTree_type), | intent(in) | :: | subTree |
subTree to locate point in |
||
type(treelmesh_type), | intent(in) | :: | globalTree |
corresponding global tree |
xyz coordinate for min and max of bounding cube
function tem_GetLocalBoundingCube_fromSubTree( subTree, globalTree ) & & result(BoundingCube) ! -------------------------------------------------------------------- ! !> subTree to locate point in type(tem_subTree_type), intent(in) :: subTree !> corresponding global tree type(treelmesh_type), intent(in) :: globalTree !> xyz coordinate for min and max of bounding cube real(kind=rk) :: BoundingCube(3,2) ! -------------------------------------------------------------------- ! real(kind=rk) :: vrtxCoord(3,8) ! coordinates for all eight vertices real(kind=rk) :: minX(3) ! xyz coordinate for min of bounding cube real(kind=rk) :: maxX(3) ! xyz coordinate for max of bounding cube integer(kind=long_k) :: tTreeID integer :: iElem, iVert ! -------------------------------------------------------------------- ! ! if the subTree equals to the global shape if( subTree%useGlobalMesh ) then ! ... the effective bounding cube equals to the one of the tree BoundingCube = globalTree%global%effboundingCube(3,2) else ! if this is not the case minX = huge( minX ) maxX = -huge( maxX ) ! loop over all elements do iElem = 1, subTree%nElems ! ... and distinguish between local shapes and other shapes if( subTree%useLocalMesh ) then ! ... copy the treeIDs directly tTreeID = subTree%treeID( iElem ) else ! ... the treeIDs from the globalTree via the positions in map2global tTreeID = globalTree%treeID( subTree%map2global( iElem )) end if ! Calculate coordinates of vertices vrtxCoord(:,:) = tem_vrtxCoordOfId( globalTree, tTreeID ) do iVert = 1, 8 ! Compare with min max minX(:) = min( minX(:), vrtxCoord(:, iVert )) maxX(:) = max( maxX(:), vrtxCoord(:, iVert )) enddo enddo BoundingCube(:,1) = minX(:) BoundingCube(:,2) = maxX(:) end if ! useGlobalShape end function tem_GetLocalBoundingCube_fromSubTree