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

Background

The Plastic3DJ2 class creates a triaxial material class with the constitutive equation given as

\[ \sigma = \mathbb{C} \left( \epsilon - \epsilon^p \right) \nonumber \]

where \(\sigma\) is the stress vector, \(\epsilon\) is the strain vector, and \(\mathbb{C}\) is the rank-four consistent tangent stiffness, given as

\[ \mathbb{C} = K \, \textbf{1} \otimes \textbf{1} + 2 \, \mu \left( \mathbb{I} - \frac{1}{3} \textbf{1} \otimes \textbf{1} - \frac{\hat{\textbf{n}} \otimes \hat{\textbf{n}}}{1 + \frac{H}{2 \, \mu}} \right) - 2 \mu \, \gamma \left( \mathbb{I} - \frac{1}{3} \textbf{1} \otimes \textbf{1} - \hat{\textbf{n}} \otimes \hat{\textbf{n}} \right)\nonumber \]

Plastic3DJ2.png

REFERENCE:

  • Ronaldo .I. Borja, Plasticity Modeling & Computation, Springer, 2013, pp. 47
  • J.C. Simo, T.J.R. Hughes, Computational Inelasticity, Springer, 1997, pp.124

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

  • addMaterial(tag, name='Plastic3DJ2', 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
      • 'K' : is the bulk’s modulus.
      • 'G' : is the elastic shear modulus.
      • 'rho' : is the material density.
      • 'H' : is the hardening modulus.
      • 'Sy' : is the yield stress.
      • 'beta' : is the Integration parameter or the Kinematic/Hardening ratio.

    Example

    A PLASTIC3DJ2 material can be defined using the python interface as follows:
    SVL.addMaterial(tag=1, name='Plastic3DJ2', attributes={'K': 133, 'G': 20.0, 'h': 80, 'beta': 1.0, 'Sy': 40})

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

  • {
        "Materials": {
            "Tag": {
                "name" : "PLASTIC3DJ2",
                "attributes": {
                    "K": double,
                    "G": double,
                    "rho": double,
                    "h": double,
                    "Sy": double,
                    "beta": double
                }
            }
        }
    }
    
    Variable Description
    Tag Unique material object identifier.
    K Represents the bulk modulus.
    G Represents the shear modulus.
    rho Represents the material density.
    h Represents the hardening modulus.
    beta Kinematic/Hardening ratio.
    Sy Represents the yielding stress.

    Attention
    This material can only be assigned to three-dimensional elements such as: lin3DHexa8, lin3DHexa20, and kin3DHexa8 elements.
    Example

    A triaxial PLASTIC3DJ2 material with bulk modulus 133, shear modulus 80, no density, hardening modulus 80, hardening ratio 1.0, and yield stress 40 is defined as:
    { "Materials": { "1": { "name" : "PLASTIC3DJ2", "attributes": { "K": 133, "G": 80, "rho": 0.0, "h": 80, "Sy": 40.0, "beta": 1.0 } } } }