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.
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:
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):
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:
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). |
material | The material identifier. |
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 } } } }