14 #if !defined( KRATOS_TIME_DISCRETIZATION_H_INCLUDED )
15 #define KRATOS_TIME_DISCRETIZATION_H_INCLUDED
28 namespace TimeDiscretization {
30 class KRATOS_API(KRATOS_CORE)
BDF
41 BDF(
const unsigned int TimeOrder) : mTimeOrder(TimeOrder)
43 this->SetAuxBDFPointer(TimeOrder, mpAuxBDF);
58 virtual std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const;
67 virtual std::vector<double> ComputeBDFCoefficients(
double DeltaTime,
double PreviousDeltaTime)
const;
76 virtual std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const;
85 void ComputeAndSaveBDFCoefficients(
ProcessInfo &rProcessInfo)
const;
92 std::size_t GetTimeOrder()
const;
104 const std::size_t mTimeOrder = 0;
114 static void SetAuxBDFPointer(
115 const std::size_t TimeOrder,
119 class KRATOS_API(KRATOS_CORE)
BDF1 :
public BDF
122 std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const override;
123 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
126 class KRATOS_API(KRATOS_CORE)
BDF2 :
public BDF
129 std::vector<double> ComputeBDFCoefficients(
double DeltaTime,
double PreviousDeltaTime)
const override;
130 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
133 class KRATOS_API(KRATOS_CORE)
BDF3 :
public BDF
136 std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const override;
137 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
140 class KRATOS_API(KRATOS_CORE)
BDF4 :
public BDF
143 std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const override;
144 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
147 class KRATOS_API(KRATOS_CORE)
BDF5 :
public BDF
150 std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const override;
151 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
154 class KRATOS_API(KRATOS_CORE)
BDF6 :
public BDF
157 std::vector<double> ComputeBDFCoefficients(
double DeltaTime)
const override;
158 std::vector<double> ComputeBDFCoefficients(
const ProcessInfo& rProcessInfo)
const override;
167 const double NewmarkGamma)
168 : mNewmarkBeta(NewmarkBeta),
169 mNewmarkGamma(NewmarkGamma) {}
171 double GetBeta()
const {
return mNewmarkBeta; }
175 double mNewmarkBeta=0.25;
176 double mNewmarkGamma=0.5;
188 const double NewmarkBeta,
189 const double NewmarkGamma)
191 mNewmarkBeta(NewmarkBeta),
192 mNewmarkGamma(NewmarkGamma) {}
195 double GetBeta()
const {
return mNewmarkBeta * (1-mAlphaM) * (1-mAlphaM); }
196 double GetGamma()
const {
return mNewmarkGamma - mAlphaM; }
200 double mNewmarkBeta=0.25;
201 double mNewmarkGamma=0.5;
216 const double NewmarkBeta,
217 const double NewmarkGamma)
220 mNewmarkBeta(NewmarkBeta),
221 mNewmarkGamma(NewmarkGamma) {}
225 double GetBeta()
const {
return mNewmarkBeta * (1-mAlphaM+mAlphaF) * (1-mAlphaM+mAlphaF); }
226 double GetGamma()
const {
return mNewmarkGamma - mAlphaM + mAlphaF; }
231 double mNewmarkBeta=0.25;
232 double mNewmarkGamma=0.5;
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Definition: time_discretization.h:120
Definition: time_discretization.h:127
Definition: time_discretization.h:134
Definition: time_discretization.h:141
Definition: time_discretization.h:148
Definition: time_discretization.h:155
Definition: time_discretization.h:31
KRATOS_CLASS_POINTER_DEFINITION(BDF)
BDF(const unsigned int TimeOrder)
Construct a new BDF object Constructor with time order.
Definition: time_discretization.h:41
BDF()
Construct a new BDF object Auxiliary constructor for derived classes.
Definition: time_discretization.h:100
virtual ~BDF()=default
Destroy the BDF object Destructor of the BDF class.
std::size_t GetTimeOrder() const
Get the Time Order object Auxiliary method to get the order of the BDF scheme.
Definition: time_discretization.cpp:101
Definition: time_discretization.h:180
double GetBeta() const
Definition: time_discretization.h:195
Bossak(const double AlphaM)
Definition: time_discretization.h:184
Bossak(const double AlphaM, const double NewmarkBeta, const double NewmarkGamma)
Definition: time_discretization.h:187
double GetGamma() const
Definition: time_discretization.h:196
double GetAlphaM() const
Definition: time_discretization.h:194
Definition: time_discretization.h:205
double GetBeta() const
Definition: time_discretization.h:225
double GetAlphaF() const
Definition: time_discretization.h:224
GeneralizedAlpha(const double AlphaM, const double AlphaF, const double NewmarkBeta, const double NewmarkGamma)
Definition: time_discretization.h:214
double GetGamma() const
Definition: time_discretization.h:226
GeneralizedAlpha()=default
GeneralizedAlpha(const double AlphaM, const double AlphaF)
Definition: time_discretization.h:209
double GetAlphaM() const
Definition: time_discretization.h:223
Definition: time_discretization.h:162
Newmark(const double NewmarkBeta, const double NewmarkGamma)
Definition: time_discretization.h:166
double GetGamma() const
Definition: time_discretization.h:172
double GetBeta() const
Definition: time_discretization.h:171
std::size_t GetMinimumBufferSize(const BDF &rTimeDiscr)
Definition: time_discretization.h:235
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::unique_ptr< T > unique_ptr
Definition: smart_pointers.h:33
ProcessInfo
Definition: edgebased_PureConvection.py:116