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

Background

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

\[ \sigma = k_1 \epsilon + k_2 \epsilon^2 + k_3 \epsilon^3 \nonumber \]

where \(\sigma\) is the uniaxial stress, \(\epsilon\) is the uniaxial strain, and \(k_1\), \(k_2\), \(k_3\) are parameters of the constitutive law. The next Figure shows the constitutive law of this material.

Hertzian1DLinear.png

REFERENCE:

  • Antonio Palermo, Yifan Wang, Paolo Celli, and Chiara Daraio, "Tuning of Surface-Acoustic-Wave Dispersion via Magnetically Modulated Contact Resonances", Phys. Rev. Applied 11, 044057 - Published 18 April 2019

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

  • addMaterial(tag, name='Hertzian1DLinear', 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
      • 'k1' : is the linear coefficient.
      • 'k2' : is the quadratic coefficient.
      • 'k3' : is the cubic coefficient.
      • 'rho' : is the material density. Can be omitted for static analysis.

    Example

    A HERTZIAN1DLINEAR material can be defined using the python interface as follows:
    SVL.addMaterial(tag=1, name='Hertzian1DLinear', attributes={'k1': 10.0, 'k2': 0.0, 'k3': 0.0})

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

  • {
        "Materials": {
            "Tag": {
                "name" : "HERTZIAN1DLINEAR",
                "attributes": {
                    "k1": double,
                    "k2": double,
                    "k3": double,
                    "rho": double
                }
            }
        }
    }
    
    Variable Description
    Tag Unique material object identifier.
    k1 Represents the linear elastic modulus.
    k2 Represents the quadratic elastic modulus.
    k3 Represents the cubic elastic modulus.
    rho Represents the material density.

    Attention
    This material can only be assigned to one-dimensional elements such as: lin2DTruss2, kin2DTruss2, lin3DTruss2, kin3DTruss2 and ZeroLength1D elements.
    The Poisson's ratio is not employed in the Hertzian1DLinear material.
    Example

    A uniaxial HERTZIAN1DLINEAR material with linear modulus 10 and no density is defined:
    { "Materials": { "1": { "name" : "HERTZIAN1DLINEAR", "attributes": { "k1": 10.0, "k2": 0.0, "k3": 0.0, "rho": 0.0 } } } }