OOFEM 3.0
Loading...
Searching...
No Matches
oofem::MKLPardisoSolver Class Reference

#include <mklpardisosolver.h>

Inheritance diagram for oofem::MKLPardisoSolver:
Collaboration diagram for oofem::MKLPardisoSolver:

Public Member Functions

 MKLPardisoSolver (Domain *d, EngngModel *m)
virtual ~MKLPardisoSolver ()
ConvergedReason solve (SparseMtrx &A, FloatArray &b, FloatArray &x) override
const char * giveClassName () const override
LinSystSolverType giveLinSystSolverType () const override
SparseMtrxType giveRecommendedMatrix (bool symmetric) const override
Public Member Functions inherited from oofem::SparseLinearSystemNM
 SparseLinearSystemNM (Domain *d, EngngModel *m)
 Constructor.
virtual ~SparseLinearSystemNM ()
 Destructor.
std::string errorInfo (const char *func)
virtual ConvergedReason solve (SparseMtrx &A, FloatMatrix &B, FloatMatrix &X)
Public Member Functions inherited from oofem::NumericalMethod
 NumericalMethod (Domain *d, EngngModel *m)
virtual ~NumericalMethod ()
 Destructor.
EngngModelgiveEngngModel ()
virtual void initializeFrom (InputRecord &ir)
virtual void reinitialize ()
virtual void setDomain (Domain *d)
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)

Additional Inherited Members

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

Detailed Description

Implements the solution of linear system of equation in the form \( A\cdot x=b \) using solvers from MKL Pardiso. It will not work with Pardiso 5.0. Only works with the CSC (compressed sparse column) sparse matrix implementation.

Author
Mikael Öhman

Definition at line 52 of file mklpardisosolver.h.

Constructor & Destructor Documentation

◆ MKLPardisoSolver()

oofem::MKLPardisoSolver::MKLPardisoSolver ( Domain * d,
EngngModel * m )

Constructor.

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

Definition at line 52 of file mklpardisosolver.C.

References oofem::SparseLinearSystemNM::SparseLinearSystemNM().

◆ ~MKLPardisoSolver()

oofem::MKLPardisoSolver::~MKLPardisoSolver ( )
virtual

Definition at line 54 of file mklpardisosolver.C.

Member Function Documentation

◆ giveClassName()

const char * oofem::MKLPardisoSolver::giveClassName ( ) const
inlineoverridevirtual

Implements oofem::SparseLinearSystemNM.

Definition at line 65 of file mklpardisosolver.h.

◆ giveLinSystSolverType()

LinSystSolverType oofem::MKLPardisoSolver::giveLinSystSolverType ( ) const
inlineoverridevirtual
Returns
LinSystSolverType value, corresponding to receiver.

Implements oofem::SparseLinearSystemNM.

Definition at line 66 of file mklpardisosolver.h.

References oofem::ST_MKLPardiso.

◆ giveRecommendedMatrix()

SparseMtrxType oofem::MKLPardisoSolver::giveRecommendedMatrix ( bool symmetric) const
inlineoverridevirtual

Returns the recommended sparse matrix type for this solver.

Implements oofem::SparseLinearSystemNM.

Definition at line 67 of file mklpardisosolver.h.

References oofem::SMT_CompCol.

◆ solve()

ConvergedReason oofem::MKLPardisoSolver::solve ( SparseMtrx & A,
FloatArray & b,
FloatArray & x )
overridevirtual

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.
Todo
pardisoinit seems to write outside this array
Todo
I might be misunderstanding something, but this iterative solver still does a full factorization. No options for incomplete factorizations.
Todo
I have no idea if this is suitable value. Examples use 2. / Mikael
Todo
This is not included in the table of options for some reason!

Implements oofem::SparseLinearSystemNM.

Definition at line 56 of file mklpardisosolver.C.

References oofem::FloatArray::computeSquaredNorm(), oofem::CR_CONVERGED, oofem::CR_FAILED, oofem::Timer::getUtime(), oofem::CompCol::giveColPtr(), oofem::FloatArray::givePointer(), oofem::IntArray::givePointer(), oofem::CompCol::giveRowIndex(), oofem::FloatArray::giveSize(), oofem::CompCol::giveValues(), OOFEM_ERROR, OOFEM_LOG_DEBUG, OOFEM_LOG_INFO, OOFEM_WARNING, pardiso(), pardisoinit(), oofem::FloatArray::resize(), oofem::Timer::startTimer(), and oofem::Timer::stopTimer().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011