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

Background

The Linear keyword creates an algorithm that solves the linear system between two states in just one step. This algorithm is meant to be used in linear analysis for which the system \(\mathbf{K}_{\textrm{eff}} \, \Delta U = \textrm{F}_{\textrm{eff}}\) is solved.

REFERENCE:

  • Bathe K. Jurgen, "Finite Element Procedures", Chapter 8: pages 705-708, 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 Linear. We use the addAlgorithm() as follows:

  • addAlgorithm(tag, attributes):

    • tag : The identifier of this algorithm, i.e., tag > -1
    • attributes : Specific properties for the created algorithm, for example
      • 'name' : The algorithm's name
      • 'nstep' : The algorithm's number of increment steps
      • 'cnvgtol' : Tolerance to accept the solution has converged
      • 'cnvgtest' : The converge test to apply, these can be
        • 'UnbalanceForce'
        • 'IncrementalDisplacement'
        • 'RelativeUnbalanceForce'
        • 'RelativeIncrementalDisplacement'

    Example

    A ALGORITHM can be defined using the python interface as follows:
    SVL.addAlgorithm(tag=1, attributes={'name': 'Linear', 'nstep': 1})

    Application Please refer to C07-ST_Lin_3DCantilever_Elastic_Truss2 file located at 03-Validations/01-Debugging/ to see an example on how to define a LINEAR algorithm using the addAlgorithm 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 Algorithm, use:

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

Run-Analysis

The C++ Run-Analysis in the 02-Run_Process/09-Algorithms/01-Linear/Linear.cpp file provides the class implementation. A Linear is created using the built-in json parse-structure provided in the Driver.hpp and is defined inside the "Simulations" json field indicating its "Tag" as follows,

  • {
        "Simulations": {
            "Tag": {
                "combo": int,
                "attributes": {
                    "algorithm": {
                        "name": "LINEAR",
                        "nstep": int,
                        "cnvgtol": double,
                        "cnvgtest": int
                    }
                }
            }
        }
    }
    
    Variable Description
    combo The combination to which this Algorithm will be defined.
    cnvgtol The minimum tolerance allowed to stop iterating.
    nstep Maximum number of iterations for which the algorithm will be forced to stop.
    cnvgtest Test number to compute the residual error.

    Attention
    The cnvgtol in this class is not used.
    The cnvgtest number is not used.
    The maximum number of iterations is nstep=1, a different value will be ignored.