FemProcess
The GeMA Fem Process Plugin
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
GmpFemNonLinearSolver Class Reference

Basic class for solving Non linear FEM problems. More...

#include <gmpFemNonLinearSolver.h>

Inheritance diagram for GmpFemNonLinearSolver:
Inheritance graph
[legend]
Collaboration diagram for GmpFemNonLinearSolver:
Collaboration graph
[legend]

Public Member Functions

 GmpFemNonLinearSolver (GmElementMesh *, GmSimulationData *, const QList< GmpFemPhysics * > &, GmNumSolver *, const GmpFemSolverOptions &, const GmLogCategory &)
 Constructor. More...
 
virtual ~GmpFemNonLinearSolver ()
 Destructor.
 
void enableFastUpdate (bool mode)
 Sets fastUpdate option.
 
virtual bool init ()
 Initializes the solver and allocates the needed memory. More...
 
virtual bool step (double dt, double *newt, bool *conv, double *err, int *niter, bool eval)
 Defines the Step solver. More...
 
virtual bool geostatic ()
 Defines the Geostatic step. More...
 
virtual bool pos ()
 Run pos-procisng algorithms. More...
 
virtual bool crackDetection ()
 Verify potential crack roots. More...
 
virtual bool crackPropagation ()
 Check crack propagation. More...
 
virtual bool updateBC (double dt, int iter, bool updateBc)
 Updates boundary conditions.
 
- Public Member Functions inherited from GmpFemSolver
 GmpFemSolver (GmElementMesh *mesh, GmSimulationData *simulation, const QList< GmpFemPhysics * > &physics, GmNumSolver *solver, const GmpFemSolverOptions &options, const GmLogCategory &logger)
 Constructor. Expects to receive as parameters the mesh we are acting upon, the list of physics objects that will cooperate to create the global stiffness matrix and the solver used to solve the resulting linear system. More...
 
virtual ~GmpFemSolver (void)
 Destructor.
 
bool run ()
 Execute the process. Returns true on success.
 
bool calcLinearResidual (double *rnorm, double *maxNodeDiff, double *avgNodeDiff)
 When solving a non linear system by repeated iterations, this function aims to calculate the residual of the actual solution. More...
 
void setMatrixCombinerObject (const GmpFemAssemblerMatrixCombiner *combiner)
 Sets the combiner object that will be used by the assembler to merge elemental data from multiple matrices (eg. C and K) into an equivalent matrix. More...
 
void setVectorCombinerObject (const GmpFemAssemblerVectorCombiner *combiner)
 Sets the combiner objects that will be used by the assembler to merge elemental data from multiple vectors (eg. Fe and Fi) into an equivalent vector. More...
 
bool update (int mode, QString &err)
 Informs the solver of an external change in model dofs, elements or BCs that must be forwarded to the assembler. See the documentation of GmpFemAssembler::update() for more details.
 
virtual bool stateAboutToBeSaved (GmStateDump *state)
 
virtual bool stateSaved (GmStateDump *state)
 
virtual bool stateAboutToBeLoaded (GmStateDump *state)
 
virtual bool stateLoaded (GmStateDump *state)
 Informs physics objects that a load operation was completed giving them an opportunity to adjust its state in case the loaded data is not exactly what the internal state needs to be. It will also call derivedResults() so that previous results can be recovered. In that call, the nonLinearSolver parameter is obtained from the stateLoadedCalcDerivedResultsNonLinear() virtual function.
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
virtual void * qt_metacast (const char *)
 
virtual int qt_metacall (QMetaObject::Call, int, void **)
 
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 

Protected Member Functions

virtual bool initElementSets (GmNumSolver *solver)
 Allocates and init matrices and vectors. More...
 
virtual void setElementSets (bool, bool, bool, bool, bool)
 Enable or disable matrices and vectors. More...
 
virtual bool isNonLinear () const
 Checks nonlinear analysis. More...
 
virtual bool isTransient () const
 Checks transient analysis.
 
virtual bool convergence () const
 Checks convergence. More...
 
virtual bool convergenceNew () const
 
virtual void saveInternalForceAttributes ()
 Save internal force attibutes such as Reaction and Volume flux. More...
 
virtual void update ()
 Updates state values. More...
 
virtual void restore ()
 Restore values. More...
 
virtual void setLoad ()
 Sets the current load factor (l + dl) More...
 
virtual void setTime ()
 Sets the current time (t + dt) More...
 
virtual void setState ()
 Sets the current state (_x + _dx) More...
 
virtual double loadPredictor ()
 Load predictor strategies. More...
 
virtual double loadCorrector ()
 Load corrector strategy. More...
 
virtual double calcLocalError (GmVector x, GmVector dx)
 Computes the local error.
 
virtual bool stepStaticNonlinear (double, double *newt)
 Implementation of nonlinear static solver. More...
 
virtual GmpFemPhysics::FemResultType updateResidualForceAndStiffnessMatrix (double l)
 Updates the stiffness matrix. More...
 
virtual GmpFemPhysics::FemResultType fillStiffnessMatrixBroyden ()
 Evaluates the stiffness matrix using Broyden's method. More...
 
virtual GmpFemPhysics::FemResultType fillStiffnessMatrixBFGS ()
 Evaluates the stiffness matrix using BFGS method. More...
 
bool solveLinearSystem (GmSolverMatrix *Keq, GmVector &Feq, GmVector &x)
 Solves the linear system K.x = f. More...
 
virtual bool stepTransientNonLinear (double, double *newt)
 Implementation of nonlinear transient solver. More...
 
virtual bool stepTransientNonlinearAut (double, double *newt)
 Implementation of nonlinear transient solver based on Sloan.
 
GmpFemPhysics::FemResultType prepareTransientSystem (double dt)
 Fills the matrix K and the vector Fe with the linear system resulting from applying an implicit schema to the transient temperature equation. More...
 
GmpFemPhysics::FemResultType prepareTransientSystemPredict (double dt)
 
void vectorTreatment (GmVector &fint)
 Computes the local error.
 
bool timeIncrementAdjustment (double dt, int iter, GmVector &X1, GmVector &X0)
 
virtual bool addStateItemsToGroup (GmStateDump *state, int groupId)
 Adds to 'state' the data items that should be saved for this FEM process. Should probably be overriden by derived classes to add their own requirements. More...
 
virtual bool fillStateControlMapData (QVariantMap *map)
 Method called for filling the state dump control regustered in addStateItemsToGroup()
 
virtual bool stateControlMapDataLoaded (QVariantMap *map)
 Method called when the state dump control registered in addStateItemsToGroup() has been loaded.
 
virtual bool stateLoadedCalcDerivedResultsNonLinear ()
 Returns the value of the "nonLinearSolver" parameter that will be passed to the calcDerivedResults() call from the standard implementation of stateLoaded()
 
virtual bool fillStateControlMapDataStaticSolver (QVariantMap *map)
 Virtual method to fill the map with the needed continuation method data.
 
virtual bool fillStateControlMapDataTransientSolver (QVariantMap *map)
 Virtual method to fill the map with the needed transient solver data.
 
- Protected Member Functions inherited from GmpFemSolver
bool initSolver (GmpFemAssembler::FixedDofMode assemblerMode, bool assemblerReverseMapping, bool enableFastUpdate)
 Basic implementation of the init function receiving as parameters the configuration options that are sent to the assembler. More...
 
virtual bool initResultAttributes (QString prefix)
 Helpper function used to register the set of result attributes managed by the fem solver. To avoid name clashes, all of them should prepend the given prefix (usually "fem") to the attribute name. More...
 
virtual bool cleanup ()
 Dealocates memory and sets allocated resources to NULL. As a convenience, returns false.
 
GmpFemPhysics::FemResultType prepareMatrices (bool skipFixedBcs=false)
 Auxilliary function used to fill the K, and f matrices / vectors along with any other matrices/vectors stored in _matSet and _vecSet. More...
 
GmpFemPhysics::FemResultType saveElementData (int iter)
 Auxilliary function used to save to the configured file data from the set of element matrices and vectors. In this process, physics are called again to fill element matrices and vectors (according to the active matrices and vectors in _vecSet and _matSet) but the results are NOT added to the global matrices.
 
bool solveLinearSystem (bool xFilled)
 Solves the linear system K.x = f taking K and f from the single equivalent matrix/vector or from matrix K / vector f, depending on the assembler configuration. Results are saved in _x. Prints the used matrices / result as configured in _printOptions. More...
 
double timeConvert (double val)
 Auxiliary function created for being used by derived classes that converts a time value given in the current simulation time unit and returns that value converted to the physics expected unit.
 
GmpFemPhysics::FemResultType traverseElements ()
 Fills the stiffness matrix _K and the force vector _f by traversing elements asking physics for the local element matrix / force vector. More...
 
GmpFemPhysics::FemResultType traverseBoundaryElements ()
 Simillar to traverseElements(), this function steps through each element that belongs to an edge or face boundary condition, asking physics for additional contributions to the stiffness matrix _K and the force vector _f.
 
GmpFemPhysics::FemResultType traverseExternalLoads ()
 Simillar to traverseElements(), this function steps through each element associated to an external load force, asking physics for additional contributions to the force vector _f.
 
GmpFemPhysics::FemResultType traverseContactBoundaries ()
 Simillar to traverseElements(), this function steps through each possible contact from the given contact boundary conditions and asks the physics for additional contributions to the solver matrices and vectors. This is different from the other element based loops since the returned matrices are not restricted to a single element, but can combine nodes from several ones.
 
GmpFemPhysics::FemResultType traverseElementsForSaving (FILE *f, int iter)
 Similar to traverseElements() but instead of adding the elements to the assembler, saves the element data to the given file. More...
 
GmpFemPhysics::FemResultType fillElementData (const GmElement *e, int physIndex)
 Helper function used by traverseElements() to get data for a single element calling phys->fillElementData()
 
GmpFemPhysics::FemResultType fillElementBoundaryData (const GmElement *e, int physIndex, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, const GmCellBoundary *b)
 Helper function used by traverseBoundaryElements() to get data for a single element calling phys->fillElementDataForBc()
 
GmpFemPhysics::FemResultType fillContactData (GmMatrixDof &localDofMap, const GmContactBoundaryCondition *cbc, int physIndex, int index1, int index2)
 Helper function used by traverseContactBoundaries() to get data for a single contact pair calling phys->fillContactData()
 
bool addFixedForces ()
 Adds fixed nodal forces, as seen by each physics, to the global vector _f.
 
virtual bool applyFixedBoundaryConditions (int *numFixed)
 Apply Dirichlet (fixed) boundary conditions to the global equation system. More...
 
bool collectFixedBcs (QVector< bool > &fixedRows, QVector< double > &fixedValues, QList< int > &dofIndex)
 Fills the set of vectors received as parameters with the complete set of fixed boundary conditions, as seen by the full set of physics in use, checking for possible conflicts in conditions. More...
 
virtual void collectGlobalContactPairs (const GmContactBoundaryCondition *cbc, QList< QPair< int, int > > &contactPairs)
 Global search rule used to define contact surfaces. Should be implemented to allow global contact conditions, filling contactPairs with the indices in cbc of the in-contact surfaces.
 
void printElementData (const GmElement *e, int ndof, const int *dofMapping, const GmpFemPhysics *p, const GmBoundaryCondition *bc=NULL, const GmContactBoundaryCondition *cbc=NULL, int loadId1=-1, int id2=-1)
 Print element dof mapping, local matrices and vectors depending on the current solver print options. More...
 
void printGlobalData (bool linear)
 Print global matrices and vectors, either after assembling or before solving the linear system.
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Protected Attributes

int _dofIndex
 
double _dl
 
double _dl0
 
double _ddl
 
double _arc
 
double _Lold
 
double _tin
 
double _dt
 
double _oldIter
 
double _hlast
 
int _It
 
GmVector _v
 
GmVector _a
 
GmVector _dx
 
GmVector _dv
 
GmVector _xold
 
GmVector _vold
 
GmVector _dxt
 
GmVector _ddx
 
GmVector _ddv
 
GmVector _ddxt
 
GmVector _ddxr
 
GmVector _FeGs
 
GmVector _feLcs
 
GmVector _fiLcs
 
GmVector _r0
 
QList< int > _fixedDof
 
bool _fastUpdate
 
- Protected Attributes inherited from GmpFemSolver
int _solverId
 A unique index for this solver object used by the result attribute auto prefix feature.
 
GmElementMesh_mesh
 Mesh with the nodes and cells data.
 
GmSimulationData_simulation
 Simulation Data.
 
QList< GmpFemPhysics * > _physicsList
 List of physics that will cooperate to generate the system response.
 
GmNumSolver_solver
 Numeric solver that will be used to solve the set of linear equations.
 
const GmLogCategory_logger
 Logger for eventual messages.
 
QMutex _printMutex
 Mutex for serializing calls to printElementData when traversing elements in parallel.
 
bool _enabledWarn [NumDisabledWarnings]
 Vector storing which warnings are enabled.
 
GmpFemSolverOptions _solverOptions
 The set of solver options.
 
UnitConverter_timeConv
 Unit converter from the currentTimeUnit to the physics unit. Used only by derived solvers.
 
GmpFemAssembler_assembler
 Assembler used for adding element contributions to vectors and matrices.
 
const GmpFemAssemblerMatrixCombiner_matCombiner
 The combiner object used with the assembler to merge data from multiple elemental matrices.
 
const GmpFemAssemblerVectorCombiner_vecCombiner
 The combiner object used with the assembler to merge data from multiple elemental vectors.
 
GmpFemVectorSet _vecSet
 Set of global/element vectors filled by physics.
 
GmpFemMatrixSet _matSet
 Set of global/element matrices filled by physics.
 
GmVector _x
 State vector.
 
GmVector _r
 Residual vector.
 
unsigned _preCount
 Number of times that prepareMatrices() was called.
 
unsigned _runCount
 Number of times that run() was called.
 
QVariantMap _controlMap
 Variant map used for storing dump control data for the solver.
 
int _iterResAttr
 The registered id for the "fem.iter" result attribute.
 
int _iterResErrAttr
 The registered id for the "fem.iterErr" result attribute.
 

Private Attributes

bool _nonlinear
 Is this a non linear problem ?
 

Additional Inherited Members

- Public Types inherited from GmpFemSolver
enum  PrintOptions {
  PRINT_ELEMENT_MATRICES = 0x001, PRINT_ELEMENT_VECTORS = 0x002, PRINT_ELEMENT_DOF_MAPPING = 0x004, PRINT_EQ_MATRIX = 0x008,
  PRINT_EQ_VECTOR = 0x010, PRINT_GLOBAL_MATRICES = 0x020, PRINT_GLOBAL_VECTORS = 0x040, PRINT_LINEAR_MATRIX = 0x080,
  PRINT_LINEAR_VECTOR = 0x100, PRINT_LINEAR_RESULT = 0x200
}
 Flag options used to compose the printOptions constructor parameter. More...
 
- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Protected Types inherited from GmpFemSolver
enum  DisabledWarnings {
  PrescribedForceForInvalidDof, PrescribedForceForFixedDof, FixedBcForInvalidDof, ConflictingFixedBcValue,
  NumDisabledWarnings
}
 Enums describing the set of warnings that can be disabled by simulation options. More...
 
- Protected Slots inherited from GmpFemSolver
virtual void meshChanged ()
 Slot called when the underlying mesh has been changed. More...
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Basic class for solving Non linear FEM problems.

Constructor & Destructor Documentation

◆ GmpFemNonLinearSolver()

GmpFemNonLinearSolver::GmpFemNonLinearSolver ( GmElementMesh mesh,
GmSimulationData simulation,
const QList< GmpFemPhysics * > &  physics,
GmNumSolver solver,
const GmpFemSolverOptions options,
const GmLogCategory logger 
)

Constructor.

Constructor. Expects to receive as parameters the mesh we are acting upon, the list of physics objects that will cooperate to create the global stiffness matrix and the solver used to solve the resulting linear system.

The fastUpdate parameter should be set to False. This option is required by the XfemSolver

The options parameter contains the set of parameters sent to the solver.

Member Function Documentation

◆ addStateItemsToGroup()

bool GmpFemNonLinearSolver::addStateItemsToGroup ( GmStateDump state,
int  groupId 
)
protectedvirtual

Adds to 'state' the data items that should be saved for this FEM process. Should probably be overriden by derived classes to add their own requirements.

Auxiliar variant map dump item that notifies us for loading and saving data to the map

< Our "father" solver object

Reimplemented from GmpFemSolver.

◆ convergence()

bool GmpFemNonLinearSolver::convergence ( ) const
protectedvirtual

Checks convergence.

Checks the analysis convergence.

◆ crackDetection()

bool GmpFemNonLinearSolver::crackDetection ( )
virtual

Verify potential crack roots.

Crack detection verify potential crack roots The new crack starts once the tensile damage criterion is reached.

◆ crackPropagation()

bool GmpFemNonLinearSolver::crackPropagation ( )
virtual

Check crack propagation.

Verify the crack propagation These procedure determines new potential crack tips in the current crack root.

◆ fillStiffnessMatrixBFGS()

GmpFemPhysics::FemResultType GmpFemNonLinearSolver::fillStiffnessMatrixBFGS ( )
protectedvirtual

Evaluates the stiffness matrix using BFGS method.

Evaluates stiffness matrix using BFGS method and internal forces.

◆ fillStiffnessMatrixBroyden()

GmpFemPhysics::FemResultType GmpFemNonLinearSolver::fillStiffnessMatrixBroyden ( )
protectedvirtual

Evaluates the stiffness matrix using Broyden's method.

Evaluates stiffness matrix using Broyden's method and internal forces.

◆ geostatic()

bool GmpFemNonLinearSolver::geostatic ( )
virtual

Defines the Geostatic step.

The geostatic implementation (femNLSolver.geostatic)

   This function manages the geostatic process

◆ init()

bool GmpFemNonLinearSolver::init ( )
virtual

Initializes the solver and allocates the needed memory.

Prepares the solver for assembling matrices by creating the assembler object and allocating the needed memory. This operations only needs to be done once if the solver is used in a loop.

Reimplemented from GmpFemSolver.

◆ initElementSets()

bool GmpFemNonLinearSolver::initElementSets ( GmNumSolver solver)
protectedvirtual

Allocates and init matrices and vectors.

Reimplements GmpFemSolver::initElementSets() to allocate and init the matrices for static and transient solver. Static solver adopts MATRIX_MATCH_MODE: One global matrix per configured local matrix.

Transient solver considers MATRIX_BOTH_MODE: An equivalent global matrix + one global per configured local matrix In addition, It includes the C matrix in the set of calculated matrices by physics objects

Reimplemented from GmpFemSolver.

◆ isNonLinear()

bool GmpFemNonLinearSolver::isNonLinear ( ) const
protectedvirtual

Checks nonlinear analysis.

Checks for nonlinear step analysis.

◆ loadCorrector()

double GmpFemNonLinearSolver::loadCorrector ( )
protectedvirtual

Load corrector strategy.

Computes the load factor corrector according to a specific continuation method, such as: load control, cylindric arc length, dissipated energy, etc.

◆ loadPredictor()

double GmpFemNonLinearSolver::loadPredictor ( )
protectedvirtual

Load predictor strategies.

Estimates the new load factor according to a specific continuation method, such as: load control, cylindric arc length, dissipated energy, etc.

◆ pos()

bool GmpFemNonLinearSolver::pos ( )
virtual

Run pos-procisng algorithms.

Run pos-processing algorithms. This method runs pos-processing algorithms such as,.

  1. crack tracking algorithm

◆ prepareTransientSystem()

GmpFemPhysics::FemResultType GmpFemNonLinearSolver::prepareTransientSystem ( double  dt)
protected

Fills the matrix K and the vector Fe with the linear system resulting from applying an implicit schema to the transient temperature equation.

Implicit schema: (C + dt*K) * x_n+1 = C * x_n + dt * f_n+1 |-—K-—| |-x-| |------—Fe-----—|

If the solver is non linear, uses _oldx instead of _x for the x_n vector

An auxiliar class for combining data from matrices C and K into an equivalent matrix that will be used by the assembler

Constructor. Automatically registers the combiner on the solver

Destructor. Automatically removes the combiner from the solver

The C + dt * K term

Enable localMatricesToGlobalVectorContribution() storing returned values in the equivalent global vector

The C * x_n term

◆ prepareTransientSystemPredict()

GmpFemPhysics::FemResultType GmpFemNonLinearSolver::prepareTransientSystemPredict ( double  dt)
protected

An auxiliar class for combining data from matrices C and K into an equivalent matrix that will be used by the assembler

Constructor. Automatically registers the combiner on the solver

Destructor. Automatically removes the combiner from the solver

The C + dt * K term

Enable localMatricesToGlobalVectorContribution() storing returned values in the equivalent global vector

The C * x_n term

◆ restore()

void GmpFemNonLinearSolver::restore ( )
protectedvirtual

Restore values.

Restore the load factor, the time and the current state (_x)

◆ saveInternalForceAttributes()

void GmpFemNonLinearSolver::saveInternalForceAttributes ( )
protectedvirtual

Save internal force attibutes such as Reaction and Volume flux.

Saves internal force attibutes such as Reaction and Volume flux.

◆ setElementSets()

void GmpFemNonLinearSolver::setElementSets ( bool  Fe,
bool  Fi,
bool  K,
bool  C,
bool  M 
)
protectedvirtual

Enable or disable matrices and vectors.

Enables or disables the required matrices or vectors.

◆ setLoad()

void GmpFemNonLinearSolver::setLoad ( )
protectedvirtual

Sets the current load factor (l + dl)

Sets the current load factor: l_n+1 = l_n + dl.

◆ setState()

void GmpFemNonLinearSolver::setState ( )
protectedvirtual

Sets the current state (_x + _dx)

Sets the current state variables: x_n+1 = x_n + dx.

◆ setTime()

void GmpFemNonLinearSolver::setTime ( )
protectedvirtual

Sets the current time (t + dt)

Sets the current time: t_n+1 = t_n + dt.

◆ solveLinearSystem()

bool GmpFemNonLinearSolver::solveLinearSystem ( GmSolverMatrix Keq,
GmVector Feq,
GmVector x 
)
protected

Solves the linear system K.x = f.

Solves the linear system K.x = f taking Keq and Feq. Results are saved in _x. Prints the used matrices / result as configured in _printOptions.

◆ step()

bool GmpFemNonLinearSolver::step ( double  dt,
double *  newt,
bool *  conv,
double *  err,
int *  niter,
bool  eval 
)
virtual

Defines the Step solver.

Defines the type of solver: static nonlinear solver or transient nonlinear solver. This operation is called for every analysis step.

◆ stepStaticNonlinear()

bool GmpFemNonLinearSolver::stepStaticNonlinear ( double  step,
double *  newt 
)
protectedvirtual

Implementation of nonlinear static solver.

The step static non linear solver implementation This function expects to receive as parameters the current step (step) And returns the current load factor (newt)

◆ stepTransientNonLinear()

bool GmpFemNonLinearSolver::stepTransientNonLinear ( double  dt,
double *  newt 
)
protectedvirtual

Implementation of nonlinear transient solver.

The step transient non linear solver implementation.

   This function expects to receive as parameters the current time increment (dt)
   And returns the new time increment (newt) 

◆ update()

void GmpFemNonLinearSolver::update ( )
protectedvirtual

Updates state values.

Updates the load factor, the time and the current state of all values.

◆ updateResidualForceAndStiffnessMatrix()

GmpFemPhysics::FemResultType GmpFemNonLinearSolver::updateResidualForceAndStiffnessMatrix ( double  l)
protectedvirtual

Updates the stiffness matrix.

Updates the internal force and stiffness matrix for static nonlinear solver.


The documentation for this class was generated from the following files: