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

The Mass is an entity (not a class) that defines a mass value at a Node in a finite element Mesh. The mass is set to a Node using the member function:

The mass is store in the private member variable:

  • Node::Mass : stores a vector with the mass at each degree-of-freedom

The mass set in this manner is added to the mass contribution of Element that share this Node.

REFERENCE:

  • Forde, B. W. R., Foschi, R. O., & Stiemer, S. F. (1990). "Object-oriented finite element analysis". Computers & Structures, 34(3), 355–374.
  • Mackie, R. I. (1992). "Object oriented programming of the finite element method". International Journal for Numerical Methods in Engineering, 35(2), 425–436.

Pre-Analysis

The python 01-Pre_Process/Method/Attach.py file provides with an interface to populate the Entities dictionary. A Mass can be added using the addMass() function. This function will transform the provided information into json format to be parse in the Run-Analysis.

  • addMass(tag, dof, vals):

    • tag : The identifier of the Node to add mass, i.e., tag > -1
    • dof : Degree of freedom number where the mass will be added, i.e., ndof > 0
    • vals : Mass values to be added to specific degree of freedom

    Example

    A MASS can be defined using the python interface as follows:
    SVL.addMass(tag=2, dof=[1, 2], vals=[1.00, 1.00])

    Application
    Please refer to the A04-DY_Lin_1DPointMass_Elastic_ZeroLength.py file located at 03-Validations/01-Debugging/ to see an example on how to define a point mass using the addMass function.

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 Mass, use:

  • delMass(tag):
    • tag : The identifier of the node to remove the mass, i.e., tag > -1

Run-Analysis

The C++ 02-Run_Process/01-Node/Node.cpp file provides the mass declaration. A Mass is added to a Node using the Node::SetMass() member function. A Mass is defined inside the "Masses" json field indicating its "Tag" as follows,

  • {
        "Masses": {
            "Tag": {
                "ndof" : int,
                "mass" : [ ]
            }
        }
    }
    
    Variable Description
    Tag The Node identifier where the mass is added.
    ndof Number of degree of freedom in the node.
    mass List of mass values applied to each degree of freedom.

    Attention
    The mass matrix \(\textbf{M} \in \mathbb{R}^{nTotal \times nTotal}\) can be constructed using only the Mass keyword by specifying mass values in each Node and each degree of freedom, and using zero density in Material. However, the resulting mass matrix will coincide with the LUMPED formulation specified in Global.
    Example

    A 2D MASS of 10.0 applied to node 1 with 3 degree of freedom over the X,Y direction and rotational mass 100.0 over the \(\theta_Z\) is:
    { "Masses": { "1": { "ndof" : 3, "mass" : [10.0, 10.0, 100.00] } } }

    A 3D MASS applied to node 5 with 6 degree of freedom over the X,Y,Z direction and zero rotational mass over \(\theta_X,\theta_Y,\theta_Z\) is:
    { "Masses": { "5": { "ndof" : 6, "mass" : [1.00, 1.00, 1.00, 0.00, 0.00, 0.00] } } }