Seismo-VLAB  1.3
An Open-Source Finite Element Software for Meso-Scale Simulations
Static point-body-load

Background

Represent a vector of mass forces that is applied on a Node object. This force is represented by a magnitude and a direction of a field such that \(\textbf{F}= m_n \, \textbf{f}_b\). The Load object created in this manner is assembled directly to the global force vector, thus its direction must coincide with the Node's number of degree of freedom.

StaticPointBodyLoad.png

REFERENCE:

  • Bathe K. Jurgen, "Finite Element Procedures", Chapter 4: pages 161-166, Table 4.3, Prentice-Hall, 1996.

Pre-Analysis

The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to create a STATIC POINT BODY LOAD. For example, to create a Static point-body-load using json format, use:

  • addLoad(tag, name='PointLoad', attributes):

    • tag : The identifier of this load, i.e., tag > -1
    • name : The Seismo-VLAB load class name, in this case: 'PointLoad'.
    • attributes : Specific properties for the PointLoad, for example
      • 'fun': The function identifier
      • 'list': The identifier of the nodes from where the load will be generated
      • 'type': The type of load, in this case: 'Body'.

    Example

    A STATIC POINT BODY LOAD can be defined using the python interface as follows:
    SVL.addLoad(tag=1, name='PointLoad', attributes={'fun': 1, 'type': 'Body', 'list': [1]})

The information required to define the magnitude and direction of the field where the load will act on. This information is provided in the attributes['fun'] identifier. Thus, to create a CONSTANT FUNCTION using the json format, use:

  • addFunction(tag, name, attributes):

    • tag : The identifier of this function, i.e., tag > -1
    • name : The Seismo-VLAB function class name, in this case 'Constant'.
    • attributes : The constant function information
      • 'dir' : The direction of the acting field function
      • 'mag' : The magnitude of the field

    Example

    A CONSTANT FUNCTION can be defined using the python interface as follows:
    SVL.addFunction(tag=1, name='Constant', attributes={'mag': 10.00, 'dir': [0.0, 0.0, -1.0]})

Application
This load has not been validated yet.

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

  • delLoad(tag):
    • tag : The identifier of the load to be removed, i.e., tag > -1

Now, to remove a already defined function, use:

  • delFunction(tag):
    • tag : The identifier of the function to be removed, i.e., tag > -1

Run-Analysis

The C++ Run-Analysis in the 02-Run_Process/05-Loads/Load.cpp file provides the class implementation. A STATIC POINT BODY LOAD is defined inside the "Loads" json field indicating its "Tag" as follows,

  • {
        "Loads": {
            "Tag": {
                "name" : "POINTLOAD",
                "attributes": {
                    "name": "CONSTANT",
                    "type": "BODY",
                    "mag": double,
                    "dir": [ ],
                    "list": [ ]
                }
            }
        }
    }
    
    Variable Description
    Tag Unique load object identifier.
    mag Magnitude/intensity of the applied force, traction or body load.
    dir Vector containing the direction of the force.
    list List of Node identifiers that share this load.

    Attention
    The dimensions in dir must be consistent with the number of degree-of-freedom of that Node.
    The Node must have assigned a Mass, otherwise its contribution will be a zero vector (since \(m_n = 0\) by default).
    Example

    A 3D STATIC POINT BODY LOAD applied downwards on node 2 whose intensities is 0.75 N:
    { "Loads": { "1": { "name" : "POINTLOAD", "attributes": { "name": "CONSTANT", "type": "BODY", "mag": 0.75, "dir": [0.000, 0.000, -1.000], "list": [2] } } } }