OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Implements the solution of linear system of equation in the form using solvers from PETSc library. More...
#include <petscsolver.h>
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 . 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 . More... | |
Public Member Functions inherited from oofem::NumericalMethod | |
NumericalMethod (Domain *d, EngngModel *m) | |
Constructor. More... | |
virtual | ~NumericalMethod () |
Destructor. More... | |
EngngModel * | giveEngngModel () |
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 | |
Domain * | domain |
Pointer to domain. More... | |
EngngModel * | engngModel |
Pointer to engineering model. More... | |
Implements the solution of linear system of equation in the form using solvers from PETSc library.
Only works with the PETSc sparse matrix implementation.
Definition at line 51 of file petscsolver.h.
oofem::PetscSolver::PetscSolver | ( | Domain * | d, |
EngngModel * | m | ||
) |
Constructor.
d | Domain which solver belongs to. |
m | Engineering model which solver belongs to. |
Definition at line 50 of file petscsolver.C.
|
virtual |
Definition at line 52 of file petscsolver.C.
|
inlinevirtual |
Implements oofem::SparseLinearSystemNM.
Definition at line 74 of file petscsolver.h.
|
inlinevirtual |
Implements oofem::SparseLinearSystemNM.
Definition at line 75 of file petscsolver.h.
References oofem::ST_Petsc.
|
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::petsc_solve | ( | PetscSparseMtrx & | A, |
Vec | b, | ||
Vec | x | ||
) |
Solves the given linear system.
A | Coefficient matrix. |
b | Right hand side (PETSC Vec(tor)). |
x | Solution array(PETSC Vec(tor)). |
Definition at line 90 of file petscsolver.C.
References oofem::NumericalMethod::engngModel, oofem::Timer::getUtime(), oofem::PetscSparseMtrx::giveMtrx(), oofem::FloatMatrix::giveNumberOfColumns(), oofem::FloatMatrix::giveNumberOfRows(), oofem::EngngModel::giveParallelComm(), oofem::FloatMatrix::givePointer(), oofem::EngngModel::giveProblemScale(), oofem::PetscSparseMtrx::ksp, oofem::PetscSparseMtrx::kspInit, oofem::macroScale, oofem::PetscSparseMtrx::newValues, NM_NoSuccess, NM_Success, OOFEM_ERROR, OOFEM_LOG_INFO, OOFEM_WARNING, oofem::EngngModel::requiresUnknownsDictionaryUpdate(), oofem::FloatMatrix::resize(), solve(), oofem::Timer::startTimer(), and oofem::Timer::stopTimer().
Referenced by solve().
|
virtual |
Solves the given sparse linear system of equations .
A | Coefficient matrix. |
b | Right hand side. |
x | Solution array. |
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().