111 if (
rtolv < 1.e-12 ) {
113 }
else if (
rtolv > 0.01 ) {
126 printf(
"Suppressing output.\n");
139int LinearStability :: giveUnknownDictHashIndx(ValueModeType mode,
TimeStep *tStep)
145double LinearStability :: giveUnknownComponent(ValueModeType mode,
TimeStep *tStep,
Domain *d,
Dof *dof)
147 return field->giveUnknownValue(dof, mode, tStep);
158 counter =
currentStep->giveSolutionStateCounter() + 1;
162 currentStep = std::make_unique<TimeStep>(istep,
this, 1, 0., 0., counter);
168void LinearStability :: solveYourself()
170 this->
timer.startTimer(EngngModelTimer :: EMTT_AnalysisTimer);
179void LinearStability :: solveYourselfAt(
TimeStep *tStep)
197#ifndef LIN_STAB_COMPATIBILITY_MODE
206 FloatArray displacementVector(neq), loadVector(neq);
256void LinearStability :: updateYourself(
TimeStep *tStep)
261LinearStability :: terminateLinStatic(
TimeStep *tStep)
266 dman->updateYourself(tStep);
274 elem->updateInternalState(tStep);
275 elem->updateYourself(tStep);
286 if ((domain->giveContextOutputMode() ==
COM_Always ) ||
290 if (tStep->
giveNumber()%domain->giveContextOutputStep() == 0)
297void LinearStability :: doStepOutput(
TimeStep *tStep)
312 dman->updateYourself(&step);
320void LinearStability :: printOutputAt(FILE *file,
TimeStep *tStep)
327 fprintf(file,
"\nLinear Stability:");
328 fprintf(file,
"\nEigen Values are:\n-----------------\n");
331 fprintf(file,
"%15.8e ",
eigVal.at(i) );
332 if ( ( i % 5 ) == 0 ) {
337 fprintf(file,
"\n\n");
345 fprintf(file,
"\nLinear solution\n\n");
347 fprintf(file,
"\nEigen vector no. %d, corresponding eigen value is %15.8e\n\n", i,
eigVal.at(i));
351 dman->updateYourself(&step);
352 dman->printOutputAt(file, &step);
357 elem->printOutputAt(file, &step);
365void LinearStability :: setActiveVector(
int activeVector)
374 StructuralEngngModel :: saveContext(stream, mode);
376 field->saveContext(stream);
379 if ( ( iores =
eigVal.storeYourself(stream) ) !=
CIO_OK ) {
387 StructuralEngngModel :: restoreContext(stream, mode);
389 field->restoreContext(stream);
392 if ( ( iores =
eigVal.restoreYourself(stream) ) !=
CIO_OK ) {
#define REGISTER_EngngModel(class)
OutputManager * giveOutputManager()
int giveNumberOfElements() const
Returns number of elements in domain.
std ::vector< std ::unique_ptr< DofManager > > & giveDofManagers()
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
std ::vector< std ::unique_ptr< Element > > & giveElements()
virtual TimeStep * giveCurrentStep(bool force=false)
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
std::string dataOutputFileName
Path to output stream.
std::string simulationDescription
std ::unique_ptr< TimeStep > previousStep
Previous time step.
MetaStep * giveCurrentMetaStep()
Returns current meta step.
int ndomains
Number of receiver domains.
int numberOfSteps
Total number of time steps.
Domain * giveDomain(int n)
std ::unique_ptr< TimeStep > currentStep
Current time step.
FILE * giveOutputStream()
Returns file descriptor of output file.
time_t startTime
Solution start time.
MetaStep * giveMetaStep(int i)
Returns the i-th meta step.
EngngModelTimer timer
E-model timer.
int nMetaSteps
Number of meta steps.
ExportModuleManager exportModuleManager
Export module manager.
EngngModel * master
Master e-model; if defined receiver is in maintained (slave) mode.
bool suppressOutput
Flag for suppressing output to file.
FILE * outputStream
Output stream.
virtual int giveNumberOfFirstStep(bool force=false)
virtual void updateAttributes(MetaStep *mStep)
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)
std ::unique_ptr< EigenVectorPrimaryField > field
SparseLinearSystemNM * giveNumericalMethodForLinStaticProblem(TimeStep *tStep)
void solveYourselfAt(TimeStep *tStep) override
GenEigvalSolverType solverType
Numerical method used to solve the problem.
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
std ::unique_ptr< SparseLinearSystemNM > nMethodLS
Numerical method used to solve the static problem.
std ::unique_ptr< SparseMtrx > initialStressMatrix
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
void terminateLinStatic(TimeStep *tStep)
int numberOfRequiredEigenValues
std ::unique_ptr< SparseGeneralEigenValueSystemNM > nMethod
void printOutputAt(FILE *file, TimeStep *tStep) override
std ::unique_ptr< SparseMtrx > stiffnessMatrix
void saveContext(DataStream &stream, ContextMode mode) override
int testTimeStepOutput(TimeStep *)
void terminate(TimeStep *tStep) override
void printReactionForces(TimeStep *tStep, int id, FILE *out)
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 setNumber(int i)
Set receiver's number.
int giveNumber()
Returns receiver's number.
void setTime(double newt)
Sets target and intrinsic time to be equal.
#define _IFT_EngngModel_suppressOutput
#define _IFT_LinearStability_nroot
#define _IFT_LinearStability_stype
#define _IFT_LinearStability_rtolv
#define OOFEM_LOG_INFO(...)
FloatArrayF< N > assemble(const FloatArrayF< M > &x, int const (&c)[M])
Assemble components into zero matrix.
long StateCounterType
StateCounterType type used to indicate solution state.
@ COM_Required
If required (for backtracking computation).
@ COM_Always
Enable for post-processing.
@ COM_UserDefined
Input attribute of domain (each n-th step).
@ SMT_Skyline
Symmetric skyline.
ClassFactory & classFactory
OOFEM_EXPORT const char * PRG_HEADER
#define VERBOSE_PRINT0(str, number)