diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index 8a4366e62..90343d178 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -794,6 +794,7 @@ list (APPEND PUBLIC_HEADER_FILES opm/simulators/flow/BlackoilModel.hpp opm/simulators/flow/BlackoilModelNldd.hpp opm/simulators/flow/BlackoilModelParameters.hpp + opm/simulators/flow/BlackoilModelProperties.hpp opm/simulators/flow/CollectDataOnIORank.hpp opm/simulators/flow/CollectDataOnIORank_impl.hpp opm/simulators/flow/ConvergenceOutputConfiguration.hpp diff --git a/opm/simulators/flow/BlackoilModel.hpp b/opm/simulators/flow/BlackoilModel.hpp index a4443dcdb..9f1aafb7f 100644 --- a/opm/simulators/flow/BlackoilModel.hpp +++ b/opm/simulators/flow/BlackoilModel.hpp @@ -24,7 +24,7 @@ #ifndef OPM_BLACKOILMODEL_HEADER_INCLUDED #define OPM_BLACKOILMODEL_HEADER_INCLUDED -#include +#include #include #include @@ -35,27 +35,26 @@ #include #include + #include #include +#include #include #include #include #include + #include #include #include #include -#include - #include #include #include #include -#include - -#include +#include #include #include @@ -73,82 +72,7 @@ #include #include -namespace Opm::Properties { - -namespace TTag { - -struct FlowProblem { using InheritsFrom = std::tuple; }; - -} - -// default in flow is to formulate the equations in surface volumes -template -struct BlackoilConserveSurfaceVolume -{ static constexpr bool value = true; }; - -template -struct UseVolumetricResidual -{ static constexpr bool value = false; }; - -template -struct AquiferModel -{ using type = BlackoilAquiferModel; }; - -// disable all extensions supported by black oil model. this should not really be -// necessary but it makes things a bit more explicit -template -struct EnablePolymer -{ static constexpr bool value = false; }; - -template -struct EnableSolvent -{ static constexpr bool value = false; }; - -template -struct EnableTemperature -{ static constexpr bool value = true; }; - -template -struct EnableEnergy -{ static constexpr bool value = false; }; - -template -struct EnableFoam -{ static constexpr bool value = false; }; - -template -struct EnableBrine -{ static constexpr bool value = false; }; - -template -struct EnableSaltPrecipitation -{ static constexpr bool value = false; }; - -template -struct EnableMICP -{ static constexpr bool value = false; }; - -template -struct EnableDispersion -{ static constexpr bool value = false; }; - -template -struct EnableConvectiveMixing -{ static constexpr bool value = true; }; - -template -struct WellModel -{ using type = BlackoilWellModel; }; - -template -struct LinearSolverSplice -{ using type = TTag::FlowIstlSolver; }; - -template -struct EnableDebuggingChecks -{ static constexpr bool value = false; }; - -} // namespace Opm::Properties +#include namespace Opm { diff --git a/opm/simulators/flow/BlackoilModelProperties.hpp b/opm/simulators/flow/BlackoilModelProperties.hpp new file mode 100644 index 000000000..e92792b2c --- /dev/null +++ b/opm/simulators/flow/BlackoilModelProperties.hpp @@ -0,0 +1,114 @@ +/* + Copyright 2013, 2015 SINTEF ICT, Applied Mathematics. + Copyright 2014, 2015 Dr. Blatt - HPC-Simulation-Software & Services + Copyright 2014, 2015 Statoil ASA. + Copyright 2015 NTNU + Copyright 2015, 2016, 2017 IRIS AS + + This file is part of the Open Porous Media project (OPM). + + OPM is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OPM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OPM. If not, see . +*/ + +#ifndef OPM_BLACKOILMODEL_PROPERTIES_HEADER_INCLUDED +#define OPM_BLACKOILMODEL_PROPERTIES_HEADER_INCLUDED + +#include + +#include + +namespace Opm { +template class BlackoilAquiferModel; +template class BlackoilWellModel; +} + +namespace Opm::Properties { + +namespace TTag { + +struct FlowIstlSolver; +struct FlowProblem { using InheritsFrom = std::tuple; }; + +} + +// default in flow is to formulate the equations in surface volumes +template +struct BlackoilConserveSurfaceVolume +{ static constexpr bool value = true; }; + +template +struct UseVolumetricResidual +{ static constexpr bool value = false; }; + +template +struct AquiferModel +{ using type = BlackoilAquiferModel; }; + +// disable all extensions supported by black oil model. this should not really be +// necessary but it makes things a bit more explicit +template +struct EnablePolymer +{ static constexpr bool value = false; }; + +template +struct EnableSolvent +{ static constexpr bool value = false; }; + +template +struct EnableTemperature +{ static constexpr bool value = true; }; + +template +struct EnableEnergy +{ static constexpr bool value = false; }; + +template +struct EnableFoam +{ static constexpr bool value = false; }; + +template +struct EnableBrine +{ static constexpr bool value = false; }; + +template +struct EnableSaltPrecipitation +{ static constexpr bool value = false; }; + +template +struct EnableMICP +{ static constexpr bool value = false; }; + +template +struct EnableDispersion +{ static constexpr bool value = false; }; + +template +struct EnableConvectiveMixing +{ static constexpr bool value = true; }; + +template +struct WellModel +{ using type = BlackoilWellModel; }; + +template +struct LinearSolverSplice +{ using type = TTag::FlowIstlSolver; }; + +template +struct EnableDebuggingChecks +{ static constexpr bool value = false; }; + +} // namespace Opm::Properties + +#endif // OPM_BLACKOILMODEL_PROPERTIES_HEADER_INCLUDED