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

Background

The Elastic2DPlaneStrain class creates a biaxial material class with the constitutive equation given as

\[ \sigma = \mathbb{C} \, \epsilon \nonumber \]

where \(\sigma\) is the stress vector, \(\epsilon\) is the strain vector, and \(\mathbb{C}\) is the material constitutive matrix, given as

\[ \mathbb{C} = \frac{E}{(1 + \nu)(1 - 2\nu)} \begin{bmatrix} 1 - \nu & \nu & 0 \\ \nu & 1 - \nu & 0 \\ 0 & 0 & \frac{1 - 2 \nu}{2} \end{bmatrix} \nonumber \]

REFERENCE:

  • Bathe K. Jurgen, "Finite Element Procedures", Chapter 4: pages 194, Table 4.3, Prentice-Hall, 1996.

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

  • addMaterial(tag, name='Elastic2DPlaneStrain', 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
      • 'E' : is the elastic modulus of elasticity.
      • 'nu' : is the Poisson’s ratio.
      • 'rho' : is the material density. Can be omitted for static analysis.

    Example

    A ELASTIC2DPLANESTRAIN material can be defined using the python interface as follows:
    SVL.addMaterial(tag=1, name='Elastic2DPlaneStrain', attributes={'E': 200.0, 'nu': 0.25, 'rho': 0.0})

    Application
    Please refer to the F01-ST_Lin_2DPointLoad_ElasticPStrain_Quad4.py file located at 03-Validations/01-Debugging/ to see an example on how to define a Elastic2DPlaneStrain 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/Elastic2DPlaneStrain.cpp file provides the class implementation. A Elastic2DPlaneStrain material is created using the built-in json parse-structure provided in the Driver.hpp. A Elastic2DPlaneStrain is defined inside the "Materials" json field indicating its "Tag" as follows,

  • {
        "Materials": {
            "Tag": {
                "name" : "ELASTIC2DPLANESTRAIN",
                "attributes": {
                    "E": double,
                    "nu": double,
                    "rho": double
                }
            }
        }
    }
    
Variable Description
Tag Unique material object identifier.
E Represents the elasticity modulus.
nu Represents the Poisson's ratio.
rho Represents the material density.
Attention
This material can only be assigned to two-dimensional elements such as: lin2DQuad4, kin2DQuad4, lin2DQuad8, and lin3DShell4 elements.

Example

A biaxial ELASTIC2DPLANESTRAIN material with elasticity modulus 200, Poisson's ratio 0.25, no density is defined as:
{ "Materials": { "1": { "name" : "ELASTIC2DPLANESTRAIN", "attributes": { "E" : 200.0, "nu" : 0.25, "rho": 0.0 } } } }