|
OOFEM 3.0
|
#include <sparsenonlinsystemnm.h>
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 SparseLinearSystemNM * | giveLinearSolver () |
| 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. | |
| EngngModel * | giveEngngModel () |
| 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 | |
| Domain * | domain |
| Pointer to domain. | |
| EngngModel * | engngModel |
| Pointer to engineering model. | |
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.
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.
Definition at line 94 of file sparsenonlinsystemnm.h.
|
inline |
Constructor.
Definition at line 100 of file sparsenonlinsystemnm.h.
References igp_Map, igp_PertDmanDofSrcArray, igp_PertWeightArray, igp_Weight, oofem::NumericalMethod::NumericalMethod(), and pert_init_needed.
|
inlinevirtual |
Destructor.
Definition at line 102 of file sparsenonlinsystemnm.h.
|
virtual |
Definition at line 97 of file sparsenonlinsystemnm.C.
References oofem::FloatArray::at(), convertPertMap(), igp_Map, igp_Weight, pert_init_needed, randPertAmplitude, and randSeed.
|
virtual |
Definition at line 74 of file sparsenonlinsystemnm.C.
References oofem::NumericalMethod::domain, igp_Map, igp_PertDmanDofSrcArray, igp_PertWeightArray, and igp_Weight.
Referenced by applyPerturbation().
|
inline |
Error printing helper.
Definition at line 161 of file sparsenonlinsystemnm.h.
References giveClassName().
|
inlinevirtual |
Reimplemented in oofem::CylindricalALM, oofem::DynamicRelaxationSolver, oofem::NRSolver, and oofem::StaggeredSolver.
Definition at line 159 of file sparsenonlinsystemnm.h.
Referenced by errorInfo().
|
inlinevirtual |
Returns step length.
Reimplemented in oofem::CylindricalALM.
Definition at line 131 of file sparsenonlinsystemnm.h.
|
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.
|
overridevirtual |
Reimplemented from oofem::NumericalMethod.
Reimplemented in oofem::StaggeredSolver.
Definition at line 44 of file sparsenonlinsystemnm.C.
References _IFT_NonLinearStatic_pert, _IFT_NonLinearStatic_pertw, _IFT_NonLinearStatic_randPertAmplitude, _IFT_NonLinearStatic_randSeed, igp_PertDmanDofSrcArray, igp_PertWeightArray, IR_GIVE_OPTIONAL_FIELD, pert_init_needed, randPertAmplitude, and randSeed.
|
inlinevirtual |
Prints status message of receiver to output stream. Prints the message corresponding to last solve.
| outputStream | Stream to print state to. |
Reimplemented in oofem::NRSolver.
Definition at line 147 of file sparsenonlinsystemnm.h.
|
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.
|
inlinevirtual |
Sets the step length.
| s | New step length. |
Reimplemented in oofem::CylindricalALM.
Definition at line 137 of file sparsenonlinsystemnm.h.
|
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.
| K | Coefficient matrix ( \(\displaystyle K = \frac{\partial F}{\partial X} \); stiffness matrix). |
| R | Reference incremental RHS (incremental load). |
| R0 | Initial RHS (initial load). |
| X | Total solution (total displacement). |
| dX | Increment of solution (incremental displacements). |
| F | InternalRhs (real internal forces). |
| internalForcesEBENorm | Norm of internal nodal forces (evaluated on element by element basis) (split into each DOF id). |
| s | RHS scale factor (load level). |
| rlm | Reference load mode. |
| nite | Number of iterations needed. |
| tStep | Time step to solve for. |
Implemented in oofem::CylindricalALM, oofem::DynamicRelaxationSolver, oofem::NRSolver, and oofem::StaggeredSolver.
|
protected |
Load level.
Definition at line 78 of file sparsenonlinsystemnm.h.
Referenced by oofem::NRSolver::solve(), and oofem::StaggeredSolver::solve().
|
protected |
Definition at line 86 of file sparsenonlinsystemnm.h.
Referenced by applyPerturbation(), convertPertMap(), and SparseNonLinearSystemNM().
|
protected |
Definition at line 84 of file sparsenonlinsystemnm.h.
Referenced by convertPertMap(), initializeFrom(), and SparseNonLinearSystemNM().
|
protected |
Definition at line 85 of file sparsenonlinsystemnm.h.
Referenced by convertPertMap(), initializeFrom(), and SparseNonLinearSystemNM().
|
protected |
Definition at line 87 of file sparsenonlinsystemnm.h.
Referenced by applyPerturbation(), convertPertMap(), and SparseNonLinearSystemNM().
|
protected |
Definition at line 83 of file sparsenonlinsystemnm.h.
Referenced by applyPerturbation(), initializeFrom(), and SparseNonLinearSystemNM().
|
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().
|
protected |
Definition at line 82 of file sparsenonlinsystemnm.h.
Referenced by applyPerturbation(), and initializeFrom().