opm-simulators
immisciblemodel.hh File Reference


A fully-implicit multi-phase flow model which assumes immiscibility of the phases. More...

#include <opm/material/densead/Math.hpp>
#include "immiscibleproperties.hh"
#include "immiscibleindices.hh"
#include "immiscibleextensivequantities.hh"
#include "immiscibleprimaryvariables.hh"
#include "immiscibleintensivequantities.hh"
#include "immiscibleratevector.hh"
#include "immiscibleboundaryratevector.hh"
#include "immisciblelocalresidual.hh"
#include <opm/models/common/multiphasebasemodel.hh>
#include <opm/models/common/energymodule.hh>
#include <opm/models/io/vtkenergymodule.hpp>
#include <opm/material/components/NullComponent.hpp>
#include <opm/material/fluidsystems/GasPhase.hpp>
#include <opm/material/fluidsystems/LiquidPhase.hpp>
#include <opm/material/fluidsystems/SinglePhaseFluidSystem.hpp>
#include <opm/material/fluidsystems/TwoPhaseImmiscibleFluidSystem.hpp>
#include <sstream>
#include <string>

Go to the source code of this file.

Classes

class  Opm::ImmiscibleModel< TypeTag >
 
A fully-implicit multi-phase flow model which assumes immiscibility of the phases. More...
 
struct  Opm::Properties::TTag::ImmiscibleModel
 The generic type tag for problems using the immiscible multi-phase model. More...
 
struct  Opm::Properties::TTag::ImmiscibleSinglePhaseModel
 The type tag for single-phase immiscible problems. More...
 
struct  Opm::Properties::TTag::ImmiscibleTwoPhaseModel
 The type tag for two-phase immiscible problems. More...
 
struct  Opm::Properties::LocalResidual< TypeTag, TTag::ImmiscibleModel >
 Use the immiscible multi-phase local jacobian operator for the immiscible multi-phase model. More...
 
struct  Opm::Properties::Model< TypeTag, TTag::ImmiscibleModel >
 the Model property More...
 
struct  Opm::Properties::RateVector< TypeTag, TTag::ImmiscibleModel >
 the RateVector property More...
 
struct  Opm::Properties::BoundaryRateVector< TypeTag, TTag::ImmiscibleModel >
 the BoundaryRateVector property More...
 
struct  Opm::Properties::PrimaryVariables< TypeTag, TTag::ImmiscibleModel >
 the PrimaryVariables property More...
 
struct  Opm::Properties::IntensiveQuantities< TypeTag, TTag::ImmiscibleModel >
 the IntensiveQuantities property More...
 
struct  Opm::Properties::ExtensiveQuantities< TypeTag, TTag::ImmiscibleModel >
 the ExtensiveQuantities property More...
 
struct  Opm::Properties::Indices< TypeTag, TTag::ImmiscibleModel >
 The indices required by the isothermal immiscible multi-phase model. More...
 
struct  Opm::Properties::EnableEnergy< TypeTag, TTag::ImmiscibleModel >
 Disable the energy equation by default. More...
 
struct  Opm::Properties::FluidSystem< TypeTag, TTag::ImmiscibleSinglePhaseModel >
 The fluid system to use by default. More...
 
struct  Opm::Properties::Fluid< TypeTag, TTag::ImmiscibleSinglePhaseModel >
 
struct  Opm::Properties::WettingPhase< TypeTag, TTag::ImmiscibleTwoPhaseModel >
 
struct  Opm::Properties::NonwettingPhase< TypeTag, TTag::ImmiscibleTwoPhaseModel >
 
struct  Opm::Properties::FluidSystem< TypeTag, TTag::ImmiscibleTwoPhaseModel >
 
class  Opm::ImmiscibleModel< TypeTag >
 
A fully-implicit multi-phase flow model which assumes immiscibility of the phases. More...
 

Namespaces

 Opm
 Structs needed for tpfalinearizer and its gpuparams struct extracted to be defined in one place that both can include.
 
 Opm::Properties::TTag
 The generic type tag for problems using the immiscible multi-phase model.
 

Detailed Description


A fully-implicit multi-phase flow model which assumes immiscibility of the phases.

This model implements multi-phase flow of $M > 0$ immiscible fluids $\alpha$. By default, the standard multi-phase Darcy approach is used to determine the velocity, i.e.

\[ \mathbf{v}_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \mathbf{K}\left(\mathbf{grad}\, p_\alpha - \varrho_{\alpha} \mathbf{g} \right) \;, \]

although the actual approach which is used can be specified via the FluxModule property. For example, the velocity model can by changed to the Forchheimer approach by

template<class TypeTag>
struct FluxModule<TypeTag, TTag::MyProblemTypeTag> { using type = Opm::ForchheimerFluxModule<TypeTag>; };

The core of the model is the conservation mass of each component by means of the equation

\[ \frac{\partial\;\phi S_\alpha \rho_\alpha }{\partial t} - \mathrm{div} \left\{ \rho_\alpha \mathbf{v}_\alpha \right\} - q_\alpha = 0 \;. \]

The model uses the following primary variables:

  • The pressure $p_0$ in Pascal of the phase with the lowest index
  • The saturations $S_\alpha$ of the $M - 1$ phases that exhibit the lowest indices
  • The absolute temperature $T$ in Kelvin if energy is conserved via the energy equation