hypre_obj_SetupSolS Subroutine

private impure subroutine hypre_obj_SetupSolS(this)

Setup the solution vector, and initialize it to zero

Type Bound

hypre_obj

Arguments

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

Hypre machinery


Calls

proc~~hypre_obj_setupsols~~CallsGraph proc~hypre_obj_setupsols hypre_obj%hypre_obj_SetupSolS hypre_structvectorassemble hypre_structvectorassemble proc~hypre_obj_setupsols->hypre_structvectorassemble hypre_structvectorcreate hypre_structvectorcreate proc~hypre_obj_setupsols->hypre_structvectorcreate hypre_structvectorinitialize hypre_structvectorinitialize proc~hypre_obj_setupsols->hypre_structvectorinitialize hypre_structvectorsetboxvalues hypre_structvectorsetboxvalues proc~hypre_obj_setupsols->hypre_structvectorsetboxvalues

Called by

proc~~hypre_obj_setupsols~~CalledByGraph proc~hypre_obj_setupsols hypre_obj%hypre_obj_SetupSolS proc~hypre_obj_setup hypre_obj%hypre_obj_Setup proc~hypre_obj_setup->proc~hypre_obj_setupsols 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_SetupSolS(this)
      !> Setup the solution vector, and initialize it to zero
      implicit none
      class(hypre_obj), intent(inout) :: this                                  !! Hypre machinery
      ! Work variables
      real(wp), allocatable :: values(:)
      integer :: nval
      integer :: ierr

      ! Create empty vector
      call HYPRE_StructVectorCreate(this%comm,this%grid,this%sol,ierr)
      ! Indicate vector coefficients are ready to set
      call HYPRE_StructVectorInitialize(this%sol,ierr)

      ! Initial guess is the zero vector (maybe changed later)
      nval=(this%block%hi(3)-this%block%lo(3)+1) &
          *(this%block%hi(2)-this%block%lo(2)+1) &
          *(this%block%hi(1)-this%block%lo(1)+1)

      allocate(values(nval))
      values=0.0_wp

      call HYPRE_StructVectorSetBoxValues(this%sol,this%block%lo(1:this%dim), &
           this%block%hi(1:this%dim),values(1:nval),ierr)

      deallocate(values)

      ! Assemble for future use
      call HYPRE_StructVectorAssemble(this%sol,ierr)

      return
    end subroutine hypre_obj_SetupSolS