DiracDelta_3D_Points Subroutine

public subroutine DiracDelta_3D_Points(this, geometry, scalar)

GPU override of DiracDelta_3D_Points_t. See DiracDelta_2D_Points.

Arguments

TypeIntentOptionalAttributesName
class(Points), intent(in) :: this
type(SEMHex), intent(in) :: geometry
class(MappedScalar3D_t), intent(inout) :: scalar

Calls

proc~~diracdelta_3d_points~~CallsGraph proc~diracdelta_3d_points DiracDelta_3D_Points interface~diracdelta_3d_gpu DiracDelta_3D_gpu proc~diracdelta_3d_points->interface~diracdelta_3d_gpu

Contents

Source Code


Source Code

  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