Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations

Background

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:

  • Fathi, A., Poursartip, B., & Kallivokas, L. F. (2015). "Time‐domain hybrid formulations for wave simulations in three‐dimensional PML‐truncated heterogeneous media". International Journal for Numerical Methods in Engineering, 101(3), 165-198.

Pre-Analysis

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):

    • tag : The identifier of this integrator, i.e., tag > -1
    • attributes : Specific properties for the created integrator, for example
      • 'name' : The integrator's name, in this case EXTENDEDNEWMARK
      • 'dt' : The integrator's time step
      • 'ktol' : Tolerance to set a stiffness matrix value kij = 0.0
      • 'mtol' : Tolerance to set a mass matrix value mij = 0.0
      • 'ftol' : Tolerance to set a force vector value fj = 0.0

    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:

  • delIntegrator(tag):
    • tag : The identifier of the integrator to be removed, i.e., tag > -1

Run-Analysis

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.

    Attention
    The default tolerance for \(M_{ij}\), \(K_{ij}\), and \(F_{j}\) is \(10^{-15}\).