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
96379636
Commit
96379636
authored
Apr 27, 2018
by
Kilian Weishaupt
Browse files
Merge branch 'freeflow/lowrekepsilonnc' into 'master'
Freeflow/lowrekepsilonnc See merge request
!928
parents
cd2f843e
171ff32d
Changes
57
Hide whitespace changes
Inline
Side-by-side
doc/doxygen/modules.txt
View file @
96379636
...
...
@@ -178,18 +178,6 @@
* \brief Single-phase Navier-Stokes flow
* \copydetails ./freeflow/navierstokes/model.hh
*/
/*!
* \ingroup FreeflowModels
* \defgroup NavierStokesNCModel Navier-Stokes nc
* \brief Single-phase multi-component Navier-Stokes flow
* \copydetails ./freeflow/navierstokesnc/model.hh
*/
/*!
* \ingroup FreeflowModels
* \defgroup NavierStokesNIModel nonisothermal
* \brief An energy equation adaptor for isothermal Navier-Stokes models
* \copydetails ./freeflow/nonisothermal/model.hh
*/
/*!
* \ingroup FreeflowModels
* \defgroup RANSModel Reynolds-Averaged Navier-Stokes
...
...
@@ -216,9 +204,15 @@
*/
/*!
* \ingroup FreeflowModels
* \defgroup RANSNCModel Reynolds-Averaged Navier-Stokes nc
* \brief Single-phase multi-component Reynolds-Averaged Navier-Stokes flow
* \copydetails ./freeflow/ransnc/model.hh
* \defgroup FreeflowNCModel Compositional
* \brief Single-phase multi-component free-flow flow models
* \copydetails ./freeflow/compositional/navierstokesncmodel.hh
*/
/*!
* \ingroup FreeflowModels
* \defgroup FreeflowNIModel Nonisothermal
* \brief An energy equation adaptor for isothermal free-flow models
* \copydetails ./freeflow/nonisothermal/model.hh
*/
/* ***************** Benchmarks and Tests ******************/
...
...
dumux/discretization/staggered/freeflow/fickslaw.hh
View file @
96379636
...
...
@@ -82,10 +82,10 @@ public:
//! We don't cache anything for this law
using
Cache
=
FluxVariablesCaching
::
EmptyDiffusionCache
;
static
CellCenterPrimaryVariables
diffusiveFluxForCellCenter
(
const
Problem
&
problem
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
static
CellCenterPrimaryVariables
flux
(
const
Problem
&
problem
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
{
CellCenterPrimaryVariables
flux
(
0.0
);
...
...
@@ -109,7 +109,7 @@ public:
return
flux
;
}
const
Scalar
tij
=
transmissibility_
(
problem
,
fvGeometry
,
elemVolVars
,
scvf
,
compIdx
);
const
Scalar
tij
=
transmissibility_
(
fvGeometry
,
elemVolVars
,
scvf
,
compIdx
);
const
Scalar
insideMoleFraction
=
insideVolVars
.
moleFraction
(
compIdx
);
const
Scalar
outsideMolarDensity
=
scvf
.
boundary
()
?
insideVolVars
.
molarDensity
()
:
outsideVolVars
.
molarDensity
();
...
...
@@ -148,8 +148,7 @@ public:
return
flux
;
}
static
Scalar
transmissibility_
(
const
Problem
&
problem
,
const
FVElementGeometry
&
fvGeometry
,
static
Scalar
transmissibility_
(
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
,
const
int
compIdx
)
...
...
dumux/discretization/staggered/freeflow/fourierslaw.hh
View file @
96379636
...
...
@@ -44,7 +44,6 @@ template <class TypeTag>
class
FouriersLawImplementation
<
TypeTag
,
DiscretizationMethod
::
staggered
>
{
using
Scalar
=
typename
GET_PROP_TYPE
(
TypeTag
,
Scalar
);
using
Problem
=
typename
GET_PROP_TYPE
(
TypeTag
,
Problem
);
using
FVElementGeometry
=
typename
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
LocalView
;
using
SubControlVolume
=
typename
FVElementGeometry
::
SubControlVolume
;
using
SubControlVolumeFace
=
typename
FVElementGeometry
::
SubControlVolumeFace
;
...
...
@@ -63,22 +62,14 @@ public:
//! We don't cache anything for this law
using
Cache
=
FluxVariablesCaching
::
EmptyDiffusionCache
;
//! calculate the molecular diffusive fluxes
static
Scalar
diffusiveFluxForCellCenter
(
const
Problem
&
problem
,
const
Element
&
element
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
//! calculate the diffusive energy fluxes
static
Scalar
flux
(
const
Element
&
element
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
{
Scalar
flux
(
0.0
);
if
(
scvf
.
boundary
())
{
const
auto
bcTypes
=
problem
.
boundaryTypesAtPos
(
scvf
.
center
());
if
(
bcTypes
.
isOutflow
(
energyBalanceIdx
)
||
bcTypes
.
isNeumann
(
energyBalanceIdx
))
return
flux
;
}
const
auto
&
insideScv
=
fvGeometry
.
scv
(
scvf
.
insideScvIdx
());
const
auto
&
outsideScv
=
fvGeometry
.
scv
(
scvf
.
outsideScvIdx
());
const
auto
&
insideVolVars
=
elemVolVars
[
scvf
.
insideScvIdx
()];
...
...
dumux/discretization/staggered/freeflow/fvgridgeometrytraits.hh
View file @
96379636
...
...
@@ -24,6 +24,8 @@
#ifndef DUMUX_DISCRETIZATION_STAGGERED_FREEFLOW_FV_GRID_GEOMETRY_TRAITS
#define DUMUX_DISCRETIZATION_STAGGERED_FREEFLOW_FV_GRID_GEOMETRY_TRAITS
#include
<dumux/common/defaultmappertraits.hh>
#include
<dumux/common/intersectionmapper.hh>
#include
<dumux/discretization/cellcentered/subcontrolvolume.hh>
#include
<dumux/discretization/staggered/fvelementgeometry.hh>
#include
<dumux/discretization/staggered/freeflow/subcontrolvolumeface.hh>
...
...
dumux/discretization/staggered/freeflow/maxwellstefanslaw.hh
View file @
96379636
...
...
@@ -85,10 +85,10 @@ public:
using
Cache
=
FluxVariablesCaching
::
EmptyDiffusionCache
;
using
CacheFiller
=
FluxVariablesCaching
::
EmptyCacheFiller
;
static
CellCenterPrimaryVariables
diffusiveFluxForCellCenter
(
const
Problem
&
problem
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
static
CellCenterPrimaryVariables
flux
(
const
Problem
&
problem
,
const
FVElementGeometry
&
fvGeometry
,
const
ElementVolumeVariables
&
elemVolVars
,
const
SubControlVolumeFace
&
scvf
)
{
//this is to calculate the maxwellStefan diffusion in a multicomponent system.
//see: Multicomponent Mass Transfer. R. Taylor u. R. Krishna. J. Wiley & Sons, New York 1993
...
...
dumux/freeflow/CMakeLists.txt
View file @
96379636
add_subdirectory
(
"compositional"
)
add_subdirectory
(
"navierstokes"
)
add_subdirectory
(
"navierstokesnc"
)
add_subdirectory
(
"nonisothermal"
)
add_subdirectory
(
"rans"
)
add_subdirectory
(
"ransnc"
)
dumux/freeflow/
navierstokesnc
/CMakeLists.txt
→
dumux/freeflow/
compositional
/CMakeLists.txt
View file @
96379636
...
...
@@ -5,7 +5,9 @@ install(FILES
fluxvariables.hh
indices.hh
localresidual.hh
model.hh
navierstokesncmodel.hh
lowrekepsilonncmodel.hh
volumevariables.hh
vtkoutputfields.hh
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
/dumux/freeflow/navierstokesnc
)
zeroeqncmodel.hh
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
/dumux/freeflow/compositional
)
dumux/freeflow/
navierstokesnc
/fluxvariables.hh
→
dumux/freeflow/
compositional
/fluxvariables.hh
View file @
96379636
...
...
@@ -18,14 +18,14 @@
*****************************************************************************/
/*!
* \file
* \ingroup
NavierStokes
NCModel
* \copydoc Dumux::
NavierStokes
NCFluxVariables
* \ingroup
Freeflow
NCModel
* \copydoc Dumux::
Freeflow
NCFluxVariables
*/
#ifndef DUMUX_FREELOW_
IMPLICIT_
NC_FLUXVARIABLES_HH
#define DUMUX_FREELOW_
IMPLICIT_
NC_FLUXVARIABLES_HH
#ifndef DUMUX_FREELOW_NC_FLUXVARIABLES_HH
#define DUMUX_FREELOW_NC_FLUXVARIABLES_HH
#include
<dumux/common/properties.hh>
#include
<dumux/freeflow/
navierstokesnc
/staggered/fluxvariables.hh>
#include
<dumux/freeflow/
compositional
/staggered/fluxvariables.hh>
namespace
Dumux
{
...
...
@@ -33,17 +33,17 @@ namespace Dumux
// forward declaration
template
<
class
TypeTag
,
DiscretizationMethod
discMethod
>
class
NavierStokes
NCFluxVariablesImpl
;
class
Freeflow
NCFluxVariablesImpl
;
/*!
* \ingroup
NavierStokes
NCModel
* \brief The flux variables class for the multi-component
Navier-Stokes
model.
* \ingroup
Freeflow
NCModel
* \brief The flux variables class for the multi-component
free-flow
model.
This is a convenience alias for that actual,
discretization-specific flux variables.
* \note Not all specializations are currently implemented
*/
template
<
class
TypeTag
>
using
NavierStokes
NCFluxVariables
=
NavierStokes
NCFluxVariablesImpl
<
TypeTag
,
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
discMethod
>
;
using
Freeflow
NCFluxVariables
=
Freeflow
NCFluxVariablesImpl
<
TypeTag
,
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
discMethod
>
;
}
// end namespace
...
...
dumux/freeflow/
navierstokesnc
/indices.hh
→
dumux/freeflow/
compositional
/indices.hh
View file @
96379636
...
...
@@ -18,23 +18,24 @@
*****************************************************************************/
/*!
* \file
* \ingroup
NavierStokes
NCModel
* \copydoc Dumux::
NavierStokes
NCIndices
* \ingroup
Freeflow
NCModel
* \copydoc Dumux::
Freeflow
NCIndices
*/
#ifndef DUMUX_
STAGGERED_NAVIERSTOKES
_NC_INDICES_HH
#define DUMUX_
STAGGERED_NAVIERSTOKES
_NC_INDICES_HH
#ifndef DUMUX_
FREEFLOW
_NC_INDICES_HH
#define DUMUX_
FREEFLOW
_NC_INDICES_HH
#include
<dumux/freeflow/navierstokes/indices.hh>
namespace
Dumux
{
/*!
* \ingroup
NavierStokes
NCModel
* \brief The common indices for the isothermal multi-component
Navier-Stokes
model.
* \ingroup
Freeflow
NCModel
* \brief The common indices for the isothermal multi-component
free-flow
model.
*/
template
<
int
dimension
,
int
numEquations
,
int
phaseIdx
,
int
theReplaceCompEqIdx
>
struct
NavierStokesNCIndices
:
public
NavierStokesIndices
<
dimension
>
int
phaseIdx
,
int
theReplaceCompEqIdx
,
class
FreeflowIndices
>
struct
FreeflowNCIndices
:
public
FreeflowIndices
{
public:
//! The index of the fluid phase in the fluid system
...
...
dumux/freeflow/
navierstokesnc
/localresidual.hh
→
dumux/freeflow/
compositional
/localresidual.hh
View file @
96379636
...
...
@@ -18,34 +18,34 @@
*****************************************************************************/
/*!
* \file
* \ingroup
NavierStokes
NCModel
* \copydoc Dumux::
NavierStokes
NCResidual
* \ingroup
Freeflow
NCModel
* \copydoc Dumux::
Freeflow
NCResidual
*/
#ifndef DUMUX_
NAVIERSTOKES
_NC_LOCAL_RESIDUAL_HH
#define DUMUX_
NAVIERSTOKES
_NC_LOCAL_RESIDUAL_HH
#ifndef DUMUX_
FREEFLOW
_NC_LOCAL_RESIDUAL_HH
#define DUMUX_
FREEFLOW
_NC_LOCAL_RESIDUAL_HH
#include
<dumux/common/properties.hh>
#include
<dumux/discretization/methods.hh>
#include
<dumux/freeflow/navierstokes/localresidual.hh>
#include
<dumux/freeflow/
navierstokesnc
/staggered/localresidual.hh>
#include
<dumux/freeflow/
compositional
/staggered/localresidual.hh>
namespace
Dumux
{
// forward declaration
template
<
class
TypeTag
,
DiscretizationMethod
discMethod
>
class
NavierStokes
NCResidualImpl
;
class
Freeflow
NCResidualImpl
;
/*!
* \ingroup
NavierStokes
NCModel
* \brief The local residual class for the
Navier-Stokes
multi-component model (balance equations).
* \ingroup
Freeflow
NCModel
* \brief The local residual class for the multi-component
free-flow
model (balance equations).
This is a convenience alias for the actual,
discretization-specific local residual.
* \note Not all specializations are currently implemented
*/
template
<
class
TypeTag
>
using
NavierStokes
NCResidual
=
NavierStokes
NCResidualImpl
<
TypeTag
,
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
discMethod
>
;
using
Freeflow
NCResidual
=
Freeflow
NCResidualImpl
<
TypeTag
,
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
discMethod
>
;
}
#endif
// DUMUX_NAVIERSTOKES_NC_LOCAL_RESIDUAL_HH
#endif
dumux/freeflow/compositional/lowrekepsilonncmodel.hh
0 → 100644
View file @
96379636
// -*- 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/>. *
*****************************************************************************/
/*!
* \file
* \ingroup FreeflowNCModel
*
* \brief A single-phase, multi-component Reynolds-Averaged Navier-Stokes 0-Eq. model
*
* \copydoc Dumux::FreeflowNCModel
*/
#ifndef DUMUX_LOWREKEPSILON_NC_MODEL_HH
#define DUMUX_LOWREKEPSILON_NC_MODEL_HH
#include
<dumux/common/properties.hh>
#include
<dumux/freeflow/compositional/navierstokesncmodel.hh>
#include
<dumux/freeflow/nonisothermal/vtkoutputfields.hh>
#include
<dumux/freeflow/rans/twoeq/lowrekepsilon/model.hh>
#include
"vtkoutputfields.hh"
namespace
Dumux
{
///////////////////////////////////////////////////////////////////////////
// properties for the single-phase, multi-component low-Re k-epsilon model
///////////////////////////////////////////////////////////////////////////
namespace
Properties
{
//////////////////////////////////////////////////////////////////
// Type tags
//////////////////////////////////////////////////////////////////
//! The type tags for the single-phase, multi-component isothermal low-Re k-epsilon model
NEW_TYPE_TAG
(
LowReKEpsilonNC
,
INHERITS_FROM
(
NavierStokesNC
));
///////////////////////////////////////////////////////////////////////////
// default property values
///////////////////////////////////////////////////////////////////////////
/*!
* \ingroup FreeflowNCModel
* \brief Traits for the low-Reynolds k-epsilon multi-component model
*/
template
<
int
dimension
,
int
nComp
,
int
phaseIdx
,
int
replaceCompEqIdx
,
bool
useMoles
>
struct
LowReKEpsilonNCModelTraits
:
NavierStokesNCModelTraits
<
dimension
,
nComp
,
phaseIdx
,
replaceCompEqIdx
,
useMoles
>
{
//! There are as many momentum balance equations as dimensions
//! and as many balance equations as components.
static
constexpr
int
numEq
()
{
return
dimension
+
nComp
+
2
;
}
//! The model does include a turbulence model
static
constexpr
bool
usesTurbulenceModel
()
{
return
true
;
}
//! the indices
using
Indices
=
FreeflowNCIndices
<
dimension
,
numEq
(),
phaseIdx
,
replaceCompEqIdx
,
LowReKEpsilonIndices
<
dimension
,
nComp
>>
;
};
//!< states some specifics of the isothermal multi-component low-Reynolds k-epsilon model
SET_PROP
(
LowReKEpsilonNC
,
ModelTraits
)
{
private:
using
GridView
=
typename
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
GridView
;
static
constexpr
int
dimension
=
GridView
::
dimension
;
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
static
constexpr
int
numComponents
=
FluidSystem
::
numComponents
;
static
constexpr
int
phaseIdx
=
GET_PROP_VALUE
(
TypeTag
,
PhaseIdx
);
static
constexpr
int
replaceCompEqIdx
=
GET_PROP_VALUE
(
TypeTag
,
ReplaceCompEqIdx
);
static
constexpr
bool
useMoles
=
GET_PROP_VALUE
(
TypeTag
,
UseMoles
);
public:
using
type
=
LowReKEpsilonNCModelTraits
<
dimension
,
numComponents
,
phaseIdx
,
replaceCompEqIdx
,
useMoles
>
;
};
//! Set the volume variables property
SET_PROP
(
LowReKEpsilonNC
,
VolumeVariables
)
{
private:
using
PV
=
typename
GET_PROP_TYPE
(
TypeTag
,
PrimaryVariables
);
using
FSY
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
using
FST
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidState
);
using
MT
=
typename
GET_PROP_TYPE
(
TypeTag
,
ModelTraits
);
using
Traits
=
NavierStokesVolumeVariablesTraits
<
PV
,
FSY
,
FST
,
MT
>
;
using
NCVolVars
=
FreeflowNCVolumeVariables
<
Traits
>
;
public:
using
type
=
LowReKEpsilonVolumeVariables
<
Traits
,
NCVolVars
>
;
};
//! The local residual
SET_PROP
(
LowReKEpsilonNC
,
LocalResidual
)
{
private:
using
BaseLocalResidual
=
FreeflowNCResidual
<
TypeTag
>
;
public:
using
type
=
LowReKEpsilonResidual
<
TypeTag
,
BaseLocalResidual
>
;
};
//! The flux variables
SET_PROP
(
LowReKEpsilonNC
,
FluxVariables
)
{
private:
using
BaseFluxVariables
=
FreeflowNCFluxVariables
<
TypeTag
>
;
public:
using
type
=
LowReKEpsilonFluxVariables
<
TypeTag
,
BaseFluxVariables
>
;
};
//! The specific vtk output fields
SET_PROP
(
LowReKEpsilonNC
,
VtkOutputFields
)
{
private:
using
ModelTraits
=
typename
GET_PROP_TYPE
(
TypeTag
,
ModelTraits
);
using
FVGridGeometry
=
typename
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
);
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
static
constexpr
int
phaseIdx
=
GET_PROP_VALUE
(
TypeTag
,
PhaseIdx
);
using
SinglePhaseVtkOutputFields
=
LowReKEpsilonVtkOutputFields
<
FVGridGeometry
>
;
public:
using
type
=
FreeflowNCVtkOutputFields
<
SinglePhaseVtkOutputFields
,
ModelTraits
,
FVGridGeometry
,
FluidSystem
,
phaseIdx
>
;
};
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component low-Re k-epsilon model
//////////////////////////////////////////////////////////////////////////
//! The type tags for the single-phase, multi-component non-isothermal low-Re k-epsilon models
NEW_TYPE_TAG
(
LowReKEpsilonNCNI
,
INHERITS_FROM
(
NavierStokesNCNI
));
//! The model traits of the non-isothermal model
SET_PROP
(
LowReKEpsilonNCNI
,
ModelTraits
)
{
private:
using
GridView
=
typename
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
)
::
GridView
;
static
constexpr
int
dim
=
GridView
::
dimension
;
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
static
constexpr
int
numComponents
=
FluidSystem
::
numComponents
;
static
constexpr
int
phaseIdx
=
GET_PROP_VALUE
(
TypeTag
,
PhaseIdx
);
static
constexpr
int
replaceCompEqIdx
=
GET_PROP_VALUE
(
TypeTag
,
ReplaceCompEqIdx
);
static
constexpr
bool
useMoles
=
GET_PROP_VALUE
(
TypeTag
,
UseMoles
);
using
IsothermalModelTraits
=
LowReKEpsilonNCModelTraits
<
dim
,
numComponents
,
phaseIdx
,
replaceCompEqIdx
,
useMoles
>
;
public:
using
type
=
FreeflowNIModelTraits
<
IsothermalModelTraits
>
;
};
//! Set the volume variables property
SET_PROP
(
LowReKEpsilonNCNI
,
VolumeVariables
)
{
private:
using
PV
=
typename
GET_PROP_TYPE
(
TypeTag
,
PrimaryVariables
);
using
FSY
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
using
FST
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidState
);
using
MT
=
typename
GET_PROP_TYPE
(
TypeTag
,
ModelTraits
);
using
Traits
=
NavierStokesVolumeVariablesTraits
<
PV
,
FSY
,
FST
,
MT
>
;
using
NCVolVars
=
FreeflowNCVolumeVariables
<
Traits
>
;
public:
using
type
=
LowReKEpsilonVolumeVariables
<
Traits
,
NCVolVars
>
;
};
//! The local residual
SET_PROP
(
LowReKEpsilonNCNI
,
LocalResidual
)
{
private:
using
BaseLocalResidual
=
FreeflowNCResidual
<
TypeTag
>
;
public:
using
type
=
LowReKEpsilonResidual
<
TypeTag
,
BaseLocalResidual
>
;
};
//! The flux variables
SET_PROP
(
LowReKEpsilonNCNI
,
FluxVariables
)
{
private:
using
BaseFluxVariables
=
FreeflowNCFluxVariables
<
TypeTag
>
;
public:
using
type
=
LowReKEpsilonFluxVariables
<
TypeTag
,
BaseFluxVariables
>
;
};
//! The specific vtk output fields
SET_PROP
(
LowReKEpsilonNCNI
,
VtkOutputFields
)
{
private:
using
ModelTraits
=
typename
GET_PROP_TYPE
(
TypeTag
,
ModelTraits
);
using
FVGridGeometry
=
typename
GET_PROP_TYPE
(
TypeTag
,
FVGridGeometry
);
using
FluidSystem
=
typename
GET_PROP_TYPE
(
TypeTag
,
FluidSystem
);
static
constexpr
int
phaseIdx
=
GET_PROP_VALUE
(
TypeTag
,
PhaseIdx
);
using
BaseVtkOutputFields
=
LowReKEpsilonVtkOutputFields
<
FVGridGeometry
>
;
using
NonIsothermalFields
=
FreeflowNonIsothermalVtkOutputFields
<
BaseVtkOutputFields
,
ModelTraits
>
;
public:
using
type
=
FreeflowNCVtkOutputFields
<
NonIsothermalFields
,
ModelTraits
,
FVGridGeometry
,
FluidSystem
,
phaseIdx
>
;
};
// \}
}
// end namespace Properties
}
// end namespace Dumux
#endif
dumux/freeflow/navierstokesnc
/
model.hh
→
dumux/freeflow/
compositional/
navierstokesncmodel.hh
View file @
96379636
...
...
@@ -18,7 +18,7 @@
*****************************************************************************/
/*!
* \file
* \ingroup
NavierStokes
NCModel
* \ingroup
Freeflow
NCModel
*
* \copydoc Dumux::NavierStokesModel
*
...
...
@@ -26,26 +26,29 @@
* \f[
* \frac{\partial \left(\varrho X^\kappa\right)}{\partial t}
* + \nabla \cdot \left( \varrho {\boldsymbol{v}} X^\kappa
* - D^\kappa \varrho \frac{M^\kappa}{M} \textbf{grad}\, x^\kappa \right)
* -
(
D^\kappa
+ D_\text{t})
\varrho \frac{M^\kappa}{M} \textbf{grad}\, x^\kappa \right)
* - q^\kappa = 0
* \f]
*
* Alternatively, one component balance equation can be replace by a <B> total mass/mole balance equation </B>:
*
* \f[
* \frac{\partial \varrho_g}{\partial t}
* + \nabla \cdot \left(
* \varrho {\boldsymbol{v}}
* - \sum_\kappa D^\kappa \varrho \frac{M^\kappa}{M} \textbf{grad}\, x^\kappa
* - \sum_\kappa
(
D^\kappa
+ D_\text{t})
\varrho \frac{M^\kappa}{M} \textbf{grad}\, x^\kappa
* \right)
* - q = 0
* \f]
*
* The eddy diffusivity \f$ D_\text{t} \f$ is related to the eddy viscosity \f$ \nu_\text{t} \f$
* by the turbulent Schmidt number, for Navier-Stokes models \f$ D_\text{t} = 0 \f$.
* \f[ D_\text{t} = \frac{\nu_\text{t}}{\mathrm{Sc}_\text{t}} \f]
*
* So far, only the staggered grid spatial discretization (for structured grids) is available.
*/
#ifndef DUMUX_
NAVIERSTOKES
_NC_MODEL_HH
#define DUMUX_
NAVIERSTOKES
_NC_MODEL_HH
#ifndef DUMUX_
FREEFLOW
_NC_MODEL_HH
#define DUMUX_
FREEFLOW
_NC_MODEL_HH
#include
<dumux/common/properties.hh>
...
...
@@ -71,43 +74,31 @@
namespace
Dumux
{
/*!
* \ingroup
NavierStokes
Model
* \brief Traits for the
Navier-Stokes
multi-component model
* \ingroup
FreeflowNC
Model
* \brief Traits for the multi-component
free-flow
model
*/
template
<
int
dimension
,
int
nComp
,
int
phaseIdx
,
int
replaceCompEqIdx
,
bool
useM
>
struct
NavierStokesNCModelTraits
struct
NavierStokesNCModelTraits
:
NavierStokesModelTraits
<
dimension
>
{
//! The dimension of the model
static
constexpr
int
dim
()
{
return
dimension
;
}
//! There are as many momentum balance equations as dimensions
//! and as many balance equations as components.
static
constexpr
int
numEq
()
{
return
dimension
+
nComp
;
}
//! The number of phases is always 1
static
constexpr
int
numPhases
()
{
return
1
;
}
//! The number of components
static
constexpr
int
numComponents
()
{
return
nComp
;
}
//! Use moles or not
static
constexpr
bool
useMoles
()
{
return
useM
;
}
//! Enable advection
static
constexpr
bool
enableAdvection
()
{
return
true
;
}
//! The one-phase model has no molecular diffusion
static
constexpr
bool
enableMolecularDiffusion
()
{
return
true
;
}
//! The model is isothermal
static
constexpr
bool
enableEnergyBalance
()
{
return
false
;
}
//! the indices
using
Indices
=
NavierStokes
NCIndices
<
dim
()
,
numEq
(),
phaseIdx
,
replaceCompEqIdx
>
;
using
Indices
=
Freeflow
NCIndices
<
dim
ension
,
numEq
(),
phaseIdx
,
replaceCompEqIdx
,
NavierStokesIndices
<
dimension
>
>
;
};
///////////////////////////////////////////////////////////////////////////
// properties for the single-phase, multi-component
Navier-Stokes
model
// properties for the single-phase, multi-component
free-flow
model
///////////////////////////////////////////////////////////////////////////
namespace
Properties
{
...
...
@@ -115,17 +106,17 @@ namespace Properties {
// Type tags
//////////////////////////////////////////////////////////////////
//! The type tag for the single-phase, multi-component isothermal
Navier-Stokes
model
//! The type tag for the single-phase, multi-component isothermal
free-flow
model
NEW_TYPE_TAG
(
NavierStokesNC
,
INHERITS_FROM
(
FreeFlow
));
//! The type tag for the single-phase, multi-component non-isothermal
Navier-Stokes
model
//! The type tag for the single-phase, multi-component non-isothermal
free-flow
model
NEW_TYPE_TAG
(
NavierStokesNCNI
,
INHERITS_FROM
(
NavierStokesNC
));
///////////////////////////////////////////////////////////////////////////
// default property values
///////////////////////////////////////////////////////////////////////////
//!< states some specifics of the
Navier-Stokes
model
//!< states some specifics of the
free-flow
model
SET_PROP
(
NavierStokesNC
,
ModelTraits
)
{
private:
...
...
@@ -146,9 +137,8 @@ SET_INT_PROP(NavierStokesNC, ReplaceCompEqIdx, 0); //<! Set the ReplaceCompEqIdx
SET_BOOL_PROP
(
NavierStokesNC
,
EnableInertiaTerms
,
true
);
//!< Consider inertia terms by default