|
IFEM
90A354
|
Specialized nonlinear solver for implicit LMM methods. More...
#include <SIMImplicitLMM.h>


Public Member Functions | |
| LMMNonLinSIM (SIMbase &sim, std::vector< SystemVector * > &load) | |
| The constructor initializes default solution parameters. More... | |
| void | setCoefs (const std::vector< double > &coef) |
| Set scaling coefficients. | |
Public Member Functions inherited from NonLinSIM | |
| NonLinSIM (SIMbase &sim, CNORM n=ENERGY) | |
| The constructor initializes default solution parameters. More... | |
| virtual | ~NonLinSIM () |
| The destructor prints out the slow-converging nodes, if any. | |
| void | setConvNorm (CNORM n) |
| Defines which type of iteration norm to use in convergence checks. | |
| void | init (size_t nSol, const RealArray &initVal) |
| Initializes the primary solution vectors. More... | |
| virtual void | initPrm () |
| Initializes some integration parameters for the integrand. | |
| virtual bool | advanceStep (TimeStep ¶m, bool updateTime=true) |
| Advances the load step one step forward. More... | |
| SIM::ConvStatus | solve (double zero_tol=1.0e-8, std::streamsize outPrec=0) |
| Solves the nonlinear equations by Newton-Raphson iterations. More... | |
| virtual SIM::ConvStatus | solveStep (TimeStep ¶m, SIM::SolutionMode mode=SIM::STATIC, double zero_tolerance=1.0e-8, std::streamsize outPrec=0) |
| Solves the nonlinear equations by Newton-Raphson iterations. More... | |
| SIM::ConvStatus | solveIteration (TimeStep ¶m) |
| Solves the linearized system of current iteration. More... | |
| int | getMaxit () const |
| Returns the maximum number of iterations. | |
| virtual bool | isLinear () const |
| Returns whether this solution driver is linear or not. | |
| virtual bool | parse (char *keyWord, std::istream &is) |
| Parses a data section from an input stream. More... | |
| virtual bool | parse (const tinyxml2::XMLElement *elem) |
| Parses a data section from an XML document. More... | |
Public Member Functions inherited from MultiStepSIM | |
| virtual void | printProblem (bool stopInputTimer=false) const |
| Prints out problem-specific data to the log stream. More... | |
| virtual const char ** | getPrioritizedTags () const |
| Returns a list of prioritized XML-tags. | |
| virtual void | initSol (size_t nSol=1, size_t nDof=0) |
| Initializes the primary solution vectors. More... | |
| bool | initEqSystem (bool withRF=true, size_t nScl=0) |
| Allocates the FE system matrices. More... | |
| virtual bool | preprocess (const std::vector< int > &ignored, bool fixDup) |
| Performs some pre-processing tasks on the FE model. More... | |
| void | setStartGeo (int gID) |
| Initializes the geometry block counter. | |
| bool | saveModel (const char *fileName) |
| Opens a new VTF-file and writes the model geometry to it. More... | |
| bool | saveModel (int &gBlock, int &rBlock, const char *fileName=nullptr, bool clearG=true) |
| Opens a new VTF-file and writes the model geometry to it. More... | |
| bool | saveModel (int &gBlock, int &rBlock, double time) |
| Writes the model geometry and BCs to an already opened VTF-file. More... | |
| bool | saveStep (int iStep, double time, const char *vecName=nullptr) |
| Saves the converged solution to VTF file of a given time/load step. More... | |
| bool | saveStep (int iStep, int &rBlock, double time, const char *vecName=nullptr) |
| Saves the converged solution to VTF file of a given time/load step. More... | |
| bool | saveStep (int iStep, int &rBlock, const char *vecName) |
| Saves the converged solution to VTF file of a given time/load step. More... | |
| virtual bool | serialize (SerializeMap &data) const |
| Serializes the solution vectors for restarting purposes. More... | |
| virtual bool | deSerialize (const SerializeMap &data) |
| Restores the solution vectors from a serialized state. More... | |
| bool | checkForRestart () |
| Restores the solution from a serialized state in case of restart. | |
| void | dumpStep (int iStep, double time, utl::LogStream &os, bool withID=true) const |
| Dumps the primary solution for inspection. More... | |
| virtual void | dumpResults (double time, utl::LogStream &os, std::streamsize precision=3, bool formatted=true) const |
| Dumps solution variables at user-defined points. More... | |
| bool | hasPointResultFile () const |
| Returns whether a points result file has been defined or not. | |
| bool | savePoints (double time, int step) const |
| Saves point-wise solution to file for a given time/load step. More... | |
| virtual bool | isDynamic () const |
| Returns whether this is a dynamic solution driver or not. | |
| const SIMoutput & | getModel () const |
| Returns a const reference to the FE model. | |
| void | setSubIteration (SubIt flag) |
| Updates the sub-iteration flag. | |
| SubIt | getSubIteration () const |
| Returns the sub-iteration flag. | |
| virtual size_t | numSolution () const |
| Returns the number of solution vectors. | |
| virtual const Vector & | realSolution (int i=0) const |
| Returns a const reference to the current real solution vector. More... | |
| virtual const Vectors & | realSolutions (bool=false) |
| Returns a const reference to the current real solution vectors. More... | |
| double * | theRefNorm () |
| Returns a pointer to the reference norm variable. | |
| const double * | getRefNorm () const |
| Returns a const pointer to the reference norm variable. | |
| virtual bool | parse (char *keyWord, std::istream &is) |
| Parses a data section from an input stream. | |
| virtual bool | parse (const tinyxml2::XMLElement *elem) |
| Parses a data section from an XML document. | |
Public Member Functions inherited from SIMsolution | |
| virtual const Vectors & | getSolutions () const |
| Returns a const reference to the solution vectors. | |
| virtual Vectors & | theSolutions () |
| Returns a reference to the solution vectors (for assignment). | |
| virtual const Vector & | getSolution (int ix=0) const |
| Returns a const reference to current solution vector. | |
| virtual void | setSolution (const RealArray &s, int ix=0) |
| Modifies the current solution vector (used by sub-iterations only). | |
Public Member Functions inherited from SIMadmin | |
| virtual | ~SIMadmin () |
| Empty destructor. | |
| virtual bool | read (const char *fileName) |
| Reads model data from the specified input file *fileName. | |
| virtual bool | preprocessC (const IntVec &, bool, double=0.0) |
| Performs some pre-processing tasks on the FE model. | |
| const ProcessAdm & | getProcessAdm () const |
| Returns the parallel process administrator. | |
| int | getGlobalProcessID () const |
| Returns the global process ID. More... | |
| const std::string & | getHeading () const |
| Returns the simulator heading. | |
| void | setHeading (const std::string &heading) |
| Defines the simulator heading. | |
| void | printHeading (int &supStep) const |
| Prints the heading of this simulator, if any, to IFEM::cout. | |
Public Member Functions inherited from XMLInputBase | |
| bool | readXML (const char *fileName, bool verbose=true) |
| Reads an XML input file. More... | |
| bool | loadXML (const char *xml) |
| Loads data from an XML-formatted text string. More... | |
Protected Member Functions | |
| bool | assembleSystem (const TimeDomain &time, const Vectors &pSol, bool newLHSmatrix=true, bool poorConvg=false) |
| Administers assembly of the linear equation system. More... | |
Protected Member Functions inherited from NonLinSIM | |
| void | printWorst (utl::LogStream &os, double eps) |
| Prints out the worst DOFs when slow convergence is detected. More... | |
| virtual SIM::ConvStatus | checkConvergence (TimeStep ¶m) |
| Checks whether the nonlinear iterations have converged or diverged. | |
| virtual bool | updateConfiguration (TimeStep ¶m) |
| Updates configuration variables (solution vector) in an iteration. | |
| virtual bool | lineSearch (TimeStep ¶m) |
| Performs line search to accelerate convergence. More... | |
Protected Member Functions inherited from MultiStepSIM | |
| MultiStepSIM (SIMbase &sim) | |
| The constructor initializes the FE model reference. More... | |
| void | printStep (const TimeStep ¶m) const |
| Prints out time/load step identification. More... | |
| virtual bool | solutionNorms (const TimeDomain &, double zero_tolerance=1.0e-8, std::streamsize outPrec=0) |
| Computes and prints some solution norm quantities. More... | |
| int | getLastSavedStep () const |
| Returns the last step that was saved to VTF. | |
Protected Member Functions inherited from SIMsolution | |
| SIMsolution ()=default | |
| The default constructor is protected to allow sub-classes only. | |
| virtual | ~SIMsolution ()=default |
| Empty default destructor. | |
| void | initSolution (size_t ndof, size_t nsol=1) |
| Initializes the solution vectors. More... | |
| void | pushSolution (unsigned short int nVecState=1) |
| Pushes the solution vector stack. More... | |
| bool | saveSolution (SerializeMap &data, const std::string &name) const |
| Writes current solution to a serialization container. More... | |
| bool | restoreSolution (const SerializeMap &data, const std::string &name) |
| Restores the solution from a serialization container. More... | |
Protected Member Functions inherited from SIMadmin | |
| SIMadmin (const char *heading=nullptr) | |
| The default constructor initializes the process administrator. | |
| SIMadmin (SIMadmin &anotherSIM) | |
| Copy constructor. | |
Protected Member Functions inherited from XMLInputBase | |
| const tinyxml2::XMLElement * | loadFile (tinyxml2::XMLDocument &doc, const char *fileName, bool verbose=false) |
| Loads an XML input file into a tinyxml2::XMLDocument object. More... | |
Private Attributes | |
| std::vector< SystemVector * > & | loads |
| Reference to load vectors. | |
| std::vector< double > | coefs |
| Time integration coefficients. | |
Additional Inherited Members | |
Public Types inherited from NonLinSIM | |
| enum | CNORM { NONE_UPTAN =-1 , NONE =0 , L2 =1 , L2SOL =2 , ENERGY =3 } |
| Enum describing the norm used for convergence checks. More... | |
Public Types inherited from MultiStepSIM | |
| enum | SubIt { ITER = 0 , FIRST = 1 , LAST = 2 , NONE = 3 } |
| Enum describing sub-iteration status. | |
Public Attributes inherited from SIMadmin | |
| SIMoptions & | opt |
| Simulation control parameters. | |
Static Public Attributes inherited from NonLinSIM | |
| static const char * | inputContext = "nonlinearsolver" |
| Input file context for solver parameters. | |
Static Public Attributes inherited from SIMadmin | |
| static int | msgLevel = 2 |
| Controls the console output amount during solving. | |
Protected Types inherited from MultiStepSIM | |
| enum | NormOp { MAX , ALL } |
| Enum describing reference norm options. | |
Protected Types inherited from SIMsolution | |
| using | SerializeMap = std::map< std::string, std::string > |
| Convenience type. | |
Protected Types inherited from SIMadmin | |
| using | IntVec = std::vector< int > |
| Convenience alias. | |
Static Protected Member Functions inherited from SIMsolution | |
| static std::string | serialize (const double *v, size_t n) |
| Helper method for serializing a double array into a text string. More... | |
| static void | deSerialize (const std::string &data, double *v, size_t n) |
| Helper method for deserializing a double array from a text string. More... | |
Protected Attributes inherited from NonLinSIM | |
| bool | fromIni |
| If true, always solve from initial configuration. | |
| CNORM | iteNorm |
| The norm type used to measure the residual. | |
| double | rTol |
| Relative convergence tolerance. | |
| double | aTol |
| Absolute convergence tolerance. | |
| double | divgLim |
| Relative divergence limit. | |
| double | eta |
| Line search tolerance. | |
| double | alpha |
| Iteration acceleration parameter (for line search) | |
| double | alphaO |
| Final line search acceleration scaling (for output only) | |
| int | maxit |
| Maximum number of iterations in a load step. | |
| int | maxIncr |
| Maximum number of iterations with increasing norm. | |
| int | nupdat |
| Number of iterations with updated tangent. | |
| int | prnSlow |
| How many DOFs to print out on slow convergence. | |
| bool | saveExL |
| If true, the external load vector will be saved to VTF. | |
| bool | updNewN |
| If true, update newly activated nodes before new step. | |
| std::map< int, int > | slowNodes |
| Nodes for which slow convergence is detected. | |
Protected Attributes inherited from MultiStepSIM | |
| SIMoutput & | model |
| The isogeometric FE model. | |
| Vector | loadVec |
| System load vector (for output to VTF) | |
| Vector | residual |
| Residual force vector. | |
| Vector | linsol |
| Linear solution vector. | |
| NormOp | refNopt |
| Reference norm option. | |
| double | refNorm |
| Reference norm value used in convergence checks. | |
| double | rCond |
| Reciprocal condition number of the linear equation system. | |
| SubIt | subiter |
| Sub-iteration flag. | |
| size_t | nRHSvec |
| Number of right-hand-side vectors to assemble. | |
| char | rotUpd |
| Option for how to update of nodal rotations. | |
| int | geoBlk |
| Running VTF geometry block counter. | |
| int | nBlock |
| Running VTF result block counter. | |
Protected Attributes inherited from SIMsolution | |
| Vectors | solution |
| Stack of solution vectors. | |
Protected Attributes inherited from SIMadmin | |
| ProcessAdm | adm |
| Parallel administrator. | |
| int | myPid |
| Processor ID in parallel simulations. | |
| int | nProc |
| Number of processors in parallel simulations. | |
| std::string | myHeading |
| Heading written before reading the input file. | |
Specialized nonlinear solver for implicit LMM methods.
|
inline |
The constructor initializes default solution parameters.
| sim | Pointer to the spline FE model |
| load | Vector of system load vectors |
|
inlineprotectedvirtual |
Administers assembly of the linear equation system.
| [in] | time | Parameters for nonlinear/time-dependent simulations |
| [in] | pSol | Previous primary solution vectors in DOF-order |
| [in] | newLHSmatrix | If false, only integrate the RHS vector |
| [in] | poorConvg | If true, the nonlinear driver is converging poorly |
Reimplemented from NonLinSIM.
References SIMbase::addToRHSvector(), SIMbase::assembleSystem(), TimeIntegration::SIMImplicitLMM< Solver >::LMMNonLinSIM::coefs, TimeDomain::dt, TimeIntegration::SIMImplicitLMM< Solver >::LMMNonLinSIM::loads, and MultiStepSIM::model.