This class solves the fully implicit black-oil system by solving the reduced system (after eliminating well variables) as a block-structured matrix (one block for all cell variables) for a fixed number of cell variables np . More...
Public Types | |
typedef NewtonIterationBlackoilInterface::SolutionVector | SolutionVector |
Return type for linearSolve(). A simple, non-ad vector type. | |
Public Member Functions | |
NewtonIterationBlackoilInterleavedImpl (const NewtonIterationBlackoilInterleavedParameters ¶m, const boost::any ¶llelInformation_arg=boost::any()) | |
Construct a system solver. | |
int | iterations () const |
Solve the system of linear equations Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself. | |
const boost::any & | parallelInformation () const |
void | formInterleavedSystem (const std::vector< LinearisedBlackoilResidual::ADB > &eqs, Mat &istlA) const |
SolutionVector | computeNewtonIncrement (const LinearisedBlackoilResidual &residual) const |
Solve the linear system Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself. | |
Protected Attributes | |
ISTLSolverType | istlSolver_ |
NewtonIterationBlackoilInterleavedParameters | parameters_ |
This class solves the fully implicit black-oil system by solving the reduced system (after eliminating well variables) as a block-structured matrix (one block for all cell variables) for a fixed number of cell variables np .
Opm::NewtonIterationBlackoilInterleavedImpl< np, ScalarT >::NewtonIterationBlackoilInterleavedImpl | ( | const NewtonIterationBlackoilInterleavedParameters & | param, | |
const boost::any & | parallelInformation_arg = boost::any() | |||
) | [inline] |
Construct a system solver.
[in] | param | parameters controlling the behaviour of the linear solvers |
[in] | parallelInformation | In the case of a parallel run with dune-istl the information about the parallelization. |
SolutionVector Opm::NewtonIterationBlackoilInterleavedImpl< np, ScalarT >::computeNewtonIncrement | ( | const LinearisedBlackoilResidual & | residual | ) | const [inline, virtual] |
Solve the linear system Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself.
[in] | residual | residual object containing A and b. |
Implements Opm::NewtonIterationBlackoilInterface.
void Opm::NewtonIterationBlackoilInterleavedImpl< np, ScalarT >::formInterleavedSystem | ( | const std::vector< LinearisedBlackoilResidual::ADB > & | eqs, | |
Mat & | istlA | |||
) | const [inline] |
Go through all jacobians, and insert in correct spot
The straight forward way to do this would be to run through each element in the output matrix, and set all block entries by gathering from all "input matrices" (derivatives).
A faster alternative is to instead run through each "input matrix" and insert its elements in the correct spot in the output matrix.
int Opm::NewtonIterationBlackoilInterleavedImpl< np, ScalarT >::iterations | ( | ) | const [inline, virtual] |
Solve the system of linear equations Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself.
[in] | residual | residual object containing A and b. |
Implements Opm::NewtonIterationBlackoilInterface.
const boost::any& Opm::NewtonIterationBlackoilInterleavedImpl< np, ScalarT >::parallelInformation | ( | ) | const [inline, virtual] |
Get the information about the parallelization of the grid.
Implements Opm::NewtonIterationBlackoilInterface.