OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::PetscSolver Class Reference

Implements the solution of linear system of equation in the form $A\cdot x=b$ using solvers from PETSc library. More...

#include <petscsolver.h>

+ Inheritance diagram for oofem::PetscSolver:
+ Collaboration diagram for oofem::PetscSolver:

Public Member Functions

 PetscSolver (Domain *d, EngngModel *m)
 Constructor. More...
 
virtual ~PetscSolver ()
 
virtual NM_Status solve (SparseMtrx &A, FloatArray &b, FloatArray &x)
 Solves the given sparse linear system of equations $ A\cdot x=b $. More...
 
NM_Status petsc_solve (PetscSparseMtrx &A, Vec b, Vec x)
 Solves the given linear system. More...
 
virtual const char * giveClassName () const
 
virtual LinSystSolverType giveLinSystSolverType () const
 
virtual SparseMtrxType giveRecommendedMatrix (bool symmetric) const
 Returns the recommended sparse matrix type for this solver. More...
 
- Public Member Functions inherited from oofem::SparseLinearSystemNM
 SparseLinearSystemNM (Domain *d, EngngModel *m)
 Constructor. More...
 
virtual ~SparseLinearSystemNM ()
 Destructor. More...
 
std::string errorInfo (const char *func)
 
virtual NM_Status solve (SparseMtrx &A, FloatMatrix &B, FloatMatrix &X)
 Solves the given sparse linear system of equations $ A\cdot X=B $. More...
 
- Public Member Functions inherited from oofem::NumericalMethod
 NumericalMethod (Domain *d, EngngModel *m)
 Constructor. More...
 
virtual ~NumericalMethod ()
 Destructor. More...
 
EngngModelgiveEngngModel ()
 
virtual IRResultType initializeFrom (InputRecord *ir)
 
virtual void reinitialize ()
 Reinitializes the receiver. More...
 
virtual void setDomain (Domain *d)
 
virtual contextIOResultType saveContext (DataStream &stream, ContextMode mode, void *obj=NULL)
 
virtual contextIOResultType restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL)
 

Additional Inherited Members

- Protected Attributes inherited from oofem::NumericalMethod
Domaindomain
 Pointer to domain. More...
 
EngngModelengngModel
 Pointer to engineering model. More...
 

Detailed Description

Implements the solution of linear system of equation in the form $A\cdot x=b$ using solvers from PETSc library.

Only works with the PETSc sparse matrix implementation.

Definition at line 51 of file petscsolver.h.

Constructor & Destructor Documentation

oofem::PetscSolver::PetscSolver ( Domain d,
EngngModel m 
)

Constructor.

Parameters
dDomain which solver belongs to.
mEngineering model which solver belongs to.

Definition at line 50 of file petscsolver.C.

oofem::PetscSolver::~PetscSolver ( )
virtual

Definition at line 52 of file petscsolver.C.

Member Function Documentation

virtual const char* oofem::PetscSolver::giveClassName ( ) const
inlinevirtual

Implements oofem::SparseLinearSystemNM.

Definition at line 74 of file petscsolver.h.

virtual LinSystSolverType oofem::PetscSolver::giveLinSystSolverType ( ) const
inlinevirtual
Returns
LinSystSolverType value, corresponding to receiver.

Implements oofem::SparseLinearSystemNM.

Definition at line 75 of file petscsolver.h.

References oofem::ST_Petsc.

virtual SparseMtrxType oofem::PetscSolver::giveRecommendedMatrix ( bool  symmetric) const
inlinevirtual

Returns the recommended sparse matrix type for this solver.

Implements oofem::SparseLinearSystemNM.

Definition at line 76 of file petscsolver.h.

References oofem::SMT_PetscMtrx.

NM_Status oofem::PetscSolver::solve ( SparseMtrx A,
FloatArray b,
FloatArray x 
)
virtual

Solves the given sparse linear system of equations $ A\cdot x=b $.

Parameters
ACoefficient matrix.
bRight hand side.
xSolution array.
Returns
Status of the solver.

Implements oofem::SparseLinearSystemNM.

Definition at line 54 of file petscsolver.C.

References oofem::PetscSparseMtrx::createVecGlobal(), oofem::FloatArray::giveSize(), OOFEM_ERROR, petsc_solve(), oofem::FloatArray::resize(), oofem::PetscSparseMtrx::scatterG2L(), and oofem::PetscSparseMtrx::scatterL2G().

Referenced by petsc_solve().


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:39 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011