The multi-dimensional Newton method.
More...
#include <newtonmethod.hh>
|
|
| NewtonMethod (Simulator &simulator) |
| |
| void | finishInit () |
| | Finialize the construction of the object. More...
|
| |
|
bool | converged () const |
| | Returns true if the error of the solution is below the tolerance.
|
| |
|
Problem & | problem () |
| | Returns a reference to the object describing the current physical problem.
|
| |
|
const Problem & | problem () const |
| | Returns a reference to the object describing the current physical problem.
|
| |
|
Model & | model () |
| | Returns a reference to the numeric model.
|
| |
|
const Model & | model () const |
| | Returns a reference to the numeric model.
|
| |
|
Scalar | tolerance () const |
| | Return the current tolerance at which the Newton method considers itself to be converged.
|
| |
|
void | setTolerance (Scalar value) |
| | Set the current tolerance at which the Newton method considers itself to be converged.
|
| |
| bool | apply () |
| | Run the Newton method. More...
|
| |
| Scalar | suggestTimeStepSize (Scalar oldDt) const |
| | Suggest a new time-step size based on the old time-step size. More...
|
| |
|
std::ostringstream & | endIterMsg () |
| | Message that should be printed for the user after the end of an iteration.
|
| |
|
void | eraseMatrix () |
| | Causes the solve() method to discared the structure of the linear system of equations the next time it is called.
|
| |
|
LinearSolverBackend & | linearSolver () |
| | Returns the linear solver backend object for external use.
|
| |
| const LinearSolverBackend & | linearSolver () const |
| | Returns the linear solver backend object for external use. More...
|
| |
|
const Timer & | prePostProcessTimer () const |
| |
|
const Timer & | linearizeTimer () const |
| |
|
const Timer & | solveTimer () const |
| |
|
const Timer & | updateTimer () const |
| |
|
|
bool | verbose_ () const |
| | Returns true if the Newton method ought to be chatty.
|
| |
| void | begin_ (const SolutionVector &) |
| | Called before the Newton method is applied to an non-linear system of equations. More...
|
| |
|
void | beginIteration_ () |
| | Indicates the beginning of a Newton iteration.
|
| |
|
void | linearizeDomain_ () |
| | Linearize the global non-linear system of equations associated with the spatial domain.
|
| |
|
void | linearizeAuxiliaryEquations_ () |
| |
|
void | preSolve_ (const SolutionVector &, const GlobalEqVector ¤tResidual) |
| |
| void | postSolve_ (const SolutionVector &, const GlobalEqVector &, GlobalEqVector &solutionUpdate) |
| | Update the error of the solution given the previous iteration. More...
|
| |
| void | update_ (SolutionVector &nextSolution, const SolutionVector ¤tSolution, const GlobalEqVector &solutionUpdate, const GlobalEqVector ¤tResidual) |
| | Update the current solution with a delta vector. More...
|
| |
|
void | updateConstraintDof_ (unsigned, PrimaryVariables &nextValue, const Constraints &constraints) |
| | Update the primary variables for a degree of freedom which is constraint.
|
| |
|
void | updatePrimaryVariables_ (unsigned, PrimaryVariables &nextValue, const PrimaryVariables ¤tValue, const EqVector &update, const EqVector &) |
| | Update a single primary variables object.
|
| |
| void | writeConvergence_ (const SolutionVector ¤tSolution, const GlobalEqVector &solutionUpdate) |
| | Write the convergence behaviour of the newton method to disk. More...
|
| |
| void | endIteration_ (const SolutionVector &, const SolutionVector &) |
| | Indicates that one Newton iteration was finished. More...
|
| |
|
bool | proceed_ () const |
| | Returns true iff another Newton iteration should be done.
|
| |
|
void | end_ () |
| | Indicates that we're done solving the non-linear system of equations.
|
| |
| void | failed_ () |
| | Called if the Newton method broke down. More...
|
| |
| void | succeeded_ () |
| | Called if the Newton method was successful. More...
|
| |
|
|
static bool | enableConstraints_ () |
| |
|
|
Simulator & | simulator_ |
| |
|
Timer | prePostProcessTimer_ |
| |
|
Timer | linearizeTimer_ |
| |
|
Timer | solveTimer_ |
| |
|
Timer | updateTimer_ |
| |
|
std::ostringstream | endIterMsgStream_ |
| |
|
Scalar | error_ |
| |
|
Scalar | lastError_ |
| |
|
NewtonMethodParams< Scalar > | params_ |
| |
|
bool | lastSolveFailed_ = false |
| |
|
LinearSolverBackend | linearSolver_ |
| |
|
CollectiveCommunication | comm_ |
| |
|
ConvergenceWriter | convergenceWriter_ |
| |
template<class TypeTag>
class Opm::NewtonMethod< TypeTag >
The multi-dimensional Newton method.
This class uses static polymorphism to allow implementations to implement different update/convergence strategies.
◆ apply()
Run the Newton method.
The actual implementation can influence all the strategic decisions via callbacks using static polymorphism.
◆ begin_()
Called before the Newton method is applied to an non-linear system of equations.
- Parameters
-
◆ endIteration_()
template<class TypeTag >
| void Opm::NewtonMethod< TypeTag >::endIteration_ |
( |
const SolutionVector & |
, |
|
|
const SolutionVector & |
|
|
) |
| |
|
inlineprotected |
Indicates that one Newton iteration was finished.
- Parameters
-
| nextSolution | The solution after the current Newton iteration |
| currentSolution | The solution at the beginning of the current Newton iteration |
◆ failed_()
Called if the Newton method broke down.
This method is called after end_()
◆ finishInit()
Finialize the construction of the object.
At this point, it can be assumed that all objects featured by the simulator have been allocated. (But not that they have been fully initialized yet.)
◆ linearSolver()
Returns the linear solver backend object for external use.
◆ postSolve_()
template<class TypeTag >
| void Opm::NewtonMethod< TypeTag >::postSolve_ |
( |
const SolutionVector & |
, |
|
|
const GlobalEqVector & |
, |
|
|
GlobalEqVector & |
solutionUpdate |
|
) |
| |
|
inlineprotected |
Update the error of the solution given the previous iteration.
For our purposes, the error of a solution is defined as the maximum of the weighted residual of a given solution.
- Parameters
-
| currentSolution | The solution at the beginning the current iteration |
| currentResidual | The residual (i.e., right-hand-side) of the current iteration's solution. |
| solutionUpdate | The difference between the current and the next solution |
◆ succeeded_()
Called if the Newton method was successful.
This method is called after end_()
◆ suggestTimeStepSize()
Suggest a new time-step size based on the old time-step size.
The default behavior is to suggest the old time-step size scaled by the ratio between the target iterations and the iterations required to actually solve the last time-step.
◆ update_()
template<class TypeTag >
| void Opm::NewtonMethod< TypeTag >::update_ |
( |
SolutionVector & |
nextSolution, |
|
|
const SolutionVector & |
currentSolution, |
|
|
const GlobalEqVector & |
solutionUpdate, |
|
|
const GlobalEqVector & |
currentResidual |
|
) |
| |
|
inlineprotected |
Update the current solution with a delta vector.
Different update strategies, such as chopped updates can be implemented by overriding this method. The default behavior is use the standard Newton-Raphson update strategy, i.e.
- Parameters
-
| nextSolution | The solution vector after the current iteration |
| currentSolution | The solution vector after the last iteration |
| solutionUpdate | The delta vector as calculated by solving the linear system of equations |
| currentResidual | The residual vector of the current Newton-Raphson iteraton |
◆ writeConvergence_()
template<class TypeTag >
| void Opm::NewtonMethod< TypeTag >::writeConvergence_ |
( |
const SolutionVector & |
currentSolution, |
|
|
const GlobalEqVector & |
solutionUpdate |
|
) |
| |
|
inlineprotected |
Write the convergence behaviour of the newton method to disk.
This method is called as part of the update proceedure.
The documentation for this class was generated from the following file: