Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Scalar3D_t), | intent(in) | :: | this | |||
real(kind=prec), | intent(out) | :: | f(1:this%M+1,1:this%M+1,1:this%M+1,1:this%nelem,1:this%nvar) | (Output) Array of function values, defined on the target grid |
subroutine GridInterp_Scalar3D_t(this,f)
implicit none
class(Scalar3D_t),intent(in) :: this
real(prec),intent(out) :: f(1:this%M+1,1:this%M+1,1:this%M+1,1:this%nelem,1:this%nvar)
!! (Output) Array of function values, defined on the target grid
! Local
integer :: i,j,k,ii,jj,kk,iel,ivar
real(prec) :: fi,fij,fijk
do concurrent(i=1:this%M+1,j=1:this%M+1, &
k=1:this%M+1,iel=1:this%nelem,ivar=1:this%nvar)
fijk = 0.0_prec
do kk = 1,this%N+1
fij = 0.0_prec
do jj = 1,this%N+1
fi = 0.0_prec
do ii = 1,this%N+1
fi = fi+this%interior(ii,jj,kk,iel,ivar)*this%interp%iMatrix(ii,i)
enddo
fij = fij+fi*this%interp%iMatrix(jj,j)
enddo
fijk = fijk+fij*this%interp%iMatrix(kk,k)
enddo
f(i,j,k,iel,ivar) = fijk
enddo
endsubroutine GridInterp_Scalar3D_t