changed: remove SET_BOOL_PROP macro usage

This commit is contained in:
Arne Morten Kvarving 2020-08-27 11:38:38 +02:00
parent e8248b44ff
commit 0e71c0e29b
28 changed files with 367 additions and 93 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -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

View File

@ -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;
// };
}
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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)
{

View File

@ -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)

View File

@ -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

View File

@ -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 {

View File

@ -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 {

View File

@ -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)
{

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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