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

Background

The CompositeBathe class creates a two-step implicit second order integrator that is used in a DynamicAnalysis. First step assumes trapezoidal rule, this is displacement and velocity are approximated as,

\[ V_{n+{^1/{_2}}} = V_{n} + \frac{\Delta t}{4} \left( A_{n+{^1/{_2}}} + A_n \right) \,,\\ U_{n+{^1/{_2}}} = U_{n} + \frac{\Delta t}{4} \left( V_{n+{^1/{_2}}} + V_n \right) \,, \]

thus, the effective stiffness matrix and force vector are computed as,

\[ \textbf{K}_{\textrm{eff}} = \textbf{K}^{(i-1)}_{n+{^1/{_2}}} + \frac{16}{\Delta t^2} \textbf{M} + \frac{4}{\Delta t} \textbf{C} \,,\\ \textrm{F}_{\textrm{eff}} = \rm{R}_{n+{^1/{_2}}}^{(i)} - \textrm{F}_{n+{^1/{_2}}}^{(i-1)} + \textbf{M} \left(\frac{8}{\Delta t}V_n + A_n - \frac{16}{\Delta t^2} \Delta U \right) + \textbf{C} \left(V_n - \frac{4}{\Delta t} \Delta U\right) \,, \]

Second step assumes a 3-point Euler backward method, this is velocity and acceleration are approximated as,

\[ V_{n+1} = \frac{1}{\Delta t} \left( U_{n} - 4\, U_{n+{^1/{_2}}} + 3\, U_{n+1}\right)\,, \\ A_{n+1} = \frac{1}{\Delta t} \left( V_{n} - 4\, V_{n+{^1/{_2}}} + 3\, V_{n+1}\right)\,, \]

thus, the effective stiffness matrix and force vector are now computed as,

\[ \textbf{K}_{\textrm{eff}} = \textbf{K}^{(i-1)}_{n+1} + \frac{9}{\Delta t^2} \textbf{M} + \frac{3}{\Delta t} \textbf{C} \\ \textrm{F}_{\rm{eff}} = \textrm{R}_{n+1}^{(i)} - \textrm{F}_{n+1}^{(i-1)} + \textbf{C} \left( \frac{3}{\Delta t}U_{n+1}^{(i-1)} - \frac{4}{\Delta t}U_{n+{^1/{_2}}} + \frac{1}{\Delta t}U_{n}\right) - \textbf{M} \left(\frac{9}{\Delta t^2}U_{n+1}^{(i-1)} - \frac{12}{\Delta t^2}U_{n+{^1/{_2}}} + \frac{3}{\Delta t^2}U_{n} - \frac{4}{\Delta t}V_{n+{^1/{_2}}} + \frac{1}{\Delta t}V_{n}\right) \]

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.

REFERENCE:

  • Bathe, K. Jurgen, "Finite Element Procedures", Chapter 6: pages 779-782. Prentice-Hall, 1996.
  • Bathe, K. Jurgen, "Conserving Energy and Momentum in Nonlinear Dynamics: A Simple Implicit Time Integration Scheme", Computers and Structures, Vol(85), 437-445, 2007.
  • Bathe K. Jurgen and Gunwoo Noh, "Insight into an implicit time integration scheme for structural dynamics", Computers and Structures, Vol(98-99), 1-6, 2012.

Pre-Analysis

The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to create a CompositeBathe 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 BATHE
      • '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 BATHE integrator can be defined using the python interface as follows:
    SVL.addIntegrator(tag=1, attributes={'name': 'Bathe', 'dt': 0.00100})

    Application
    This integrator has not been validated yet.

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/04-Bathe/CompositeBathe.cpp file provides the class implementation. A CompositeBathe 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": "BATHE",
                        "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}\).