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

Background

Supports in a structure are members which helps to resist external and internal loads. Supports transfers the load to the ground and provides stability to the structure. Figure shows schematically a portal frame structure whose support at Node (4) undergoes motion.

SupportMotion.png

Support Motion force effects in SVL are computed in two levels:

The Support Motion conditions in SVL are prescribed as inhomogeneous linear Constraint:

\[ \textrm{U}_{n+1} = \mathbf{T}^\top \textrm{u}_{n+1} + G_{n+1} \,, \]

where \(\textrm{U} \in \mathbb{R}^{N_{\textrm{total}}}\) the displacements for the total degree-of-freedom, \(\textrm{u} \in \mathbb{R}^{N_{\textrm{free}}}\) the displacements for the free-degree-of-freedom (i.e., degree of freedom after being fixed and constrained), and \(G \in \mathbb{R}^{N_{\textrm{total}}}\) the vector of support motions, and \(n+1\) the time step.

The incremental form of the previous equation yields,

\[ \Delta \textrm{U} = \mathbf{T}^\top \Delta \textrm{u} + \Delta g \,, \]

where \(\Delta g = G_{n+1} - G_n\) is the incremental support motion, and the displacement \(\textrm{U}_{n+1} = \textrm{U}_{n} + \Delta \textrm{U} = \textrm{U}_{n} + \mathbf{T}^\top \Delta \textrm{u} + \Delta g\).

The non-linear incremental form of the equilibrium equations, i.e., StaticAnalysis and DynamicAnalysis, is written as

\[ \mathbf{K}_\textrm{eff}^{(i-1)} \Delta \textrm{U}^{(i)} = \mathbf{F}_\textrm{eff} \]

Replacing both equation, the non-linear incremental form of the equilibrium equations with support motion is:

\[ \mathbf{T}^\top \,\mathbf{K}_\textrm{eff}^{(i-1)}\, \mathbf{T} \Delta \textrm{u}^{(i)} = \mathbf{T}^\top \left( \mathbf{F}_\textrm{eff} - \mathbf{K}_\textrm{eff}^{(i-1)} \Delta g\right) \]

REFERENCE:

  • Carlos Felippa. "Introduction to Finite Element Methods (ASEN 5007)": Multifreedom Constraints I, Fall 2005.

Pre-Analysis

The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to create a support motion. We use the addSupportMotion() as follows:

  • addSupportMotion(tag, attributes):

    • tag : The identifier of the restrained node, i.e., tag > 1 to apply the support motion
    • attributes : Dictionary containing the support motion action on a Nodes in a direction
      • 'type' : Constant or TimeSeries
      • 'value' : Displacement value if type=static
      • 'file' : Displacement time series file if type=dynamic
      • 'dof' : Degree of freedom to apply the support motion

    The file format specified at attributes['file']='Ricker.txt' must have the structure shown in the figure:

    PointLoadFile.png

    Example

    A SUPPORT MOTION can be defined using the python interface as follows:
    SVL.addSupportMotion(tag=708, attributes={'file': 'Ricker.txt', 'type': 'TimeSeries', 'dof': 1})

    Application
    Please refer to the A06-DY_Lin_1DPointMass_Elastic_ZeroLength_SupportMotion.py file located at 03-Validations/01-Debugging/ to see an example on how to define a support motion.

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 support motion, use:

  • delSupportMotion(tag):
    • tag : The identifier of the restrained node where the support motion was applied, i.e., tag > -1

Run-Analysis

The C++ Run-Analysis in the 02-Run_Process/07-Assembler/Assembler.cpp and 02-Run_Process/10-Integrators/Integrators.cpp files provides with the implementation. A Support Motion is created using the built-in json parse-structure provided in the Driver.hpp and is defined inside the "Supports" json field indicating its "Tag".

  • A Support Motion for StaticAnalysis can be created using the built-in parse-structure provided in the Parser as,
    {
        "Supports": {
            "Tag": {
                "type": "CONSTANT",
                "value": [ ],
                "dof": [ ]
            }
        }
    }
    
    Variable Description
    Tag The Node identifier to applied the support motion.
    value The magnitude of the support motion.
    dof The degree-of-freedom to apply the support motion.
    Example

    A static SUPPORT MOTION of 0.5 applied at node 5 along the degree-of-freedom 0 is created as:
    { "Supports": { "5": { "type" : "CONSTANT", "value": [0.5] "dof": [0] } } }

  • A Support Motion for DynamicAnalysis can be created using the built-in parse-structure provided in the Parser as,
    {
        "Supports": {
            "Tag": {
                "type": "TIMESERIES",
                "file": [str],
                "dof": [ ]
            }
        }
    }
    
    Variable Description
    Tag The Node identifier to applied the support motion.
    file The file name where the time displacement support motion are obtained.
    dof The degree-of-freedom to apply the support motion.
    Example

    A dynamic SUPPORT MOTION applied at node 5 along the degree-of-freedom 0 is created as:
    { "Supports": { "5": { "type" : "TIMESERIES", "file": ["/path/to/folder/load.in"] "dof": [0] } } }