tem_vrtxCoordOfId Function

public pure function tem_vrtxCoordOfId(tree, treeID) result(coord)

Calculate all eight vertex coordinates of a given tree ID

the numbering of the vertices is according to [tem_param_module:childPosition]

Arguments

Type IntentOptional Attributes Name
type(treelmesh_type), intent(in) :: tree

complete tree for info about dimensions

integer(kind=long_k), intent(in) :: treeID

input element ID

Return Value real(kind=rk), (3,8)

all vertices coordinates function return value


Source Code

  pure function tem_vrtxCoordOfId( tree, treeID) result(coord)
    ! -------------------------------------------------------------------- !
    !> complete tree for info about dimensions
    type(treelmesh_type), intent(in) :: tree
    !> input element ID
    integer(kind=long_k), intent(in) :: treeID
    !> all vertices coordinates function return value
    real(kind=rk) :: coord(3,8)
    ! -------------------------------------------------------------------- !
    real(kind=rk) :: elemBary(3) !< barycenter of current element
    real(kind=rk) :: length  !< element size
    integer :: x(4), iCoord, iVrtx
    ! -------------------------------------------------------------------- !

    x = tem_coordOfId( treeID )
    ! Get element size
    length = tree%global%BoundingCubeLength / real( 2**x(4), kind=rk)

    ! Get Barycenter
    elemBary = tem_BaryOfId( tree, treeID )

    ! ... and calculate from there the vertex coordinates
    do iVrtx = 1, 8
      do iCoord = 1, 3
        coord( iCoord, iVrtx ) = elemBary( iCoord )                         &
          &                    + length*0.5_rk*childPosition( iVrtx, iCoord )
      enddo
    end do

  end function tem_vrtxCoordOfId