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

Background

Represent a traction that is applied on an Element object. This force is represented by a magnitude and direction that is applied on a face of the element. The Load object created in this manner needs first to be transformed at the element level into nodal forces and then assembled directly to the global force vector. The traction load direction needs to coincide with the global coordinate system.

StaticSurfaceLoad.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 SURFACE LOAD. For example, to create a Static surface-load using json format, use:

  • addLoad(tag, name, attributes):

    • tag : The identifier of this load, i.e., tag > -1
    • name : The Seismo-VLAB load class name, in this case 'ElementLoad'.
    • attributes : Specific properties for the created load, for example
      • 'fun' : The function identifier
      • 'list' : The identifier of the surfaces where this load acts upon
      • 'type' : The type of element load, in this case 'Surface'.

    Example

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

The information required to define the magnitude and direction of this Load 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 function
      • 'mag' : The magnitude of the load

    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
Please refer to the E03-ST_Lin_2DSurfaceLoad_Elastic_Quad4.py file located at 03-Validations/01-Debugging/ to see an example on how a STATIC SURFACE LOAD and its CONSTANT FUNCTION are defined.

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 SURFACE LOAD is defined inside the "Loads" json field indicating its "Tag" as follows,

  • {
        "Loads": {
            "Tag": {
                "name" : "ELEMENTLOAD",
                "attributes": {
                    "name": "CONSTANT",
                    "type": "SURFACE",
                    "mag": double,
                    "dir": [ ],
                    "list": [ ]
                }
            }
        }
    }
    
    Variable Description
    Tag Unique load object identifier.
    mag The applied surface load magnitude.
    dir The unit vector of the applied surface force.
    list List of Surface identifiers that share this load.

    Attention
    The direction of the load must coincide with the global coordinate system.
    For Shell elements only out-of-plane tractions can be applied. The out-of-plane face number is 5.
    See Surface for more details on how to define a surface in an element.
    Example

    A 3D STATIC SURFACE LOAD applied downwards on elements 1,2,3,4,5 on face 6 with magnitude 50.0 N/m^2:
    { "Loads": { "1": { "name" : "ELEMENTLOAD", "attributes": { "name": "CONSTANT", "type": "SURFACE", "mag": 50.0, "dir": [0.000 0.000, -1.000], "list": [1,2,3,4,5] } } } }