PetIBM 0.5.4
Toolbox and applications of the immersed-boundary method for distributed-memory architectures
petibm::linsolver::LinSolverKSP Class Reference

Iterative solver using PETSc KSP. More...

#include <linsolverksp.h>

Inheritance diagram for petibm::linsolver::LinSolverKSP:
[legend]

Public Member Functions

 LinSolverKSP (const std::string &solverName, const std::string &file)
 Constructor. More...
 
virtual ~LinSolverKSP ()
 Default destructor. More...
 
virtual PetscErrorCode destroy ()
 Manually destroy the data in the current instance. More...
 
virtual PetscErrorCode setMatrix (const Mat &A)
 Set the coefficient matrix of the linear system. More...
 
virtual PetscErrorCode solve (Vec &x, Vec &b)
 Solve the linear system. More...
 
virtual PetscErrorCode getIters (PetscInt &iters)
 Get the number of iterations of the solver. More...
 
virtual PetscErrorCode getResidual (PetscReal &res)
 Get the final residual of the solver. More...
 
PetscErrorCode printInfo () const
 Print information to standard output. More...
 
PetscErrorCode getType (std::string &_type) const
 Get the type of this instance. More...
 

Protected Member Functions

virtual PetscErrorCode init ()
 Private initialization function. More...
 

Protected Attributes

KSP ksp
 the underlying KSP solver More...
 
std::string name
 Name of the linear solver. More...
 
std::string config
 Path of the solver configuration file to read. More...
 
std::string type
 Type of the linear solver. More...
 

Detailed Description

Iterative solver using PETSc KSP.

This class holds a KSP object from PETSc. The configuration of this underlying KSP solver will be read from the provided argument file.

See also
petibm::type::LinSolver, petibm::linsolver::createLinSolver.

Definition at line 28 of file linsolverksp.h.

Constructor & Destructor Documentation

◆ LinSolverKSP()

petibm::linsolver::LinSolverKSP::LinSolverKSP ( const std::string &  solverName,
const std::string &  file 
)

Constructor.

Parameters
solverName[in] Name of the solver.
file[in] Path of the configuration file for the solver.

The argument name will be used as a prefix for the configuration of the underlying KSP solver in the provided configuration file.

Definition at line 16 of file linsolverksp.cpp.

◆ ~LinSolverKSP()

petibm::linsolver::LinSolverKSP::~LinSolverKSP ( )
virtual

Default destructor.

Definition at line 23 of file linsolverksp.cpp.

Member Function Documentation

◆ destroy()

PetscErrorCode petibm::linsolver::LinSolverKSP::destroy ( )
virtual

Manually destroy the data in the current instance.

Reimplemented from petibm::linsolver::LinSolverBase.

Definition at line 37 of file linsolverksp.cpp.

◆ getIters()

PetscErrorCode petibm::linsolver::LinSolverKSP::getIters ( PetscInt &  iters)
virtual

Get the number of iterations of the solver.

Parameters
iters[out] Number of iterations.

Implements petibm::linsolver::LinSolverBase.

Definition at line 110 of file linsolverksp.cpp.

◆ getResidual()

PetscErrorCode petibm::linsolver::LinSolverKSP::getResidual ( PetscReal &  res)
virtual

Get the final residual of the solver.

Parameters
res[out] Residual.

Implements petibm::linsolver::LinSolverBase.

Definition at line 122 of file linsolverksp.cpp.

◆ getType()

PetscErrorCode petibm::linsolver::LinSolverBase::getType ( std::string &  _type) const
inherited

Get the type of this instance.

Parameters
_type[out] String representing the type.

Possible returns for _type are NVIDIA AmgX or PETSc KSP.

Definition at line 49 of file linsolver.cpp.

◆ init()

PetscErrorCode petibm::linsolver::LinSolverKSP::init ( )
protectedvirtual

Private initialization function.

The design of linear solver classes is that only the factory function can initialize the instances, and it doesn't allow user to declare instance first and initialize the instance later. So it seems not necessary to make initialization function public.

Implements petibm::linsolver::LinSolverBase.

Definition at line 48 of file linsolverksp.cpp.

◆ printInfo()

PetscErrorCode petibm::linsolver::LinSolverBase::printInfo ( ) const
inherited

Print information to standard output.

Definition at line 29 of file linsolver.cpp.

◆ setMatrix()

PetscErrorCode petibm::linsolver::LinSolverKSP::setMatrix ( const Mat &  A)
virtual

Set the coefficient matrix of the linear system.

Parameters
A[in] Coefficient matrix.

Implements petibm::linsolver::LinSolverBase.

Definition at line 72 of file linsolverksp.cpp.

◆ solve()

PetscErrorCode petibm::linsolver::LinSolverKSP::solve ( Vec &  x,
Vec &  b 
)
virtual

Solve the linear system.

Parameters
x[in, out] Vector of unknowns.
b[in] Right-hand side of the linear system.

Implements petibm::linsolver::LinSolverBase.

Definition at line 85 of file linsolverksp.cpp.

Member Data Documentation

◆ config

std::string petibm::linsolver::LinSolverBase::config
protectedinherited

Path of the solver configuration file to read.

Definition at line 132 of file linsolver.h.

◆ ksp

KSP petibm::linsolver::LinSolverKSP::ksp
protected

the underlying KSP solver

Definition at line 58 of file linsolverksp.h.

◆ name

std::string petibm::linsolver::LinSolverBase::name
protectedinherited

Name of the linear solver.

The name should match the prefix used for to configure the solver from the command line or from a configuration file. For example, if the name is "velocity", the prefix should be "_velocity".

Definition at line 129 of file linsolver.h.

◆ type

std::string petibm::linsolver::LinSolverBase::type
protectedinherited

Type of the linear solver.

Definition at line 135 of file linsolver.h.


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