FlowMain: move hiding of parameters to utility function in FlowUtils

This commit is contained in:
Arne Morten Kvarving 2024-08-15 09:10:22 +02:00
parent b902f83fa6
commit 9a9d4e0974
3 changed files with 110 additions and 79 deletions

View File

@ -103,91 +103,18 @@ namespace Opm {
// register the base parameters
registerAllParameters_<TypeTag>(/*finalizeRegistration=*/false);
// hide the parameters unused by flow. TODO: this is a pain to maintain
Parameters::Hide<Parameters::EnableGravity>();
Parameters::Hide<Parameters::EnableGridAdaptation>();
// this parameter is actually used in eWoms, but the flow well model
// hard-codes the assumption that the intensive quantities cache is enabled,
// so flow crashes. Let's hide the parameter for that reason.
Parameters::Hide<Parameters::EnableIntensiveQuantityCache>();
// thermodynamic hints are not implemented/required by the eWoms blackoil
// model
Parameters::Hide<Parameters::EnableThermodynamicHints>();
// in flow only the deck file determines the end time of the simulation
Parameters::Hide<Parameters::EndTime<Scalar>>();
// time stepping is not done by the eWoms code in flow
Parameters::Hide<Parameters::InitialTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::MaxTimeStepDivisions>();
Parameters::Hide<Parameters::MaxTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::MinTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::PredeterminedTimeStepsFile>();
// flow also does not use the eWoms Newton method
Parameters::Hide<Parameters::NewtonMaxError<Scalar>>();
Parameters::Hide<Parameters::NewtonTolerance<Scalar>>();
Parameters::Hide<Parameters::NewtonTargetIterations>();
Parameters::Hide<Parameters::NewtonVerbose>();
Parameters::Hide<Parameters::NewtonWriteConvergence>();
// the default eWoms checkpoint/restart mechanism does not work with flow
Parameters::Hide<Parameters::RestartTime<Scalar>>();
Parameters::Hide<Parameters::RestartWritingInterval>();
// hide all vtk related it is not currently possible to do this dependet on if the vtk writing is used
//if(not(Parameters::Get<Parameters::EnableVtkOutput>())){
Parameters::Hide<Parameters::VtkWriteOilFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteOilSaturationPressure>();
Parameters::Hide<Parameters::VtkWriteOilVaporizationFactor>();
Parameters::Hide<Parameters::VtkWritePorosity>();
Parameters::Hide<Parameters::VtkWritePotentialGradients>();
Parameters::Hide<Parameters::VtkWritePressures>();
Parameters::Hide<Parameters::VtkWritePrimaryVars>();
Parameters::Hide<Parameters::VtkWritePrimaryVarsMeaning>();
Parameters::Hide<Parameters::VtkWriteProcessRank>();
Parameters::Hide<Parameters::VtkWriteRelativePermeabilities>();
Parameters::Hide<Parameters::VtkWriteSaturatedGasOilVaporizationFactor>();
Parameters::Hide<Parameters::VtkWriteSaturatedOilGasDissolutionFactor>();
Parameters::Hide<Parameters::VtkWriteSaturationRatios>();
Parameters::Hide<Parameters::VtkWriteSaturations>();
Parameters::Hide<Parameters::VtkWriteTemperature>();
Parameters::Hide<Parameters::VtkWriteViscosities>();
Parameters::Hide<Parameters::VtkWriteWaterFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteGasDissolutionFactor>();
Parameters::Hide<Parameters::VtkWriteGasFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteGasSaturationPressure>();
Parameters::Hide<Parameters::VtkWriteIntrinsicPermeabilities>();
Parameters::Hide<Parameters::VtkWriteTracerConcentration>();
Parameters::Hide<Parameters::VtkWriteExtrusionFactor>();
Parameters::Hide<Parameters::VtkWriteFilterVelocities>();
Parameters::Hide<Parameters::VtkWriteDensities>();
Parameters::Hide<Parameters::VtkWriteDofIndex>();
Parameters::Hide<Parameters::VtkWriteMobilities>();
//}
Parameters::Hide<Parameters::VtkWriteAverageMolarMasses>();
Parameters::Hide<Parameters::VtkWriteFugacities>();
Parameters::Hide<Parameters::VtkWriteFugacityCoeffs>();
Parameters::Hide<Parameters::VtkWriteMassFractions>();
Parameters::Hide<Parameters::VtkWriteMolarities>();
Parameters::Hide<Parameters::VtkWriteMoleFractions>();
Parameters::Hide<Parameters::VtkWriteTotalMassFractions>();
Parameters::Hide<Parameters::VtkWriteTotalMoleFractions>();
Parameters::Hide<Parameters::VtkWriteTortuosities>();
Parameters::Hide<Parameters::VtkWriteDiffusionCoefficients>();
Parameters::Hide<Parameters::VtkWriteEffectiveDiffusionCoefficients>();
// hide average density option
Parameters::Hide<Parameters::UseAverageDensityMsWells>();
detail::hideUnusedParameters<Scalar>();
Parameters::endRegistration();
int mpiRank = comm.rank();
// read in the command line parameters
int status = ::Opm::setupParameters_<TypeTag>(argc, const_cast<const char**>(argv), /*doRegistration=*/false, /*allowUnused=*/true, /*handleHelp=*/(mpiRank==0));
int status = ::Opm::setupParameters_<TypeTag>(argc,
const_cast<const char**>(argv),
/*doRegistration=*/false,
/*allowUnused=*/true,
/*handleHelp=*/(mpiRank==0));
if (status == 0) {
// deal with unknown parameters.

View File

@ -20,12 +20,27 @@
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#include "opm/simulators/flow/BlackoilModelParameters.hpp"
#include "opm/simulators/flow/FlowProblemParameters.hpp"
#include "opm/simulators/flow/VtkTracerModule.hpp"
#include <config.h>
#include <opm/simulators/flow/FlowUtils.hpp>
#include <opm/common/OpmLog/OpmLog.hpp>
#include <opm/common/utility/String.hpp>
#include <opm/models/common/multiphasebaseparameters.hh>
#include <opm/models/discretization/common/fvbaseparameters.hh>
#include <opm/models/io/vtkblackoilmodule.hh>
#include <opm/models/io/vtkcompositionmodule.hh>
#include <opm/models/io/vtkdiffusionmodule.hh>
#include <opm/models/io/vtkmultiphasemodule.hh>
#include <opm/models/io/vtkprimaryvarsmodule.hh>
#include <opm/models/io/vtktemperaturemodule.hh>
#include <opm/models/nonlinear/newtonmethodparameters.hh>
#include <opm/models/utils/basicparameters.hh>
#include <opm/models/utils/parametersystem.hh>
#include <opm/simulators/flow/ConvergenceOutputConfiguration.hpp>
#include <opm/simulators/timestepping/SimulatorReport.hpp>
#include <opm/simulators/utils/ParallelFileMerger.hpp>
@ -164,4 +179,89 @@ void checkAllMPIProcesses()
#endif
}
template<class Scalar>
void hideUnusedParameters()
{
// hide the parameters unused by flow. TODO: this is a pain to maintain
Parameters::Hide<Parameters::EnableGravity>();
Parameters::Hide<Parameters::EnableGridAdaptation>();
// this parameter is actually used in eWoms, but the flow well model
// hard-codes the assumption that the intensive quantities cache is enabled,
// so flow crashes. Let's hide the parameter for that reason.
Parameters::Hide<Parameters::EnableIntensiveQuantityCache>();
// thermodynamic hints are not implemented/required by the eWoms blackoil
// model
Parameters::Hide<Parameters::EnableThermodynamicHints>();
// in flow only the deck file determines the end time of the simulation
Parameters::Hide<Parameters::EndTime<Scalar>>();
// time stepping is not done by the eWoms code in flow
Parameters::Hide<Parameters::InitialTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::MaxTimeStepDivisions>();
Parameters::Hide<Parameters::MaxTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::MinTimeStepSize<Scalar>>();
Parameters::Hide<Parameters::PredeterminedTimeStepsFile>();
// flow also does not use the eWoms Newton method
Parameters::Hide<Parameters::NewtonMaxError<Scalar>>();
Parameters::Hide<Parameters::NewtonTolerance<Scalar>>();
Parameters::Hide<Parameters::NewtonTargetIterations>();
Parameters::Hide<Parameters::NewtonVerbose>();
Parameters::Hide<Parameters::NewtonWriteConvergence>();
// the default eWoms checkpoint/restart mechanism does not work with flow
Parameters::Hide<Parameters::RestartTime<Scalar>>();
Parameters::Hide<Parameters::RestartWritingInterval>();
// hide all vtk related it is not currently possible to do this dependet on if the vtk writing is used
//if(not(Parameters::Get<Parameters::EnableVtkOutput>())){
Parameters::Hide<Parameters::VtkWriteOilFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteOilSaturationPressure>();
Parameters::Hide<Parameters::VtkWriteOilVaporizationFactor>();
Parameters::Hide<Parameters::VtkWritePorosity>();
Parameters::Hide<Parameters::VtkWritePotentialGradients>();
Parameters::Hide<Parameters::VtkWritePressures>();
Parameters::Hide<Parameters::VtkWritePrimaryVars>();
Parameters::Hide<Parameters::VtkWritePrimaryVarsMeaning>();
Parameters::Hide<Parameters::VtkWriteProcessRank>();
Parameters::Hide<Parameters::VtkWriteRelativePermeabilities>();
Parameters::Hide<Parameters::VtkWriteSaturatedGasOilVaporizationFactor>();
Parameters::Hide<Parameters::VtkWriteSaturatedOilGasDissolutionFactor>();
Parameters::Hide<Parameters::VtkWriteSaturationRatios>();
Parameters::Hide<Parameters::VtkWriteSaturations>();
Parameters::Hide<Parameters::VtkWriteTemperature>();
Parameters::Hide<Parameters::VtkWriteViscosities>();
Parameters::Hide<Parameters::VtkWriteWaterFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteGasDissolutionFactor>();
Parameters::Hide<Parameters::VtkWriteGasFormationVolumeFactor>();
Parameters::Hide<Parameters::VtkWriteGasSaturationPressure>();
Parameters::Hide<Parameters::VtkWriteIntrinsicPermeabilities>();
Parameters::Hide<Parameters::VtkWriteTracerConcentration>();
Parameters::Hide<Parameters::VtkWriteExtrusionFactor>();
Parameters::Hide<Parameters::VtkWriteFilterVelocities>();
Parameters::Hide<Parameters::VtkWriteDensities>();
Parameters::Hide<Parameters::VtkWriteDofIndex>();
Parameters::Hide<Parameters::VtkWriteMobilities>();
//}
Parameters::Hide<Parameters::VtkWriteAverageMolarMasses>();
Parameters::Hide<Parameters::VtkWriteFugacities>();
Parameters::Hide<Parameters::VtkWriteFugacityCoeffs>();
Parameters::Hide<Parameters::VtkWriteMassFractions>();
Parameters::Hide<Parameters::VtkWriteMolarities>();
Parameters::Hide<Parameters::VtkWriteMoleFractions>();
Parameters::Hide<Parameters::VtkWriteTotalMassFractions>();
Parameters::Hide<Parameters::VtkWriteTotalMoleFractions>();
Parameters::Hide<Parameters::VtkWriteTortuosities>();
Parameters::Hide<Parameters::VtkWriteDiffusionCoefficients>();
Parameters::Hide<Parameters::VtkWriteEffectiveDiffusionCoefficients>();
// hide average density option
Parameters::Hide<Parameters::UseAverageDensityMsWells>();
}
template void hideUnusedParameters<double>();
} // namespace Opm::detail

View File

@ -40,6 +40,10 @@ void handleExtraConvergenceOutput(SimulatorReport& report,
std::string_view output_dir,
std::string_view base_name);
//! \brief Hides unused runtime parameters.
template<class Scalar>
void hideUnusedParameters();
} // namespace Opm::detail
#endif // OPM_FLOW_UTILS_HEADER_INCLUDED