IFEM 90A354
NewmarkSIM.h
Go to the documentation of this file.
1// $Id$
2//==============================================================================
12//==============================================================================
13
14#ifndef _NEWMARK_SIM_H
15#define _NEWMARK_SIM_H
16
17#include "MultiStepSIM.h"
18
19
25{
26public:
28 explicit NewmarkSIM(SIMbase& sim);
29
32 virtual bool parse(const tinyxml2::XMLElement* elem);
33
36 virtual void printProblem(bool stopInputTimer = false) const;
37
39 virtual void initPrm();
40
42 bool initAcc(double zero_tolerance = 1.0e-8, std::streamsize outPrec = 0);
43
45 virtual bool advanceStep(TimeStep& param, bool updateTime = true);
46
51 virtual SIM::ConvStatus solveStep(TimeStep& param,
52 SIM::SolutionMode = SIM::STATIC,
53 double zero_tolerance = 1.0e-8,
54 std::streamsize outPrec = 0);
55
59
61 int getMaxit() const { return maxit; }
62
64 virtual bool isDynamic() const { return true; }
65
66protected:
70 virtual bool solutionNorms(const TimeDomain&, double zero_tolerance = 1.0e-8,
71 std::streamsize outPrec = 0);
72
76 virtual bool predictStep(TimeStep& param);
78 virtual bool correctStep(TimeStep& param, bool = false);
80 virtual void finalizeRHSvector(bool);
81
82public:
84 const Vector& getVelocity() const { return solution[1]; }
86 const Vector& getAcceleration() const { return solution[2]; }
87
92 bool saveStep(int iStep, TimeStep& param);
93
99 virtual void dumpResults(double time, utl::LogStream& os,
100 std::streamsize precision = 3,
101 bool formatted = true) const;
102
103protected:
104 // Time integration parameters
105 double alpha1;
106 double alpha2;
107 double beta;
108 double gamma;
109
110 // Solution algorithm parameters
113 int maxit;
115 int nupdat;
118 double rTol;
119 double aTol;
120 double divgLim;
121
122 unsigned short int cNorm;
123
124 std::string factor_file;
128
129public:
130 static const char* inputContext;
131};
132
133#endif
Base class for multi-step solution drivers.
Base class for multi-step solution drivers.
Definition MultiStepSIM.h:32
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 bool parse(const tinyxml2::XMLElement *elem)
Parses a data section from an XML document.
Definition MultiStepSIM.C:44
Newmark-based solution driver for dynamic isogeometric FEM simulators.
Definition NewmarkSIM.h:25
bool write_factor
If true, write new factorized Newton matrix.
Definition NewmarkSIM.h:125
double rTol
Relative convergence tolerance.
Definition NewmarkSIM.h:118
bool saveStep(int iStep, TimeStep &param)
Saves the converged solution to VTF file for a given time step.
Definition NewmarkSIM.C:657
int maxIncr
Maximum number of iterations with increasing norm.
Definition NewmarkSIM.h:114
int saveIts
Time step for which iteration result should be saved.
Definition NewmarkSIM.h:116
bool initAcc(double zero_tolerance=1.0e-8, std::streamsize outPrec=0)
Calculates initial accelerations.
Definition NewmarkSIM.C:219
LinAlg::StorageFormat fmt
Factorized Newton matrix storage format.
Definition NewmarkSIM.h:127
unsigned short int cNorm
Option for which convergence norm to use.
Definition NewmarkSIM.h:122
bool read_factor
If true, read factorized Newton matrix.
Definition NewmarkSIM.h:126
double aTol
Absolute convergence tolerance.
Definition NewmarkSIM.h:119
virtual bool solutionNorms(const TimeDomain &, double zero_tolerance=1.0e-8, std::streamsize outPrec=0)
Computes and prints some solution norm quantities.
Definition NewmarkSIM.C:613
virtual void initPrm()
Initializes time integration parameters for the integrand.
Definition NewmarkSIM.C:196
virtual SIM::ConvStatus solveStep(TimeStep &param, SIM::SolutionMode=SIM::STATIC, double zero_tolerance=1.0e-8, std::streamsize outPrec=0)
Solves the dynamic equations by a predictor/multi-corrector method.
Definition NewmarkSIM.C:385
int maxit
Maximum number of iterations in a time step.
Definition NewmarkSIM.h:113
virtual bool predictStep(TimeStep &param)
Calculates predicted velocities and accelerations.
Definition NewmarkSIM.C:270
virtual SIM::ConvStatus checkConvergence(TimeStep &param)
Checks whether the corrector iterations have converged or diverged.
Definition NewmarkSIM.C:544
double alpha1
Mass-proportional damping parameter.
Definition NewmarkSIM.h:105
virtual bool correctStep(TimeStep &param, bool=false)
Updates configuration variables (solution vector) in an iteration.
Definition NewmarkSIM.C:356
std::string factor_file
File for storage of factorized Newton matrix.
Definition NewmarkSIM.h:124
double divgLim
Relative divergence limit.
Definition NewmarkSIM.h:120
int nupdat
Number of iterations with updated tangent.
Definition NewmarkSIM.h:115
char saveVelAc
Flag the saving of velocity and acceleration to VTF.
Definition NewmarkSIM.h:117
virtual void dumpResults(double time, utl::LogStream &os, std::streamsize precision=3, bool formatted=true) const
Dumps solution variables at user-defined points.
Definition NewmarkSIM.C:679
virtual bool parse(const tinyxml2::XMLElement *elem)
Parses a data section from an XML document.
Definition NewmarkSIM.C:68
double alpha2
Stiffness-proportional damping parameter.
Definition NewmarkSIM.h:106
static const char * inputContext
Input file context for solver parameters.
Definition NewmarkSIM.h:130
virtual bool advanceStep(TimeStep &param, bool updateTime=true)
Advances the time step one step forward.
Definition NewmarkSIM.C:210
char predictor
Predictor type flag.
Definition NewmarkSIM.h:112
double gamma
Newmark time integration parameter.
Definition NewmarkSIM.h:108
double beta
Newmark time integration parameter.
Definition NewmarkSIM.h:107
bool solveDisp
If true, use incremental displacements as unknowns.
Definition NewmarkSIM.h:111
int getMaxit() const
Returns the maximum number of iterations.
Definition NewmarkSIM.h:61
virtual bool isDynamic() const
Returns whether this is a dynamic solution driver or not.
Definition NewmarkSIM.h:64
const Vector & getVelocity() const
Returns a const reference to current velocity vector.
Definition NewmarkSIM.h:84
virtual void printProblem(bool stopInputTimer=false) const
Prints out problem-specific data to the log stream.
Definition NewmarkSIM.C:167
SIM::ConvStatus solveIteration(TimeStep &param)
Solves the linearized system of current iteration.
Definition NewmarkSIM.C:504
const Vector & getAcceleration() const
Returns a const reference to current velocity vector.
Definition NewmarkSIM.h:86
virtual void finalizeRHSvector(bool)
Finalizes the right-hand-side vector on the system level.
Definition NewmarkSIM.C:262
Base class for NURBS-based FEM simulators.
Definition SIMbase.h:72
Vectors solution
Stack of solution vectors.
Definition SIMsolution.h:78
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
StorageFormat
Enumeration of matrix storage formats.
Definition LinAlgenums.h:43
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