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);
113 bool saveModel(
int& gBlock,
int& rBlock,
const char* fileName =
nullptr,
120 bool saveModel(
int& gBlock,
int& rBlock,
double time);
126 bool saveStep(
int iStep,
double time,
const char* vecName =
nullptr);
132 bool saveStep(
int iStep,
int& rBlock,
double time,
133 const char* vecName =
nullptr);
138 bool saveStep(
int iStep,
int& rBlock,
const char* vecName);
155 bool withID =
true)
const;
163 std::streamsize precision = 3,
164 bool formatted =
true)
const;
182 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:227
const SIMoutput & getModel() const
Returns a const reference to the FE model.
Definition: MultiStepSIM.h:179
void setSubIteration(SubIt flag)
Updates the sub-iteration flag.
Definition: MultiStepSIM.h:185
Vector loadVec
System load vector (for output to VTF)
Definition: MultiStepSIM.h:211
double refNorm
Reference norm value used in convergence checks.
Definition: MultiStepSIM.h:216
SubIt subiter
Sub-iteration flag.
Definition: MultiStepSIM.h:218
double * theRefNorm()
Returns a pointer to the reference norm variable.
Definition: MultiStepSIM.h:205
void dumpStep(int iStep, double time, utl::LogStream &os, bool withID=true) const
Dumps the primary solution for inspection.
Definition: MultiStepSIM.C:239
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:229
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:182
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:143
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:253
virtual bool preprocess(const std::vector< int > &ignored, bool fixDup)
Performs some pre-processing tasks on the FE model.
Definition: MultiStepSIM.C:71
size_t nRHSvec
Number of right-hand-side vectors to assemble.
Definition: MultiStepSIM.h:219
virtual const Vectors & realSolutions(bool=false)
Returns a const reference to the current real solution vectors.
Definition: MultiStepSIM.h:202
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:226
virtual size_t numSolution() const
Returns the number of solution vectors.
Definition: MultiStepSIM.h:190
virtual bool isDynamic() const
Returns whether this is a dynamic solution driver or not.
Definition: MultiStepSIM.h:176
char rotUpd
Option for how to update of nodal rotations.
Definition: MultiStepSIM.h:220
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:210
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:319
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:187
virtual bool isLinear() const
Returns whether this solution driver is linear or not.
Definition: MultiStepSIM.h:174
int geoBlk
Running VTF geometry block counter.
Definition: MultiStepSIM.h:222
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:221
Vector residual
Residual force vector.
Definition: MultiStepSIM.h:212
bool savePoints(double time, int step) const
Saves point-wise solution to file for a given time/load step.
Definition: MultiStepSIM.C:269
int nBlock
Running VTF result block counter.
Definition: MultiStepSIM.h:223
Vector linsol
Linear solution vector.
Definition: MultiStepSIM.h:213
virtual const Vector & realSolution(int i=0) const
Returns a const reference to the current real solution vector.
Definition: MultiStepSIM.h:196
MultiStepSIM(SIMbase &sim)
The constructor initializes the FE model reference.
Definition: MultiStepSIM.C:23
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:215
const double * getRefNorm() const
Returns a const pointer to the reference norm variable.
Definition: MultiStepSIM.h:207
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:304
bool hasPointResultFile() const
Returns whether a points result file has been defined or not.
Definition: MultiStepSIM.C:263
void printStep(const TimeStep ¶m) const
Prints out time/load step identification.
Definition: MultiStepSIM.C:278
virtual bool advanceStep(TimeStep ¶m, bool updateTime=true)
Advances the time/load step one step forward.
Definition: MultiStepSIM.C:294
virtual bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition: SIMadmin.C:113
double rCond
Reciprocal condition number of the linear equation system.
Definition: MultiStepSIM.h:217
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