subroutine BuildElementBBoxes_3D(geometry,N,nElem,bbMin,bbMax)
implicit none
type(SEMHex),intent(in) :: geometry
integer,intent(in) :: N,nElem
real(prec),intent(out) :: bbMin(1:3,1:nElem),bbMax(1:3,1:nElem)
! Local
integer :: iEl,i,j,k
real(prec) :: xv,yv,zv
do iEl = 1,nElem
bbMin(1,iEl) = huge(1.0_prec)
bbMin(2,iEl) = huge(1.0_prec)
bbMin(3,iEl) = huge(1.0_prec)
bbMax(1,iEl) = -huge(1.0_prec)
bbMax(2,iEl) = -huge(1.0_prec)
bbMax(3,iEl) = -huge(1.0_prec)
do k = 1,N+1
do j = 1,N+1
do i = 1,N+1
xv = geometry%x%interior(i,j,k,iEl,1,1)
yv = geometry%x%interior(i,j,k,iEl,1,2)
zv = geometry%x%interior(i,j,k,iEl,1,3)
if(xv < bbMin(1,iEl)) bbMin(1,iEl) = xv
if(yv < bbMin(2,iEl)) bbMin(2,iEl) = yv
if(zv < bbMin(3,iEl)) bbMin(3,iEl) = zv
if(xv > bbMax(1,iEl)) bbMax(1,iEl) = xv
if(yv > bbMax(2,iEl)) bbMax(2,iEl) = yv
if(zv > bbMax(3,iEl)) bbMax(3,iEl) = zv
enddo
enddo
enddo
enddo
endsubroutine BuildElementBBoxes_3D