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

The Surface is an entity (not a class) that defines an area on an element where tractions can be applied. The face number is provided according to the element connectivity. This information is store in the class using the member function

The traction information is store in the private member variable:

  • Load::Faces : stores the associated face number of the element,
  • Load::Tags : stores the element identifier for this face.

The figure below represents the face number for line, quadrilateral, and hexahedral elements. Note that this number depend on the connectivity of that face. Currently, the face number is computed in the Pre-Analysis using the python function SurfaceFace() loacted at 01-Pre_Process/Method/Compute.py file.

FaceNumber.png

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 Surface can be added using the addSurface() function. This function will transform the provided information into json format to be parse in the Run-Analysis.

  • addSurface(tag, etag, conn):

    • tag : The identifier of this surface, i.e., tag > 0
    • etag :The identifier of this element, i.e., tag > 0
    • conn : Connectivity array of this surface (must belong to an element)

    Example

    A SURFACE can be defined using the python interface as follows:
    SVL.addSurface(tag=5, etag=2, conn=[5,6,7,8])

    Application
    Please refer to the D13-ST_Lin_3DSurfaceHorizontal_Elastic_Frame2.py or I02-ST_Lin_3DSurfaceLoad_Elastic_Hexa8.py file located at 03-Validations/01-Debugging/ to see an example on how to define a surface using the addSurface function.

The python 01-Pre_Process/Method/Compute.py provides with a function to compute the face number of an element provided with the connectivity .

  • SurfaceFace(name, conn):
    This function associate the face (surface) number to an element (name) depending on the connectivity array specified for that face (conn).

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

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

Run-Analysis

The C++ 02-Run_Process/05-Loads/Loads.cpp file provides the surface declaration. A Surface is added to a Load using the Load::AddFaces() member function. A Surface is defined inside the "Surfaces" json field indicating its "Tag" as follows,

  • {
        "Surfaces": {
            "Tag": {
                "element": int,
                "face": int
            }
        }
    }
    
    Variable Description
    Tag Unique surface object identifier.
    face The face number on the element according to figure above.
    element The unique element identifier or Tag.

    Example

    A SURFACE with tag 5 defined in the element 2 on face 3 corresponding to connectivity [5,6,7,8] :
    { "Surfaces": { "5": { "element" : 2, "face" : 3 } } }