mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-18 21:43:27 -06:00
bdc4573e2a
To support this the solveSystem methods of the LinearSolverInterface gets an optional additional template parameter of type boost::any. It can hold any copy constructable object. In our case it is used to pass the information about the parallelization into the solvers of dune-istl without the compiler needing to know their type. Inside of LinearSolverIstl::solveSystem we check whether the type stored inside of boost::any is the new ParallelIstlInformation. If this is the case we extract the information and use the parallel solvers if available, otherwise we solve serial/sequential. The new ParallelIstlInformation is needed as the OwnerOverlapCopyCommunication is not copy constructable. This is indeed a design flaw that should and will fixed upstream, but for the time being we need ParallelIstlInformation to transfer the ParallelIndexSet and RemoteIndices objects. |
||
---|---|---|
.. | ||
call_umfpack.c | ||
call_umfpack.h | ||
LinearSolverFactory.cpp | ||
LinearSolverFactory.hpp | ||
LinearSolverInterface.cpp | ||
LinearSolverInterface.hpp | ||
LinearSolverIstl.cpp | ||
LinearSolverIstl.hpp | ||
LinearSolverUmfpack.cpp | ||
LinearSolverUmfpack.hpp | ||
ParallelIstlInformation.hpp | ||
sparse_sys.c | ||
sparse_sys.h |