Solution Strategy

All physics solvers share a common solution strategy for nonlinear time-dependent problems. Here, we briefly describe the nonlinear solver and the timestepping strategy employed.

Nonlinear Solver

At each time-step, the nonlinear system of discrete residual equations, i.e.

r(x) = 0

is solved by employing the Newton-Raphson method. Here, x is the vector of primary unknowns. Thus, each physics solver is responsible for assembling the Jacobian matrix J containing the analytical derivatives of the residual vector r with respect to the primary variables. Then, at each Newton iteration \nu, the following linear system is solved

J^{\nu} \delta x^{\nu+1} = -r^{\nu},

where, \delta x^{\nu+1} is the Newton update. This linear system can be solved with a variety of different linear solvers described in Linear Solvers. The Newton update, \delta x^{\nu+1} is then applied to the primary variables:

x^{\nu+1} = x^{\nu} + \delta x^{\nu+1}.

This procedure is repeated until convergence is achieved or until the maximum number of iterations is reached.

Timestepping Strategy

The actual timestep size employed is determined by a combination of several factors. In particular, specific output events may have timestep requirements that force a specific timestep to be used. However, physics solvers do have the possibility of requesting a specific timestep size to the event manager based on their specific requirements. In particular, in case of fast convergence indicated by a small number of Newton iterations, i.e.

\text{numIterations} < \text{dtIncIterLimit} \cdot \text{newtonMaxIter},

the physics solver will require to double the timestep size. On the other hand, if a large number of nonlinear iterations are necessary to find the solution at timestep n

\text{numIterations} > \text{dtCutIterLimit} \cdot \text{newtonMaxIter},

the physics solver will request the next timestep, n+1, to be half the size of timestep n. Here,

Additionally, in case the nonlinear solver fails to converge with the timestep provided by the event manager, the timestep size is cut, i.e.

\text{dt} = \text{timestepCutFactor} \cdot \text{dt},

and the nonlinear loop is repeated with the new timestep size.

Parameters

All parameters defining the behavior of the nonlinear solver and determining the timestep size requested by the physics solver are defined in the NonlinearSolverParameters and are presented in the following table.

Name Type Default Description
allowNonConverged integer 0 Allow non-converged solution to be accepted. (i.e. exit from the Newton loop without achieving the desired tolerance)
dtCutIterLimit real64 0.7 Fraction of the Max Newton iterations above which the solver asks for the time-step to be cut for the next dt.
dtIncIterLimit real64 0.4 Fraction of the Max Newton iterations below which the solver asks for the time-step to be doubled for the next dt.
lineSearchAction geosx_NonlinearSolverParameters_LineSearchAction Attempt
How the line search is to be used. Options are:
* None - Do not use line search.
* Attempt - Use line search. Allow exit from line search without achieving smaller residual than starting residual.
* Require - Use line search. If smaller residual than starting resdual is not achieved, cut time step.
lineSearchCutFactor real64 0.5 Line search cut factor. For instance, a value of 0.5 will result in the effective application of the last solution by a factor of (0.5, 0.25, 0.125, …)
lineSearchMaxCuts integer 4 Maximum number of line search cuts.
logLevel integer 0 Log level
maxSubSteps integer 10 Maximum number of time sub-steps allowed for the solver
maxTimeStepCuts integer 2 Max number of time step cuts
newtonMaxIter integer 5 Maximum number of iterations that are allowed in a Newton loop.
newtonMinIter integer 1 Minimum number of iterations that are required before exiting the Newton loop.
newtonTol real64 1e-06 The required tolerance in order to exit the Newton iteration loop.
timestepCutFactor real64 0.5 Factor by which the time step will be cut if a timestep cut is required.