The ExtendedNewmarkBeta class creates an implicit second order accurate integrator for solving a third order differential equation:
\[ \textbf{M} \ddot{U}_{n+1} + \textbf{C} \dot{U}_{n+1} + \textbf{K} U_{n+1} + \textbf{G} \bar{U}_{n+1} = f_{n+1} \,,\]
which is used in a DynamicAnalysis when using PML3DHexa8 or PML3DHexa20 elements. This integrator assumes that velocity and acceleration can be approximated as,
\[ \dot{U}_{n+1} = \frac{\gamma}{\beta \Delta t}\Delta U + \left(1-\frac{\gamma}{\beta} \right)\dot{U}_n + \left(1-\frac{\gamma}{2\beta} \right)\Delta t \, \ddot{U}_n \,, \\ \ddot{U}_{n+1} = \frac{1}{\beta \Delta t^2}\Delta U - \frac{1}{\beta \Delta t} \dot{U}_n - \left(\frac{1}{2\beta}-1 \right)\ddot{U}_n \,, \]
where the \(\bar{U}_{n+1}\) is given as:
\[ \bar{U}_{n+1} = \frac{\alpha}{\beta}\Delta t \, \Delta U + \left(\frac{1}{2}-\frac{\alpha}{\beta} \right)\Delta t^2 \dot{U}_n+ \left(\frac{1}{6}-\frac{\alpha}{2\beta} \right)\Delta t^3 \ddot{U}_n + \bar{U}_n + \Delta t \, U_n \]
thus, the effective stiffness matrix and force vector are computed as,
\[ \textbf{K}_{\textrm{eff}} = \frac{1}{\beta \Delta t^2} \textbf{M} + \frac{\gamma}{\beta \Delta t} \textbf{C} + \textbf{K} + \frac{\alpha}{\beta}\Delta t \, \textbf{G} \quad\\ \textrm{F}_{\textrm{eff}} = f_{n+1}-\bar{\textbf{M}}\, \ddot{U}_n -\bar{\textbf{C}} \, \dot{U}_n - \bar{\textbf{K}} \, U_n - \textbf{G}\bar{U}_n \]
where \(\textbf{K}_{\textrm{eff}}\) and \(\textrm{F}_{\textrm{eff}}\) are used to compute \(\delta U^{(i)} = \textbf{K}_{\textrm{eff}}^{-1} \textrm{F}_{\textrm{eff}}\) and \(\Delta U = \displaystyle{\sum_i \delta U^{(i)}}\) used in the Algorithm, and
\[ \bar{M} = \left(1-\frac{1}{2\beta} \right) \textbf{M} + \left(1-\frac{\gamma}{2\beta} \right)\Delta t \, \textbf{C} + \left(\frac{1}{6}-\frac{\alpha}{2\beta}\right)\Delta t^2 \, \textbf{G} \\ \bar{C} = -\frac{\Delta t}{\beta} \textbf{M} + \left(1-\frac{\gamma}{\beta} \right) \textbf{C} + \left(\frac{1}{2}-\frac{\alpha}{\beta} \right)\Delta t^2 \textbf{G} \quad\quad\quad\quad\quad\\ \bar{K} = \textbf{K} + \Delta t \, \textbf{G} \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad \]
Note that \(\alpha=1/12,\, \beta =1/4,\, \gamma = 1/2\).
REFERENCE:
The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to create a ExtendedNewmarkBeta integrator. We use the addIntegrator() as follows:
addIntegrator(tag, attributes):
Example
A EXTENDEDNEWMARK can be defined using the python interface as follows:
SVL.addIntegrator(tag=1, attributes={'name': 'ExtendedNewmark', 'dt': 0.00100})
Application
Please refer to J12-DY_Axial_Load_Long_Rod_PML3D.py file located at 03-Validations/01-Debugging/ to see an example on how to define a EXTENDEDNEWMARK integrator using the addAlgorithm function.
On the contrary, the 01-Pre_Process/Method/Remove.py file provides with an interface to depopulate the Entities
dictionary. For example, to remove an already define Integrator, use:
The C++ Run-Analysis in the 02-Run_Process/10-Integrators/03-Newmark/ExtendedNewmarkBeta.cpp file provides the class implementation. A ExtendedNewmarkBeta is created using the built-in json parse-structure provided in the Driver.hpp and is defined inside the "Simulations" json field indicating its "Tag" as follows,
{ "Simulations": { "Tag": { "combo": int, "attributes": { "integrator": { "name": "EXTENDEDNEWMARK", "ktol": double, "mtol": double, "ftol": double, "dt": double, } } } } }
Variable | Description |
---|---|
combo | The combination to which this Integrator will be defined. |
mTol | The specified tolerance for setting \(M_{ij} \sim 0.0\). |
kTol | The specified tolerance for setting \(K_{ij} \sim 0.0\). |
fTol | The specified tolerance for setting \(F_{j} \sim 0.0\). |
dt | The time step for the analysis. |