BoundaryInterp_Scalar3D_t Subroutine

public subroutine BoundaryInterp_Scalar3D_t(this)

Arguments

TypeIntentOptionalAttributesName
class(Scalar3D_t), intent(inout) :: this

Contents


Source Code

  subroutine BoundaryInterp_Scalar3D_t(this)
    implicit none
    class(Scalar3D_t),intent(inout) :: this
    ! Local
    integer :: i,j,ii,iel,ivar
    real(prec) :: fbb,fbs,fbe,fbn,fbw,fbt

    do concurrent(i=1:this%N+1,j=1:this%N+1, &
                  iel=1:this%nelem,ivar=1:this%nvar)

      fbb = 0.0_prec
      fbs = 0.0_prec
      fbe = 0.0_prec
      fbn = 0.0_prec
      fbw = 0.0_prec
      fbt = 0.0_prec

      do ii = 1,this%N+1
        fbb = fbb+this%interp%bMatrix(ii,1)*this%interior(i,j,ii,iel,ivar) ! Bottom
        fbs = fbs+this%interp%bMatrix(ii,1)*this%interior(i,ii,j,iel,ivar) ! South
        fbe = fbe+this%interp%bMatrix(ii,2)*this%interior(ii,i,j,iel,ivar) ! East
        fbn = fbn+this%interp%bMatrix(ii,2)*this%interior(i,ii,j,iel,ivar) ! North
        fbw = fbw+this%interp%bMatrix(ii,1)*this%interior(ii,i,j,iel,ivar) ! West
        fbt = fbt+this%interp%bMatrix(ii,2)*this%interior(i,j,ii,iel,ivar) ! Top
      enddo

      this%boundary(i,j,1,iel,ivar) = fbb
      this%boundary(i,j,2,iel,ivar) = fbs
      this%boundary(i,j,3,iel,ivar) = fbe
      this%boundary(i,j,4,iel,ivar) = fbn
      this%boundary(i,j,5,iel,ivar) = fbw
      this%boundary(i,j,6,iel,ivar) = fbt

    enddo

  endsubroutine BoundaryInterp_Scalar3D_t