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

#include <fetisolver.h>

Inheritance diagram for oofem::FETISolver:
Collaboration diagram for oofem::FETISolver:

Public Types

enum  {
  FETISolverZeroTag , NumberOfRBMMsg , RBMMessage , QQMessage ,
  SolutionMessage , ResidualMessage , DirectionVectorMessage , PPVectorMessage ,
  GammasMessage , FETISolverIterationContinue , FETISolverIterationBreak
}

Public Member Functions

 FETISolver (Domain *d, EngngModel *m)
virtual ~FETISolver ()
ConvergedReason solve (SparseMtrx &A, FloatArray &b, FloatArray &x) override
int estimateMaxPackSize (IntArray &, DataStream &, int &)
void setUpCommunicationMaps ()
 Sets up the communication maps.
void initializeFrom (InputRecord &ir) override
const char * giveClassName () const override
LinSystSolverType giveLinSystSolverType () const override
void projection (FloatArray &v, FloatMatrix &l, FloatMatrix &l1)
int packRBM (ProcessCommunicator &processComm)
int masterUnpackRBM (ProcessCommunicator &processComm)
int packQQProducts (ProcessCommunicator &processComm)
int masterUnpackQQProduct (ProcessCommunicator &processComm)
int packSolution (ProcessCommunicator &processComm)
int unpackSolution (ProcessCommunicator &processComm)
int packResiduals (ProcessCommunicator &processComm)
int unpackResiduals (ProcessCommunicator &processComm)
int packDirectionVector (ProcessCommunicator &processComm)
int unpackDirectionVector (ProcessCommunicator &processComm)
int packPPVector (ProcessCommunicator &processComm)
int unpackPPVector (ProcessCommunicator &processComm)
int packGammas (ProcessCommunicator &processComm)
int unpackGammas (ProcessCommunicator &processComm)
int masterMapRBM ()
int masterMapQQProduct ()
int masterMapSolution ()
int masterMapResiduals ()
int masterMapDirectionVector ()
int masterMapPPVector ()
int masterMapGammas ()
virtual SparseMtrxType giveRecommendedMatrix (bool symmetric) const
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 Attributes

int nse
int ni
 Max number of iterations.
double err
 Max allowed error.
double limit
 Linear dep./indep. trigger.
FloatMatrix rbm
 Rigid body motions.
FloatMatrix l
 Rigid body motions of all partitions. On master only.
IntArray se
 Indices of singular equations.
IntArray rbmAddr
 Addresses of initial partition contribution to rbm matrix.
FloatArray w
 Primary unknowns.
FloatArray qq
FloatArray q
FloatArray dd
FloatArray g
FloatArray d
FloatArray p
FloatArray pp
FloatArray gamma
FloatArray localGammas
IntArray nsem
ProcessCommunicatorBuff pcbuff
ProcessCommunicator processCommunicator
CommunicatorBuffcommBuff
 Common Communicator buffer.
FETICommunicatormasterCommunicator
IntArray masterCommMap
 List of local nodes (at master) participating in communication (list of boundary dof managers).
int energyNorm_comput_flag
 Flag indicating computation of energy norm.

Additional Inherited Members

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

Detailed Description

This class implements the class NumericalMethod instance FETI linear algebraic equation parallel solver.

Definition at line 68 of file fetisolver.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
FETISolverZeroTag 
NumberOfRBMMsg 
RBMMessage 
QQMessage 
SolutionMessage 
ResidualMessage 
DirectionVectorMessage 
PPVectorMessage 
GammasMessage 
FETISolverIterationContinue 
FETISolverIterationBreak 

Definition at line 152 of file fetisolver.h.

Constructor & Destructor Documentation

◆ FETISolver()

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

◆ ~FETISolver()

oofem::FETISolver::~FETISolver ( )
virtual

Definition at line 59 of file fetisolver.C.

References commBuff, oofem::NumericalMethod::engngModel, and masterCommunicator.

Member Function Documentation

◆ estimateMaxPackSize()

int oofem::FETISolver::estimateMaxPackSize ( IntArray & map,
DataStream & buff,
int & packUnpackType )

◆ giveClassName()

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

Implements oofem::SparseLinearSystemNM.

Definition at line 124 of file fetisolver.h.

◆ giveLinSystSolverType()

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

Implements oofem::SparseLinearSystemNM.

Definition at line 125 of file fetisolver.h.

References oofem::ST_Feti.

◆ giveRecommendedMatrix()

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

Returns the recommended sparse matrix type for this solver.

Implements oofem::SparseLinearSystemNM.

Definition at line 153 of file fetisolver.h.

References oofem::SMT_Skyline, and oofem::SMT_SkylineU.

◆ initializeFrom()

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

◆ masterMapDirectionVector()

int oofem::FETISolver::masterMapDirectionVector ( )

◆ masterMapGammas()

int oofem::FETISolver::masterMapGammas ( )

Definition at line 995 of file fetisolver.C.

References gamma, localGammas, nse, and rbmAddr.

Referenced by solve().

◆ masterMapPPVector()

int oofem::FETISolver::masterMapPPVector ( )

◆ masterMapQQProduct()

int oofem::FETISolver::masterMapQQProduct ( )

Definition at line 422 of file fetisolver.C.

References nsem, q, qq, and rbmAddr.

Referenced by solve().

◆ masterMapRBM()

int oofem::FETISolver::masterMapRBM ( )

◆ masterMapResiduals()

int oofem::FETISolver::masterMapResiduals ( )

◆ masterMapSolution()

int oofem::FETISolver::masterMapSolution ( )

◆ masterUnpackQQProduct()

◆ masterUnpackRBM()

◆ packDirectionVector()

◆ packGammas()

◆ packPPVector()

◆ packQQProducts()

◆ packRBM()

◆ packResiduals()

◆ packSolution()

◆ projection()

void oofem::FETISolver::projection ( FloatArray & v,
FloatMatrix & l,
FloatMatrix & l1 )

◆ setUpCommunicationMaps()

void oofem::FETISolver::setUpCommunicationMaps ( )

◆ solve()

◆ unpackDirectionVector()

◆ unpackGammas()

◆ unpackPPVector()

◆ unpackResiduals()

◆ unpackSolution()

Member Data Documentation

◆ commBuff

CommunicatorBuff* oofem::FETISolver::commBuff
private

Common Communicator buffer.

Definition at line 96 of file fetisolver.h.

Referenced by setUpCommunicationMaps(), solve(), and ~FETISolver().

◆ d

FloatArray oofem::FETISolver::d
private

Definition at line 89 of file fetisolver.h.

Referenced by FETISolver(), masterMapDirectionVector(), packDirectionVector(), and solve().

◆ dd

FloatArray oofem::FETISolver::dd
private

◆ energyNorm_comput_flag

int oofem::FETISolver::energyNorm_comput_flag
private

Flag indicating computation of energy norm.

Definition at line 101 of file fetisolver.h.

Referenced by FETISolver(), initializeFrom(), and solve().

◆ err

double oofem::FETISolver::err
private

Max allowed error.

Definition at line 75 of file fetisolver.h.

Referenced by FETISolver(), initializeFrom(), and solve().

◆ g

FloatArray oofem::FETISolver::g
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapResiduals(), solve(), and unpackResiduals().

◆ gamma

FloatArray oofem::FETISolver::gamma
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapGammas(), packGammas(), and solve().

◆ l

FloatMatrix oofem::FETISolver::l
private

Rigid body motions of all partitions. On master only.

Definition at line 81 of file fetisolver.h.

Referenced by masterMapRBM(), masterUnpackRBM(), projection(), and solve().

◆ limit

double oofem::FETISolver::limit
private

Linear dep./indep. trigger.

Definition at line 77 of file fetisolver.h.

Referenced by initializeFrom(), and solve().

◆ localGammas

FloatArray oofem::FETISolver::localGammas
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapGammas(), solve(), and unpackGammas().

◆ masterCommMap

IntArray oofem::FETISolver::masterCommMap
private

List of local nodes (at master) participating in communication (list of boundary dof managers).

Definition at line 99 of file fetisolver.h.

Referenced by masterMapDirectionVector(), masterMapPPVector(), masterMapRBM(), masterMapResiduals(), masterMapSolution(), and setUpCommunicationMaps().

◆ masterCommunicator

◆ ni

int oofem::FETISolver::ni
private

Max number of iterations.

Definition at line 73 of file fetisolver.h.

Referenced by FETISolver(), initializeFrom(), and solve().

◆ nse

int oofem::FETISolver::nse
private

Definition at line 71 of file fetisolver.h.

Referenced by masterMapGammas(), packQQProducts(), packRBM(), solve(), and unpackGammas().

◆ nsem

IntArray oofem::FETISolver::nsem
private

◆ p

FloatArray oofem::FETISolver::p
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapPPVector(), solve(), and unpackPPVector().

◆ pcbuff

ProcessCommunicatorBuff oofem::FETISolver::pcbuff
private

Definition at line 93 of file fetisolver.h.

Referenced by FETISolver().

◆ pp

FloatArray oofem::FETISolver::pp
private

◆ processCommunicator

ProcessCommunicator oofem::FETISolver::processCommunicator
private

Definition at line 94 of file fetisolver.h.

Referenced by FETISolver(), setUpCommunicationMaps(), and solve().

◆ q

FloatArray oofem::FETISolver::q
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapQQProduct(), masterUnpackQQProduct(), and solve().

◆ qq

FloatArray oofem::FETISolver::qq
private

Definition at line 89 of file fetisolver.h.

Referenced by masterMapQQProduct(), packQQProducts(), and solve().

◆ rbm

FloatMatrix oofem::FETISolver::rbm
private

Rigid body motions.

Definition at line 79 of file fetisolver.h.

Referenced by masterMapRBM(), packRBM(), and solve().

◆ rbmAddr

IntArray oofem::FETISolver::rbmAddr
private

Addresses of initial partition contribution to rbm matrix.

Definition at line 85 of file fetisolver.h.

Referenced by masterMapGammas(), masterMapQQProduct(), masterMapRBM(), masterUnpackQQProduct(), masterUnpackRBM(), packGammas(), and solve().

◆ se

IntArray oofem::FETISolver::se
private

Indices of singular equations.

Definition at line 83 of file fetisolver.h.

Referenced by solve().

◆ w

FloatArray oofem::FETISolver::w
private

Primary unknowns.

Definition at line 87 of file fetisolver.h.

Referenced by masterMapSolution(), packSolution(), and solve().


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