hypre_obj_SetupRHSIJ Subroutine

private impure subroutine hypre_obj_SetupRHSIJ(this)

Sets up the rhs vector.

Type Bound

hypre_obj

Arguments

Type IntentOptional Attributes Name
class(hypre_obj), intent(inout) :: this

Hypre machinery


Calls

proc~~hypre_obj_setuprhsij~~CallsGraph proc~hypre_obj_setuprhsij hypre_obj%hypre_obj_SetupRHSIJ hypre_ijvectorassemble hypre_ijvectorassemble proc~hypre_obj_setuprhsij->hypre_ijvectorassemble hypre_ijvectorcreate hypre_ijvectorcreate proc~hypre_obj_setuprhsij->hypre_ijvectorcreate hypre_ijvectorgetobject hypre_ijvectorgetobject proc~hypre_obj_setuprhsij->hypre_ijvectorgetobject hypre_ijvectorinitialize hypre_ijvectorinitialize proc~hypre_obj_setuprhsij->hypre_ijvectorinitialize hypre_ijvectorsetobjecttype hypre_ijvectorsetobjecttype proc~hypre_obj_setuprhsij->hypre_ijvectorsetobjecttype hypre_ijvectorsetvalues hypre_ijvectorsetvalues proc~hypre_obj_setuprhsij->hypre_ijvectorsetvalues

Called by

proc~~hypre_obj_setuprhsij~~CalledByGraph proc~hypre_obj_setuprhsij hypre_obj%hypre_obj_SetupRHSIJ proc~hypre_obj_setup hypre_obj%hypre_obj_Setup proc~hypre_obj_setup->proc~hypre_obj_setuprhsij proc~cdifs_obj_preparesolveroperatorsplap cdifs_obj_PrepareSolverOperatorsPLAP proc~cdifs_obj_preparesolveroperatorsplap->proc~hypre_obj_setup proc~cdifs_obj_preparesolveroperatorsvflap cdifs_obj_PrepareSolverOperatorsVFLAP proc~cdifs_obj_preparesolveroperatorsvflap->proc~hypre_obj_setup proc~grans_obj_preparesolveroperators grans_obj_PrepareSolverOperators proc~grans_obj_preparesolveroperators->proc~hypre_obj_setup proc~marker_set_computesolidvolfrac marker_set%marker_set_ComputeSolidVolFrac proc~marker_set_computesolidvolfrac->proc~hypre_obj_setup proc~cdifs_obj_preparesolveroperators cdifs_obj_PrepareSolverOperators proc~cdifs_obj_preparesolveroperators->proc~cdifs_obj_preparesolveroperatorsplap proc~cdifs_obj_preparesolveroperators->proc~cdifs_obj_preparesolveroperatorsvflap proc~grans_obj_preparesolver grans_obj_PrepareSolver proc~grans_obj_preparesolver->proc~grans_obj_preparesolveroperators interface~grans_obj_preparesolver grans_obj%grans_obj_PrepareSolver interface~grans_obj_preparesolver->proc~grans_obj_preparesolver proc~cdifs_obj_preparesolver cdifs_obj_PrepareSolver proc~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolveroperators interface~cdifs_obj_preparesolver cdifs_obj%cdifs_obj_PrepareSolver interface~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolver

Source Code

    impure subroutine hypre_obj_SetupRHSIJ(this)
      !> Sets up the rhs vector.
      implicit none
      class(hypre_obj), intent(inout) :: this                                  !! Hypre machinery
      ! Work variables
      integer :: ierr
      integer :: n,i,j,k

      call HYPRE_IJVectorCreate(this%comm,this%irow_lo,this%irow_hi, this%rhs , ierr)
      call HYPRE_IJVectorSetObjectType(this%rhs, HYPRE_PARCSR, ierr)
      call HYPRE_IJVectorInitialize(this%rhs,ierr)

      associate(lo=>this%block%lo, hi=>this%block%hi, irow=>this%irow, &
          irow_hi=>this%irow_hi,irow_lo =>this%irow_lo)
        n = 0
        do k=lo(3),hi(3)
          do j=lo(2),hi(2)
            do i=lo(1),hi(1)
              n = n + 1
              this%rhs_values(n) = 0.0_wp
              this%rows(n)       = irow%cell(i,j,k)
            end do
          end do
        end do
        call HYPRE_IJVectorSetValues(this%rhs, irow_hi-irow_lo+1,this%rows,this%rhs_values,  ierr)
      end associate

      call HYPRE_IJVectorAssemble(this%rhs, ierr)
      call HYPRE_IJVectorGetObject(this%rhs, this%par_rhs, ierr)

      return
    end subroutine hypre_obj_SetupRHSIJ