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

Background

The Viscous1DLinear class creates a uniaxial material class with the constitutive equation given as

\[ \sigma = \eta \, \dot{\epsilon} \nonumber \]

where \(\sigma\) is the uniaxial stress, \(\dot{\epsilon}\) is the uniaxial strain rate, and \(s\) is the viscosity constant. The next Figure shows the constitutive law of this material.

Viscous1DLinear.png

REFERENCE:

  • G. Pekcan, J.B.Mander abd S.S. Chen, "Fundamental Considerations for the Design of Non-Linear Viscous Dampers", Earthquake Engineering & Structural Dynamics 28,1405-1425 (1999)

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 Viscous1DLinear material using json format, use:

  • addMaterial(tag, name='Viscous1DLinear', attributes):

    • tag : The identifier of this material, i.e., tag > -1
    • name : Seismo-VLAB material class name
    • attributes : Specific properties for the created material, for example
      • 'eta' : is the linear viscous coefficient.

    Example

    A VISCOUS1DLINEAR material can be defined using the python interface as follows:
    SVL.addMaterial(tag=1, name='Viscous1DLinear', attributes={'eta': 0.125})

    Application
    Please refer to the A02-DY_Lin_2D_Viscous_ZeroLength.py file located at 03-Validations/01-Debugging/ to see an example on how to define a Viscous1DLinear material.

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

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

Run-Analysis

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

  • {
        "Materials": {
            "Tag": {
                "name" : "VISCOUS1DLINEAR",
                "attributes": {
                    "eta": double
                }
            }
        }
    }
    
    Variable Description
    Tag Unique material object identifier.
    eta Represents the viscosity constant.

    Attention
    This material does not contribute to stiffness or mass at the element level.
    This material can only be assigned to one-dimensional elements such as: lin2DTruss2, kin2DTruss2, lin3DTruss2, kin3DTruss2 and ZeroLength1D elements.
    The Viscous1DLinear material along with ZeroLength1D element can be used to model Lysmer's absorbent boundary conditions.
    Example

    A VISCOUS1DLINEAR material with viscosity constant 0.125 is defined as:
    { "Materials": { "1": { "name" : "VISCOUS1DLINEAR", "attributes": { "eta": 0.125 } } } }