00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_NEWTONITERATIONUTILITIES_HEADER_INCLUDED
00021 #define OPM_NEWTONITERATIONUTILITIES_HEADER_INCLUDED
00022
00023 #include <opm/autodiff/AutoDiffBlock.hpp>
00024 #include <boost/any.hpp>
00025 #include <vector>
00026
00027 namespace Opm
00028 {
00029
00036 std::vector< AutoDiffBlock<double> >
00037 eliminateVariable(const std::vector< AutoDiffBlock<double> >& eqs,
00038 const int n);
00039
00045 AutoDiffBlock<double>::V recoverVariable(const AutoDiffBlock<double>& equation,
00046 const AutoDiffBlock<double>::V& partial_solution,
00047 const int n);
00048
00057 void formEllipticSystem(const int num_phases,
00058 const std::vector< AutoDiffBlock<double> >& eqs,
00059 Eigen::SparseMatrix<double, Eigen::RowMajor>& A,
00060 AutoDiffBlock<double>::V& b);
00061
00063 bool isIORank(const boost::any& parallel_info);
00064
00065 }
00066
00067 #endif // OPM_NEWTONITERATIONUTILITIES_HEADER_INCLUDED