GPU override of DiracDelta_3D_Points_t. See DiracDelta_2D_Points.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Points), | intent(in) | :: | this | |||
| type(SEMHex), | intent(in) | :: | geometry | |||
| class(MappedScalar3D_t), | intent(inout) | :: | scalar |
subroutine DiracDelta_3D_Points(this,geometry,scalar)
!! GPU override of DiracDelta_3D_Points_t. See DiracDelta_2D_Points.
implicit none
class(Points),intent(in) :: this
type(SEMHex),intent(in) :: geometry
class(MappedScalar3D_t),intent(inout) :: scalar
! Local
integer :: N
select type(scalar)
type is(MappedScalar3D)
if(this%nDim /= 3) then
print*,"SELF_Points (gpu)::DiracDelta (3D): nDim must be 3"
stop 1
endif
if(scalar%nVar /= this%nPoints) then
print*,"SELF_Points (gpu)::DiracDelta (3D): scalar%nVar (",scalar%nVar, &
") must equal nPoints (",this%nPoints,")"
stop 1
endif
N = scalar%interp%N
if(this%nCached /= N .or. .not. c_associated(this%lS_cache_gpu) .or. &
.not. c_associated(this%lT_cache_gpu) .or. &
.not. c_associated(this%lU_cache_gpu)) then
print*,"SELF_Points (gpu)::DiracDelta (3D): basis cache not synchronized; ", &
"call LocatePoints (or UpdateDevice) first. nCached=", &
this%nCached," scalar%N=",N
stop 1
endif
call DiracDelta_3D_gpu(scalar%interior_gpu, &
geometry%J%interior_gpu, &
this%lS_cache_gpu,this%lT_cache_gpu,this%lU_cache_gpu, &
scalar%interp%qWeights_gpu, &
this%elements_gpu, &
N,this%nPoints,scalar%nElem,scalar%nVar)
class default
call this%Points_t%DiracDelta_3D_Points_t(geometry,scalar)
endselect
endsubroutine DiracDelta_3D_Points