35 #include "../sm/EngineeringModels/linearstatic.h" 36 #include "../sm/Elements/structuralelement.h" 37 #include "../sm/Elements/structuralelementevaluator.h" 50 #ifdef __PARALLEL_MODE 111 #ifdef __PARALLEL_MODE 151 OOFEM_ERROR(
"Unknown is of undefined type for this problem");
175 #ifdef __VERBOSE_PARALLEL 239 internalForces.
zero();
310 int count = 0, pcount = 0;
313 if ( packUnpackType == 0 ) {
314 for (
int map: commMap ) {
316 for (
Dof *dof: *dman ) {
317 if ( dof->isPrimaryDof() && ( dof->__giveEquationNumber() ) ) {
330 }
else if ( packUnpackType == 1 ) {
331 for (
int map: commMap ) {
LinSystSolverType
The values of this type should be related not to specific solvers, but more to specific packages that...
LinSystSolverType solverType
The representation of EngngModel default unknown numbering.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual TimeStep * giveNextStep()
Returns next time step (next to current step) of receiver.
#define NM_Success
Numerical method exited with success.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description in input reader.
virtual double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof)
Returns requested unknown.
std::unique_ptr< TimeStep > currentStep
Current time step.
Implementation for assembling internal forces vectors in standard monolithic, nonlinear FE-problems...
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
Returns number of equations for given domain in active (current time step) time step.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description in input reader.
SparseMtrx * createSparseMtrx(SparseMtrxType type)
Creates new instance of sparse matrix corresponding to given keyword.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
contextIOResultType storeYourself(DataStream &stream) const
std::unique_ptr< TimeStep > previousStep
Previous time step.
double & at(int i)
Coefficient access function.
MetaStep * giveMetaStep(int i)
Returns the i-th meta step.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual void solveYourselfAt(TimeStep *tStep)
Solves problem for given time step.
This base class is an abstraction for numerical algorithm.
Implementation for assembling tangent matrices in standard monolithic FE-problems.
bool isParallel() const
Returns true if receiver in parallel mode.
void incrementStateCounter()
Updates solution state counter.
Base class for dof managers.
int giveNumberOfProcesses() const
Returns the number of collaborating processes.
virtual void solveYourself()
Starts solution process.
virtual int __giveEquationNumber() const =0
Returns equation number of receiver, usually assigned by emodel.
LinearStatic(int i, EngngModel *_master=NULL)
REGISTER_EngngModel(ProblemSequence)
unsigned long NM_Status
Mask defining NumMetod Status; which can be asked after finishing computation by Numerical Method...
#define OOFEM_LOG_DEBUG(...)
Class implementing an array of integers.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode)
Stores the state of model to output stream.
virtual void assemble(SparseMtrx &answer, TimeStep *tStep, const MatrixAssembler &ma, const UnknownNumberingScheme &s, Domain *domain)
Assembles characteristic matrix of required type into given sparse matrix.
MetaStep * giveCurrentMetaStep()
Returns current meta step.
#define OOFEM_LOG_INFO(...)
Element * giveElement(int n)
Service for accessing particular domain fe element.
std::unique_ptr< SparseLinearSystemNM > nMethod
Numerical method used to solve the problem.
#define _IFT_EngngModel_smtype
int ndomains
Number of receiver domains.
int updateSharedDofManagers(FloatArray &answer, const UnknownNumberingScheme &s, int ExchangeTag)
Exchanges necessary remote DofManagers data.
SparseMtrxType
Enumerative type used to identify the sparse matrix type.
Implementation for assembling external forces vectors in standard monolithic FE-problems.
contextIOResultType restoreYourself(DataStream &stream)
ProblemCommunicator * communicator
Communicator.
virtual void solveYourself()
Starts solution process.
CommunicatorBuff * commBuff
Common Communicator buffer.
SparseMtrxType sparseMtrxType
virtual void updateDomainLinks()
Updates domain links after the domains of receiver have changed.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode)
Stores the state of model to output stream.
Initializes the variable VERBOSE, in order to get a few intermediate messages on screen: beginning an...
Class representing vector of real numbers.
int estimatePackSize(DataStream &buff)
Estimates the necessary pack size to hold all packed data of receiver.
SparseLinearSystemNM * createSparseLinSolver(LinSystSolverType st, Domain *d, EngngModel *m)
Creates new instance of SparseLinearSystemNM corresponding to given type.
#define _IFT_EngngModel_lstype
IRResultType
Type defining the return values of InputRecord reading operations.
virtual int givePackSizeOfDouble(int count)=0
std::unique_ptr< SparseMtrx > stiffnessMatrix
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode)
Restores the state of model from output stream.
int giveMetaStepNumber()
Returns receiver's meta step number.
int giveNumberOfTimeStepWhenIcApply()
Returns the time step number, when initial conditions should apply.
EModelDefaultEquationNumbering * equationNumbering
void zero()
Zeroes all coefficients of receiver.
FloatArray displacementVector
int giveRank() const
Returns domain rank in a group of collaborating processes (0..groupSize-1)
void initializeCommMaps(bool forceInit=false)
ClassFactory & classFactory
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
virtual int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType)
Determines the space necessary for send/receive buffer.
This class implements extension of EngngModel for structural models.
The Communicator and corresponding buffers (represented by this class) are separated in order to allo...
virtual NumericalMethod * giveNumericalMethod(MetaStep *mStep)
Returns reference to receiver's numerical method.
Abstract base class representing the "problem" under consideration.
virtual void setDomain(Domain *d)
virtual TimeStep * giveCurrentStep(bool force=false)
Returns current time step.
virtual UnknownNumberingScheme * giveEquationNumbering()
virtual void updateDomainLinks()
Updates domain links after the domains of receiver have changed.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode)
Restores the state of model from output stream.
the oofem namespace is to define a context or scope in which all oofem names are defined.
bool isNotEmpty() const
Returns true if receiver is not empty.
Domain * giveDomain(int n)
Service for accessing particular problem domain.
Abstract class Dof represents Degree Of Freedom in finite element mesh.
DofManager * giveDofManager(int n)
Service for accessing particular domain dof manager.
void assembleVector(FloatArray &answer, TimeStep *tStep, const VectorAssembler &va, ValueModeType mode, const UnknownNumberingScheme &s, Domain *domain, FloatArray *eNorms=NULL)
Assembles characteristic vector of required type from dofManagers, element, and active boundary condi...
Class representing solution step.
void resize(int s)
Resizes receiver towards requested size.