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

Background

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

\[ \sigma = \begin{cases} 0, & \epsilon \leq \epsilon_g \\ E(\epsilon - \epsilon_g), & \epsilon \in [\epsilon_g, \epsilon_y] \\ \sigma_y + E\,\lambda (\epsilon - \epsilon_g), & \epsilon \geq \epsilon_y \end{cases} \]

where \(\sigma\) is the uniaxial stress, \(\epsilon\) is the uniaxial strain, \(E\) is the elasticity modulus, \(\epsilon_g\) is gap from which the material will take stress, and \(\epsilon_y\) is the yielding strain. The Figure shows the constitutive law of this material. No hysteresis behavior is present for this formulation.

Plastic1DGap.png

REFERENCE:

  • Bathe, K. Jurgen, "Finite Element Procedures", Chapter 6: pages 485-491, 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 Plastic1DGap material using json format, use:

  • addMaterial(tag, name='Plastic1DGap', 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.
      • 'fy' : is the yielding stress.
      • 'gap' : is the gap or separation.
      • 'ratio' : is the post yielding modulus.

    Example

    A PLASTIC1DGAP can be defined using the python interface as follows:
    SVL.addMaterials(tag=1, name='Plastic1DGap', attributes={'E': 50.0, 'fy': 10.0, 'gap': 0.2, 'ratio': 0.01})

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

  • {
        "Materials": {
            "Tag": {
                "name" : "PLASTIC1DGAP",
                "attributes": {
                    "E": double,
                    "fy": double,
                    "gap": double,
                    "ratio": double
                }
            }
        }
    }
    
    Variable Description
    Tag Unique material object identifier.
    E Represents the elasticity modulus.
    fy Represents the stress or force at which material reaches plastic state.
    gap Represents the gap (strain or separation)
    ratio Represents the post yield modulus.

    Attention
    This material should only be assigned to ZeroLength1D.
    To create a compression-only gap element, NEGATIVE values need to be specified for fy and gap.
    Example

    A uniaxial PLASTIC1DGAP with elasticity modulus 50, yield stress 10, and a gap of 0.2 is defined:
    { "Materials": { "1": { "name" : "PLASTIC1DGAP", "attributes": { "E" : 50.0, "fy" : 10.0, "gap" : 0.2, "ratio" : 0.01 } } } }