Gradient_Vector2D Subroutine

public subroutine Gradient_Vector2D(this, df)

Arguments

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

Calls

proc~~gradient_vector2d~~CallsGraph proc~gradient_vector2d Gradient_Vector2D proc~self_blas_matrixop_dim1_2d self_blas_matrixop_dim1_2d proc~gradient_vector2d->proc~self_blas_matrixop_dim1_2d proc~self_blas_matrixop_dim2_2d self_blas_matrixop_dim2_2d proc~gradient_vector2d->proc~self_blas_matrixop_dim2_2d hipblasgemm hipblasgemm proc~self_blas_matrixop_dim1_2d->hipblasgemm proc~hipblascheck hipblasCheck proc~self_blas_matrixop_dim1_2d->proc~hipblascheck proc~self_blas_matrixop_dim2_2d->proc~hipblascheck hipblasgemvstridedbatched hipblasgemvstridedbatched proc~self_blas_matrixop_dim2_2d->hipblasgemvstridedbatched

Contents

Source Code


Source Code

  subroutine Gradient_Vector2D(this,df)
    implicit none
    class(Vector2D),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%nelem,this%nvar,2,2])

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

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

    dfloc => null()
    df_p => null()

  endsubroutine Gradient_Vector2D