multiphasebasemodel: do not set a default flux module

This commit is contained in:
Arne Morten Kvarving committed 2026-08-06 11:36:21 +02:00
1 parent 1f20c2ea34
commit 05f6583222
47 files changed
+356 -91

No files matched your search

+12 -10
View File
@@ -32,33 +32,35 @@
#include <opm/common/OpmLog/OpmLog.hpp>
#include <opm/common/OpmLog/StreamLog.hpp>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2ptflashproblem.hh"
#include <iostream>
#include <memory>
namespace Opm::Properties {
namespace TTag {
struct CO2PTEcfvProblem {
using InheritsFrom = std::tuple<CO2PTBaseProblem, FlashModel>;
};
struct CO2PTEcfvProblem
{ using InheritsFrom = std::tuple<CO2PTBaseProblem, FlashModel>; };
}
template <class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::CO2PTEcfvProblem>
{
using type = TTag::EcfvDiscretization;
};
{ using type = TTag::EcfvDiscretization; };
template <class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::CO2PTEcfvProblem>
{
using type = TTag::AutoDiffLocalLinearizer;
};
{ using type = TTag::AutoDiffLocalLinearizer; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::CO2PTEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
+10 -2
View File
@@ -32,10 +32,12 @@
#include <opm/material/common/quad.hpp>
#endif
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include "problems/co2injectionflash.hh"
#include "problems/co2injectionproblem.hh"
@@ -64,6 +66,12 @@ struct FlashSolver<TypeTag, TTag::Co2InjectionFlashEcfvProblem>
{ using type = Opm::Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionFlashEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
// the flash model has serious problems with the numerical
// precision. if quadruple precision math is available, we use it,
// else we increase the tolerance of the Newton solver
+11 -4
View File
@@ -31,10 +31,12 @@
// this must be included before the vanguard
#include <opm/material/common/quad.hpp>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include "problems/co2injectionflash.hh"
#include "problems/co2injectionproblem.hh"
@@ -63,8 +65,13 @@ struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem>
// use the CO2 injection problem adapted flash solver
template<class TypeTag>
struct FlashSolver<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem>
{ using type = Opm::Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
{ using type = Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionFlashNiEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
// the flash model has serious problems with the numerical
// precision. if quadruple precision math is available, we use it,
+12 -4
View File
@@ -31,10 +31,12 @@
// this must be included before the vanguard
#include <opm/material/common/quad.hpp>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include "problems/co2injectionflash.hh"
#include "problems/co2injectionproblem.hh"
@@ -59,8 +61,14 @@ struct EnableEnergy<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem>
// use the CO2 injection problem adapted flash solver
template<class TypeTag>
struct FlashSolver<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem>
{ using type = Opm::Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
{ using type = Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionFlashNiVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
// the flash model has serious problems with the numerical
// precision. if quadruple precision math is available, we use it,
+11 -4
View File
@@ -32,10 +32,12 @@
#include <opm/material/common/quad.hpp>
#endif
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include "problems/co2injectionflash.hh"
#include "problems/co2injectionproblem.hh"
@@ -55,8 +57,13 @@ struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionFlashVcfvProblem>
// use the flash solver adapted to the CO2 injection problem
template<class TypeTag>
struct FlashSolver<TypeTag, TTag::Co2InjectionFlashVcfvProblem>
{ using type = Opm::Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
{ using type = Co2InjectionFlash<GetPropType<TypeTag, Properties::Scalar>,
GetPropType<TypeTag, Properties::FluidSystem>>; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionFlashVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
// the flash model has serious problems with the numerical
// precision. if quadruple precision math is available, we use it,
+8 -2
View File
@@ -28,10 +28,11 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include "problems/co2injectionproblem.hh"
@@ -48,6 +49,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionImmiscibleEcfvProblem>
{ using type = TTag::EcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionImmiscibleEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
////////////////////////
+9 -2
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -56,6 +58,11 @@ template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionImmiscibleNiEcfvProblem>
{ using type = TTag::AutoDiffLocalLinearizer; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionImmiscibleNiEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
////////////////////////
+9 -2
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -51,6 +53,11 @@ template<class TypeTag>
struct EnableEnergy<TypeTag, TTag::Co2InjectionImmiscibleNiVcfvProblem>
{ static constexpr bool value = true; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionImmiscibleNiVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
////////////////////////
+8 -2
View File
@@ -28,10 +28,11 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include "problems/co2injectionproblem.hh"
@@ -48,6 +49,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionImmiscibleVcfvProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionImmiscibleVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
////////////////////////
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -48,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpEcfvProblem>
{ using type = TTag::EcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionNcpEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -57,6 +59,11 @@ template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionNcpNiEcfvProblem>
{ using type = TTag::AutoDiffLocalLinearizer; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionNcpNiEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -51,6 +53,11 @@ template<class TypeTag>
struct EnableEnergy<TypeTag, TTag::Co2InjectionNcpNiVcfvProblem>
{ static constexpr bool value = true; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionNcpNiVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+9 -3
View File
@@ -28,10 +28,11 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
@@ -49,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionNcpVcfvProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionNcpVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -48,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsEcfvProblem>
{ using type = TTag::EcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionPvsEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -56,6 +58,11 @@ template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::Co2InjectionPvsNiEcfvProblem>
{ using type = TTag::AutoDiffLocalLinearizer; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionPvsNiEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+10 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
namespace Opm::Properties {
@@ -52,6 +54,11 @@ template<class TypeTag>
struct EnableEnergy<TypeTag, TTag::Co2InjectionPvsNiVcfvProblem>
{ static constexpr bool value = true; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionPvsNiVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+9 -3
View File
@@ -28,10 +28,11 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/utils/start.hh>
#include "problems/co2injectionproblem.hh"
@@ -49,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Co2InjectionPvsVcfvProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Co2InjectionPvsVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
@@ -50,6 +51,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::CuvetteProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::CuvetteProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/flash/flashmodel.hh>
#include <opm/models/utils/start.hh>
@@ -50,6 +51,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::DiffusionProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::DiffusionProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
@@ -50,6 +51,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::DiffusionProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::DiffusionProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/pvs/pvsmodel.hh>
#include <opm/models/utils/start.hh>
@@ -50,6 +51,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::DiffusionProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::DiffusionProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+16 -4
View File
@@ -27,9 +27,11 @@
*/
#include "config.h"
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/fingerproblem.hh"
@@ -38,10 +40,20 @@ namespace Opm::Properties {
// Create new type tags
namespace TTag {
struct FingerProblemEcfv { using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
struct FingerProblemEcfv
{ using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
} // end namespace TTag
template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemEcfv> { using type = TTag::EcfvDiscretization; };
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemEcfv>
{ using type = TTag::EcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::FingerProblemEcfv>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
+16 -4
View File
@@ -27,9 +27,11 @@
*/
#include "config.h"
#include <opm/models/utils/start.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/fingerproblem.hh"
@@ -38,10 +40,20 @@ namespace Opm::Properties {
// Create new type tags
namespace TTag {
struct FingerProblemVcfv { using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
struct FingerProblemVcfv
{ using InheritsFrom = std::tuple<FingerBaseProblem, ImmiscibleTwoPhaseModel>; };
} // end namespace TTag
template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemVcfv> { using type = TTag::VcfvDiscretization; };
struct SpatialDiscretizationSplice<TypeTag, TTag::FingerProblemVcfv>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::FingerProblemVcfv>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
@@ -49,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::GroundWaterProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::GroundWaterProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
@@ -49,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::InfiltrationProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::InfiltrationProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+18 -5
View File
@@ -29,28 +29,41 @@
#ifndef EWOMS_LENS_IMMISCIBLE_ECFV_AD_HH
#define EWOMS_LENS_IMMISCIBLE_ECFV_AD_HH
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include "problems/lensproblem.hh"
namespace Opm::Properties {
// Create new type tags
namespace TTag {
struct LensProblemEcfvAd { using InheritsFrom = std::tuple<LensBaseProblem, ImmiscibleTwoPhaseModel>; };
struct LensProblemEcfvAd
{ using InheritsFrom = std::tuple<LensBaseProblem, ImmiscibleTwoPhaseModel>; };
} // end namespace TTag
// use the element centered finite volume spatial discretization
template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::LensProblemEcfvAd> { using type = TTag::EcfvDiscretization; };
struct SpatialDiscretizationSplice<TypeTag, TTag::LensProblemEcfvAd>
{ using type = TTag::EcfvDiscretization; };
// use automatic differentiation for this simulator
template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::LensProblemEcfvAd> { using type = TTag::AutoDiffLocalLinearizer; };
struct LocalLinearizerSplice<TypeTag, TTag::LensProblemEcfvAd>
{ using type = TTag::AutoDiffLocalLinearizer; };
// this problem works fine if the linear solver uses single precision scalars
template<class TypeTag>
struct LinearSolverScalar<TypeTag, TTag::LensProblemEcfvAd> { using type = float; };
struct LinearSolverScalar<TypeTag, TTag::LensProblemEcfvAd>
{ using type = float; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::LensProblemEcfvAd>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
+6
View File
@@ -28,6 +28,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
@@ -56,6 +57,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::LensProblemVcfvAd>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::LensProblemVcfvAd>
{ using type = DarcyFluxModule<TypeTag>; };
// use linear finite element gradients if dune-localfunctions is available
#if HAVE_DUNE_LOCALFUNCTIONS
template<class TypeTag>
+6
View File
@@ -28,6 +28,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
@@ -56,6 +57,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::LensProblemVcfvFd>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::LensProblemVcfvFd>
{ using type = DarcyFluxModule<TypeTag>; };
// use linear finite element gradients if dune-localfunctions is available
#if HAVE_DUNE_LOCALFUNCTIONS
template<class TypeTag>
+8 -1
View File
@@ -27,9 +27,11 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/richardslensproblem.hh"
@@ -52,6 +54,11 @@ template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::RichardsLensEcfvProblem>
{ using type = TTag::AutoDiffLocalLinearizer; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::RichardsLensEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+8 -1
View File
@@ -27,9 +27,11 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/richardslensproblem.hh"
@@ -48,6 +50,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::RichardsLensVcfvProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::RichardsLensVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -28,6 +28,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/dgfvanguard.hh>
@@ -51,6 +52,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::ObstacleProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::ObstacleProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
@@ -51,6 +52,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::ObstacleProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::ObstacleProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -29,6 +29,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
@@ -53,6 +54,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::ObstacleProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::ObstacleProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
@@ -51,6 +52,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::OutflowProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::OutflowProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+2 -1
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
@@ -46,7 +47,7 @@ struct PowerInjectionDarcyAdProblem
template<class TypeTag>
struct FluxModule<TypeTag, TTag::PowerInjectionDarcyAdProblem>
{ using type = Opm::DarcyFluxModule<TypeTag>; };
{ using type = DarcyFluxModule<TypeTag>; };
template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionDarcyAdProblem>
+2 -1
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/forchheimerfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
@@ -46,7 +47,7 @@ struct PowerInjectionForchheimerAdProblem
template<class TypeTag>
struct FluxModule<TypeTag, TTag::PowerInjectionForchheimerAdProblem>
{ using type = Opm::ForchheimerFluxModule<TypeTag>; };
{ using type = ForchheimerFluxModule<TypeTag>; };
template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionForchheimerAdProblem>
+2 -1
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/forchheimerfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/utils/start.hh>
@@ -46,7 +47,7 @@ struct PowerInjectionForchheimerFdProblem
template<class TypeTag>
struct FluxModule<TypeTag, TTag::PowerInjectionForchheimerFdProblem>
{ using type = Opm::ForchheimerFluxModule<TypeTag>; };
{ using type = ForchheimerFluxModule<TypeTag>; };
template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::PowerInjectionForchheimerFdProblem>
+6
View File
@@ -48,6 +48,7 @@
#include <opm/material/components/SimpleH2O.hpp>
#include <opm/material/components/Dnapl.hpp>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretefracture/discretefracturemodel.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
@@ -169,6 +170,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::FractureProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::FractureProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
namespace Opm {
@@ -37,6 +37,7 @@
#include <opm/material/components/SimpleH2O.hpp>
#include <opm/material/components/Air.hpp>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/common/fvbaseadlocallinearizer.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
#include <opm/models/io/cubegridvanguard.hh>
+9 -3
View File
@@ -27,10 +27,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/ecfv/ecfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/reservoirproblem.hh"
@@ -55,6 +57,10 @@ template<class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::ReservoirNcpEcfvProblem>
{ using type = TTag::AutoDiffLocalLinearizer; };
template<class TypeTag>
struct FluxModule<TypeTag, TTag::ReservoirNcpEcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)
+9 -3
View File
@@ -28,10 +28,12 @@
*/
#include "config.h"
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/utils/start.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/ncp/ncpmodel.hh>
#include <opm/models/utils/start.hh>
#include <opm/simulators/linalg/parallelbicgstabbackend.hh>
#include "problems/reservoirproblem.hh"
@@ -51,6 +53,10 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::ReservoirNcpVcfvProblem>
{ using type = TTag::VcfvDiscretization; };
template<class TypeTag>
struct FluxModule<TypeTag, TTag::ReservoirNcpVcfvProblem>
{ using type = DarcyFluxModule<TypeTag>; };
// reduce the base epsilon for the finite difference method to 10^-11. for some reason
// the simulator converges better with this. (TODO: use automatic differentiation?)
template<class TypeTag>
+5
View File
@@ -29,6 +29,7 @@
#define EWOMS_TUTORIAL1_PROBLEM_HH /*@\label{tutorial1:guardian2}@*/
// The numerical model
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/immiscible/immisciblemodel.hh>
// The spatial discretization (VCFV == Vertex-Centered Finite Volumes)
@@ -70,6 +71,10 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::Tutorial1Problem>
{ using type = TTag::VcfvDiscretization; }; /*@\label{tutorial1:set-spatial-discretization}@*/
template<class TypeTag>
struct FluxModule<TypeTag, TTag::Tutorial1Problem>
{ using type = DarcyFluxModule<TypeTag>; };
// Set the "Problem" property
template<class TypeTag>
struct Problem<TypeTag, TTag::Tutorial1Problem>
+6
View File
@@ -27,6 +27,7 @@
*/
#include "config.h"
#include <opm/models/common/darcyfluxmodule.hh>
#include <opm/models/discretization/vcfv/vcfvdiscretization.hh>
#include <opm/models/io/dgfvanguard.hh>
#include <opm/models/pvs/pvsmodel.hh>
@@ -51,6 +52,11 @@ template<class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::WaterAirProblem>
{ using type = TTag::VcfvDiscretization; };
//! Use the Darcy relation to determine the phase velocity
template<class TypeTag>
struct FluxModule<TypeTag, TTag::WaterAirProblem>
{ using type = DarcyFluxModule<TypeTag>; };
} // namespace Opm::Properties
int main(int argc, char **argv)