opm-simulators
PhaseCheckBase.hpp
1 /*
2  Copyright 2024 Equinor AS
3 
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef PHASE_CHECK_BASE_HPP_INCLUDED
21 #define PHASE_CHECK_BASE_HPP_INCLUDED
22 
23 #include <opm/simulators/utils/satfunc/SatfuncConsistencyChecks.hpp>
24 
25 namespace Opm::Satfunc::PhaseChecks {
26 
33  template <typename Scalar>
34  class PhaseCheckBase : public SatfuncConsistencyChecks<Scalar>::Check
35  {
36  public:
44  void test(const EclEpsScalingPointsInfo<Scalar>& endPoints) override;
45 
48  bool isViolated() const override;
49 
54  bool isCritical() const override;
55 
56  protected:
60  void setViolated();
61 
65  void setCritical();
66 
67  private:
71  unsigned char flags_{0};
72 
83  virtual void testImpl(const EclEpsScalingPointsInfo<Scalar>& endPoints) = 0;
84  };
85 
86 } // namespace Opm::Satfunc::PhaseChecks
87 
88 #endif // PHASE_CHECK_BASE_HPP_INCLUDED
void test(const EclEpsScalingPointsInfo< Scalar > &endPoints) override
Run specific check against a set of saturation function end-points.
Definition: PhaseCheckBase.cpp:34
Base class for all phase saturation function consistency checks.
Definition: PhaseCheckBase.hpp:34
void setCritical()
Mark check as violated at critical level.
Definition: PhaseCheckBase.cpp:60
Definition: SatfuncCheckPointInterface.hpp:28
bool isViolated() const override
Whether or not last set of end-points violated this particular check.
Definition: PhaseCheckBase.cpp:42
void setViolated()
Mark check as violated.
Definition: PhaseCheckBase.cpp:54
bool isCritical() const override
Whether or not this check is critical to the simulator&#39;s ability to run the case. ...
Definition: PhaseCheckBase.cpp:48
Platform for running sets of consistency checks against collection of saturation function end-points...
Definition: SatfuncConsistencyChecks.hpp:45