hypre_obj_SetupSolverS Subroutine

private impure subroutine hypre_obj_SetupSolverS(this)

Sets up the hypre solver.

Type Bound

hypre_obj

Arguments

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

Hypre machinery


Calls

proc~~hypre_obj_setupsolvers~~CallsGraph proc~hypre_obj_setupsolvers hypre_obj%hypre_obj_SetupSolverS hypre_structpcgcreate hypre_structpcgcreate proc~hypre_obj_setupsolvers->hypre_structpcgcreate hypre_structpcgsetlogging hypre_structpcgsetlogging proc~hypre_obj_setupsolvers->hypre_structpcgsetlogging hypre_structpcgsetmaxiter hypre_structpcgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structpcgsetmaxiter hypre_structpcgsetprintlevel hypre_structpcgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structpcgsetprintlevel hypre_structpcgsettol hypre_structpcgsettol proc~hypre_obj_setupsolvers->hypre_structpcgsettol hypre_structpcgsetup hypre_structpcgsetup proc~hypre_obj_setupsolvers->hypre_structpcgsetup hypre_structpfmgcreate hypre_structpfmgcreate proc~hypre_obj_setupsolvers->hypre_structpfmgcreate hypre_structpfmgsetlogging hypre_structpfmgsetlogging proc~hypre_obj_setupsolvers->hypre_structpfmgsetlogging hypre_structpfmgsetmaxiter hypre_structpfmgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structpfmgsetmaxiter hypre_structpfmgsetprintlevel hypre_structpfmgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structpfmgsetprintlevel hypre_structpfmgsetraptype hypre_structpfmgsetraptype proc~hypre_obj_setupsolvers->hypre_structpfmgsetraptype hypre_structpfmgsetrelaxtype hypre_structpfmgsetrelaxtype proc~hypre_obj_setupsolvers->hypre_structpfmgsetrelaxtype hypre_structpfmgsettol hypre_structpfmgsettol proc~hypre_obj_setupsolvers->hypre_structpfmgsettol hypre_structpfmgsetup hypre_structpfmgsetup proc~hypre_obj_setupsolvers->hypre_structpfmgsetup hypre_structsmgcreate hypre_structsmgcreate proc~hypre_obj_setupsolvers->hypre_structsmgcreate hypre_structsmgsetlogging hypre_structsmgsetlogging proc~hypre_obj_setupsolvers->hypre_structsmgsetlogging hypre_structsmgsetmaxiter hypre_structsmgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structsmgsetmaxiter hypre_structsmgsetnumpostrelax hypre_structsmgsetnumpostrelax proc~hypre_obj_setupsolvers->hypre_structsmgsetnumpostrelax hypre_structsmgsetnumprerelax hypre_structsmgsetnumprerelax proc~hypre_obj_setupsolvers->hypre_structsmgsetnumprerelax hypre_structsmgsetprintlevel hypre_structsmgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structsmgsetprintlevel hypre_structsmgsettol hypre_structsmgsettol proc~hypre_obj_setupsolvers->hypre_structsmgsettol hypre_structsmgsetup hypre_structsmgsetup proc~hypre_obj_setupsolvers->hypre_structsmgsetup

Called by

proc~~hypre_obj_setupsolvers~~CalledByGraph proc~hypre_obj_setupsolvers hypre_obj%hypre_obj_SetupSolverS proc~hypre_obj_setup hypre_obj%hypre_obj_Setup proc~hypre_obj_setup->proc~hypre_obj_setupsolvers 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_SetupSolverS(this)
      !> Sets up the hypre solver.
      implicit none
      class(hypre_obj), intent(inout) :: this                                  !! Hypre machinery
      ! Work variables
      integer :: ierr

      select case (this%solver_name)
      case (HYPRE_SOL_S_PCG_NONE)
        ! Create
        call HYPRE_StructPCGCreate(this%comm,this%solver, ierr)
        ! Parameterize
        call HYPRE_StructPCGSetMaxIter(     this%solver, this%MaxIt,   ierr)
        call HYPRE_StructPCGSetTol(         this%solver, this%MaxTol,  ierr)
        call HYPRE_StructPCGSetPrintLevel(  this%solver, 1,            ierr)
        call HYPRE_StructPCGSetLogging(     this%solver, 1,            ierr)
        ! Setup
        call HYPRE_StructPCGSetup(this%solver,this%matrix,this%rhs,this%sol,ierr)

      case(HYPRE_SOL_S_SMG_NONE)
        ! Create
        call HYPRE_StructSMGCreate(this%comm,this%solver,   ierr)
        ! Parameterize
        call HYPRE_StructSMGSetMaxIter(     this%solver, this%MaxIt,   ierr)
        call HYPRE_StructSMGSetTol(         this%solver, this%MaxTol,  ierr)
        call HYPRE_StructSMGSetNumPreRelax( this%solver, 1,            ierr)
        call HYPRE_StructSMGSetNumPostRelax(this%solver, 1,            ierr)
        call HYPRE_StructSMGSetPrintLevel(  this%solver, 1,            ierr)
        call HYPRE_StructSMGSetLogging(     this%solver, 1,            ierr)
        ! Setup
        call HYPRE_StructSMGSetup(this%solver,this%matrix,this%rhs,this%sol,ierr)

      case(HYPRE_SOL_S_PFMG_NONE)
        ! Create
        call HYPRE_StructPFMGCreate(this%comm,this%solver , ierr)
        ! Parameterize
        call HYPRE_StructPFMGSetMaxIter(    this%solver, this%MaxIt,    ierr)
        call HYPRE_StructPFMGSetTol(        this%solver, this%MaxTol,   ierr)
        call HYPRE_StructPFMGSetRelaxType(  this%solver, this%RelaxType,ierr)
        call HYPRE_StructPFMGSetRAPType(    this%solver, 0,             ierr)
        call HYPRE_StructPFMGSetLogging(    this%solver, 1,             ierr)
        call HYPRE_StructPFMGSetPrintLevel( this%solver, 1,             ierr)
        ! Setup
        call HYPRE_StructPFMGSetup(this%solver,this%matrix,this%rhs,this%sol,ierr)
      case default
        call this%parallel%Stop("Unknown HYPRE solver")
      end select

      return
    end subroutine hypre_obj_SetupSolverS