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

Background

The Plastic1DJ2 class creates a uniaxial material class described in [Simo1997] with the constitutive equation given as

\[ \sigma = E \left( \epsilon - \epsilon^p \right) \]

where \(\sigma\) is the uniaxial stress, \(\epsilon\) is the uniaxial strain, and \(E\) is the elasticity modulus. Figure shows the constitutive law of this material.

Plastic1DJ2.png

REFERENCE:

  • J.C. Simo, T.J.R. Hughes, "Computational Inelasticity", Springer, 1997, pp.45

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

  • addMaterial(tag, name='Plastic1DJ2', 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 elasticity modulus.
      • 'nu' : is the Poisson's ratio.
      • 'rho' : is the material density.
      • 'h' : is the hardening modulus.
      • 'k' : is the kinematic ratio.
      • 'Sy' : is the yield stress.

    Example

    A PLASTIC1DJ2 material can be defined using the python interface as follows:
    SVL.addMaterial(tag=1, name='Plastic1DJ2', attributes={'E': 10.0, 'nu': 0.0, 'k': 0.0, 'h': 3.75, 'Sy': 0.25})

    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 Plastic1DJ2 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/02-NonLinear/Plastic1DJ2.cpp file provides the class implementation. A Plastic1DJ2 material is created using the built-in json parse-structure provided in the Driver.hpp. A Plastic1DJ2 is defined inside the "Materials" json field indicating its "Tag" as follows,

  • {
        "Materials": {
            "Tag": {
                "name" : "PLASTIC1DJ2",
                "attributes": {
                    "E": double,
                    "nu": double,
                    "rho": double,
                    "k": double,
                    "h": double,
                    "Sy": double
                }
            }
        }
    }
    
    Variable Description
    Tag Unique material object identifier.
    E Represents the elasticity modulus.
    nu Represents the Poisson's ratio.
    rho Represents the material density.
    k Represents the kinematic modulus.
    h Represents the hardening modulus.
    Sy Represents the yielding stress.

    Attention
    This material can only be assigned to one-dimensional elements such as: lin2DTruss2, kin2DTruss2, lin3DTruss2, kin3DTruss2 and ZeroLength1D elements.
    Example

    A uniaxial PLASTIC1DJ2 material with elasticity modulus 200, Poisson's ratio 0.25, no density, no hardening modulus, and kinematic modulus 3.75 and yield stress of 0.25 is defined as:
    { "Materials": { "1": { "name" : "PLASTIC1DJ2", "attributes": { "E": 200.0, "nu": 0.25, "rho": 0.0, "k": 0.0, "h": 3.75, "Sy": 0.25 } } } }