This function provides the coordinates of the element barycenters for a set of given element coordinates on the same refinement level.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | coord(nPoints,3) | |||
integer, | intent(in) | :: | nPoints | |||
real(kind=rk), | intent(in) | :: | origin(3) |
spatial index triple for a given ID |
||
real(kind=rk), | intent(in) | :: | dx |
pure function tem_BaryOfCoord(coord, nPoints, origin, dx) result(bary)
! -------------------------------------------------------------------- !
integer, intent(in) :: nPoints !< Number of points to evaluate
integer, intent(in) :: coord(nPoints,3)
!> spatial index triple for a given ID
real(kind=rk), intent(in) :: origin(3) !< origin of the universe cube
real(kind=rk), intent(in) :: dx !< size of the elements
real(kind=rk) :: bary(nPoints,3) !< barycenter to return
! -------------------------------------------------------------------- !
integer :: ii
real(kind=rk) :: c(3)
! -------------------------------------------------------------------- !
! bary = origin + ( coord + 0.5 ) * dx
! = origin + coord * dx + 0.5dx
! = c + coord * dx
c(:) = origin(:) + 0.5_rk * dx
do ii = 1, nPoints
bary(ii,1) = c(1) + real(coord(ii,1), kind=rk) * dx
bary(ii,2) = c(2) + real(coord(ii,2), kind=rk) * dx
bary(ii,3) = c(3) + real(coord(ii,3), kind=rk) * dx
end do
end function tem_BaryOfCoord