Gradient_Scalar3D Subroutine

public subroutine Gradient_Scalar3D(this, df)

Arguments

TypeIntentOptionalAttributesName
class(Scalar3D), intent(in) :: this
type(c_ptr), intent(inout) :: df

Contents

Source Code


Source Code

  subroutine Gradient_Scalar3D(this,df)
    implicit none
    class(Scalar3D),intent(in) :: this
    type(c_ptr),intent(inout) :: df
    !Local
    real(prec),pointer :: df_p(:,:,:,:,:,:)
    real(prec),pointer :: dfloc(:,:,:,:,:)
    type(c_ptr) :: dfc

    call c_f_pointer(df,df_p,[this%interp%N+1,this%interp%N+1,this%interp%N+1,this%nelem,this%nvar,3])

    dfloc(1:,1:,1:,1:,1:) => df_p(1:,1:,1:,1:,1:,1)
    dfc = c_loc(dfloc)
    call self_blas_matrixop_dim1_3d(this%interp%dMatrix_gpu,this%interior_gpu,dfc, &
                                    this%interp%N,this%interp%N,this%nvar,this%nelem,this%blas_handle)

    dfloc(1:,1:,1:,1:,1:) => df_p(1:,1:,1:,1:,1:,2)
    dfc = c_loc(dfloc)
    call self_blas_matrixop_dim2_3d(this%interp%dMatrix_gpu,this%interior_gpu,dfc,0.0_c_prec, &
                                    this%interp%N,this%interp%N,this%nvar,this%nelem,this%blas_handle)

    dfloc(1:,1:,1:,1:,1:) => df_p(1:,1:,1:,1:,1:,3)
    dfc = c_loc(dfloc)
    call self_blas_matrixop_dim3_3d(this%interp%dMatrix_gpu,this%interior_gpu,dfc,0.0_c_prec, &
                                    this%interp%N,this%interp%N,this%nvar,this%nelem,this%blas_handle)
    dfloc => null()
    df_p => null()

  endsubroutine Gradient_Scalar3D