48#define _IFT_FETISolver_Name "feti"
49#define _IFT_FETISolver_maxiter "maxiter"
50#define _IFT_FETISolver_maxerr "maxerr"
51#define _IFT_FETISolver_limit "limit"
52#define _IFT_FETISolver_energynormflag "energynormflag"
60 #define FETISOLVER_MAX_RBM 6
62 #define FETISOLVER_ZERONUM 1.e-40
152 enum {
FETISolverZeroTag,
NumberOfRBMMsg,
RBMMessage,
QQMessage,
SolutionMessage,
ResidualMessage,
DirectionVectorMessage,
PPVectorMessage,
GammasMessage,
FETISolverIterationContinue,
FETISolverIterationBreak };
int energyNorm_comput_flag
Flag indicating computation of energy norm.
int packDirectionVector(ProcessCommunicator &processComm)
int masterUnpackQQProduct(ProcessCommunicator &processComm)
FloatArray w
Primary unknowns.
FETICommunicator * masterCommunicator
double limit
Linear dep./indep. trigger.
int masterMapDirectionVector()
LinSystSolverType giveLinSystSolverType() const override
IntArray se
Indices of singular equations.
int packPPVector(ProcessCommunicator &processComm)
int unpackGammas(ProcessCommunicator &processComm)
FloatMatrix rbm
Rigid body motions.
int unpackResiduals(ProcessCommunicator &processComm)
int unpackSolution(ProcessCommunicator &processComm)
ProcessCommunicatorBuff pcbuff
FloatMatrix l
Rigid body motions of all partitions. On master only.
double err
Max allowed error.
int packQQProducts(ProcessCommunicator &processComm)
int packGammas(ProcessCommunicator &processComm)
ProcessCommunicator processCommunicator
void projection(FloatArray &v, FloatMatrix &l, FloatMatrix &l1)
IntArray masterCommMap
List of local nodes (at master) participating in communication (list of boundary dof managers).
@ FETISolverIterationContinue
@ FETISolverIterationBreak
FETISolver(Domain *d, EngngModel *m)
CommunicatorBuff * commBuff
Common Communicator buffer.
int estimateMaxPackSize(IntArray &, DataStream &, int &)
int unpackDirectionVector(ProcessCommunicator &processComm)
int packResiduals(ProcessCommunicator &processComm)
int ni
Max number of iterations.
int packRBM(ProcessCommunicator &processComm)
void setUpCommunicationMaps()
Sets up the communication maps.
int unpackPPVector(ProcessCommunicator &processComm)
ConvergedReason solve(SparseMtrx &A, FloatArray &b, FloatArray &x) override
const char * giveClassName() const override
int masterUnpackRBM(ProcessCommunicator &processComm)
virtual SparseMtrxType giveRecommendedMatrix(bool symmetric) const
int packSolution(ProcessCommunicator &processComm)
IntArray rbmAddr
Addresses of initial partition contribution to rbm matrix.
void initializeFrom(InputRecord &ir) override
SparseLinearSystemNM(Domain *d, EngngModel *m)
Constructor.
@ SMT_Skyline
Symmetric skyline.
@ SMT_SkylineU
Unsymmetric skyline.