OOFEM 3.0
Loading...
Searching...
No Matches
oofem::SparseNonLinearSystemNM Class Referenceabstract

#include <sparsenonlinsystemnm.h>

Inheritance diagram for oofem::SparseNonLinearSystemNM:
Collaboration diagram for oofem::SparseNonLinearSystemNM:

Public Types

enum  referenceLoadInputModeType { rlm_total =0 , rlm_incremental =1 }

Public Member Functions

 SparseNonLinearSystemNM (Domain *d, EngngModel *m)
 Constructor.
virtual ~SparseNonLinearSystemNM ()
 Destructor.
virtual ConvergedReason solve (SparseMtrx &K, FloatArray &R, FloatArray *R0, FloatArray &X, FloatArray &dX, FloatArray &F, const FloatArray &internalForcesEBENorm, double &s, referenceLoadInputModeType rlm, int &nite, TimeStep *tStep)=0
virtual double giveCurrentStepLength ()
virtual void setStepLength (double s)
virtual bool referenceLoad () const
virtual void printState (FILE *outputStream)
virtual SparseLinearSystemNMgiveLinearSolver ()
void initializeFrom (InputRecord &ir) override
virtual void convertPertMap ()
virtual void applyPerturbation (FloatArray *displacement)
virtual const char * giveClassName () const
std::string errorInfo (const char *func) const
 Error printing helper.
Public Member Functions inherited from oofem::NumericalMethod
 NumericalMethod (Domain *d, EngngModel *m)
virtual ~NumericalMethod ()
 Destructor.
EngngModelgiveEngngModel ()
virtual void reinitialize ()
virtual void setDomain (Domain *d)
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)

Protected Attributes

double deltaL =0.0
 Load level.
double randPertAmplitude =0.0
 Amplitude of a random perturbation applied on the solution before the iteration process.
int randSeed =0
bool pert_init_needed
IntArray igp_PertDmanDofSrcArray
FloatArray igp_PertWeightArray
IntArray igp_Map
FloatArray igp_Weight
Protected Attributes inherited from oofem::NumericalMethod
Domaindomain
 Pointer to domain.
EngngModelengngModel
 Pointer to engineering model.

Detailed Description

This base class is an abstraction for all numerical methods solving sparse nonlinear system of equations. The purpose of this class is to declare the general interface to all numerical methods solving this kind of problem. This interface allows to use any suitable instance of the Numerical method class to the solve problem, and leave the whole engineering model code, including mapping, unchanged, because all instances of this class provide the common interface.

Definition at line 74 of file sparsenonlinsystemnm.h.

Member Enumeration Documentation

◆ referenceLoadInputModeType

The following parameter allows to specify how the reference load vector is obtained from given totalLoadVector and initialLoadVector. The initialLoadVector describes the part of loading which does not scale.

Enumerator
rlm_total 

The reference incremental load vector is defined as totalLoadVector assembled at given time.

rlm_incremental 

The reference load vector is obtained as incremental load vector at given time.

Definition at line 94 of file sparsenonlinsystemnm.h.

Constructor & Destructor Documentation

◆ SparseNonLinearSystemNM()

oofem::SparseNonLinearSystemNM::SparseNonLinearSystemNM ( Domain * d,
EngngModel * m )
inline

◆ ~SparseNonLinearSystemNM()

virtual oofem::SparseNonLinearSystemNM::~SparseNonLinearSystemNM ( )
inlinevirtual

Destructor.

Definition at line 102 of file sparsenonlinsystemnm.h.

Member Function Documentation

◆ applyPerturbation()

void oofem::SparseNonLinearSystemNM::applyPerturbation ( FloatArray * displacement)
virtual

◆ convertPertMap()

void oofem::SparseNonLinearSystemNM::convertPertMap ( )
virtual

◆ errorInfo()

std::string oofem::SparseNonLinearSystemNM::errorInfo ( const char * func) const
inline

Error printing helper.

Definition at line 161 of file sparsenonlinsystemnm.h.

References giveClassName().

◆ giveClassName()

virtual const char * oofem::SparseNonLinearSystemNM::giveClassName ( ) const
inlinevirtual

◆ giveCurrentStepLength()

virtual double oofem::SparseNonLinearSystemNM::giveCurrentStepLength ( )
inlinevirtual

Returns step length.

See also
solve For more details on the step length s.
Returns
Current step length

Reimplemented in oofem::CylindricalALM.

Definition at line 131 of file sparsenonlinsystemnm.h.

◆ giveLinearSolver()

virtual SparseLinearSystemNM * oofem::SparseNonLinearSystemNM::giveLinearSolver ( )
inlinevirtual

Constructs (if necessary) and returns a linear solver. Public method because some problems require it for sensitivity analysis, etc. even for nonlinear problems (e.g. tangent relations in multiscale simulations).

Reimplemented in oofem::CylindricalALM, and oofem::NRSolver.

Definition at line 153 of file sparsenonlinsystemnm.h.

◆ initializeFrom()

◆ printState()

virtual void oofem::SparseNonLinearSystemNM::printState ( FILE * outputStream)
inlinevirtual

Prints status message of receiver to output stream. Prints the message corresponding to last solve.

Parameters
outputStreamStream to print state to.

Reimplemented in oofem::NRSolver.

Definition at line 147 of file sparsenonlinsystemnm.h.

◆ referenceLoad()

virtual bool oofem::SparseNonLinearSystemNM::referenceLoad ( ) const
inlinevirtual

Returns true if reference loads are used (i.e. arc length methods).

Reimplemented in oofem::CylindricalALM.

Definition at line 141 of file sparsenonlinsystemnm.h.

◆ setStepLength()

virtual void oofem::SparseNonLinearSystemNM::setStepLength ( double s)
inlinevirtual

Sets the step length.

See also
solve For more details on the step length s.
Parameters
sNew step length.

Reimplemented in oofem::CylindricalALM.

Definition at line 137 of file sparsenonlinsystemnm.h.

◆ solve()

virtual ConvergedReason oofem::SparseNonLinearSystemNM::solve ( SparseMtrx & K,
FloatArray & R,
FloatArray * R0,
FloatArray & X,
FloatArray & dX,
FloatArray & F,
const FloatArray & internalForcesEBENorm,
double & s,
referenceLoadInputModeType rlm,
int & nite,
TimeStep * tStep )
pure virtual

Solves the given sparse linear system of equations \( s R + R_0 - F(X) = 0 \). Total load vector is not passed, it is defined as \( s R + R_0 \), where s is scale factor.

See also
EngngModel::updateComponent Used to update the stiffness matrix and load vector.
Parameters
KCoefficient matrix ( \(\displaystyle K = \frac{\partial F}{\partial X} \); stiffness matrix).
RReference incremental RHS (incremental load).
R0Initial RHS (initial load).
XTotal solution (total displacement).
dXIncrement of solution (incremental displacements).
FInternalRhs (real internal forces).
internalForcesEBENormNorm of internal nodal forces (evaluated on element by element basis) (split into each DOF id).
sRHS scale factor (load level).
rlmReference load mode.
niteNumber of iterations needed.
tStepTime step to solve for.
Returns
ConvergedReason value.

Implemented in oofem::CylindricalALM, oofem::DynamicRelaxationSolver, oofem::NRSolver, and oofem::StaggeredSolver.

Member Data Documentation

◆ deltaL

double oofem::SparseNonLinearSystemNM::deltaL =0.0
protected

Load level.

Definition at line 78 of file sparsenonlinsystemnm.h.

Referenced by oofem::NRSolver::solve(), and oofem::StaggeredSolver::solve().

◆ igp_Map

IntArray oofem::SparseNonLinearSystemNM::igp_Map
protected

◆ igp_PertDmanDofSrcArray

IntArray oofem::SparseNonLinearSystemNM::igp_PertDmanDofSrcArray
protected

Definition at line 84 of file sparsenonlinsystemnm.h.

Referenced by convertPertMap(), initializeFrom(), and SparseNonLinearSystemNM().

◆ igp_PertWeightArray

FloatArray oofem::SparseNonLinearSystemNM::igp_PertWeightArray
protected

Definition at line 85 of file sparsenonlinsystemnm.h.

Referenced by convertPertMap(), initializeFrom(), and SparseNonLinearSystemNM().

◆ igp_Weight

FloatArray oofem::SparseNonLinearSystemNM::igp_Weight
protected

◆ pert_init_needed

bool oofem::SparseNonLinearSystemNM::pert_init_needed
protected

◆ randPertAmplitude

double oofem::SparseNonLinearSystemNM::randPertAmplitude =0.0
protected

Amplitude of a random perturbation applied on the solution before the iteration process.

Definition at line 81 of file sparsenonlinsystemnm.h.

Referenced by applyPerturbation(), and initializeFrom().

◆ randSeed

int oofem::SparseNonLinearSystemNM::randSeed =0
protected

Definition at line 82 of file sparsenonlinsystemnm.h.

Referenced by applyPerturbation(), and initializeFrom().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011