38 #include "../sm/FETISolver/feticommunicator.h" 47 #define _IFT_FETISolver_Name "feti" 48 #define _IFT_FETISolver_maxiter "maxiter" 49 #define _IFT_FETISolver_maxerr "maxerr" 50 #define _IFT_FETISolver_limit "limit" 51 #define _IFT_FETISolver_energynormflag "energynormflag" 59 #define FETISOLVER_MAX_RBM 6 60 #define FETISOLVER_ZERONUM 1.e-40 151 enum {
FETISolverZeroTag,
NumberOfRBMMsg,
RBMMessage,
QQMessage,
SolutionMessage,
ResidualMessage,
DirectionVectorMessage,
PPVectorMessage,
GammasMessage,
FETISolverIterationContinue,
FETISolverIterationBreak };
156 #endif // fetisolver_h
LinSystSolverType
The values of this type should be related not to specific solvers, but more to specific packages that...
FloatMatrix l
Rigid body motions of all partitions. On master only.
Base class for all matrices stored in sparse format.
ProcessCommunicatorBuff pcbuff
int packGammas(ProcessCommunicator &processComm)
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
int masterUnpackRBM(ProcessCommunicator &processComm)
This base class is an abstraction for all numerical methods solving sparse linear system of equations...
ProcessCommunicator processCommunicator
int packQQProducts(ProcessCommunicator &processComm)
int packResiduals(ProcessCommunicator &processComm)
int estimateMaxPackSize(IntArray &, DataStream &, int &)
IntArray se
Indices of singular equations.
int unpackGammas(ProcessCommunicator &processComm)
int unpackSolution(ProcessCommunicator &processComm)
IntArray masterCommMap
List of local nodes (at master) participating in communication (list of boundary dof managers)...
The ProcessCommunicator and corresponding buffers (represented by this class) are separated in order ...
unsigned long NM_Status
Mask defining NumMetod Status; which can be asked after finishing computation by Numerical Method...
Class implementing an array of integers.
virtual const char * giveClassName() const
int unpackPPVector(ProcessCommunicator &processComm)
IntArray rbmAddr
Addresses of initial partition contribution to rbm matrix.
int masterUnpackQQProduct(ProcessCommunicator &processComm)
This class implements the class NumericalMethod instance FETI linear algebraic equation parallel solv...
void setUpCommunicationMaps()
Sets up the communication maps.
int ni
Max number of iterations.
int packDirectionVector(ProcessCommunicator &processComm)
FETICommunicator * masterCommunicator
int packPPVector(ProcessCommunicator &processComm)
SparseMtrxType
Enumerative type used to identify the sparse matrix type.
int unpackResiduals(ProcessCommunicator &processComm)
int masterMapDirectionVector()
Class representing process communicator for engineering model.
FloatMatrix rbm
Rigid body motions.
double limit
Linear dep./indep. trigger.
virtual IRResultType initializeFrom(InputRecord *ir)
virtual LinSystSolverType giveLinSystSolverType() const
virtual NM_Status solve(SparseMtrx &A, FloatArray &b, FloatArray &x)
Solves the given linear system by LDL^T factorization.
Class representing vector of real numbers.
int energyNorm_comput_flag
Flag indicating computation of energy norm.
int unpackDirectionVector(ProcessCommunicator &processComm)
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
int packSolution(ProcessCommunicator &processComm)
FETISolver(Domain *d, EngngModel *m)
Class representing communicator for FETI solver.
virtual SparseMtrxType giveRecommendedMatrix(bool symmetric) const
Returns the recommended sparse matrix type for this solver.
int packRBM(ProcessCommunicator &processComm)
The Communicator and corresponding buffers (represented by this class) are separated in order to allo...
Abstract base class representing the "problem" under consideration.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double err
Max allowed error.
void projection(FloatArray &v, FloatMatrix &l, FloatMatrix &l1)
FloatArray w
Primary unknowns.
CommunicatorBuff * commBuff
Common Communicator buffer.