14 #ifndef _NON_LIN_SIM_H
15 #define _NON_LIN_SIM_H
37 enum CNORM { NONE_UPTAN=-1, NONE=0, L2=1, L2SOL=2, ENERGY=3 };
74 double zero_tolerance = 1.0e-8,
75 std::streamsize outPrec = 0);
106 bool newLHSmatrix =
true,
bool poorConvg =
false);
112 virtual bool parse(
char* keyWord, std::istream& is);
116 virtual bool parse(
const tinyxml2::XMLElement* elem);
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition: MatVec.h:37
Base class for multi-step solution drivers.
Base class for multi-step solution drivers.
Definition: MultiStepSIM.h:32
virtual bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition: SIMadmin.C:113
Nonlinear quasi-static solution driver for isogeometric FEM simulators.
Definition: NonLinSIM.h:28
int nupdat
Number of iterations with updated tangent.
Definition: NonLinSIM.h:129
virtual ~NonLinSIM()
The destructor prints out the slow-converging nodes, if any.
Definition: NonLinSIM.C:46
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.
Definition: NonLinSIM.C:208
virtual SIM::ConvStatus checkConvergence(TimeStep ¶m)
Checks whether the nonlinear iterations have converged or diverged.
Definition: NonLinSIM.C:405
double divgLim
Relative divergence limit.
Definition: NonLinSIM.h:123
virtual bool isLinear() const
Returns whether this solution driver is linear or not.
Definition: NonLinSIM.h:85
int maxIncr
Maximum number of iterations with increasing norm.
Definition: NonLinSIM.h:128
double alpha
Iteration acceleration parameter (for line search)
Definition: NonLinSIM.h:125
double aTol
Absolute convergence tolerance.
Definition: NonLinSIM.h:122
int getMaxit() const
Returns the maximum number of iterations.
Definition: NonLinSIM.h:82
int prnSlow
How many DOFs to print out on slow convergence.
Definition: NonLinSIM.h:130
bool fromIni
If true, always solve from initial configuration.
Definition: NonLinSIM.h:119
void printWorst(utl::LogStream &os, double eps)
Prints out the worst DOFs when slow convergence is detected.
Definition: NonLinSIM.C:487
int maxit
Maximum number of iterations in a load step.
Definition: NonLinSIM.h:127
void init(size_t nSol, const RealArray &initVal)
Initializes the primary solution vectors.
Definition: NonLinSIM.C:180
NonLinSIM(SIMbase &sim, CNORM n=ENERGY)
The constructor initializes default solution parameters.
Definition: NonLinSIM.C:29
double rTol
Relative convergence tolerance.
Definition: NonLinSIM.h:121
void setConvNorm(CNORM n)
Defines which type of iteration norm to use in convergence checks.
Definition: NonLinSIM.h:47
static const char * inputContext
Input file context for solver parameters.
Definition: NonLinSIM.h:137
SIM::ConvStatus solve(double zero_tol=1.0e-8, std::streamsize outPrec=0)
Solves the nonlinear equations by Newton-Raphson iterations.
Definition: NonLinSIM.C:201
CNORM iteNorm
The norm type used to measure the residual.
Definition: NonLinSIM.h:120
double alphaO
Final line search acceleration scaling (for output only)
Definition: NonLinSIM.h:126
SIM::ConvStatus solveIteration(TimeStep ¶m)
Solves the linearized system of current iteration.
Definition: NonLinSIM.C:299
virtual void initPrm()
Initializes some integration parameters for the integrand.
Definition: NonLinSIM.C:168
CNORM
Enum describing the norm used for convergence checks.
Definition: NonLinSIM.h:37
virtual bool lineSearch(TimeStep ¶m)
Performs line search to accelerate convergence.
Definition: NonLinSIM.C:339
std::map< int, int > slowNodes
Nodes for which slow convergence is detected.
Definition: NonLinSIM.h:134
virtual bool advanceStep(TimeStep ¶m, bool updateTime=true)
Advances the load step one step forward.
Definition: NonLinSIM.C:191
bool updNewN
If true, update newly activated nodes before new step.
Definition: NonLinSIM.h:132
virtual bool assembleSystem(const TimeDomain &time, const Vectors &pSol, bool newLHSmatrix=true, bool poorConvg=false)
Administers assembly of the linear equation system.
Definition: NonLinSIM.C:553
bool saveExL
If true, the external load vector will be saved to VTF.
Definition: NonLinSIM.h:131
virtual bool updateConfiguration(TimeStep ¶m)
Updates configuration variables (solution vector) in an iteration.
Definition: NonLinSIM.C:518
double eta
Line search tolerance.
Definition: NonLinSIM.h:124
Base class for NURBS-based FEM simulators.
Definition: SIMbase.h:72
Class for encapsulation of general time stepping parameters.
Definition: TimeStep.h:31
Logging stream class.
Definition: LogStream.h:26
SolutionMode
Enum defining the various solution modes that may occur.
Definition: SIMenums.h:31
ConvStatus
Enum defining the various convergence statuses that may occur.
Definition: SIMenums.h:50
Struct representing the time domain.
Definition: TimeDomain.h:23