GEOS
Public Types | Public Member Functions | Friends | List of all members
geos::HypredriveSolver Class Referencefinal

Linear solver adapter that routes GEOS Hypre systems through hypredrive. More...

#include <hypredrive.hpp>

Inheritance diagram for geos::HypredriveSolver:
Inheritance graph
[legend]

Public Types

using Base = LinearSolverBase< HypreInterface >
 Alias for the common linear-solver base implementation.
 
- Public Types inherited from geos::LinearSolverBase< HypreInterface >
using Base = PreconditionerBase< HypreInterface >
 Alias for base type.
 
using Vector = typename Base::Vector
 Alias for vector type.
 
using Matrix = typename Base::Matrix
 Alias for matrix type.
 
- Public Types inherited from geos::PreconditionerBase< HypreInterface >
using Base = LinearOperator< typename LAI::ParallelVector >
 Alias for base type.
 
using Vector = typename Base::Vector
 Alias for vector type.
 
using Matrix = typename LAI::ParallelMatrix
 Alias for matrix type.
 
- Public Types inherited from geos::LinearOperator< LAI::ParallelVector >
using Vector = LAI::ParallelVector
 Alias for template parameter.
 

Public Member Functions

 HypredriveSolver (LinearSolverParameters parameters)
 Construct a hypredrive-backed linear solver. More...
 
 ~HypredriveSolver () override
 Destroys the managed hypredrive object and releases any fallback solver state.
 
void setExecutionContext (LinearSolverExecutionContext const &context) override
 Update the execution metadata associated with subsequent solves. More...
 
void setup (HypreMatrix const &mat) override
 Build or refresh the solver/preconditioner for a matrix. More...
 
void apply (HypreVector const &src, HypreVector &dst) const override
 Apply the configured operator as a preconditioner action. More...
 
void solve (HypreVector const &rhs, HypreVector &sol) const override
 Solve the linear system with hypredrive. More...
 
void clear () override
 Reset solver-owned state and destroy any active hypredrive object.
 
- Public Member Functions inherited from geos::LinearSolverBase< HypreInterface >
 LinearSolverBase (LinearSolverParameters params)
 Constructor. More...
 
virtual void solve (Vector const &rhs, Vector &sol) const=0
 Solve preconditioned system. More...
 
LinearSolverParameters const & parameters () const
 
LinearSolverResult const & result () const
 
- Public Member Functions inherited from geos::PreconditionerBase< HypreInterface >
virtual void setup (Matrix const &mat)
 Compute the preconditioner from a matrix. More...
 
virtual globalIndex numGlobalRows () const override
 Get the number of global rows. More...
 
virtual globalIndex numGlobalCols () const override
 Get the number of global columns. More...
 
virtual localIndex numLocalRows () const override
 Get the number of local rows. More...
 
virtual localIndex numLocalCols () const override
 Get the number of local columns. More...
 
virtual MPI_Comm comm () const override
 Get the MPI communicator the matrix was created with. More...
 
bool ready () const
 Chech if preconditioner is ready to use. More...
 
Matrix const & matrix () const
 Access the matrix the preconditioner was computed from. More...
 
virtual bool hasPreconditionerMatrix () const
 Check whether the preconditioner is available in matrix (explicit) form. More...
 
virtual Matrix const & preconditionerMatrix () const
 Access the preconditioner in matrix form (whenever available). It must be overridden by the specific preconditioner. More...
 
- Public Member Functions inherited from geos::LinearOperator< LAI::ParallelVector >
 LinearOperator ()=default
 Constructor.
 
virtual ~LinearOperator ()=default
 Destructor.
 
virtual void apply (Vector const &src, Vector &dst) const=0
 Apply operator to a vector, dst = this(src). More...
 
virtual void residual (Vector const &x, Vector const &b, Vector &r) const
 Compute residual r = b - this(x). More...
 
virtual globalIndex numGlobalNonzeros () const
 
virtual localIndex numLocalNonzeros () const
 

Friends

class HypredriveSolverTestPeer
 

Additional Inherited Members

- Protected Attributes inherited from geos::LinearSolverBase< HypreInterface >
LinearSolverParameters m_params
 Parameters for the solver.
 
LinearSolverResult m_result
 Result of most recent solve (status, timings)
 

Detailed Description

Linear solver adapter that routes GEOS Hypre systems through hypredrive.

The solver owns a HYPREDRV_t handle when hypredrive is active and falls back to the legacy Hypre solver path when the requested configuration is unsupported.

Definition at line 79 of file hypredrive.hpp.

Constructor & Destructor Documentation

◆ HypredriveSolver()

geos::HypredriveSolver::HypredriveSolver ( LinearSolverParameters  parameters)
explicit

Construct a hypredrive-backed linear solver.

Parameters
parametersGEOS linear-solver parameters used to configure hypredrive.

Member Function Documentation

◆ apply()

void geos::HypredriveSolver::apply ( HypreVector const &  src,
HypreVector dst 
) const
override

Apply the configured operator as a preconditioner action.

Parameters
srcInput vector.
dstOutput vector receiving the operator application.

◆ setExecutionContext()

void geos::HypredriveSolver::setExecutionContext ( LinearSolverExecutionContext const &  context)
overridevirtual

Update the execution metadata associated with subsequent solves.

Parameters
contextCurrent solve context from the owning physics solver.

Reimplemented from geos::LinearSolverBase< HypreInterface >.

◆ setup()

void geos::HypredriveSolver::setup ( HypreMatrix const &  mat)
override

Build or refresh the solver/preconditioner for a matrix.

Parameters
matMatrix that defines the system structure and coefficients.

◆ solve()

void geos::HypredriveSolver::solve ( HypreVector const &  rhs,
HypreVector sol 
) const
override

Solve the linear system with hypredrive.

Parameters
rhsRight-hand side vector.
solInput initial guess and output solution vector.

The documentation for this class was generated from the following file: