14#ifndef _MULTI_STEP_SIM_H
15#define _MULTI_STEP_SIM_H
44 virtual void printProblem(
bool stopInputTimer =
false)
const;
52 virtual bool parse(
const tinyxml2::XMLElement* elem);
60 virtual void initSol(
size_t nSol = 1,
size_t nDof = 0);
78 double zero_tolerance = 1.0e-8,
79 std::streamsize outPrec = 0) = 0;
90 std::streamsize outPrec = 0);
99 virtual bool preprocess(
const std::vector<int>& ignored,
bool fixDup);
109 bool saveModel(
double initialTime = 0.0);
114 bool saveModel(
int& gBlock,
int& rBlock,
double time = 0.0);
120 bool saveStep(
int iStep,
double time,
const char* vecName =
nullptr);
126 bool saveStep(
int iStep,
int& rBlock,
double time,
127 const char* vecName =
nullptr);
132 bool saveStep(
int iStep,
int& rBlock,
const char* vecName);
149 bool withID =
true)
const;
157 std::streamsize precision = 3,
158 bool formatted =
true)
const;
176 enum SubIt { ITER = 0, FIRST = 1, LAST = 2, NONE = 3 };
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition MatVec.h:37
Administration base class for FEM simulators.
General solution vector container for simulator drivers.
Base class for multi-step solution drivers.
Definition MultiStepSIM.h:32
int lastSt
The last time/load step that was saved to VTF.
Definition MultiStepSIM.h:221
void setSubIteration(SubIt flag)
Updates the sub-iteration flag.
Definition MultiStepSIM.h:179
virtual const Vectors & realSolutions(bool=false)
Returns a const reference to the current real solution vectors.
Definition MultiStepSIM.h:196
Vector loadVec
System load vector (for output to VTF)
Definition MultiStepSIM.h:205
double refNorm
Reference norm value used in convergence checks.
Definition MultiStepSIM.h:210
SubIt subiter
Sub-iteration flag.
Definition MultiStepSIM.h:212
virtual const Vector & realSolution(int i=0) const
Returns a const reference to the current real solution vector.
Definition MultiStepSIM.h:190
void dumpStep(int iStep, double time, utl::LogStream &os, bool withID=true) const
Dumps the primary solution for inspection.
Definition MultiStepSIM.C:235
NormOp
Enum describing reference norm options.
Definition MultiStepSIM.h:35
virtual bool deSerialize(const SerializeMap &data)
Restores the solution vectors from a serialized state.
Definition MultiStepSIM.C:225
bool saveModel(const char *fileName)
Opens a new VTF-file and writes the model geometry to it.
Definition MultiStepSIM.C:109
SubIt
Enum describing sub-iteration status.
Definition MultiStepSIM.h:176
int getLastSavedStep() const
Returns the last step that was saved to VTF.
Definition MultiStepSIM.h:93
bool saveStep(int iStep, double time, const char *vecName=nullptr)
Saves the converged solution to VTF file of a given time/load step.
Definition MultiStepSIM.C:139
virtual void dumpResults(double time, utl::LogStream &os, std::streamsize precision=3, bool formatted=true) const
Dumps solution variables at user-defined points.
Definition MultiStepSIM.C:249
virtual bool preprocess(const std::vector< int > &ignored, bool fixDup)
Performs some pre-processing tasks on the FE model.
Definition MultiStepSIM.C:71
const SIMoutput & getModel() const
Returns a const reference to the FE model.
Definition MultiStepSIM.h:173
size_t nRHSvec
Number of right-hand-side vectors to assemble.
Definition MultiStepSIM.h:213
const double * getRefNorm() const
Returns a const pointer to the reference norm variable.
Definition MultiStepSIM.h:201
bool initEqSystem(bool withRF=true, size_t nScl=0)
Allocates the FE system matrices.
Definition MultiStepSIM.C:97
bool saveBCs
If true, Dirchlet boundary conditions are saved to VTF.
Definition MultiStepSIM.h:220
virtual size_t numSolution() const
Returns the number of solution vectors.
Definition MultiStepSIM.h:184
virtual bool isDynamic() const
Returns whether this is a dynamic solution driver or not.
Definition MultiStepSIM.h:170
char rotUpd
Option for how to update of nodal rotations.
Definition MultiStepSIM.h:214
virtual void initSol(size_t nSol=1, size_t nDof=0)
Initializes the primary solution vectors.
Definition MultiStepSIM.C:83
SIMoutput & model
The isogeometric FE model.
Definition MultiStepSIM.h:204
virtual SIM::ConvStatus solveStep(TimeStep ¶m, SIM::SolutionMode=SIM::STATIC, double zero_tolerance=1.0e-8, std::streamsize outPrec=0)=0
Solves the FE equations at current time/load step.
bool checkForRestart()
Restores the solution from a serialized state in case of restart.
Definition MultiStepSIM.C:315
virtual const char ** getPrioritizedTags() const
Returns a list of prioritized XML-tags.
Definition MultiStepSIM.C:65
SubIt getSubIteration() const
Returns the sub-iteration flag.
Definition MultiStepSIM.h:181
virtual bool isLinear() const
Returns whether this solution driver is linear or not.
Definition MultiStepSIM.h:168
int geoBlk
Running VTF geometry block counter.
Definition MultiStepSIM.h:216
virtual void initPrm()
Initializes time integration parameters for the integrand.
Definition MultiStepSIM.C:77
virtual bool serialize(SerializeMap &data) const
Serializes the solution vectors for restarting purposes.
Definition MultiStepSIM.C:217
Vector residual
Residual force vector.
Definition MultiStepSIM.h:206
bool savePoints(double time, int step) const
Saves point-wise solution to file for a given time/load step.
Definition MultiStepSIM.C:265
int nBlock
Running VTF result block counter.
Definition MultiStepSIM.h:217
Vector linsol
Linear solution vector.
Definition MultiStepSIM.h:207
virtual void printProblem(bool stopInputTimer=false) const
Prints out problem-specific data to the log stream.
Definition MultiStepSIM.C:56
NormOp refNopt
Reference norm option.
Definition MultiStepSIM.h:209
virtual bool solutionNorms(const TimeDomain &, double zero_tolerance=1.0e-8, std::streamsize outPrec=0)
Computes and prints some solution norm quantities.
Definition MultiStepSIM.C:300
bool hasPointResultFile() const
Returns whether a points result file has been defined or not.
Definition MultiStepSIM.C:259
void printStep(const TimeStep ¶m) const
Prints out time/load step identification.
Definition MultiStepSIM.C:274
double * theRefNorm()
Returns a pointer to the reference norm variable.
Definition MultiStepSIM.h:199
virtual bool advanceStep(TimeStep ¶m, bool updateTime=true)
Advances the time/load step one step forward.
Definition MultiStepSIM.C:290
double rCond
Reciprocal condition number of the linear equation system.
Definition MultiStepSIM.h:211
virtual bool parse(const tinyxml2::XMLElement *elem)
Parses a data section from an XML document.
Definition MultiStepSIM.C:44
void setStartGeo(int gID)
Initializes the geometry block counter.
Definition MultiStepSIM.C:103
Administration base class for FEM simulators.
Definition SIMadmin.h:32
virtual bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition SIMadmin.C:113
Base class for NURBS-based FEM simulators.
Definition SIMbase.h:72
Sub-class with additional functionality for result output.
Definition SIMoutput.h:33
Solution vector container with serialization support.
Definition SIMsolution.h:27
Vectors solution
Stack of solution vectors.
Definition SIMsolution.h:78
std::map< std::string, std::string > SerializeMap
Convenience type.
Definition SIMsolution.h:43
Class for encapsulation of general time stepping parameters.
Definition TimeStep.h:31
Logging stream class.
Definition LogStream.h:26
A vector class with some added algebraic operations.
Definition matrix.h:64
SolutionMode
Enum defining the various solution modes that may occur.
Definition SIMenums.h:31
ConvStatus
Enum defining the various convergence statuses that may occur.
Definition SIMenums.h:50
Struct representing the time domain.
Definition TimeDomain.h:23