Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dumux-repositories
dumux
Commits
8eccfda9
Commit
8eccfda9
authored
Dec 15, 2017
by
Timo Koch
Browse files
[2p2c] Move properties to model.hh
parent
d94befad
Changes
4
Hide whitespace changes
Inline
Side-by-side
dumux/porousmediumflow/2p2c/implicit/CMakeLists.txt
View file @
8eccfda9
#install headers
install
(
FILES
fluxvariables.hh
indices.hh
localresidual.hh
model.hh
newtoncontroller.hh
properties.hh
propertydefaults.hh
primaryvariableswitch.hh
volumevariables.hh
vtkoutputfields.hh
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
/dumux/porousmediumflow/2p2c/implicit
)
dumux/porousmediumflow/2p2c/implicit/model.hh
View file @
8eccfda9
...
...
@@ -77,6 +77,156 @@
#ifndef DUMUX_2P2C_MODEL_HH
#define DUMUX_2P2C_MODEL_HH
#include
"properties.hh"
// property forward declarations
#include
<dumux/common/properties.hh>
#include
<dumux/porousmediumflow/properties.hh>
#include
<dumux/porousmediumflow/nonisothermal/implicit/model.hh>
#include
<dumux/material/spatialparams/implicit.hh>
#include
<dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh>
#include
<dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh>
#include
<dumux/porousmediumflow/compositional/localresidual.hh>
#include
<dumux/porousmediumflow/compositional/switchableprimaryvariables.hh>
#include
<dumux/porousmediumflow/compositional/privarswitchnewtoncontroller.hh>
#include
"indices.hh"
#include
"volumevariables.hh"
#include
"primaryvariableswitch.hh"
#include
"vtkoutputfields.hh"
namespace
Dumux
{
namespace
Properties
{
//////////////////////////////////////////////////////////////////
// Type tags
//////////////////////////////////////////////////////////////////
NEW_TYPE_TAG
(
TwoPTwoC
,
INHERITS_FROM
(
PorousMediumFlow
));
NEW_TYPE_TAG
(
TwoPTwoCNI
,
INHERITS_FROM
(
TwoPTwoC
,
NonIsothermal
));
//////////////////////////////////////////////////////////////////
// Property values
//////////////////////////////////////////////////////////////////
//! Set the number of equations to 2
SET_INT_PROP
(
TwoPTwoC
,
NumEq
,
2
);
/*!
* \brief Set the property for the number of components.
*
* We just forward the number from the fluid system and use a static
* assert to make sure it is 2.
*/
SET_PROP
(
TwoPTwoC
,
NumComponents
)
{
static
constexpr
int
value
=
2
;
static_assert
(
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
)
::
numComponents
==
value
,
"Only fluid systems with 2 components are supported by the 2p-2c model!"
);
};
/*!
* \brief Set the property for the number of fluid phases.
*
* We just forward the number from the fluid system and use a static
* assert to make sure it is 2.
*/
SET_PROP
(
TwoPTwoC
,
NumPhases
)
{
static
constexpr
int
value
=
2
;
static_assert
(
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
)
::
numPhases
==
value
,
"Only fluid systems with 2 phases are supported by the 2p-2c model!"
);
};
//! Set the vtk output fields specific to the TwoPTwoC model
SET_TYPE_PROP
(
TwoPTwoC
,
VtkOutputFields
,
TwoPTwoCVtkOutputFields
<
TypeTag
>
);
/*!
* \brief The fluid state which is used by the volume variables to
* store the thermodynamic state. This should be chosen
* appropriately for the model ((non-)isothermal, equilibrium, ...).
* This can be done in the problem.
*/
SET_PROP
(
TwoPTwoC
,
FluidState
)
{
private:
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
public:
using
type
=
CompositionalFluidState
<
Scalar
,
FluidSystem
>
;
};
//! Set the default formulation to pw-sn
SET_INT_PROP
(
TwoPTwoC
,
Formulation
,
TwoPTwoCFormulation
::
pwsn
);
//! Set as default that no component mass balance is replaced by the total mass balance
SET_INT_PROP
(
TwoPTwoC
,
ReplaceCompEqIdx
,
GET_PROP_VALUE
(
TypeTag
,
NumComponents
));
//! Use the compositional local residual operator
SET_TYPE_PROP
(
TwoPTwoC
,
LocalResidual
,
CompositionalLocalResidual
<
TypeTag
>
);
//! Enable advection
SET_BOOL_PROP
(
TwoPTwoC
,
EnableAdvection
,
true
);
//! Enable molecular diffusion
SET_BOOL_PROP
(
TwoPTwoC
,
EnableMolecularDiffusion
,
true
);
//! Isothermal model by default
SET_BOOL_PROP
(
TwoPTwoC
,
EnableEnergyBalance
,
false
);
//! The primary variable switch for the 2p2c model
SET_TYPE_PROP
(
TwoPTwoC
,
PrimaryVariableSwitch
,
TwoPTwoCPrimaryVariableSwitch
<
TypeTag
>
);
//! The primary variables vector for the 2p2c model
SET_TYPE_PROP
(
TwoPTwoC
,
PrimaryVariables
,
SwitchablePrimaryVariables
<
TypeTag
,
int
>
);
//! Use the 2p2c VolumeVariables
SET_TYPE_PROP
(
TwoPTwoC
,
VolumeVariables
,
TwoPTwoCVolumeVariables
<
TypeTag
>
);
//! Set the indices required by the isothermal 2p2c
SET_TYPE_PROP
(
TwoPTwoC
,
Indices
,
TwoPTwoCIndices
<
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
),
/*PVOffset=*/
0
>
);
//! Use the ImplicitSpatialParams by default
SET_TYPE_PROP
(
TwoPTwoC
,
SpatialParams
,
ImplicitSpatialParams
<
TypeTag
>
);
//! Use the model after Millington (1961) for the effective diffusivity
SET_TYPE_PROP
(
TwoPTwoC
,
EffectiveDiffusivityModel
,
DiffusivityMillingtonQuirk
<
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
)
>
);
//! Use mole fractions in the balance equations by default
SET_BOOL_PROP
(
TwoPTwoC
,
UseMoles
,
true
);
//! Determines whether the constraint solver is used
SET_BOOL_PROP
(
TwoPTwoC
,
UseConstraintSolver
,
true
);
//! Determines whether the Kelvin equation is used to adapt the saturation vapor pressure
SET_BOOL_PROP
(
TwoPTwoC
,
UseKelvinEquation
,
false
);
//! Somerton is used as default model to compute the effective thermal heat conductivity
SET_PROP
(
TwoPTwoCNI
,
ThermalConductivityModel
)
{
private:
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
using
Indices
=
typename
GET_PROP_TYPE
(
TypeTag
,
Indices
);
public:
using
type
=
ThermalConductivitySomerton
<
Scalar
,
Indices
>
;
};
//////////////////////////////////////////////////////////////////
// Property values for isothermal model required for the general non-isothermal model
//////////////////////////////////////////////////////////////////
//set isothermal Indices
SET_TYPE_PROP
(
TwoPTwoCNI
,
IsothermalIndices
,
TwoPTwoCIndices
<
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
),
/*PVOffset=*/
0
>
);
//set isothermal output fields
SET_TYPE_PROP
(
TwoPTwoCNI
,
IsothermalVtkOutputFields
,
TwoPTwoCVtkOutputFields
<
TypeTag
>
);
//set isothermal NumEq
SET_INT_PROP
(
TwoPTwoCNI
,
IsothermalNumEq
,
2
);
}
// end namespace Properties
}
// end namespace Dumux
#endif
dumux/porousmediumflow/2p2c/implicit/properties.hh
deleted
100644 → 0
View file @
d94befad
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*****************************************************************************
* See the file COPYING for full copying permissions. *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
/*!
* \ingroup Properties
* \ingroup ImplicitProperties
* \ingroup TwoPTwoCModel
*
* \file
*
* \brief Defines the properties required for the two-phase two-component
* fully implicit model.
*/
#ifndef DUMUX_2P2C_PROPERTIES_HH
#define DUMUX_2P2C_PROPERTIES_HH
// property forward declarations
#include
<dumux/common/properties.hh>
#include
<dumux/porousmediumflow/properties.hh>
#include
<dumux/porousmediumflow/nonisothermal/implicit/model.hh>
#include
<dumux/material/spatialparams/implicit.hh>
#include
<dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh>
#include
<dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh>
#include
<dumux/porousmediumflow/compositional/localresidual.hh>
#include
<dumux/porousmediumflow/compositional/switchableprimaryvariables.hh>
#include
<dumux/porousmediumflow/compositional/privarswitchnewtoncontroller.hh>
#include
"indices.hh"
#include
"volumevariables.hh"
#include
"primaryvariableswitch.hh"
#include
"vtkoutputfields.hh"
namespace
Dumux
{
namespace
Properties
{
//////////////////////////////////////////////////////////////////
// Type tags
//////////////////////////////////////////////////////////////////
NEW_TYPE_TAG
(
TwoPTwoC
,
INHERITS_FROM
(
PorousMediumFlow
));
NEW_TYPE_TAG
(
TwoPTwoCNI
,
INHERITS_FROM
(
TwoPTwoC
,
NonIsothermal
));
//////////////////////////////////////////////////////////////////
// Property values
//////////////////////////////////////////////////////////////////
//! Set the number of equations to 2
SET_INT_PROP
(
TwoPTwoC
,
NumEq
,
2
);
/*!
* \brief Set the property for the number of components.
*
* We just forward the number from the fluid system and use a static
* assert to make sure it is 2.
*/
SET_PROP
(
TwoPTwoC
,
NumComponents
)
{
static
constexpr
int
value
=
2
;
static_assert
(
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
)
::
numComponents
==
value
,
"Only fluid systems with 2 components are supported by the 2p-2c model!"
);
};
/*!
* \brief Set the property for the number of fluid phases.
*
* We just forward the number from the fluid system and use a static
* assert to make sure it is 2.
*/
SET_PROP
(
TwoPTwoC
,
NumPhases
)
{
static
constexpr
int
value
=
2
;
static_assert
(
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
)
::
numPhases
==
value
,
"Only fluid systems with 2 phases are supported by the 2p-2c model!"
);
};
//! Set the vtk output fields specific to the TwoPTwoC model
SET_TYPE_PROP
(
TwoPTwoC
,
VtkOutputFields
,
TwoPTwoCVtkOutputFields
<
TypeTag
>
);
/*!
* \brief The fluid state which is used by the volume variables to
* store the thermodynamic state. This should be chosen
* appropriately for the model ((non-)isothermal, equilibrium, ...).
* This can be done in the problem.
*/
SET_PROP
(
TwoPTwoC
,
FluidState
)
{
private:
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
public:
using
type
=
CompositionalFluidState
<
Scalar
,
FluidSystem
>
;
};
//! Set the default formulation to pw-sn
SET_INT_PROP
(
TwoPTwoC
,
Formulation
,
TwoPTwoCFormulation
::
pwsn
);
//! Set as default that no component mass balance is replaced by the total mass balance
SET_INT_PROP
(
TwoPTwoC
,
ReplaceCompEqIdx
,
GET_PROP_VALUE
(
TypeTag
,
NumComponents
));
//! Use the compositional local residual operator
SET_TYPE_PROP
(
TwoPTwoC
,
LocalResidual
,
CompositionalLocalResidual
<
TypeTag
>
);
//! Enable advection
SET_BOOL_PROP
(
TwoPTwoC
,
EnableAdvection
,
true
);
//! Enable molecular diffusion
SET_BOOL_PROP
(
TwoPTwoC
,
EnableMolecularDiffusion
,
true
);
//! Isothermal model by default
SET_BOOL_PROP
(
TwoPTwoC
,
EnableEnergyBalance
,
false
);
//! The primary variable switch for the 2p2c model
SET_TYPE_PROP
(
TwoPTwoC
,
PrimaryVariableSwitch
,
TwoPTwoCPrimaryVariableSwitch
<
TypeTag
>
);
//! The primary variables vector for the 2p2c model
SET_TYPE_PROP
(
TwoPTwoC
,
PrimaryVariables
,
SwitchablePrimaryVariables
<
TypeTag
,
int
>
);
//! Use the 2p2c VolumeVariables
SET_TYPE_PROP
(
TwoPTwoC
,
VolumeVariables
,
TwoPTwoCVolumeVariables
<
TypeTag
>
);
//! Set the indices required by the isothermal 2p2c
SET_TYPE_PROP
(
TwoPTwoC
,
Indices
,
TwoPTwoCIndices
<
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
),
/*PVOffset=*/
0
>
);
//! Use the ImplicitSpatialParams by default
SET_TYPE_PROP
(
TwoPTwoC
,
SpatialParams
,
ImplicitSpatialParams
<
TypeTag
>
);
//! Use the model after Millington (1961) for the effective diffusivity
SET_TYPE_PROP
(
TwoPTwoC
,
EffectiveDiffusivityModel
,
DiffusivityMillingtonQuirk
<
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
)
>
);
//! Use mole fractions in the balance equations by default
SET_BOOL_PROP
(
TwoPTwoC
,
UseMoles
,
true
);
//! Determines whether the constraint solver is used
SET_BOOL_PROP
(
TwoPTwoC
,
UseConstraintSolver
,
true
);
//! Determines whether the Kelvin equation is used to adapt the saturation vapor pressure
SET_BOOL_PROP
(
TwoPTwoC
,
UseKelvinEquation
,
false
);
//! Somerton is used as default model to compute the effective thermal heat conductivity
SET_PROP
(
TwoPTwoCNI
,
ThermalConductivityModel
)
{
private:
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
using
Indices
=
typename
GET_PROP_TYPE
(
TypeTag
,
Indices
);
public:
using
type
=
ThermalConductivitySomerton
<
Scalar
,
Indices
>
;
};
//////////////////////////////////////////////////////////////////
// Property values for isothermal model required for the general non-isothermal model
//////////////////////////////////////////////////////////////////
//set isothermal Indices
SET_TYPE_PROP
(
TwoPTwoCNI
,
IsothermalIndices
,
TwoPTwoCIndices
<
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
),
/*PVOffset=*/
0
>
);
//set isothermal output fields
SET_TYPE_PROP
(
TwoPTwoCNI
,
IsothermalVtkOutputFields
,
TwoPTwoCVtkOutputFields
<
TypeTag
>
);
//set isothermal NumEq
SET_INT_PROP
(
TwoPTwoCNI
,
IsothermalNumEq
,
2
);
}
// end namespace Properties
}
// end namespace Dumux
#endif
dumux/porousmediumflow/2p2c/implicit/volumevariables.hh
View file @
8eccfda9
...
...
@@ -25,28 +25,24 @@
#ifndef DUMUX_2P2C_VOLUME_VARIABLES_HH
#define DUMUX_2P2C_VOLUME_VARIABLES_HH
//#include <dumux/implicit/model.hh>
#include
<dumux/material/fluidstates/compositional.hh>
#include
<dumux/material/constraintsolvers/computefromreferencephase.hh>
#include
<dumux/material/constraintsolvers/misciblemultiphasecomposition.hh>
#include
<dumux/
discretization
/volumevariables.hh>
#include
<dumux/
porousmediumflow
/volumevariables.hh>
#include
<dumux/discretization/methods.hh>
#include
"properties.hh"
#include
"indices.hh"
namespace
Dumux
{
/*!
* \ingroup TwoPTwoCModel
* \ingroup ImplicitVolumeVariables
* \brief Contains the quantities which are constant within a
* finite volume in the two-phase two-component model.
*/
template
<
class
TypeTag
>
class
TwoPTwoCVolumeVariables
:
public
Implicit
VolumeVariables
<
TypeTag
>
class
TwoPTwoCVolumeVariables
:
public
PorousMediumFlow
VolumeVariables
<
TypeTag
>
{
using
ParentType
=
Implicit
VolumeVariables
<
TypeTag
>
;
using
ParentType
=
PorousMediumFlow
VolumeVariables
<
TypeTag
>
;
using
Implementation
=
typename
GET_PROP_TYPE
(
TypeTag
,
VolumeVariables
);
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
...
...
@@ -106,9 +102,6 @@ class TwoPTwoCVolumeVariables : public ImplicitVolumeVariables<TypeTag>
static
constexpr
int
dim
=
GridView
::
dimension
;
static
constexpr
int
numPhases
=
GET_PROP_VALUE
(
TypeTag
,
NumPhases
);
static
constexpr
int
numComponents
=
GET_PROP_VALUE
(
TypeTag
,
NumComponents
);
enum
{
isBox
=
GET_PROP_VALUE
(
TypeTag
,
DiscretizationMethod
)
==
DiscretizationMethods
::
Box
};
enum
{
dofCodim
=
isBox
?
dim
:
0
};
public:
//! The type of the object returned by the fluidState() method
using
FluidState
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidState
);
...
...
@@ -118,7 +111,7 @@ public:
using
ParentType
::
enthalpy
;
/*!
* \copydoc
Implicit
VolumeVariables::update
* \copydoc
PorousMediumFlow
VolumeVariables::update
*/
void
update
(
const
ElementSolution
&
elemSol
,
const
Problem
&
problem
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment