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

#include <superlusolver.h>

Inheritance diagram for oofem::SuperLUSolver:
Collaboration diagram for oofem::SuperLUSolver:

Public Member Functions

 SuperLUSolver (Domain *d, EngngModel *m)
virtual ~SuperLUSolver ()
 Destructor.
ConvergedReason solve (SparseMtrx &A, FloatArray &b, FloatArray &x) override
SparseMtrxType giveRecommendedMatrix (bool symmetric) const override
void initializeFrom (InputRecord &ir) override
const char * giveClassName () const override
LinSystSolverType giveLinSystSolverType () 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 reinitialize ()
virtual void setDomain (Domain *d)
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)

Private Member Functions

int_t cholnzcnt (int_t neqns, int_t *xadj, int_t *adjncy, int_t *perm, int_t *invp, int_t *etpar, int_t *colcnt, int_t *nlnz, int_t *part_super_L)
void convertRhs (SuperMatrix *A, FloatArray &x)
int_t dPrint_CompCol_Matrix (SuperMatrix *A)
int_t dPrint_Dense_Matrix (SuperMatrix *A)

Private Attributes

SparseMtrx::SparseMtrxVersionType lhsVersion
SuperMatrix A
SuperMatrix L
SuperMatrix U
bool AAllocated =false
bool LAllocated =false
bool UAllocated =false
bool permAllocated = false
int_t * perm_c
int_t * perm_r
int_t permc_spec

Additional Inherited Members

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

Detailed Description

Class implementig interface to SuperLU_MT solver. Dependencies: iml module required (CompCol) Note: There is a conflict in include file (set.h) as defined by libstdc and superlu_mt 3.1. Therefore it is assumed that superlu include files are included using #include "SUPERLU_MT/include". The ${SUPERLU_MT_DIR} is added into compiler include path. The SUPERLU_MT/include has to be manually added pointing to ${SUPERLU_MT__DIR}/src directory

Definition at line 59 of file superlusolver.h.

Constructor & Destructor Documentation

◆ SuperLUSolver()

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

References A, solve(), and SuperLUSolver().

Referenced by SuperLUSolver().

◆ ~SuperLUSolver()

oofem::SuperLUSolver::~SuperLUSolver ( )
virtual

Destructor.

Definition at line 60 of file superlusolver.C.

References A, AAllocated, L, perm_c, perm_r, permAllocated, and U.

Member Function Documentation

◆ cholnzcnt()

int_t oofem::SuperLUSolver::cholnzcnt ( int_t neqns,
int_t * xadj,
int_t * adjncy,
int_t * perm,
int_t * invp,
int_t * etpar,
int_t * colcnt,
int_t * nlnz,
int_t * part_super_L )
private

◆ convertRhs()

void oofem::SuperLUSolver::convertRhs ( SuperMatrix * A,
FloatArray & x )
private

Definition at line 358 of file superlusolver.C.

References oofem::FloatArray::at(), OOFEM_ERROR, and oofem::FloatArray::zero().

Referenced by cholnzcnt(), and solve().

◆ dPrint_CompCol_Matrix()

int_t oofem::SuperLUSolver::dPrint_CompCol_Matrix ( SuperMatrix * A)
private

Definition at line 381 of file superlusolver.C.

References A.

Referenced by cholnzcnt().

◆ dPrint_Dense_Matrix()

int_t oofem::SuperLUSolver::dPrint_Dense_Matrix ( SuperMatrix * A)
private

Definition at line 408 of file superlusolver.C.

References A.

Referenced by cholnzcnt().

◆ giveClassName()

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

Implements oofem::SparseLinearSystemNM.

Definition at line 86 of file superlusolver.h.

◆ giveLinSystSolverType()

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

Implements oofem::SparseLinearSystemNM.

Definition at line 87 of file superlusolver.h.

References oofem::ST_SuperLU_MT.

◆ giveRecommendedMatrix()

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

Returns the recommended sparse matrix type for this solver.

Implements oofem::SparseLinearSystemNM.

Definition at line 82 of file superlusolver.h.

References oofem::SMT_CompCol.

◆ initializeFrom()

void oofem::SuperLUSolver::initializeFrom ( InputRecord & ir)
overridevirtual

Reimplemented from oofem::NumericalMethod.

Definition at line 74 of file superlusolver.C.

References _IFT_SuperLUSolver_Permcspec, IR_GIVE_OPTIONAL_FIELD, and permc_spec.

◆ solve()

Member Data Documentation

◆ A

SuperMatrix oofem::SuperLUSolver::A
private

◆ AAllocated

bool oofem::SuperLUSolver::AAllocated =false
private

Definition at line 64 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ L

SuperMatrix oofem::SuperLUSolver::L
private

Definition at line 63 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ LAllocated

bool oofem::SuperLUSolver::LAllocated =false
private

Definition at line 64 of file superlusolver.h.

◆ lhsVersion

SparseMtrx::SparseMtrxVersionType oofem::SuperLUSolver::lhsVersion
private

Definition at line 62 of file superlusolver.h.

Referenced by solve().

◆ perm_c

int_t* oofem::SuperLUSolver::perm_c
private

Definition at line 66 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ perm_r

int_t* oofem::SuperLUSolver::perm_r
private

Definition at line 67 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ permAllocated

bool oofem::SuperLUSolver::permAllocated = false
private

Definition at line 65 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ permc_spec

int_t oofem::SuperLUSolver::permc_spec
private

Definition at line 68 of file superlusolver.h.

Referenced by initializeFrom(), and solve().

◆ U

SuperMatrix oofem::SuperLUSolver::U
private

Definition at line 63 of file superlusolver.h.

Referenced by solve(), and ~SuperLUSolver().

◆ UAllocated

bool oofem::SuperLUSolver::UAllocated =false
private

Definition at line 64 of file superlusolver.h.


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