immisciblemodel.hh File Reference
#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.hh>
#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>
Include dependency graph for immisciblemodel.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

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::VtkWriteSaturations< TypeTag, TTag::ImmiscibleSinglePhaseModel >
 
struct  Opm::Properties::VtkWriteMobilities< TypeTag, TTag::ImmiscibleSinglePhaseModel >
 
struct  Opm::Properties::VtkWriteRelativePermeabilities< 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

namespace  Opm
 
namespace  Opm::Properties
 
namespace  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>; };
Specifies a flux module which uses the Forchheimer relation.
Definition: forchheimerfluxmodule.hh:62

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