mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
changed: remove SET_BOOL_PROP macro usage
This commit is contained in:
parent
e8248b44ff
commit
0e71c0e29b
38
ebos/ebos.hh
38
ebos/ebos.hh
@ -55,7 +55,10 @@ SET_TYPE_PROP(EbosTypeTag, Problem, Opm::EbosProblem<TypeTag>);
|
||||
// Enable experimental features for ebos: ebos is the research simulator of the OPM
|
||||
// project. If you're looking for a more stable "production quality" simulator, consider
|
||||
// using `flow`
|
||||
SET_BOOL_PROP(EbosTypeTag, EnableExperiments, true);
|
||||
template<class TypeTag>
|
||||
struct EnableExperiments<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// use flow's well model for now
|
||||
SET_TYPE_PROP(EbosTypeTag, EclWellModel, Opm::BlackoilWellModel<TypeTag>);
|
||||
@ -63,15 +66,33 @@ SET_TYPE_PROP(EbosTypeTag, EclWellModel, Opm::BlackoilWellModel<TypeTag>);
|
||||
// currently, ebos uses the non-multisegment well model by default to avoid
|
||||
// regressions. the --use-multisegment-well=true|false command line parameter is still
|
||||
// available in ebos, but hidden from view.
|
||||
SET_BOOL_PROP(EbosTypeTag, UseMultisegmentWell, false);
|
||||
template<class TypeTag>
|
||||
struct UseMultisegmentWell<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// set some properties that are only required by the well model
|
||||
SET_BOOL_PROP(EbosTypeTag, MatrixAddWellContributions, true);
|
||||
SET_BOOL_PROP(EbosTypeTag, EnableTerminalOutput, false);
|
||||
template<class TypeTag>
|
||||
struct MatrixAddWellContributions<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
template<class TypeTag>
|
||||
struct EnableTerminalOutput<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// flow's well model only works with surface volumes
|
||||
SET_BOOL_PROP(EbosTypeTag, BlackoilConserveSurfaceVolume, true);
|
||||
template<class TypeTag>
|
||||
struct BlackoilConserveSurfaceVolume<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// the values for the residual are for the whole cell instead of for a cubic meter of the cell
|
||||
SET_BOOL_PROP(EbosTypeTag, UseVolumetricResidual, false);
|
||||
template<class TypeTag>
|
||||
struct UseVolumetricResidual<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// by default use flow's aquifer model for now
|
||||
SET_TYPE_PROP(EbosTypeTag, EclAquiferModel, Opm::BlackoilAquiferModel<TypeTag>);
|
||||
@ -111,7 +132,10 @@ SET_INT_PROP(EbosTypeTag, ThreadsPerProcess, 2);
|
||||
|
||||
// By default, ebos accepts the result of the time integration unconditionally if the
|
||||
// smallest time step size is reached.
|
||||
SET_BOOL_PROP(EbosTypeTag, ContinueOnConvergenceError, true);
|
||||
template<class TypeTag>
|
||||
struct ContinueOnConvergenceError<TypeTag, TTag::EbosTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,10 @@ struct EbosBrineTypeTag {
|
||||
}
|
||||
|
||||
// enable the brine extension of the black oil model
|
||||
SET_BOOL_PROP(EbosBrineTypeTag, EnableBrine, true);
|
||||
template<class TypeTag>
|
||||
struct EnableBrine<TypeTag, TTag::EbosBrineTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,10 @@ struct EbosFoamTypeTag {
|
||||
}
|
||||
|
||||
// enable the foam extension of the black oil model
|
||||
SET_BOOL_PROP(EbosFoamTypeTag, EnableFoam, true);
|
||||
template<class TypeTag>
|
||||
struct EnableFoam<TypeTag, TTag::EbosFoamTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -38,7 +38,10 @@ struct EbosOilWaterPolymerTypeTag {
|
||||
}
|
||||
|
||||
// enable the polymer extension of the black oil model
|
||||
SET_BOOL_PROP(EbosOilWaterPolymerTypeTag, EnablePolymer, true);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EbosOilWaterPolymerTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
//! The indices indices which only enable oil and water
|
||||
SET_PROP(EbosOilWaterPolymerTypeTag, Indices)
|
||||
|
@ -39,7 +39,10 @@ struct EbosPolymerTypeTag {
|
||||
}
|
||||
|
||||
// enable the polymer extension of the black oil model
|
||||
SET_BOOL_PROP(EbosPolymerTypeTag, EnablePolymer, true);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EbosPolymerTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,10 @@ struct EbosSolventTypeTag {
|
||||
}
|
||||
|
||||
// enable the solvent extension of the black oil model
|
||||
SET_BOOL_PROP(EbosSolventTypeTag, EnableSolvent, true);
|
||||
template<class TypeTag>
|
||||
struct EnableSolvent<TypeTag, TTag::EbosSolventTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -39,7 +39,10 @@ struct EbosThermalTypeTag {
|
||||
}
|
||||
|
||||
// enable the energy extension of the black oil model
|
||||
SET_BOOL_PROP(EbosThermalTypeTag, EnableEnergy, true);
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::EbosThermalTypeTag> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -85,11 +85,23 @@ NEW_PROP_TAG(OwnerCellsFirst);
|
||||
SET_STRING_PROP(EclBaseVanguard, IgnoreKeywords, "");
|
||||
SET_STRING_PROP(EclBaseVanguard, EclDeckFileName, "");
|
||||
SET_INT_PROP(EclBaseVanguard, EclOutputInterval, -1); // use the deck-provided value
|
||||
SET_BOOL_PROP(EclBaseVanguard, EnableOpmRstFile, false);
|
||||
SET_BOOL_PROP(EclBaseVanguard, EclStrictParsing, false);
|
||||
SET_BOOL_PROP(EclBaseVanguard, SchedRestart, false);
|
||||
template<class TypeTag>
|
||||
struct EnableOpmRstFile<TypeTag, TTag::EclBaseVanguard> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EclStrictParsing<TypeTag, TTag::EclBaseVanguard> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct SchedRestart<TypeTag, TTag::EclBaseVanguard> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_INT_PROP(EclBaseVanguard, EdgeWeightsMethod, 1);
|
||||
SET_BOOL_PROP(EclBaseVanguard, OwnerCellsFirst, true);
|
||||
template<class TypeTag>
|
||||
struct OwnerCellsFirst<TypeTag, TTag::EclBaseVanguard> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -53,7 +53,10 @@ struct EclOutputBlackOil {};
|
||||
|
||||
NEW_PROP_TAG(ForceDisableFluidInPlaceOutput);
|
||||
|
||||
SET_BOOL_PROP(EclOutputBlackOil, ForceDisableFluidInPlaceOutput, false);
|
||||
template<class TypeTag>
|
||||
struct ForceDisableFluidInPlaceOutput<TypeTag, TTag::EclOutputBlackOil> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -248,16 +248,28 @@ SET_TYPE_PROP(EclBaseProblem, EclAquiferModel, Opm::EclBaseAquiferModel<TypeTag>
|
||||
SET_TYPE_PROP(EclBaseProblem, EclWellModel, EclWellManager<TypeTag>);
|
||||
|
||||
// Enable aquifers by default in experimental mode
|
||||
SET_BOOL_PROP(EclBaseProblem, EclEnableAquifers, true);
|
||||
template<class TypeTag>
|
||||
struct EclEnableAquifers<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// Enable gravity
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableGravity, true);
|
||||
template<class TypeTag>
|
||||
struct EnableGravity<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// only write the solutions for the report steps to disk
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableWriteAllSolutions, false);
|
||||
template<class TypeTag>
|
||||
struct EnableWriteAllSolutions<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// disable API tracking
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableApiTracking, false);
|
||||
template<class TypeTag>
|
||||
struct EnableApiTracking<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// The default for the end time of the simulation [s]
|
||||
//
|
||||
@ -313,26 +325,44 @@ SET_INT_PROP(EclBaseProblem, NewtonMaxIterations, 14);
|
||||
SET_INT_PROP(EclBaseProblem, NewtonTargetIterations, 6);
|
||||
|
||||
// Disable the VTK output by default for this problem ...
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableVtkOutput, false);
|
||||
template<class TypeTag>
|
||||
struct EnableVtkOutput<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// ... but enable the ECL output by default
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableEclOutput, true);
|
||||
template<class TypeTag>
|
||||
struct EnableEclOutput<TypeTag,TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// If available, write the ECL output in a non-blocking manner
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableAsyncEclOutput, true);
|
||||
template<class TypeTag>
|
||||
struct EnableAsyncEclOutput<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// By default, use single precision for the ECL formated results
|
||||
SET_BOOL_PROP(EclBaseProblem, EclOutputDoublePrecision, false);
|
||||
template<class TypeTag>
|
||||
struct EclOutputDoublePrecision<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// The default location for the ECL output files
|
||||
SET_STRING_PROP(EclBaseProblem, OutputDir, ".");
|
||||
|
||||
// the cache for intensive quantities can be used for ECL problems and also yields a
|
||||
// decent speedup...
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableIntensiveQuantityCache, true);
|
||||
template<class TypeTag>
|
||||
struct EnableIntensiveQuantityCache<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// the cache for the storage term can also be used and also yields a decent speedup
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableStorageCache, true);
|
||||
template<class TypeTag>
|
||||
struct EnableStorageCache<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// Use the "velocity module" which uses the Eclipse "NEWTRAN" transmissibilities
|
||||
SET_TYPE_PROP(EclBaseProblem, FluxModule, Opm::EclTransFluxModule<TypeTag>);
|
||||
@ -351,36 +381,67 @@ SET_INT_PROP(EclBaseProblem, RestartWritingInterval, 0xffffff); // disable
|
||||
// Drift compensation is an experimental feature, i.e., systematic errors in the
|
||||
// conservation quantities are only compensated for
|
||||
// as default if experimental mode is enabled.
|
||||
SET_BOOL_PROP(EclBaseProblem,
|
||||
EclEnableDriftCompensation,
|
||||
getPropValue<TypeTag, Properties::EnableExperiments>());
|
||||
template<class TypeTag>
|
||||
struct EclEnableDriftCompensation<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = getPropValue<TypeTag, Properties::EnableExperiments>();
|
||||
};
|
||||
|
||||
// By default, we enable the debugging checks if we're compiled in debug mode
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableDebuggingChecks, true);
|
||||
template<class TypeTag>
|
||||
struct EnableDebuggingChecks<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// store temperature (but do not conserve energy, as long as EnableEnergy is false)
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableTemperature, true);
|
||||
template<class TypeTag>
|
||||
struct EnableTemperature<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// disable all extensions supported by black oil model. this should not really be
|
||||
// necessary but it makes things a bit more explicit
|
||||
SET_BOOL_PROP(EclBaseProblem, EnablePolymer, false);
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableSolvent, false);
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableEnergy, false);
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableFoam, false);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableSolvent<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableFoam<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// disable thermal flux boundaries by default
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableThermalFluxBoundaries, false);
|
||||
template<class TypeTag>
|
||||
struct EnableThermalFluxBoundaries<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableTracerModel, false);
|
||||
template<class TypeTag>
|
||||
struct EnableTracerModel<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// By default, simulators derived from the EclBaseProblem are production simulators,
|
||||
// i.e., experimental features must be explicitly enabled at compile time
|
||||
SET_BOOL_PROP(EclBaseProblem, EnableExperiments, false);
|
||||
template<class TypeTag>
|
||||
struct EnableExperiments<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
// set defaults for the time stepping parameters
|
||||
SET_SCALAR_PROP(EclBaseProblem, EclMaxTimeStepSizeAfterWellEvent, 3600*24*365.25);
|
||||
SET_SCALAR_PROP(EclBaseProblem, EclRestartShrinkFactor, 3);
|
||||
SET_BOOL_PROP(EclBaseProblem, EclEnableTuning, false);
|
||||
template<class TypeTag>
|
||||
struct EclEnableTuning<TypeTag, TTag::EclBaseProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
SET_STRING_PROP(EclBaseProblem, OutputMode, "all");
|
||||
|
||||
|
@ -51,7 +51,10 @@ struct VtkEclTracer {};
|
||||
NEW_PROP_TAG(VtkWriteEclTracerConcentration);
|
||||
|
||||
// set default values for what quantities to output
|
||||
SET_BOOL_PROP(VtkEclTracer, VtkWriteEclTracerConcentration, false);
|
||||
template<class TypeTag>
|
||||
struct VtkWriteEclTracerConcentration<TypeTag, TTag::VtkEclTracer> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -32,12 +32,21 @@ namespace Opm {
|
||||
};
|
||||
}
|
||||
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, MatrixAddWellContributions, true);
|
||||
template<class TypeTag>
|
||||
struct MatrixAddWellContributions<TypeTag, TTag::EclFlowProblemSimple> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
SET_INT_PROP(EclFlowProblemSimple, LinearSolverVerbosity,0);
|
||||
SET_SCALAR_PROP(EclFlowProblemSimple, LinearSolverReduction, 1e-2);
|
||||
SET_INT_PROP(EclFlowProblemSimple, LinearSolverMaxIter, 100);
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, UseAmg, true);//probably not used
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, UseCpr, true);
|
||||
template<class TypeTag>
|
||||
struct UseAmg<TypeTag, TTag::EclFlowProblemSimple> { // probably not used
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseCpr<TypeTag, TTag::EclFlowProblemSimple> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
SET_INT_PROP(EclFlowProblemSimple, CprMaxEllIter, 1);
|
||||
SET_INT_PROP(EclFlowProblemSimple, CprEllSolvetype, 3);
|
||||
SET_INT_PROP(EclFlowProblemSimple, CprReuseSetup, 3);
|
||||
@ -66,12 +75,24 @@ namespace Opm {
|
||||
//SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::Linear::SuperLUBackend<TypeTag>)//not work
|
||||
//SET_TAG_PROP(EclFlowProblem, FluidState, Opm::BlackOilFluidState);
|
||||
SET_TYPE_PROP(EclFlowProblemSimple, LinearSolverBackend, Opm::ISTLSolverEbosFlexible<TypeTag>);
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, EnableStorageCache, true);
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, EnableIntensiveQuantityCache, true);
|
||||
template<class TypeTag>
|
||||
struct EnableStorageCache<TypeTag, TTag::EclFlowProblemSimple> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableIntensiveQuantityCache<TypeTag, TTag::EclFlowProblemSimple> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
//SET_INT_PROP(EclFlowProblemSimple, NumWellAdjoint, 1);
|
||||
//SET_BOOL_PROP(EclFlowProblem, EnableStorageCache, true);
|
||||
//SET_BOOL_PROP(EclFlowProblem, EnableIntensiveQuantityCache, true);
|
||||
// template<class TypeTag>
|
||||
// struct EnableStorageCache<TypeTag, TTag::EclFlowProblem> {
|
||||
// static constexpr bool value = true;
|
||||
// };
|
||||
// template<class TypeTag>
|
||||
// struct EnableIntensiveQuantityCache<TypeTag, TTag::EclFlowProblem> {
|
||||
// static constexpr bool value = true;
|
||||
// };
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,10 @@ struct EclFlowBrineProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowBrineProblem, EnableBrine, true);
|
||||
template<class TypeTag>
|
||||
struct EnableBrine<TypeTag, TTag::EclFlowBrineProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
}}
|
||||
|
||||
namespace Opm {
|
||||
|
@ -36,7 +36,10 @@ struct EclFlowEnergyProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowEnergyProblem, EnableEnergy, true);
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::EclFlowEnergyProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
}}
|
||||
|
||||
namespace Opm {
|
||||
|
@ -36,7 +36,10 @@ struct EclFlowFoamProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowFoamProblem, EnableFoam, true);
|
||||
template<class TypeTag>
|
||||
struct EnableFoam<TypeTag, TTag::EclFlowFoamProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
}}
|
||||
|
||||
namespace Opm {
|
||||
|
@ -41,7 +41,10 @@ struct EclFlowOilWaterBrineProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowOilWaterBrineProblem, EnableBrine, true);
|
||||
template<class TypeTag>
|
||||
struct EnableBrine<TypeTag, TTag::EclFlowOilWaterBrineProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
//! The indices required by the model
|
||||
SET_PROP(EclFlowOilWaterBrineProblem, Indices)
|
||||
{
|
||||
|
@ -41,7 +41,10 @@ struct EclFlowOilWaterPolymerProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowOilWaterPolymerProblem, EnablePolymer, true);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EclFlowOilWaterPolymerProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
//! The indices required by the model
|
||||
//! The indices required by the model
|
||||
SET_PROP(EclFlowOilWaterPolymerProblem, Indices)
|
||||
|
@ -41,8 +41,14 @@ struct EclFlowOilWaterPolymerInjectivityProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowOilWaterPolymerInjectivityProblem, EnablePolymer, true);
|
||||
SET_BOOL_PROP(EclFlowOilWaterPolymerInjectivityProblem, EnablePolymerMW, true);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EclFlowOilWaterPolymerInjectivityProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnablePolymerMW<TypeTag, TTag::EclFlowOilWaterPolymerInjectivityProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
//! The indices required by the model
|
||||
// For this case, there will be two primary variables introduced for the polymer
|
||||
// polymer concentration and polymer molecular weight
|
||||
|
@ -36,7 +36,10 @@ struct EclFlowPolymerProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowPolymerProblem, EnablePolymer, true);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EclFlowPolymerProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
}}
|
||||
|
||||
namespace Opm {
|
||||
|
@ -36,7 +36,10 @@ struct EclFlowSolventProblem {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowSolventProblem, EnableSolvent, true);
|
||||
template<class TypeTag>
|
||||
struct EnableSolvent<TypeTag, TTag::EclFlowSolventProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
}}
|
||||
|
||||
namespace Opm {
|
||||
|
@ -29,7 +29,10 @@ struct EclFlowProblemSimple {
|
||||
using InheritsFrom = std::tuple<EclFlowProblem>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(EclFlowProblemSimple, EnableEnergy, true);
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::EclFlowProblemSimple> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
//! The indices required by the model
|
||||
SET_PROP(EclFlowProblemSimple, Indices)
|
||||
{
|
||||
|
@ -78,21 +78,48 @@ struct EclFlowProblem {
|
||||
};
|
||||
}
|
||||
SET_STRING_PROP(EclFlowProblem, OutputDir, "");
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableDebuggingChecks, false);
|
||||
template<class TypeTag>
|
||||
struct EnableDebuggingChecks<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
// default in flow is to formulate the equations in surface volumes
|
||||
SET_BOOL_PROP(EclFlowProblem, BlackoilConserveSurfaceVolume, true);
|
||||
SET_BOOL_PROP(EclFlowProblem, UseVolumetricResidual, false);
|
||||
template<class TypeTag>
|
||||
struct BlackoilConserveSurfaceVolume<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseVolumetricResidual<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
SET_TYPE_PROP(EclFlowProblem, EclAquiferModel, Opm::BlackoilAquiferModel<TypeTag>);
|
||||
|
||||
// disable all extensions supported by black oil model. this should not really be
|
||||
// necessary but it makes things a bit more explicit
|
||||
SET_BOOL_PROP(EclFlowProblem, EnablePolymer, false);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableSolvent, false);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableTemperature, true);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableEnergy, false);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableFoam, false);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableBrine, false);
|
||||
template<class TypeTag>
|
||||
struct EnablePolymer<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableSolvent<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableTemperature<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableEnergy<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableFoam<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableBrine<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
SET_TYPE_PROP(EclFlowProblem, EclWellModel, Opm::BlackoilWellModel<TypeTag>);
|
||||
SET_TAG_PROP(EclFlowProblem, LinearSolverSplice, FlowIstlSolver);
|
||||
|
@ -72,22 +72,46 @@ SET_SCALAR_PROP(FlowModelParameters, ToleranceCnvRelaxed, 1e9);
|
||||
SET_SCALAR_PROP(FlowModelParameters, ToleranceWells, 1e-4);
|
||||
SET_SCALAR_PROP(FlowModelParameters, ToleranceWellControl, 1e-7);
|
||||
SET_INT_PROP(FlowModelParameters, MaxWelleqIter, 30);
|
||||
SET_BOOL_PROP(FlowModelParameters, UseMultisegmentWell, true);
|
||||
template<class TypeTag>
|
||||
struct UseMultisegmentWell<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
SET_SCALAR_PROP(FlowModelParameters, MaxSinglePrecisionDays, 20.0);
|
||||
SET_INT_PROP(FlowModelParameters, MaxStrictIter, 8);
|
||||
SET_BOOL_PROP(FlowModelParameters, SolveWelleqInitially, true);
|
||||
SET_BOOL_PROP(FlowModelParameters, UpdateEquationsScaling, false);
|
||||
SET_BOOL_PROP(FlowModelParameters, UseUpdateStabilization, true);
|
||||
SET_BOOL_PROP(FlowModelParameters, MatrixAddWellContributions, false);
|
||||
template<class TypeTag>
|
||||
struct SolveWelleqInitially<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UpdateEquationsScaling<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseUpdateStabilization<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct MatrixAddWellContributions<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_SCALAR_PROP(FlowModelParameters, TolerancePressureMsWells, 0.01*1e5);
|
||||
SET_SCALAR_PROP(FlowModelParameters, MaxPressureChangeMsWells, 10*1e5);
|
||||
SET_BOOL_PROP(FlowModelParameters, UseInnerIterationsMsWells, true);
|
||||
template<class TypeTag>
|
||||
struct UseInnerIterationsMsWells<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
SET_INT_PROP(FlowModelParameters, MaxInnerIterMsWells, 100);
|
||||
SET_BOOL_PROP(FlowModelParameters, UseInnerIterationsWells, false);
|
||||
template<class TypeTag>
|
||||
struct UseInnerIterationsWells<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_INT_PROP(FlowModelParameters, MaxInnerIterWells, 50);
|
||||
SET_INT_PROP(FlowModelParameters, StrictInnerIterMsWells, 40);
|
||||
SET_SCALAR_PROP(FlowModelParameters, RegularizationFactorMsw, 1);
|
||||
SET_BOOL_PROP(FlowModelParameters, EnableWellOperabilityCheck, true);
|
||||
template<class TypeTag>
|
||||
struct EnableWellOperabilityCheck<TypeTag, TTag::FlowModelParameters> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
SET_SCALAR_PROP(FlowModelParameters, RelaxedFlowTolInnerIterMsw, 1);
|
||||
SET_SCALAR_PROP(FlowModelParameters, RelaxedPressureTolInnerIterMsw, 0.5e5);
|
||||
|
@ -57,7 +57,10 @@ NEW_PROP_TAG(EnableLoggingFalloutWarning);
|
||||
// TODO: enumeration parameters. we use strings for now.
|
||||
SET_STRING_PROP(EclFlowProblem, EnableDryRun, "auto");
|
||||
// Do not merge parallel output files or warn about them
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableLoggingFalloutWarning, false);
|
||||
template<class TypeTag>
|
||||
struct EnableLoggingFalloutWarning<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_INT_PROP(EclFlowProblem, OutputInterval, 1);
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
@ -39,9 +39,18 @@ namespace Opm::Properties {
|
||||
NEW_PROP_TAG(EnableAdaptiveTimeStepping);
|
||||
NEW_PROP_TAG(EnableTuning);
|
||||
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableTerminalOutput, true);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableAdaptiveTimeStepping, true);
|
||||
SET_BOOL_PROP(EclFlowProblem, EnableTuning, false);
|
||||
template<class TypeTag>
|
||||
struct EnableTerminalOutput<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableAdaptiveTimeStepping<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableTuning<TypeTag, TTag::EclFlowProblem> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
@ -80,19 +80,49 @@ SET_INT_PROP(FlowIstlSolverParams, LinearSolverRestart, 40);
|
||||
SET_INT_PROP(FlowIstlSolverParams, FlowLinearSolverVerbosity, 0);
|
||||
SET_INT_PROP(FlowIstlSolverParams, IluFillinLevel, 0);
|
||||
SET_STRING_PROP(FlowIstlSolverParams, MiluVariant, "ILU");
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, IluRedblack, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, IluReorderSpheres, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, UseGmres, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, LinearSolverRequireFullSparsityPattern, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, LinearSolverIgnoreConvergenceFailure, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, UseAmg, false);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, UseCpr, false);
|
||||
template<class TypeTag>
|
||||
struct IluRedblack<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct IluReorderSpheres<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseGmres<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct LinearSolverRequireFullSparsityPattern<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct LinearSolverIgnoreConvergenceFailure<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseAmg<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct UseCpr<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_TYPE_PROP(FlowIstlSolverParams, LinearSolverBackend, Opm::ISTLSolverEbos<TypeTag>);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, PreconditionerAddWellContributions, false);
|
||||
template<class TypeTag>
|
||||
struct PreconditionerAddWellContributions<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_STRING_PROP(FlowIstlSolverParams, SystemStrategy, "none");
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, ScaleLinearSystem, false);
|
||||
template<class TypeTag>
|
||||
struct ScaleLinearSystem<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_INT_PROP(FlowIstlSolverParams, CprSolverVerbose, 0);
|
||||
SET_BOOL_PROP(FlowIstlSolverParams, CprUseDrs, false);
|
||||
template<class TypeTag>
|
||||
struct CprUseDrs<TypeTag, TTag::FlowIstlSolverParams> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_INT_PROP(FlowIstlSolverParams, CprMaxEllIter, 20);
|
||||
SET_INT_PROP(FlowIstlSolverParams, CprEllSolvetype, 0);
|
||||
SET_INT_PROP(FlowIstlSolverParams, CprReuseSetup, 3);
|
||||
|
@ -52,7 +52,10 @@ SET_INT_PROP(FlowTimeSteppingParameters, SolverMaxRestarts, 10);
|
||||
SET_INT_PROP(FlowTimeSteppingParameters, SolverVerbosity, 1);
|
||||
SET_INT_PROP(FlowTimeSteppingParameters, TimeStepVerbosity, 1);
|
||||
SET_SCALAR_PROP(FlowTimeSteppingParameters, InitialTimeStepInDays, 1.0);
|
||||
SET_BOOL_PROP(FlowTimeSteppingParameters, FullTimeStepInitially, false);
|
||||
template<class TypeTag>
|
||||
struct FullTimeStepInitially<TypeTag, TTag::FlowTimeSteppingParameters> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
SET_SCALAR_PROP(FlowTimeSteppingParameters, TimeStepAfterEventInDays, -1.0);
|
||||
SET_STRING_PROP(FlowTimeSteppingParameters, TimeStepControl, "pid");
|
||||
SET_SCALAR_PROP(FlowTimeSteppingParameters, TimeStepControlTolerance, 1e-1);
|
||||
|
@ -82,8 +82,14 @@ struct TestEclOutputTypeTag {
|
||||
using InheritsFrom = std::tuple<EclBaseProblem, BlackOilModel>;
|
||||
};
|
||||
}
|
||||
SET_BOOL_PROP(TestEclOutputTypeTag, EnableGravity, false);
|
||||
SET_BOOL_PROP(TestEclOutputTypeTag, EnableAsyncEclOutput, false);
|
||||
template<class TypeTag>
|
||||
struct EnableGravity<TypeTag, TTag::TestEclOutputTypeTag> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
template<class TypeTag>
|
||||
struct EnableAsyncEclOutput<TypeTag, TTag::TestEclOutputTypeTag> {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
} // namespace Opm::Properties
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user