mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
changed: move the PTFlash parameters to Opm::Parameters
This commit is contained in:
parent
6beb557b2a
commit
3a261e15e3
@ -28,17 +28,20 @@
|
|||||||
#ifndef OPM_FLASH_INTENSIVE_QUANTITIES_HH
|
#ifndef OPM_FLASH_INTENSIVE_QUANTITIES_HH
|
||||||
#define OPM_FLASH_INTENSIVE_QUANTITIES_HH
|
#define OPM_FLASH_INTENSIVE_QUANTITIES_HH
|
||||||
|
|
||||||
#include "flashproperties.hh"
|
#include <dune/common/fmatrix.hh>
|
||||||
#include "flashindices.hh"
|
#include <dune/common/fvector.hh>
|
||||||
|
|
||||||
|
#include <opm/material/Constants.hpp>
|
||||||
|
#include <opm/material/common/Valgrind.hpp>
|
||||||
|
#include <opm/material/fluidstates/CompositionalFluidState.hpp>
|
||||||
|
|
||||||
#include <opm/models/common/energymodule.hh>
|
#include <opm/models/common/energymodule.hh>
|
||||||
#include <opm/models/common/diffusionmodule.hh>
|
#include <opm/models/common/diffusionmodule.hh>
|
||||||
|
|
||||||
#include <opm/material/fluidstates/CompositionalFluidState.hpp>
|
#include <opm/models/flash/flashproperties.hh>
|
||||||
#include <opm/material/common/Valgrind.hpp>
|
|
||||||
|
|
||||||
#include <dune/common/fvector.hh>
|
#include <opm/models/ptflash/flashindices.hh>
|
||||||
#include <dune/common/fmatrix.hh>
|
#include <opm/models/ptflash/flashparameters.hh>
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
@ -107,9 +110,9 @@ public:
|
|||||||
const auto& priVars = elemCtx.primaryVars(dofIdx, timeIdx);
|
const auto& priVars = elemCtx.primaryVars(dofIdx, timeIdx);
|
||||||
const auto& problem = elemCtx.problem();
|
const auto& problem = elemCtx.problem();
|
||||||
|
|
||||||
const Scalar flashTolerance = Parameters::get<TypeTag, Properties::FlashTolerance>();
|
const Scalar flashTolerance = Parameters::get<TypeTag, Parameters::FlashTolerance>();
|
||||||
const int flashVerbosity = Parameters::get<TypeTag, Properties::FlashVerbosity>();
|
const int flashVerbosity = Parameters::get<TypeTag, Parameters::FlashVerbosity>();
|
||||||
const std::string flashTwoPhaseMethod = Parameters::get<TypeTag, Properties::FlashTwoPhaseMethod>();
|
const std::string flashTwoPhaseMethod = Parameters::get<TypeTag, Parameters::FlashTwoPhaseMethod>();
|
||||||
|
|
||||||
// extract the total molar densities of the components
|
// extract the total molar densities of the components
|
||||||
ComponentVector z(0.);
|
ComponentVector z(0.);
|
||||||
|
@ -28,34 +28,41 @@
|
|||||||
#ifndef OPM_PTFLASH_MODEL_HH
|
#ifndef OPM_PTFLASH_MODEL_HH
|
||||||
#define OPM_PTFLASH_MODEL_HH
|
#define OPM_PTFLASH_MODEL_HH
|
||||||
|
|
||||||
|
#include <opm/material/constraintsolvers/PTFlash.hpp>
|
||||||
|
|
||||||
#include <opm/material/densead/Math.hpp>
|
#include <opm/material/densead/Math.hpp>
|
||||||
|
|
||||||
#include "flashproperties.hh"
|
#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
|
||||||
#include "flashprimaryvariables.hh"
|
#include <opm/material/fluidmatrixinteractions/NullMaterial.hpp>
|
||||||
#include "flashlocalresidual.hh"
|
|
||||||
#include <opm/models/flash/flashratevector.hh>
|
|
||||||
#include <opm/models/flash/flashboundaryratevector.hh>
|
|
||||||
#include "flashintensivequantities.hh"
|
|
||||||
#include <opm/models/flash/flashextensivequantities.hh>
|
|
||||||
#include "flashindices.hh"
|
|
||||||
#include "flashnewtonmethod.hh"
|
|
||||||
|
|
||||||
#include <opm/models/common/multiphasebasemodel.hh>
|
#include <opm/models/common/multiphasebasemodel.hh>
|
||||||
#include <opm/models/common/energymodule.hh>
|
#include <opm/models/common/energymodule.hh>
|
||||||
|
|
||||||
|
#include <opm/models/flash/flashratevector.hh>
|
||||||
|
#include <opm/models/flash/flashboundaryratevector.hh>
|
||||||
|
#include <opm/models/flash/flashextensivequantities.hh>
|
||||||
|
#include <opm/models/flash/flashproperties.hh>
|
||||||
|
|
||||||
#include <opm/models/io/vtkcompositionmodule.hh>
|
#include <opm/models/io/vtkcompositionmodule.hh>
|
||||||
#include <opm/models/io/vtkenergymodule.hh>
|
|
||||||
#include <opm/models/io/vtkdiffusionmodule.hh>
|
#include <opm/models/io/vtkdiffusionmodule.hh>
|
||||||
|
#include <opm/models/io/vtkenergymodule.hh>
|
||||||
#include <opm/models/io/vtkptflashmodule.hh>
|
#include <opm/models/io/vtkptflashmodule.hh>
|
||||||
#include <opm/material/fluidmatrixinteractions/NullMaterial.hpp>
|
|
||||||
#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
|
#include <opm/models/ptflash/flashindices.hh>
|
||||||
#include <opm/material/constraintsolvers/PTFlash.hpp>
|
#include <opm/models/ptflash/flashintensivequantities.hh>
|
||||||
|
#include <opm/models/ptflash/flashlocalresidual.hh>
|
||||||
|
#include <opm/models/ptflash/flashnewtonmethod.hh>
|
||||||
|
#include <opm/models/ptflash/flashparameters.hh>
|
||||||
|
#include <opm/models/ptflash/flashprimaryvariables.hh>
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
|
||||||
template <class TypeTag>
|
template <class TypeTag>
|
||||||
class FlashModel;
|
class FlashModel;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Opm::Properties {
|
namespace Opm::Properties {
|
||||||
@ -71,69 +78,66 @@ struct FlashModel { using InheritsFrom = std::tuple<VtkDiffusion,
|
|||||||
|
|
||||||
//! Use the FlashLocalResidual function for the flash model
|
//! Use the FlashLocalResidual function for the flash model
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct LocalResidual<TypeTag, TTag::FlashModel> { using type = Opm::FlashLocalResidual<TypeTag>; };
|
struct LocalResidual<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashLocalResidual<TypeTag>; };
|
||||||
|
|
||||||
//! Use the PT flash specific newton method for the flash model
|
//! Use the PT flash specific newton method for the flash model
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct NewtonMethod<TypeTag, TTag::FlashModel> { using type = Opm::FlashNewtonMethod<TypeTag>; };
|
struct NewtonMethod<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashNewtonMethod<TypeTag>; };
|
||||||
|
|
||||||
//! Use the Pt flash solver by default
|
//! Use the Pt flash solver by default
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct FlashSolver<TypeTag, TTag::FlashModel>
|
struct FlashSolver<TypeTag, TTag::FlashModel>
|
||||||
{ using type = Opm::PTFlash<GetPropType<TypeTag, Properties::Scalar>,
|
|
||||||
GetPropType<TypeTag, Properties::FluidSystem>>; };
|
|
||||||
|
|
||||||
//! Let the flash solver choose its tolerance by default
|
|
||||||
template<class TypeTag>
|
|
||||||
struct FlashTolerance<TypeTag, TTag::FlashModel>
|
|
||||||
{
|
{
|
||||||
using type = GetPropType<TypeTag, Scalar>;
|
using type = Opm::PTFlash<GetPropType<TypeTag, Properties::Scalar>,
|
||||||
static constexpr type value = 1.e-12;
|
GetPropType<TypeTag, Properties::FluidSystem>>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Flash solver verbosity
|
|
||||||
template<class TypeTag>
|
|
||||||
struct FlashVerbosity<TypeTag, TTag::FlashModel> { static constexpr int value = 0; };
|
|
||||||
|
|
||||||
// Flash two-phase method
|
|
||||||
template<class TypeTag>
|
|
||||||
struct FlashTwoPhaseMethod<TypeTag, TTag::FlashModel> { static constexpr auto value = "ssi"; };
|
|
||||||
|
|
||||||
//! the Model property
|
//! the Model property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Model<TypeTag, TTag::FlashModel> { using type = Opm::FlashModel<TypeTag>; };
|
struct Model<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashModel<TypeTag>; };
|
||||||
|
|
||||||
//! the PrimaryVariables property
|
//! the PrimaryVariables property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct PrimaryVariables<TypeTag, TTag::FlashModel> { using type = Opm::FlashPrimaryVariables<TypeTag>; };
|
struct PrimaryVariables<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashPrimaryVariables<TypeTag>; };
|
||||||
|
|
||||||
//! the RateVector property
|
//! the RateVector property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct RateVector<TypeTag, TTag::FlashModel> { using type = Opm::FlashRateVector<TypeTag>; };
|
struct RateVector<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashRateVector<TypeTag>; };
|
||||||
|
|
||||||
//! the BoundaryRateVector property
|
//! the BoundaryRateVector property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct BoundaryRateVector<TypeTag, TTag::FlashModel> { using type = Opm::FlashBoundaryRateVector<TypeTag>; };
|
struct BoundaryRateVector<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashBoundaryRateVector<TypeTag>; };
|
||||||
|
|
||||||
//! the IntensiveQuantities property
|
//! the IntensiveQuantities property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct IntensiveQuantities<TypeTag, TTag::FlashModel> { using type = Opm::FlashIntensiveQuantities<TypeTag>; };
|
struct IntensiveQuantities<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashIntensiveQuantities<TypeTag>; };
|
||||||
|
|
||||||
//! the ExtensiveQuantities property
|
//! the ExtensiveQuantities property
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct ExtensiveQuantities<TypeTag, TTag::FlashModel> { using type = Opm::FlashExtensiveQuantities<TypeTag>; };
|
struct ExtensiveQuantities<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashExtensiveQuantities<TypeTag>; };
|
||||||
|
|
||||||
//! The indices required by the flash-baseed isothermal compositional model
|
//! The indices required by the flash-baseed isothermal compositional model
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct Indices<TypeTag, TTag::FlashModel> { using type = Opm::FlashIndices<TypeTag, /*PVIdx=*/0>; };
|
struct Indices<TypeTag, TTag::FlashModel>
|
||||||
|
{ using type = Opm::FlashIndices<TypeTag, /*PVIdx=*/0>; };
|
||||||
|
|
||||||
// disable molecular diffusion by default
|
// disable molecular diffusion by default
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableDiffusion<TypeTag, TTag::FlashModel> { static constexpr bool value = false; };
|
struct EnableDiffusion<TypeTag, TTag::FlashModel>
|
||||||
|
{ static constexpr bool value = false; };
|
||||||
|
|
||||||
//! Disable the energy equation by default
|
//! Disable the energy equation by default
|
||||||
template<class TypeTag>
|
template<class TypeTag>
|
||||||
struct EnableEnergy<TypeTag, TTag::FlashModel> { static constexpr bool value = false; };
|
struct EnableEnergy<TypeTag, TTag::FlashModel>
|
||||||
|
{ static constexpr bool value = false; };
|
||||||
|
|
||||||
} // namespace Opm::Properties
|
} // namespace Opm::Properties
|
||||||
|
|
||||||
@ -152,6 +156,24 @@ template<class TypeTag>
|
|||||||
struct EnableThermodynamicHints<TypeTag, Properties::TTag::FlashModel>
|
struct EnableThermodynamicHints<TypeTag, Properties::TTag::FlashModel>
|
||||||
{ static constexpr bool value = true; };
|
{ static constexpr bool value = true; };
|
||||||
|
|
||||||
|
//! Let the flash solver choose its tolerance by default
|
||||||
|
template<class TypeTag>
|
||||||
|
struct FlashTolerance<TypeTag, Properties::TTag::FlashModel>
|
||||||
|
{
|
||||||
|
using type = GetPropType<TypeTag, Properties::Scalar>;
|
||||||
|
static constexpr type value = 1.e-12;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Flash two-phase method
|
||||||
|
template<class TypeTag>
|
||||||
|
struct FlashTwoPhaseMethod<TypeTag, Properties::TTag::FlashModel>
|
||||||
|
{ static constexpr auto value = "ssi"; };
|
||||||
|
|
||||||
|
// Flash solver verbosity
|
||||||
|
template<class TypeTag>
|
||||||
|
struct FlashVerbosity<TypeTag, Properties::TTag::FlashModel>
|
||||||
|
{ static constexpr int value = 0; };
|
||||||
|
|
||||||
} // namespace Opm::Parameters
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
@ -239,12 +261,12 @@ public:
|
|||||||
if (enableEnergy)
|
if (enableEnergy)
|
||||||
Opm::VtkEnergyModule<TypeTag>::registerParameters();
|
Opm::VtkEnergyModule<TypeTag>::registerParameters();
|
||||||
|
|
||||||
Parameters::registerParam<TypeTag, Properties::FlashTolerance>
|
Parameters::registerParam<TypeTag, Parameters::FlashTolerance>
|
||||||
("The maximum tolerance for the flash solver to "
|
("The maximum tolerance for the flash solver to "
|
||||||
"consider the solution converged");
|
"consider the solution converged");
|
||||||
Parameters::registerParam<TypeTag, Properties::FlashVerbosity>
|
Parameters::registerParam<TypeTag, Parameters::FlashVerbosity>
|
||||||
("Flash solver verbosity level");
|
("Flash solver verbosity level");
|
||||||
Parameters::registerParam<TypeTag, Properties::FlashTwoPhaseMethod>
|
Parameters::registerParam<TypeTag, Parameters::FlashTwoPhaseMethod>
|
||||||
("Method for solving vapor-liquid composition. Available options include: "
|
("Method for solving vapor-liquid composition. Available options include: "
|
||||||
"ssi, newton, ssi+newton");
|
"ssi, newton, ssi+newton");
|
||||||
}
|
}
|
||||||
|
@ -24,32 +24,26 @@
|
|||||||
* \file
|
* \file
|
||||||
* \ingroup FlashModel
|
* \ingroup FlashModel
|
||||||
*
|
*
|
||||||
* \brief Declares the properties required by the compositional
|
* \brief Declares the parameters for the compositional
|
||||||
* multi-phase model based on flash calculations.
|
* multi-phase model based on flash calculations.
|
||||||
*/
|
*/
|
||||||
#ifndef OPM_PTFLASH_PROPERTIES_HH
|
#ifndef EWOMS_PTFLASH_PARAMETERS_HH
|
||||||
#define OPM_PTFLASH_PROPERTIES_HH
|
#define EWOMS_PTFLASH_PARAMETERS_HH
|
||||||
|
|
||||||
#include <opm/models/common/multiphasebaseproperties.hh>
|
#include <opm/models/flash/flashparameters.hh>
|
||||||
#include <opm/models/io/vtkcompositionmodule.hh>
|
|
||||||
#include <opm/models/io/vtkenergymodule.hh>
|
|
||||||
#include <opm/models/io/vtkdiffusionmodule.hh>
|
|
||||||
|
|
||||||
namespace Opm::Properties {
|
#include <opm/models/utils/propertysystem.hh>
|
||||||
|
|
||||||
|
namespace Opm::Parameters {
|
||||||
|
|
||||||
//! The type of the flash constraint solver
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct FlashSolver { using type = UndefinedProperty; };
|
|
||||||
//! The maximum accepted error of the flash solver
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct FlashTolerance { using type = UndefinedProperty; };
|
|
||||||
//! The verbosity level of the flash solver
|
|
||||||
template<class TypeTag, class MyTypeTag>
|
|
||||||
struct FlashVerbosity { using type = UndefinedProperty; };
|
|
||||||
//! Two-phase flash method
|
//! Two-phase flash method
|
||||||
template<class TypeTag, class MyTypeTag>
|
template<class TypeTag, class MyTypeTag>
|
||||||
struct FlashTwoPhaseMethod { using type = UndefinedProperty; };
|
struct FlashTwoPhaseMethod { using type = Properties::UndefinedProperty; };
|
||||||
|
|
||||||
} // namespace Opm::Properties
|
//! The verbosity level of the flash solver
|
||||||
|
template<class TypeTag, class MyTypeTag>
|
||||||
|
struct FlashVerbosity { using type = Properties::UndefinedProperty; };
|
||||||
|
|
||||||
|
} // namespace Opm::Parameters
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue
Block a user