00001 /* 00002 Copyright 2014 SINTEF ICT, Applied Mathematics. 00003 Copyright 2014 IRIS AS 00004 00005 This file is part of the Open Porous Media project (OPM). 00006 00007 OPM is free software: you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation, either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 OPM is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with OPM. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00021 #ifndef OPM_NEWTONITERATIONBLACKOILINTERFACE_HEADER_INCLUDED 00022 #define OPM_NEWTONITERATIONBLACKOILINTERFACE_HEADER_INCLUDED 00023 00024 #include <opm/autodiff/LinearisedBlackoilResidual.hpp> 00025 00026 #include <boost/any.hpp> 00027 namespace Opm 00028 { 00029 00031 class NewtonIterationBlackoilInterface 00032 { 00033 public: 00035 typedef LinearisedBlackoilResidual::ADB::V SolutionVector; 00036 00037 virtual ~NewtonIterationBlackoilInterface() {} 00038 00044 virtual SolutionVector computeNewtonIncrement(const LinearisedBlackoilResidual& residual) const = 0; 00045 00047 virtual int iterations () const = 0; 00048 00049 00051 virtual const boost::any& parallelInformation() const = 0; 00052 }; 00053 00054 } // namespace Opm 00055 00056 00057 #endif // OPM_NEWTONITERATIONBLACKOILINTERFACE_HEADER_INCLUDED