95 if (
rtolv < 1.e-12 ) {
97 }
else if (
rtolv > 0.01 ) {
112 printf(
"Suppressing output.\n");
125int EigenValueDynamic :: giveUnknownDictHashIndx(ValueModeType mode,
TimeStep *tStep)
131double EigenValueDynamic :: giveUnknownComponent(ValueModeType mode,
TimeStep *tStep,
Domain *d,
Dof *dof)
133 return field->giveUnknownValue(dof, mode, tStep);
144 counter =
currentStep->giveSolutionStateCounter() + 1;
148 currentStep = std::make_unique<TimeStep>(istep,
this, 1, (
double ) istep, 0., counter);
154void EigenValueDynamic :: solveYourself()
156 this->
timer.startTimer(EngngModelTimer :: EMTT_AnalysisTimer);
165 std :: unique_ptr< SparseMtrx > stiffnessMatrix;
166 std :: unique_ptr< SparseMtrx > massMatrix;
186 OOFEM_LOG_INFO(
"EngngModel info: user time consumed by solution: %.2fs\n", steptime);
190void EigenValueDynamic :: updateYourself(
TimeStep *tStep)
194void EigenValueDynamic :: doStepOutput(
TimeStep *tStep)
203 tStep->
setTime( (
double ) i );
210void EigenValueDynamic :: printOutputAt(FILE *file,
TimeStep *tStep)
215 fprintf(file,
"\nOutput for time %.3e \n\n", 1.0);
217 fprintf(file,
"\n\nEigen Values (Omega^2) are:\n-----------------\n");
220 fprintf(file,
"%15.8e ",
eigVal.at(i) );
221 if ( ( i % 5 ) == 0 ) {
226 fprintf(file,
"\n\n");
229 fprintf(file,
"\nOutput for eigen value no. %.3e \n", (
double ) i);
230 fprintf(file,
"Printing eigen vector no. %d, corresponding eigen value is %15.8e\n\n", i,
eigVal.at(i) );
231 tStep->
setTime( (
double ) i );
242 dman->updateYourself(tStep);
243 dman->printOutputAt(file, tStep);
247 double utsec = this->
timer.getUtime(EngngModelTimer :: EMTT_AnalysisTimer);
248 fprintf(file,
"\nUser time consumed by solution step: %.3f [s]\n\n", utsec);
254 EngngModel :: saveContext(stream, mode);
257 if ( ( iores =
eigVal.storeYourself(stream) ) !=
CIO_OK ) {
261 this->
field->saveContext(stream);
267 EngngModel :: restoreContext(stream, mode);
270 if ( ( iores =
eigVal.restoreYourself(stream) ) !=
CIO_OK ) {
274 this->
field->restoreContext(stream);
278void EigenValueDynamic :: setActiveVector(
int i)
#define REGISTER_EngngModel(class)
std ::vector< std ::unique_ptr< DofManager > > & giveDofManagers()
int numberOfRequiredEigenValues
std ::unique_ptr< EigenVectorPrimaryField > field
double rtolv
Relative tolerance.
SparseMtrxType sparseMtrxType
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
GenEigvalSolverType solverType
std ::unique_ptr< SparseGeneralEigenValueSystemNM > nMethod
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
void printOutputAt(FILE *file, TimeStep *tStep) override
virtual TimeStep * giveCurrentStep(bool force=false)
std::string dataOutputFileName
Path to output stream.
std::string simulationDescription
EngngModel(int i, EngngModel *_master=NULL)
std ::unique_ptr< TimeStep > previousStep
Previous time step.
double giveSolutionStepTime()
virtual void updateDofUnknownsDictionary(DofManager *, TimeStep *)
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.
virtual void terminate(TimeStep *tStep)
ExportModuleManager exportModuleManager
Export module manager.
EngngModel * master
Master e-model; if defined receiver is in maintained (slave) mode.
virtual int requiresUnknownsDictionaryUpdate()
bool suppressOutput
Flag for suppressing output to file.
FILE * outputStream
Output stream.
virtual int giveNumberOfFirstStep(bool force=false)
virtual void updateAttributes(MetaStep *mStep)
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_EigenValueDynamic_nroot
#define _IFT_EigenValueDynamic_stype
#define _IFT_EigenValueDynamic_rtolv
#define _IFT_EngngModel_suppressOutput
#define _IFT_EngngModel_smtype
#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.
ClassFactory & classFactory
OOFEM_EXPORT const char * PRG_HEADER