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

Background

The ZeroLength1D class creates a uniaxial element with two-nodes whose coordinates coincides. Each degree-of-freedom assigned to this element represents a translation in the x-, y-, or z-directions. The main purpose of this element is to force uniaxial behavior along a certain direction. Figure provides a simple representation of this element where (1) and (2) represent the start and end nodes. Note that Node (1) and (2) are at the same position.

ZeroLength1D.png

The ZeroLength1D mass matrix in global coordinates is \(\textbf{M}^\textrm{e} = 0\). On the other hand, the ZeroLength1D stiffness matrix in global coordinates is computed as \(\textbf{K}^\textrm{e} = \textbf{T}_\textrm{e}^\top k \,\textbf{T}_\textrm{e}\), and the damping matrix in local coordinates is computed as \(\textbf{C}^\textrm{e} = \textbf{T}_\textrm{e}^\top c \,\textbf{T}_\textrm{e}\), where \(k\), and \(c\) are obtained from the Material object. The transformation matrix from local to global axes is \(\textbf{T}_\textrm{e} = [-\hat{\textrm{n}}^\top, \hat{\textrm{n}}^\top]\), where \(\hat{\textrm{n}} \in \mathbb{R}^{\textrm{dim}}\) is the unit direction of action. Note that \(\textbf{M}^\textrm{e}, \textbf{C}^\textrm{e} , \textbf{K}^\textrm{e} \in \mathbb{R}^{\textrm{N}_\textrm{dof}^\textrm{e} \times \textrm{N}_\textrm{dof}^\textrm{e}}\) with \(\textrm{N}_\textrm{dof}^\textrm{e} = 2 \, \textrm{N}_\textrm{dim}\), and the stiffness or damping contribution to the Global depend on the Material specified.

REFERENCE:

  • Jeremić et al. Nonlinear Finite Elements: Modeling and Simulation of Earthquakes, Soils, Structures and their Interaction. UCD and LBNL, CA, USA, (1989-2021)

Pre-Analysis

The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to populate the Entities dictionary. This file contains several functions to populate specific fields. For example, to create a ZeroLength1D, using json format, use:

  • addElement(tag, name='ZeroLength1D', conn, attributes):

    • tag : The identifier of this element, i.e., tag > -1
    • name : Seismo-VLAB element class name
    • conn : Connectivity array of this element
    • attributes : Specific properties for the created element, for example
      • 'material' is material identifier.
      • 'dir' is the direction of action (X,Y,Z = 1, 2, 3).

    Example

    A ZEROLENGTH1D element can be defined using the python interface as follows:
    SVL.addElement(tag=1, name='ZeroLength1D', conn=[5,8], attributes={'dir': 1, 'material': 1})

    Application
    Please refer to the A03-DY_Lin_2D_Plastic_ZeroLength.py file located at 03-Validations/01-Debugging/ to see an example on how to define a ZeroLength1D element.

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 Element, use:

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

Run-Analysis

The C++ Run-Analysis in the 02-Run_Process/04-Elements/01-Zero/ZeroLength1D.cpp file provides the class implementation. A ZeroLength1D element is created using the built-in json parse-structure provided in the Driver.hpp. A ZeroLength1D is defined inside the "Elements" json field indicating its "Tag" as follows,

  • {
        "Elements": {
            "Tag": {
                "name" : "ZEROLENGTH1D",
                "conn" : [ ],
                "attributes": {
                    "dir": int,
                    "material": int
                }
            }
        }
    }
    
    Variable Description
    Tag Unique positive element identifier.
    conn The element connectivity node array.
    dir The direction of action (0,1,2 for X, Y, and Z respectively).
    materialThe material identifier.

    Attention
    The element acts only in one direction.
    The element provides no-contribution to the mass matrix.
    The element only provides contribution to the stiffness/damping matrix depending on the prescribed material.
    The ZeroLength1D element along with Viscous1DLinear material can be used to model Lysmer's absorbent boundary conditions.
    Example

    A ZEROLENGTH1D element between nodes 5 and 8, made of material 1, and acting on Y-direction in a 2D problem is constructed as:
    { "Elements": { "1": { "name" : "ZEROLENGTH1D", "conn" : [5,8], "attributes": { "dir": 1, "material": 1 } } } }