50#ifdef __MPI_PARALLEL_MODE
68LinearStatic :: ~LinearStatic() {}
93 StructuralEngngModel :: initializeFrom(ir);
103#ifdef __MPI_PARALLEL_MODE
114double LinearStatic :: giveUnknownComponent(ValueModeType mode,
TimeStep *tStep,
Domain *d,
Dof *dof)
139 OOFEM_ERROR(
"Unknown is of undefined type for this problem");
160void LinearStatic :: solveYourself()
163#ifdef __VERBOSE_PARALLEL
172 StructuralEngngModel :: solveYourself();
177void LinearStatic :: solveYourselfAt(
TimeStep *tStep)
227 internalForces.
zero();
258 StructuralEngngModel :: saveContext(stream, mode);
269 StructuralEngngModel :: restoreContext(stream, mode);
279LinearStatic :: updateDomainLinks()
281 EngngModel :: updateDomainLinks();
289 int count = 0, pcount = 0;
292 if ( packUnpackType == 0 ) {
293 for (
int map: commMap ) {
295 for (
Dof *dof: *dman ) {
296 if ( dof->isPrimaryDof() && ( dof->__giveEquationNumber() ) ) {
309 }
else if ( packUnpackType == 1 ) {
310 for (
int map: commMap ) {
#define REGISTER_EngngModel(class)
virtual int givePackSizeOfDouble(std::size_t count)=0
virtual int __giveEquationNumber() const =0
DofManager * giveDofManager(int n)
Element * giveElement(int n)
int estimatePackSize(DataStream &buff)
int giveNumberOfTimeStepWhenIcApply()
Returns the time step number, when initial conditions should apply.
void initializeCommMaps(bool forceInit=false)
virtual TimeStep * giveCurrentStep(bool force=false)
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
int giveNumberOfProcesses() const
Returns the number of collaborating processes.
int giveRank() const
Returns domain rank in a group of collaborating processes (0..groupSize-1).
ProblemCommunicator * communicator
Communicator.
std ::unique_ptr< TimeStep > previousStep
Previous time step.
MetaStep * giveCurrentMetaStep()
Returns current meta step.
int ndomains
Number of receiver domains.
Domain * giveDomain(int n)
std ::unique_ptr< TimeStep > currentStep
Current time step.
MetaStep * giveMetaStep(int i)
Returns the i-th meta step.
CommunicatorBuff * commBuff
Common Communicator buffer.
bool isParallel() const
Returns true if receiver in parallel mode.
int updateSharedDofManagers(FloatArray &answer, const UnknownNumberingScheme &s, int ExchangeTag)
void assembleVector(FloatArray &answer, TimeStep *tStep, const VectorAssembler &va, ValueModeType mode, const UnknownNumberingScheme &s, Domain *domain, FloatArray *eNorms=NULL)
void zero()
Zeroes all coefficients of receiver.
SparseMtrxType sparseMtrxType
LinSystSolverType solverType
FloatArray displacementVector
virtual UnknownNumberingScheme & giveEquationNumbering()
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
std ::unique_ptr< SparseMtrx > stiffnessMatrix
std ::unique_ptr< SparseLinearSystemNM > nMethod
Numerical method used to solve the problem.
StructuralEngngModel(int i, EngngModel *master=nullptr)
Creates new StructuralEngngModel with number i, associated to domain d.
int giveMetaStepNumber()
Returns receiver's meta step number.
void incrementStateCounter()
Updates solution state counter.
ConvergedReason convergedReason
Status of solution step (Converged,.
int numberOfIterations
Number of itarations needed to achieve convergence.
#define _IFT_EngngModel_lstype
#define _IFT_EngngModel_smtype
#define OOFEM_LOG_INFO(...)
#define OOFEM_LOG_DEBUG(...)
FloatArrayF< N > assemble(const FloatArrayF< M > &x, int const (&c)[M])
Assemble components into zero matrix.
ClassFactory & classFactory