diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0d83dce1a..f93137085 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -163,6 +163,22 @@ opm_add_test(flow_blackoil_dunecpr
DEPENDS "opmsimulators"
LIBRARIES "opmsimulators")
+opm_add_test(flow_onephase
+ ONLY_COMPILE
+ DEFAULT_ENABLE_IF ${FLOW_DEFAULT_ENABLE_IF}
+ SOURCES flow/flow_onephase.cpp
+ EXE_NAME flow_onephase
+ DEPENDS "opmsimulators"
+ LIBRARIES "opmsimulators")
+
+opm_add_test(flow_onephase_energy
+ ONLY_COMPILE
+ DEFAULT_ENABLE_IF ${FLOW_DEFAULT_ENABLE_IF}
+ SOURCES flow/flow_onephase_energy.cpp
+ EXE_NAME flow_onephase_energy
+ DEPENDS "opmsimulators"
+ LIBRARIES "opmsimulators")
+
if (BUILD_FLOW)
diff --git a/flow/flow_onephase.cpp b/flow/flow_onephase.cpp
new file mode 100644
index 000000000..4c3497d0b
--- /dev/null
+++ b/flow/flow_onephase.cpp
@@ -0,0 +1,84 @@
+/*
+ Copyright 2013, 2014, 2015 SINTEF ICT, Applied Mathematics.
+ Copyright 2014 Dr. Blatt - HPC-Simulation-Software & Services
+ Copyright 2015, 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 .
+*/
+#include "config.h"
+#include "flow/flow_tag.hpp"
+#include
+
+
+BEGIN_PROPERTIES
+ NEW_TYPE_TAG(EclFlowProblemSimple, INHERITS_FROM(EclFlowProblem));
+ NEW_PROP_TAG(FluidState);
+ NEW_PROP_TAG(FluidSystem);
+ //! The indices required by the model
+ SET_PROP(EclFlowProblemSimple, Indices)
+ {
+ private:
+ // it is unfortunately not possible to simply use 'TypeTag' here because this leads
+ // to cyclic definitions of some properties. if this happens the compiler error
+ // messages unfortunately are *really* confusing and not really helpful.
+ typedef TTAG(EclFlowProblem) BaseTypeTag;
+ typedef typename GET_PROP_TYPE(BaseTypeTag, FluidSystem) FluidSystem;
+
+ public:
+ typedef Ewoms::BlackOilOnePhaseIndices type;
+
+ };
+ SET_PROP(EclFlowProblemSimple, FluidState)
+ {
+ private:
+ typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
+ typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
+ enum { enableTemperature = GET_PROP_VALUE(TypeTag, EnableTemperature) };
+ enum { enableSolvent = GET_PROP_VALUE(TypeTag, EnableSolvent) };
+ enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
+ enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
+ typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ typedef typename GET_PROP_TYPE(TypeTag, Evaluation) Evaluation;
+ static const bool compositionSwitchEnabled = Indices::gasEnabled;
+
+ public:
+ //typedef Opm::BlackOilFluidSystemSimple type;
+ typedef Opm::BlackOilFluidState type;
+ };
+
+ // SET_PROP(EclFlowProblemSimple, FluidSystem)
+ // {
+ // private:
+ // //typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ // typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ // typedef typename GET_PROP_TYPE(TypeTag, Evaluation) Evaluation;
+ // typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
+
+ // public:
+ // typedef Opm::BlackOilFluidSystem type;
+ // };
+END_PROPERTIES
+
+int main(int argc, char** argv)
+{
+ typedef TTAG(EclFlowProblemSimple) TypeTag;
+ return mainFlow(argc, argv);
+}
diff --git a/flow/flow_onephase_energy.cpp b/flow/flow_onephase_energy.cpp
new file mode 100644
index 000000000..7b91a9939
--- /dev/null
+++ b/flow/flow_onephase_energy.cpp
@@ -0,0 +1,86 @@
+/*
+ Copyright 2013, 2014, 2015 SINTEF ICT, Applied Mathematics.
+ Copyright 2014 Dr. Blatt - HPC-Simulation-Software & Services
+ Copyright 2015, 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 .
+*/
+#include "config.h"
+#include "flow/flow_tag.hpp"
+#include
+
+
+BEGIN_PROPERTIES
+ NEW_TYPE_TAG(EclFlowProblemSimple, INHERITS_FROM(EclFlowProblem));
+ SET_BOOL_PROP(EclFlowProblemSimple, EnableEnergy, true);
+ NEW_PROP_TAG(FluidState);
+ NEW_PROP_TAG(FluidSystem);
+ //! The indices required by the model
+ SET_PROP(EclFlowProblemSimple, Indices)
+ {
+ private:
+ // it is unfortunately not possible to simply use 'TypeTag' here because this leads
+ // to cyclic definitions of some properties. if this happens the compiler error
+ // messages unfortunately are *really* confusing and not really helpful.
+ typedef TTAG(EclFlowProblem) BaseTypeTag;
+ typedef typename GET_PROP_TYPE(BaseTypeTag, FluidSystem) FluidSystem;
+
+ public:
+ typedef Ewoms::BlackOilOnePhaseIndices type;
+
+ };
+ SET_PROP(EclFlowProblemSimple, FluidState)
+ {
+ private:
+ typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
+ typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
+ enum { enableTemperature = GET_PROP_VALUE(TypeTag, EnableTemperature) };
+ enum { enableSolvent = GET_PROP_VALUE(TypeTag, EnableSolvent) };
+ enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
+ enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) };
+ typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ typedef typename GET_PROP_TYPE(TypeTag, Evaluation) Evaluation;
+ static const bool compositionSwitchEnabled = Indices::gasEnabled;
+
+ public:
+ //typedef Opm::BlackOilFluidSystemSimple type;
+ typedef Opm::BlackOilFluidState type;
+ };
+
+ // SET_PROP(EclFlowProblemSimple, FluidSystem)
+ // {
+ // private:
+ // //typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ // typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+ // typedef typename GET_PROP_TYPE(TypeTag, Evaluation) Evaluation;
+ // typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
+
+ // public:
+ // typedef Opm::BlackOilFluidSystem type;
+ // };
+END_PROPERTIES
+
+
+int main(int argc, char** argv)
+{
+ typedef TTAG(EclFlowProblemSimple) TypeTag;
+ return mainFlow(argc, argv);
+}