20 #ifndef OPM_NONLINEAR_SYSTEM_COMPOSITIONAL_HEADER_INCLUDED 21 #define OPM_NONLINEAR_SYSTEM_COMPOSITIONAL_HEADER_INCLUDED 23 #include <dune/common/fvector.hh> 24 #include <dune/istl/bvector.hh> 26 #include <opm/simulators/flow/BlackoilModelParameters.hpp> 27 #include <opm/simulators/flow/NonlinearSystem.hpp> 29 #include <opm/simulators/timestepping/ConvergenceReport.hpp> 30 #include <opm/simulators/timestepping/SimulatorReport.hpp> 31 #include <opm/simulators/timestepping/SimulatorTimer.hpp> 33 #include <flowexperimental/comp/wells/CompWellModel.hpp> 40 template <
class TypeTag>
45 using Simulator =
typename ParentType::Simulator;
46 using Grid =
typename ParentType::Grid;
47 using FluidSystem =
typename ParentType::FluidSystem;
48 using Indices =
typename ParentType::Indices;
49 using Scalar =
typename ParentType::Scalar;
54 static constexpr
int numEq = Indices::numEq;
56 using VectorBlockType = Dune::FieldVector<Scalar, numEq>;
57 using BVector = Dune::BlockVector<VectorBlockType>;
71 template <
class NonlinearSolverType>
73 NonlinearSolverType& nonlinearSolver);
75 template <
class NonlinearSolverType>
77 NonlinearSolverType& nonlinearSolver);
79 Scalar relativeChange()
const;
81 int linearIterationsLastSolve()
const 82 {
return this->simulator_.model().newtonMethod().linearSolver().iterations(); }
84 void solveJacobianSystem(BVector& x);
86 bool hasNlddSolver()
const 95 const std::vector<SimulatorReport>& domainAccumulatedReports()
const 97 static const std::vector<SimulatorReport> emptyReports{};
101 void writeNonlinearIterationsPerCell(
const std::filesystem::path&)
const {}
104 std::vector<std::vector<Scalar>> computeFluidInPlace(
const T&,
const std::vector<int>& fipnum)
const 105 {
return computeFluidInPlace(fipnum); }
107 std::vector<std::vector<Scalar>> computeFluidInPlace(
const std::vector<int>&)
const 110 void writePartitions(
const std::filesystem::path&)
const {}
113 std::vector<Scalar> reservoirResidualMetrics()
const;
115 double linear_solve_setup_time_ = 0.0;
120 #include <opm/simulators/flow/NonlinearSystemCompositional_impl.hpp> 122 #endif // OPM_NONLINEAR_SYSTEM_COMPOSITIONAL_HEADER_INCLUDED typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(...))
Definition: propertysystem.hh:233
Structs needed for tpfalinearizer and its gpuparams struct extracted to be defined in one place that ...
Definition: blackoilbioeffectsmodules.hh:45
Solver parameters for the NonlinearSystemBlackOilReservoir.
Definition: BlackoilModelParameters.hpp:200
Definition: NonlinearSystemCompositional.hpp:41
A struct for returning timing data from a simulator to its caller.
Definition: SimulatorReport.hpp:33
Interface class for SimulatorTimer objects, to be improved.
Definition: SimulatorTimerInterface.hpp:33
Definition: SimulatorReport.hpp:121
Definition: CompWellModel.hpp:51
Definition: NonlinearSystem.hpp:43
Definition: ComponentName.hpp:33