From 70f712818b620c8b1478a00fe2be114d55fe8f5d Mon Sep 17 00:00:00 2001 From: Sina Ackermann <sina.ackermann@iws.uni-stuttgart.de> Date: Fri, 24 Feb 2017 15:26:30 +0100 Subject: [PATCH] [staggeredGrid][freeflow] Set up structure for nonisothermal Navier-Stokes model * Not working yet * add and adapt files for staggeredni problem --- dumux/freeflow/CMakeLists.txt | 1 + dumux/freeflow/staggeredni/CMakeLists.txt | 10 + dumux/freeflow/staggeredni/fluxvariables.hh | 178 ++++++++++++++++++ dumux/freeflow/staggeredni/indices.hh | 54 ++++++ dumux/freeflow/staggeredni/model.hh | 114 +++++++++++ dumux/freeflow/staggeredni/properties.hh | 75 ++++++++ .../freeflow/staggeredni/propertydefaults.hh | 178 ++++++++++++++++++ 7 files changed, 610 insertions(+) create mode 100644 dumux/freeflow/staggeredni/CMakeLists.txt create mode 100644 dumux/freeflow/staggeredni/fluxvariables.hh create mode 100644 dumux/freeflow/staggeredni/indices.hh create mode 100644 dumux/freeflow/staggeredni/model.hh create mode 100644 dumux/freeflow/staggeredni/properties.hh create mode 100644 dumux/freeflow/staggeredni/propertydefaults.hh diff --git a/dumux/freeflow/CMakeLists.txt b/dumux/freeflow/CMakeLists.txt index fecc1809e5..cb9306e085 100644 --- a/dumux/freeflow/CMakeLists.txt +++ b/dumux/freeflow/CMakeLists.txt @@ -1,5 +1,6 @@ add_subdirectory("staggered") add_subdirectory("staggerednc") +add_subdirectory("staggeredni") add_subdirectory("stokes") add_subdirectory("stokesnc") add_subdirectory("stokesncni") diff --git a/dumux/freeflow/staggeredni/CMakeLists.txt b/dumux/freeflow/staggeredni/CMakeLists.txt new file mode 100644 index 0000000000..cd81e3cdc4 --- /dev/null +++ b/dumux/freeflow/staggeredni/CMakeLists.txt @@ -0,0 +1,10 @@ + +#install headers +install(FILES +indices.hh +localresidual.hh +model.hh +properties.hh +propertydefaults.hh +volumevariables.hh +DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/porousmediumflow/1p/implicit) \ No newline at end of file diff --git a/dumux/freeflow/staggeredni/fluxvariables.hh b/dumux/freeflow/staggeredni/fluxvariables.hh new file mode 100644 index 0000000000..b8cfdf4ef4 --- /dev/null +++ b/dumux/freeflow/staggeredni/fluxvariables.hh @@ -0,0 +1,178 @@ +// -*- 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 + * \brief Base class for the flux variables + */ +#ifndef DUMUX_FREELOW_IMPLICIT_NI_FLUXVARIABLES_HH +#define DUMUX_FREELOW_IMPLICIT_NI_FLUXVARIABLES_HH + +#include <dumux/implicit/properties.hh> +#include <dumux/discretization/fluxvariablesbase.hh> +#include "../staggered/fluxvariables.hh" + +namespace Dumux +{ + +namespace Properties +{ +// forward declaration +NEW_PROP_TAG(EnableComponentTransport); +NEW_PROP_TAG(EnableEnergyBalance); +NEW_PROP_TAG(EnableInertiaTerms); +} + +// // forward declaration +// template<class TypeTag, bool enableComponentTransport, bool enableEnergyBalance> +// class FreeFlowFluxVariablesImpl; + +/*! + * \ingroup ImplicitModel + * \brief The flux variables class + * specializations are provided for combinations of physical processes + * \note Not all specializations are currently implemented + */ +// template<class TypeTag> +// using FreeFlowFluxVariables = FreeFlowFluxVariablesImpl<TypeTag, GET_PROP_VALUE(TypeTag, EnableComponentTransport), +// GET_PROP_VALUE(TypeTag, EnableEnergyBalance)>; + +// specialization for immiscible, non-isothermal flow +template<class TypeTag> +class FreeFlowFluxVariablesImpl<TypeTag, false, true> : public FreeFlowFluxVariablesImpl<TypeTag, false, false> +{ + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Problem = typename GET_PROP_TYPE(TypeTag, Problem); + using Element = typename GridView::template Codim<0>::Entity; + using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using Indices = typename GET_PROP_TYPE(TypeTag, Indices); + using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables); + using GlobalFaceVars = typename GET_PROP_TYPE(TypeTag, GlobalFaceVars); + using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace); + using FluxVariablesCache = typename GET_PROP_TYPE(TypeTag, FluxVariablesCache); + using CellCenterPrimaryVariables = typename GET_PROP_TYPE(TypeTag, CellCenterPrimaryVariables); + using FacePrimaryVariables = typename GET_PROP_TYPE(TypeTag, FacePrimaryVariables); + using IndexType = typename GridView::IndexSet::IndexType; + using Stencil = std::vector<IndexType>; + + using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType); + + static constexpr bool navierStokes = GET_PROP_VALUE(TypeTag, EnableInertiaTerms); +// static constexpr auto numComponents = GET_PROP_VALUE(TypeTag, NumComponents); + + static constexpr bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles); + +// //! The index of the component balance equation that gets replaced with the total mass balance +// static const int replaceCompEqIdx = GET_PROP_VALUE(TypeTag, ReplaceCompEqIdx); + + using ParentType = FreeFlowFluxVariablesImpl<TypeTag, false, false>; + + enum { + // grid and world dimension + dim = GridView::dimension, + dimWorld = GridView::dimensionworld, + + pressureIdx = Indices::pressureIdx, + velocityIdx = Indices::velocityIdx, + temperatureIdx = Indices::temperatureIdx, // TODO necessary? + + massBalanceIdx = Indices::massBalanceIdx, + momentumBalanceIdx = Indices::momentumBalanceIdx, + energyBalanceIdx = Indices::energyBalanceIdx, + conti0EqIdx = Indices::conti0EqIdx, + phaseIdx = Indices::phaseIdx + }; + +public: + CellCenterPrimaryVariables computeFluxForCellCenter(const Problem& problem, + const Element &element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const GlobalFaceVars& globalFaceVars, + const SubControlVolumeFace &scvf, + const FluxVariablesCache& fluxVarsCache) + { +// CellCenterPrimaryVariables flux(0.0); +// +// flux += advectiveFluxForCellCenter_(problem, fvGeometry, elemVolVars, globalFaceVars, scvf); +// flux += MolecularDiffusionType::diffusiveFluxForCellCenter(problem, fvGeometry, elemVolVars, scvf); +// return flux; + } + +private: + + CellCenterPrimaryVariables advectiveFluxForCellCenter_(const Problem& problem, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const GlobalFaceVars& globalFaceVars, + const SubControlVolumeFace &scvf) + { +// CellCenterPrimaryVariables flux(0.0); +// +// const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx()); +// const auto& insideVolVars = elemVolVars[insideScv]; +// +// // if we are on an inflow/outflow boundary, use the volVars of the element itself +// // TODO: catch neumann and outflow in localResidual's evalBoundary_() +// bool isOutflow = false; +// if(scvf.boundary()) +// { +// const auto bcTypes = problem.boundaryTypesAtPos(scvf.center()); +// if(bcTypes.isOutflow(momentumBalanceIdx)) +// isOutflow = true; +// } +// +// const auto& outsideVolVars = isOutflow ? insideVolVars : elemVolVars[scvf.outsideScvIdx()]; +// +// const Scalar velocity = globalFaceVars.faceVars(scvf.dofIndex()).velocity(); +// +// const bool insideIsUpstream = sign(scvf.outerNormalScalar()) == sign(velocity); +// const auto& upstreamVolVars = insideIsUpstream ? insideVolVars : outsideVolVars; +// const auto& downstreamVolVars = insideIsUpstream ? insideVolVars : outsideVolVars; +// +// const Scalar upWindWeight = GET_PROP_VALUE(TypeTag, ImplicitUpwindWeight); +// const Scalar upstreamDensity = useMoles ? upstreamVolVars.molarDensity() : upstreamVolVars.density(); +// const Scalar downstreamDensity = useMoles ? downstreamVolVars.molarDensity() : downstreamVolVars.density(); +// +// for (int compIdx = 0; compIdx < numComponents; ++compIdx) +// { +// // get equation index +// const auto eqIdx = conti0EqIdx + compIdx; +// if (eqIdx == replaceCompEqIdx) +// continue; +// +// const Scalar upstreamFraction = useMoles ? upstreamVolVars.moleFraction(phaseIdx, compIdx) : upstreamVolVars.massFraction(phaseIdx, compIdx); +// const Scalar downstreamFraction = useMoles ? downstreamVolVars.moleFraction(phaseIdx, compIdx) : downstreamVolVars.massFraction(phaseIdx, compIdx); +// +// flux[eqIdx] = (upWindWeight * upstreamDensity * upstreamFraction + +// (1.0 - upWindWeight) * downstreamDensity * downstreamFraction) +// * velocity; +// } +// // in case one balance is substituted by the total mass balance +// if (replaceCompEqIdx < numComponents) +// flux[replaceCompEqIdx] = (upWindWeight * upstreamDensity + (1.0 - upWindWeight) * downstreamDensity) * velocity; +// +// flux *= scvf.area() * sign(scvf.outerNormalScalar()); +// return flux; + } +}; + +} // end namespace + +#endif diff --git a/dumux/freeflow/staggeredni/indices.hh b/dumux/freeflow/staggeredni/indices.hh new file mode 100644 index 0000000000..2f9c73dd76 --- /dev/null +++ b/dumux/freeflow/staggeredni/indices.hh @@ -0,0 +1,54 @@ +// -*- 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 + * \brief Defines the indices for the staggered Navier-Stokes NC model. + */ +#ifndef DUMUX_STAGGERED_NAVIERSTOKES_NI_INDICES_HH +#define DUMUX_STAGGERED_NAVIERSTOKES_NI_INDICES_HH + +#include <dumux/freeflow/staggered/indices.hh> + +namespace Dumux +{ +// \{ +/*! + * \ingroup NavierStokesNCModel + * \ingroup ImplicitIndices + * \brief Indices for the staggered Navier-Stokes NI model model. + * + * \tparam PVOffset The first index in a primary variable vector. + */ +template <class TypeTag, int PVOffset = 0> +struct NavierStokesNIIndices : public NavierStokesCommonIndices<TypeTag, PVOffset> +{ +private: + using ParentType = NavierStokesCommonIndices<TypeTag, PVOffset>; + +public: + + static constexpr int energyBalanceIdx = PVOffset + 1; // TODO + static constexpr int temperatureIdx = energyBalanceIdx; + +}; + +// \} +} // end namespace + +#endif diff --git a/dumux/freeflow/staggeredni/model.hh b/dumux/freeflow/staggeredni/model.hh new file mode 100644 index 0000000000..639f3b7930 --- /dev/null +++ b/dumux/freeflow/staggeredni/model.hh @@ -0,0 +1,114 @@ +// -*- 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 + * + * \brief Base class for all models which use the one-phase, + * fully implicit model. + * Adaption of the fully implicit scheme to the one-phase flow model. + */ + +#ifndef DUMUX_NAVIERSTOKES_NI_MODEL_HH +#define DUMUX_NAVIERSTOKES_NI_MODEL_HH + +// #include <dumux/porousmediumflow/implicit/velocityoutput.hh> +#include "properties.hh" +#include "../staggered/model.hh" + +namespace Dumux +{ +/*! + * \ingroup NavierStokesModel + * \brief A single-phase, non-isothermal flow model using the fully implicit scheme. + * + * Single-phase, non-isothermal flow model, which uses a standard Darcy approach as the + * equation for the conservation of momentum: + * \f[ + v = - \frac{\textbf K}{\mu} + \left(\textbf{grad}\, p - \varrho {\textbf g} \right) + * \f] + * + * and solves the mass continuity equation: + * \f[ + \phi \frac{\partial \varrho}{\partial t} + \text{div} \left\lbrace + - \varrho \frac{\textbf K}{\mu} \left( \textbf{grad}\, p -\varrho {\textbf g} \right) \right\rbrace = q, + * \f] + * All equations are discretized using a vertex-centered finite volume (box) + * or cell-centered finite volume scheme as spatial + * and the implicit Euler method as time discretization. + * The model supports compressible as well as incompressible fluids. + */ +template<class TypeTag > +class NavierStokesNIModel : public NavierStokesModel<TypeTag> +{ + using ParentType = NavierStokesModel<TypeTag>; + typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; + typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; + typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, GlobalFVGeometry) GlobalFVGeometry; + typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; + typedef typename GET_PROP_TYPE(TypeTag, JacobianAssembler) JacobianAssembler; + + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); + + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; + + enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; + enum { dofCodim = isBox ? dim : 0 }; + using Element = typename GridView::template Codim<0>::Entity; + + using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>; + + using DofTypeIndices = typename GET_PROP(TypeTag, DofTypeIndices); + typename DofTypeIndices::CellCenterIdx cellCenterIdx; + typename DofTypeIndices::FaceIdx faceIdx; + + enum { phaseIdx = Indices::phaseIdx }; + +public: + + void init(Problem& problem) + { + ParentType::init(problem); + + // register standardized vtk output fields + auto& vtkOutputModule = problem.vtkOutputModule(); +// vtkOutputModule.addSecondaryVariable("rhoMolar",[](const VolumeVariables& v){ return v.molarDensity(); }); +// vtkOutputModule.addSecondaryVariable("rho",[](const VolumeVariables& v){ return v.density(); }); +// for (int j = 0; j < numComponents; ++j) +// { +// vtkOutputModule.addSecondaryVariable("X^" + FluidSystem::componentName(j) + "_" + FluidSystem::phaseName(phaseIdx), +// [j](const VolumeVariables& v){ return v.massFraction(phaseIdx,j); }); +// +// vtkOutputModule.addSecondaryVariable("x^" + FluidSystem::componentName(j) + "_" + FluidSystem::phaseName(phaseIdx), +// [j](const VolumeVariables& v){ return v.moleFraction(phaseIdx,j); }); +// } + +// NonIsothermalModel::maybeAddTemperature(vtkOutputModule); + } +}; +} + +#include "propertydefaults.hh" + +#endif diff --git a/dumux/freeflow/staggeredni/properties.hh b/dumux/freeflow/staggeredni/properties.hh new file mode 100644 index 0000000000..4eda84787a --- /dev/null +++ b/dumux/freeflow/staggeredni/properties.hh @@ -0,0 +1,75 @@ +// -*- 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 NavierStokesModel + * \file + * + * \brief Defines the properties required for the one-phase fully implicit model. + */ +#ifndef DUMUX_NAVIERSTOKES_NI_PROPERTIES_HH +#define DUMUX_NAVIERSTOKES_NI_PROPERTIES_HH + +// #include <dumux/porousmediumflow/nonisothermal/implicit/properties.hh> +#include <dumux/freeflow/staggered/properties.hh> + +namespace Dumux +{ +// \{ +/////////////////////////////////////////////////////////////////////////// +// properties for the isothermal Navier-Stokes model +/////////////////////////////////////////////////////////////////////////// +namespace Properties { + +////////////////////////////////////////////////////////////////// +// Type tags +////////////////////////////////////////////////////////////////// + +//! The type tags for the implicit single-phase problems +NEW_TYPE_TAG(NavierStokesNI, INHERITS_FROM(NavierStokes)); + +//! The type tags for the corresponding non-isothermal problems +// NEW_TYPE_TAG(NavierStokesNI, INHERITS_FROM(NavierStokes, NonIsothermal)); + +////////////////////////////////////////////////////////////////// +// Property tags +////////////////////////////////////////////////////////////////// + +//NEW_PROP_TAG(NumPhases); //!< Number of fluid phases in the system +//NEW_PROP_TAG(Indices); //!< Enumerations for the model +//NEW_PROP_TAG(FluidSystem); //!< The type of the fluid system to use +//NEW_PROP_TAG(Fluid); //!< The fluid used for the default fluid system +//NEW_PROP_TAG(FluidState); //!< The type of the fluid state to use +//NEW_PROP_TAG(ProblemEnableGravity); //!< Returns whether gravity is considered in the problem +//NEW_PROP_TAG(ImplicitMassUpwindWeight); //!< Returns weight of the upwind cell when calculating fluxes +//NEW_PROP_TAG(ImplicitMobilityUpwindWeight); //!< Weight for the upwind mobility in the velocity calculation +//NEW_PROP_TAG(VtkAddVelocity); //!< Returns whether velocity vectors are written into the vtk output +//NEW_PROP_TAG(EnableInertiaTerms); //!< Returns whether to include inertia terms in the momentum balance eq or not (Stokes / Navier-Stokes) +//NEW_PROP_TAG(BoundaryValues); //!< Type to set values on the boundary +//NEW_PROP_TAG(EnableComponentTransport); //!< Returns whether to consider component transport or not +//NEW_PROP_TAG(EnableEnergyTransport); //!< Returns whether to consider energy transport or not +//NEW_PROP_TAG(FaceVariables); //!< Returns whether to consider energy transport or not +//NEW_PROP_TAG(UseMoles); //!< Defines whether molar (true) or mass (false) density is used +// \} +} + +} // end namespace + +#endif diff --git a/dumux/freeflow/staggeredni/propertydefaults.hh b/dumux/freeflow/staggeredni/propertydefaults.hh new file mode 100644 index 0000000000..f85d1a272b --- /dev/null +++ b/dumux/freeflow/staggeredni/propertydefaults.hh @@ -0,0 +1,178 @@ +// -*- 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 OnePModel + * \file + * + * \brief Defines the properties required for the one-phase fully implicit model. + */ +#ifndef DUMUX_NAVIER_STOKES_NI_PROPERTY_DEFAULTS_HH +#define DUMUX_NAVIER_STOKES_NI_PROPERTY_DEFAULTS_HH + +#include "properties.hh" + +#include "model.hh" +#include "volumevariables.hh" +#include "indices.hh" +#include "localresidual.hh" +#include "../staggered/problem.hh" +// #include "../staggered/model.hh" +#include "../staggered/propertydefaults.hh" + + +#include <dumux/implicit/staggered/localresidual.hh> +#include <dumux/material/fluidsystems/gasphase.hh> +#include <dumux/material/fluidsystems/liquidphase.hh> +#include <dumux/material/components/nullcomponent.hh> +#include <dumux/material/fluidsystems/1p.hh> + +#include <dumux/material/fluidstates/compositional.hh> + + + + +namespace Dumux +{ + +namespace Properties +{ +// forward declaration +NEW_PROP_TAG(FluxVariables); +NEW_PROP_TAG(FluxVariablesCache); +} +// \{ + +/////////////////////////////////////////////////////////////////////////// +// default property values for the isothermal single phase model +/////////////////////////////////////////////////////////////////////////// +namespace Properties { + +SET_INT_PROP(NavierStokesNI, NumEqCellCenter, 2); + +//! the VolumeVariables property +SET_TYPE_PROP(NavierStokesNI, VolumeVariables, NavierStokesNIVolumeVariables<TypeTag>); +SET_TYPE_PROP(NavierStokesNI, Model, NavierStokesNIModel<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(NavierStokesNI, FluidState) +{ + private: + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; + public: + typedef CompositionalFluidState<Scalar, FluidSystem> type; // TODO necessary? +}; + +// //! Enable advection +// SET_BOOL_PROP(NavierStokes, EnableAdvection, true); +// +// //! The one-phase model has no molecular diffusion +// SET_BOOL_PROP(NavierStokes, EnableMolecularDiffusion, false); +// +//! Non-Isothermal model by default +SET_BOOL_PROP(NavierStokes, EnableEnergyBalance, true); +// +// //! The indices required by the isothermal single-phase model +// SET_TYPE_PROP(NavierStokes, Indices, NavierStokesCommonIndices<TypeTag>); +// +// //! The weight of the upwind control volume when calculating +// //! fluxes. Use central differences by default. +// SET_SCALAR_PROP(NavierStokes, ImplicitMassUpwindWeight, 0.5); +// +// //! weight for the upwind mobility in the velocity calculation +// //! fluxes. Use central differences by default. +// SET_SCALAR_PROP(NavierStokes, ImplicitMobilityUpwindWeight, 0.5); +// +// //! The fluid system to use by default +// SET_TYPE_PROP(NavierStokes, FluidSystem, Dumux::FluidSystems::OneP<typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, Fluid)>); +// +// SET_PROP(NavierStokes, Fluid) +// { private: +// typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; +// public: +// typedef FluidSystems::LiquidPhase<Scalar, Dumux::NullComponent<Scalar> > type; +// }; +// +// /*! +// * \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(NavierStokes, FluidState){ +// private: +// typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; +// typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; +// public: +// typedef Dumux::ImmiscibleFluidState<Scalar, FluidSystem> type; +// }; +// +// // disable velocity output by default +// SET_BOOL_PROP(NavierStokes, VtkAddVelocity, true); +// +// // enable gravity by default +// SET_BOOL_PROP(NavierStokes, ProblemEnableGravity, true); +// +// SET_BOOL_PROP(NavierStokes, EnableInertiaTerms, true); +// +// SET_BOOL_PROP(NavierStokes, EnableEnergyTransport, false); +// + +//! average is used as default model to compute the effective thermal heat conductivity +// SET_PROP(NavierStokesNI, ThermalConductivityModel) +// { private : +// typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; +// public: +// typedef ThermalConductivityAverage<Scalar> type; +// }; + +////////////////////////////////////////////////////////////////// +// Property values for isothermal model required for the general non-isothermal model +////////////////////////////////////////////////////////////////// + +// set isothermal Model +// SET_TYPE_PROP(NavierStokesNI, IsothermalModel, NavierStokesModel<TypeTag>); + +//set isothermal VolumeVariables +// SET_TYPE_PROP(NavierStokesNI, IsothermalVolumeVariables, NavierStokesVolumeVariables<TypeTag>); + +//set isothermal LocalResidual +// SET_TYPE_PROP(NavierStokesNI, IsothermalLocalResidual, ImmiscibleLocalResidual<TypeTag>); + +//set isothermal Indices +// SET_TYPE_PROP(NavierStokesNI, IsothermalIndices, NavierStokesCommonIndices<TypeTag>); + +//set isothermal NumEq +// SET_INT_PROP(NavierStokesNI, IsothermalNumEq, 1); + + +// \} +} // end namespace Properties + +} // end namespace Dumux + +#endif -- GitLab