BuildElementBBoxes_3D Subroutine

public subroutine BuildElementBBoxes_3D(geometry, N, nElem, bbMin, bbMax)

Arguments

TypeIntentOptionalAttributesName
type(SEMHex), intent(in) :: geometry
integer, intent(in) :: N
integer, intent(in) :: nElem
real(kind=prec), intent(out) :: bbMin(1:3,1:nElem)
real(kind=prec), intent(out) :: bbMax(1:3,1:nElem)

Called by

proc~~buildelementbboxes_3d~~CalledByGraph proc~buildelementbboxes_3d BuildElementBBoxes_3D proc~locatepoints_3d_points_t LocatePoints_3D_Points_t proc~locatepoints_3d_points_t->proc~buildelementbboxes_3d

Contents

Source Code


Source Code

  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