diff --git a/dumux/boxmodels/2pni/2pnielementdata.hh b/dumux/boxmodels/2pni/2pnielementdata.hh deleted file mode 100644 index 85b600e1e8b0bee93863147f0b65a1e796f84e0b..0000000000000000000000000000000000000000 --- a/dumux/boxmodels/2pni/2pnielementdata.hh +++ /dev/null @@ -1,45 +0,0 @@ -// $Id: 2pnielementdata.hh 3357 2010-03-25 13:02:05Z lauser $ -/***************************************************************************** - * Copyright (C) 2009 by Andreas Lauser * - * Institute of Hydraulic Engineering * - * University of Stuttgart, Germany * - * email: <givenname>.<name>@iws.uni-stuttgart.de * - * * - * 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, as long as this copyright notice * - * is included in its original form. * - * * - * This program is distributed WITHOUT ANY WARRANTY. * - *****************************************************************************/ -/*! - * \file - * - * \brief This template class contains the quantities which are - * constant within a finite element in the non-isothermal - * two-phase model. - */ -#ifndef DUMUX_2PNI_ELEMENT_DATA_HH -#define DUMUX_2PNI_ELEMENT_DATA_HH - -#include <dumux/boxmodels/2p/2pelementdata.hh> - -namespace Dumux -{ -/*! - * \ingroup TwoPNIBoxModel - * \brief This template class contains the quantities which are - * constant within a finite element in the non-isothermal two-phase model. - * - * For the plain non-isothermal two-phase model everything is given on the finite - * volumes, so this class is empty. - */ -template <class TypeTag> -class TwoPNIElementData : public TwoPElementData<TypeTag> -{ -}; - -} // end namepace - -#endif diff --git a/dumux/boxmodels/2pni/2pnifluxdata.hh b/dumux/boxmodels/2pni/2pnifluxvars.hh similarity index 84% rename from dumux/boxmodels/2pni/2pnifluxdata.hh rename to dumux/boxmodels/2pni/2pnifluxvars.hh index 379dae39aa7e470363ebb47355f4f25efe43401b..5a6f33c05437698a6713bd49aecc5a597fd20db9 100644 --- a/dumux/boxmodels/2pni/2pnifluxdata.hh +++ b/dumux/boxmodels/2pni/2pnifluxvars.hh @@ -1,4 +1,4 @@ -// $Id: 2pnifluxdata.hh 3793 2010-06-25 15:38:42Z melanie $ +// $Id: 2pnifluxvars.hh 3793 2010-06-25 15:38:42Z melanie $ /***************************************************************************** * Copyright (C) 2008-2009 by Melanie Darcis * * Copyright (C) 2008-2009 by Andreas Lauser * @@ -49,18 +49,18 @@ namespace Dumux * the integration point, etc. */ template <class TypeTag> -class TwoPNIFluxData : public TwoPFluxData<TypeTag> +class TwoPNIFluxVars : public TwoPFluxVars<TypeTag> { - typedef TwoPFluxData<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef TwoPFluxVars<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(VertexData)) VertexData; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(SecondaryVars)) SecondaryVars; - typedef typename GridView::ctype CoordScalar; + typedef typename GridView::ctype CoordScalar; typedef typename GridView::template Codim<0>::Entity Element; - typedef std::vector<VertexData> VertexDataArray; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(ElementSecondaryVars)) ElementSecondaryVars; enum { dim = GridView::dimension, @@ -70,17 +70,17 @@ class TwoPNIFluxData : public TwoPFluxData<TypeTag> }; typedef typename GET_PROP_TYPE(TypeTag, PTAG(FVElementGeometry)) FVElementGeometry; - typedef typename FVElementGeometry::SubControlVolume SCV; - typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; + typedef typename FVElementGeometry::SubControlVolume SCV; + typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; - typedef Dune::FieldVector<CoordScalar, dimWorld> Vector; + typedef Dune::FieldVector<CoordScalar, dimWorld> Vector; public: - TwoPNIFluxData(const Problem &problem, + TwoPNIFluxVars(const Problem &problem, const Element &element, const FVElementGeometry &elemGeom, int scvfIdx, - const VertexDataArray &elemDat) + const ElementSecondaryVars &elemDat) : ParentType(problem, element, elemGeom, scvfIdx, elemDat) { // calculate temperature gradient using finite element diff --git a/dumux/boxmodels/2pni/2pniboxjacobian.hh b/dumux/boxmodels/2pni/2pnilocalresidual.hh similarity index 75% rename from dumux/boxmodels/2pni/2pniboxjacobian.hh rename to dumux/boxmodels/2pni/2pnilocalresidual.hh index 3dfad1965d7face6d501243b1d9c5a3c2ca73bf3..f9781d5aad694c0627520e7f66c02382d92da56f 100644 --- a/dumux/boxmodels/2pni/2pniboxjacobian.hh +++ b/dumux/boxmodels/2pni/2pnilocalresidual.hh @@ -1,4 +1,4 @@ -// $Id: 2pniboxjacobian.hh 3840 2010-07-15 10:14:15Z bernd $ +// $Id: 2pnilocalresidual.hh 3840 2010-07-15 10:14:15Z bernd $ /***************************************************************************** * Copyright (C) 2008-2009 by Melanie Darcis * * Copyright (C) 2008-2009 by Andreas Lauser * @@ -27,11 +27,11 @@ #include "2pniproperties.hh" -#include <dumux/boxmodels/2p/2pboxjacobian.hh> +#include <dumux/boxmodels/2p/2plocalresidual.hh> -#include <dumux/boxmodels/2pni/2pnielementdata.hh> -#include <dumux/boxmodels/2pni/2pnivertexdata.hh> -#include <dumux/boxmodels/2pni/2pnifluxdata.hh> + +#include <dumux/boxmodels/2pni/2pnisecondaryvars.hh> +#include <dumux/boxmodels/2pni/2pnifluxvars.hh> namespace Dumux @@ -43,17 +43,17 @@ namespace Dumux */ template<class TypeTag> -class TwoPNIBoxJacobian : public TwoPBoxJacobian<TypeTag> +class TwoPNILocalResidual : public TwoPLocalResidual<TypeTag> { - typedef TwoPNIBoxJacobian<TypeTag> ThisType; - typedef TwoPBoxJacobian<TypeTag> ParentType; + typedef TwoPNILocalResidual<TypeTag> ThisType; + typedef TwoPLocalResidual<TypeTag> ParentType; + + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; - typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes)) SolutionTypes; - typedef typename SolutionTypes::PrimaryVarVector PrimaryVarVector; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(PrimaryVarVector)) PrimaryVarVector; typedef typename GET_PROP_TYPE(TypeTag, PTAG(TwoPIndices)) Indices; @@ -70,21 +70,16 @@ class TwoPNIBoxJacobian : public TwoPBoxJacobian<TypeTag> }; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(VertexData)) VertexData; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluxData)) FluxData; - typedef std::vector<VertexData> VertexDataArray; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(SecondaryVars)) SecondaryVars; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluxVars)) FluxVars; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(ElementSecondaryVars)) ElementSecondaryVars; - typedef Dune::FieldVector<Scalar, dim> LocalPosition; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; + typedef Dune::FieldVector<Scalar, dim> LocalPosition; + typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; static const Scalar mobilityUpwindAlpha = GET_PROP_VALUE(TypeTag, PTAG(MobilityUpwindAlpha)); public: - TwoPNIBoxJacobian(Problem &problem) - : ParentType(problem) - { - }; - /*! * \brief Evaluate the amount all conservation quantites * (e.g. phase mass) within a sub-control volume. @@ -102,8 +97,8 @@ public: // used. The secondary variables are used accordingly. This // is required to compute the derivative of the storage term // using the implicit euler method. - const VertexDataArray &vertDatArray = usePrevSol ? this->prevElemDat_ : this->curElemDat_; - const VertexData &vertDat = vertDatArray[scvIdx]; + const ElementSecondaryVars &vertDatArray = usePrevSol ? this->prevSecVars_() : this->curSecVars_(); + const SecondaryVars &vertDat = vertDatArray[scvIdx]; // compute the energy storage result[temperatureIdx] = @@ -125,7 +120,7 @@ public: * This method is called by compute flux (base class) */ void computeAdvectiveFlux(PrimaryVarVector &flux, - const FluxData &fluxData) const + const FluxVars &fluxData) const { // advective mass flux ParentType::computeAdvectiveFlux(flux, fluxData); @@ -134,8 +129,8 @@ public: flux[energyEqIdx] = 0; for (int phase = 0; phase < numPhases; ++phase) { // vertex data of the upstream and the downstream vertices - const VertexData &up = this->curElemDat_[fluxData.upstreamIdx(phase)]; - const VertexData &dn = this->curElemDat_[fluxData.downstreamIdx(phase)]; + const SecondaryVars &up = this->curSecVars_(fluxData.upstreamIdx(phase)); + const SecondaryVars &dn = this->curSecVars_(fluxData.downstreamIdx(phase)); flux[energyEqIdx] += fluxData.KmvpNormal(phase) * ( @@ -156,7 +151,7 @@ public: * the face of a sub-control volume. */ void computeDiffusiveFlux(PrimaryVarVector &flux, - const FluxData &fluxData) const + const FluxVars &fluxData) const { // diffusive mass flux ParentType::computeDiffusiveFlux(flux, fluxData); diff --git a/dumux/boxmodels/2pni/2pniboxmodel.hh b/dumux/boxmodels/2pni/2pnimodel.hh similarity index 75% rename from dumux/boxmodels/2pni/2pniboxmodel.hh rename to dumux/boxmodels/2pni/2pnimodel.hh index 22ea1ab0129e33a261af6f9ca2e9d682ecef5f47..d97f6fb5b842fc7e13cfd72194545c84d47b1dcd 100644 --- a/dumux/boxmodels/2pni/2pniboxmodel.hh +++ b/dumux/boxmodels/2pni/2pnimodel.hh @@ -24,12 +24,12 @@ * \brief Adaption of the BOX scheme to the non-isothermal twophase flow model. */ -#ifndef DUMUX_NEW_2PNI_BOX_MODEL_HH -#define DUMUX_NEW_2PNI_BOX_MODEL_HH +#ifndef DUMUX_2PNI_MODEL_HH +#define DUMUX_2PNI_MODEL_HH -#include <dumux/boxmodels/2p/2pboxmodel.hh> -#include "2pniboxjacobian.hh" -#include "2pniboxproblem.hh" +#include <dumux/boxmodels/2p/2pmodel.hh> +#include "2pnilocalresidual.hh" +#include "2pniproblem.hh" namespace Dumux { @@ -81,39 +81,8 @@ namespace Dumux { */ template<class TypeTag> -class TwoPNIBoxModel: public BoxScheme<TypeTag, TwoPNIBoxModel<TypeTag> > { - typedef TwoPNIBoxModel<TypeTag> ThisType; - typedef BoxScheme<TypeTag, ThisType> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(LocalJacobian)) LocalJacobian; - -public: - TwoPNIBoxModel(Problem &prob) - : ParentType(prob) - { - } - - /*! - * \brief Append all quantities of interest which can be derived - * from the solution of the current time step to the VTK - * writer. - */ - template <class MultiWriter> - void addOutputVtkFields(MultiWriter &writer) - { - this->localJacobian().addOutputVtkFields(writer, this->curSol()); - } - - /*! - * \brief Calculate the phase masses in the system for - * the current timestep. - */ - void calculateMass(Dune::FieldVector<Scalar, 2> &mass) - { - this->localJacobian().calculateMass(this->curSol(), mass); - } +class TwoPNIModel: public TwoPModel<TypeTag> +{ }; } diff --git a/dumux/boxmodels/2pni/2pniboxproblem.hh b/dumux/boxmodels/2pni/2pniproblem.hh similarity index 80% rename from dumux/boxmodels/2pni/2pniboxproblem.hh rename to dumux/boxmodels/2pni/2pniproblem.hh index ef3151f27ecbdbc38eea02e0dccf7b7b7c921201..ef1123ace92fa8b5890d00f02f100529727c76d1 100644 --- a/dumux/boxmodels/2pni/2pniboxproblem.hh +++ b/dumux/boxmodels/2pni/2pniproblem.hh @@ -19,34 +19,34 @@ * \brief Base class for all problems which use the non-isothermal * two-phase box model */ -#ifndef DUMUX_2PNI_BOX_PROBLEM_HH -#define DUMUX_2PNI_BOX_PROBLEM_HH +#ifndef DUMUX_2PNI_PROBLEM_HH +#define DUMUX_2PNI_PROBLEM_HH -#include <dumux/boxmodels/2p/2pboxproblem.hh> +#include <dumux/boxmodels/2p/2pproblem.hh> namespace Dumux { /*! * \ingroup TwoPNIProblems - * \brief Base class for all problems which use the non-isothermal + * \brief Base class for all problems which use the non-isothermal * two-phase box model. * * \todo Please doc me more! */ -template<class TypeTag, class Implementation> -class TwoPNIBoxProblem : public TwoPBoxProblem<TypeTag, Implementation> +template<class TypeTag> +class TwoPNIProblem : public TwoPProblem<TypeTag> { - typedef TwoPBoxProblem<TypeTag, Implementation> ParentType; + typedef TwoPProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(TimeManager)) TimeManager; public: - TwoPNIBoxProblem(const GridView &gridView) - : ParentType(gridView) - { - } + TwoPNIProblem(TimeManager &timeManager, const GridView &gridView) + : ParentType(timeManager, gridView) + {} /*! * \name Problem parameters diff --git a/dumux/boxmodels/2pni/2pniproperties.hh b/dumux/boxmodels/2pni/2pniproperties.hh index 3878b648b83f20e1ec5074950b532bc75f67347c..68632a5799e8a6dbed53938fe0d6a0e3c58859b0 100644 --- a/dumux/boxmodels/2pni/2pniproperties.hh +++ b/dumux/boxmodels/2pni/2pniproperties.hh @@ -25,9 +25,9 @@ #define DUMUX_2PNI_PROPERTIES_HH #include <dumux/boxmodels/2p/2pproperties.hh> -#include "2pnivertexdata.hh" -#include "2pnielementdata.hh" -#include "2pnifluxdata.hh" +#include "2pnisecondaryvars.hh" + +#include "2pnifluxvars.hh" namespace Dumux { @@ -40,19 +40,16 @@ namespace Dumux // forward declarations //////////////////////////////// template<class TypeTag> -class TwoPNIBoxModel; +class TwoPNIModel; template<class TypeTag> -class TwoPNIBoxJacobian; - -template <class TypeTag> -class TwoPNIVertexData; +class TwoPNILocalResidual; template <class TypeTag> -class TwoPNIElementData; +class TwoPNISecondaryVars; template <class TypeTag> -class TwoPNIFluxData; +class TwoPNIFluxVars; /*! * \brief Enumerations for the non-isothermal two-phase model @@ -92,20 +89,17 @@ SET_INT_PROP(BoxTwoPNI, NumEq, 3); //!< set the number of equations to 3 //! Use the 2pni local jacobian operator for the 2pni model SET_TYPE_PROP(BoxTwoPNI, - LocalJacobian, - TwoPNIBoxJacobian<TypeTag>); + LocalResidual, + TwoPNILocalResidual<TypeTag>); //! the Model property -SET_TYPE_PROP(BoxTwoPNI, Model, TwoPNIBoxModel<TypeTag>); - -//! the VertexData property -SET_TYPE_PROP(BoxTwoPNI, VertexData, TwoPNIVertexData<TypeTag>); +SET_TYPE_PROP(BoxTwoPNI, Model, TwoPNIModel<TypeTag>); -//! the ElementData property -SET_TYPE_PROP(BoxTwoPNI, ElementData, TwoPNIElementData<TypeTag>); +//! the SecondaryVars property +SET_TYPE_PROP(BoxTwoPNI, SecondaryVars, TwoPNISecondaryVars<TypeTag>); -//! the FluxData property -SET_TYPE_PROP(BoxTwoPNI, FluxData, TwoPNIFluxData<TypeTag>); +//! the FluxVars property +SET_TYPE_PROP(BoxTwoPNI, FluxVars, TwoPNIFluxVars<TypeTag>); //! The indices required by the non-isothermal two-phase model SET_TYPE_PROP(BoxTwoPNI, TwoPIndices, TwoPNIIndices<0>); diff --git a/dumux/boxmodels/2pni/2pnivertexdata.hh b/dumux/boxmodels/2pni/2pnisecondaryvars.hh similarity index 79% rename from dumux/boxmodels/2pni/2pnivertexdata.hh rename to dumux/boxmodels/2pni/2pnisecondaryvars.hh index 4279bf09de01094aa00ba44d11856b70546fa198..6e3502f0937a5c4cda1f499a7b1a3ca7c10a0c8e 100644 --- a/dumux/boxmodels/2pni/2pnivertexdata.hh +++ b/dumux/boxmodels/2pni/2pnisecondaryvars.hh @@ -1,4 +1,4 @@ -// $Id: 2pnivertexdata.hh 3736 2010-06-15 09:52:10Z lauser $ +// $Id: 2pnisecondaryvars.hh 3736 2010-06-15 09:52:10Z lauser $ /***************************************************************************** * Copyright (C) 2008-2009 by Melanie Darcis * * Copyright (C) 2009 by Andreas Lauser * @@ -19,10 +19,10 @@ * \brief Contains the quantities which are are constant within a * finite volume in the non-isothermal two-phase model. */ -#ifndef DUMUX_2PNI_VERTEX_DATA_HH -#define DUMUX_2PNI_VERTEX_DATA_HH +#ifndef DUMUX_2PNI_SECONDARY_VARS_HH +#define DUMUX_2PNI_SECONDARY_VARS_HH -#include <dumux/boxmodels/2p/2pvertexdata.hh> +#include <dumux/boxmodels/2p/2psecondaryvars.hh> namespace Dumux { @@ -33,14 +33,14 @@ namespace Dumux * finite volume in the non-isothermal two-phase model. */ template <class TypeTag> -class TwoPNIVertexData : public TwoPVertexData<TypeTag> +class TwoPNISecondaryVars : public TwoPSecondaryVars<TypeTag> { - typedef TwoPVertexData<TypeTag> ParentType; + typedef TwoPSecondaryVars<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; typedef typename GET_PROP_TYPE(TypeTag, PTAG(FVElementGeometry)) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; typedef typename GridView::template Codim<0>::Entity Element; @@ -54,33 +54,33 @@ class TwoPNIVertexData : public TwoPVertexData<TypeTag> typedef typename GET_PROP_TYPE(TypeTag, PTAG(TwoPIndices)) Indices; enum { temperatureIdx = Indices::temperatureIdx }; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluidSystem)) FluidSystem; - typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes)) SolutionTypes; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluidSystem)) FluidSystem; + typedef typename GET_PROP(TypeTag, PTAG(ReferenceElements)) RefElemProp; - typedef typename RefElemProp::Container ReferenceElements; + typedef typename RefElemProp::Container ReferenceElements; - typedef typename SolutionTypes::PrimaryVarVector PrimaryVarVector; - typedef Dune::FieldVector<Scalar, numPhases> PhasesVector; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(PrimaryVarVector)) PrimaryVarVector; + typedef Dune::FieldVector<Scalar, numPhases> PhasesVector; public: /*! * \brief Update all quantities for a given control volume. */ - void update(const PrimaryVarVector &sol, + void update(const PrimaryVarVector &priVars, + const Problem &problem, const Element &element, const FVElementGeometry &elemGeom, - int vertIdx, - const Problem &problem, + int scvIdx, bool isOldSol) { typedef Indices I; // vertex update data for the mass balance - ParentType::update(sol, + ParentType::update(priVars, + problem, element, elemGeom, - vertIdx, - problem, + scvIdx, isOldSol); // the internal energies and the enthalpies @@ -101,14 +101,14 @@ public: } // this method gets called by the parent class - void updateTemperature_(const PrimaryVarVector &sol, + void updateTemperature_(const PrimaryVarVector &priVars, const Element &element, const FVElementGeometry &elemGeom, - int scvIdx, + int scvIdx, const Problem &problem) { - // retrieve temperature from solution vector - this->temperature_ = sol[temperatureIdx]; + // retrieve temperature from primary variables + this->temperature_ = priVars[temperatureIdx]; heatCapacity_ = problem.spatialParameters().heatCapacity(element, elemGeom, scvIdx); diff --git a/test/boxmodels/2p2c/injectionproblem.hh b/test/boxmodels/2p2c/injectionproblem.hh index 1074765554fbc3e450c116779946a8071b927e3c..2b8b60ff421b88cd2833cdd0b8a192b02a7348a5 100644 --- a/test/boxmodels/2p2c/injectionproblem.hh +++ b/test/boxmodels/2p2c/injectionproblem.hh @@ -18,7 +18,7 @@ /** * @file * \ingroup TwoPTwoCBoxProblems - * @brief Definition of a problem, where air is injected under a low permeable layer + * @brief Definition of a problem, where air is injected under a low permeable layer * @author Klaus Mosthaf, Andreas Lauser, Bernd Flemisch */ #ifndef DUMUX_INJECTIONPROBLEM_HH @@ -62,8 +62,8 @@ SET_PROP(InjectionProblem, LocalFEMSpace) enum{dim = GridView::dimension}; public: - typedef Dune::PDELab::Q1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for cubes -// typedef Dune::PDELab::P1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for simplices + typedef Dune::PDELab::Q1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for cubes +// typedef Dune::PDELab::P1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for simplices }; #endif @@ -108,13 +108,13 @@ SET_INT_PROP(InjectionProblem, NewtonLinearSolverVerbosity, 0); * This problem uses the \ref TwoPTwoCBoxModel. */ template <class TypeTag = TTAG(InjectionProblem) > -class InjectionProblem : public TwoPTwoCBoxProblem<TypeTag, InjectionProblem<TypeTag> > +class InjectionProblem : public TwoPTwoCBoxProblem<TypeTag> { - typedef InjectionProblem<TypeTag> ThisType; - typedef TwoPTwoCBoxProblem<TypeTag, ThisType> ParentType; + typedef InjectionProblem<TypeTag> ThisType; + typedef TwoPTwoCBoxProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; enum { // Grid and world dimension @@ -135,18 +135,18 @@ class InjectionProblem : public TwoPTwoCBoxProblem<TypeTag, InjectionProblem<Typ contiGEqIdx = Indices::contiGEqIdx, }; - typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes)) SolutionTypes; - typedef typename SolutionTypes::PrimaryVarVector PrimaryVarVector; - typedef typename SolutionTypes::BoundaryTypeVector BoundaryTypeVector; - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(PrimaryVarVector)) PrimaryVarVector; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(BoundaryTypes)) BoundaryTypes; + + typedef typename GridView::template Codim<0>::Entity Element; + typedef typename GridView::template Codim<dim>::Entity Vertex; + typedef typename GridView::Intersection Intersection; typedef typename GET_PROP_TYPE(TypeTag, PTAG(FVElementGeometry)) FVElementGeometry; typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluidSystem)) FluidSystem; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; + typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; public: InjectionProblem(const GridView &gridView) @@ -177,7 +177,7 @@ public: */ Scalar temperature(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { return temperature_; }; @@ -193,12 +193,12 @@ public: * \brief Specifies which kind of boundary condition should be * used for which equation on a given boundary segment. */ - void boundaryTypes(BoundaryTypeVector &values, + void boundaryTypes(BoundaryTypes &values, const Element &element, const FVElementGeometry &fvElemGeom, const Intersection &is, - int scvIdx, - int boundaryFaceIdx) const + int scvIdx, + int boundaryFaceIdx) const { const GlobalPosition &globalPos = element.geometry().corner(scvIdx); @@ -218,8 +218,8 @@ public: const Element &element, const FVElementGeometry &fvElemGeom, const Intersection &is, - int scvIdx, - int boundaryFaceIdx) const + int scvIdx, + int boundaryFaceIdx) const { const GlobalPosition &globalPos = element.geometry().corner(scvIdx); @@ -238,8 +238,8 @@ public: const Element &element, const FVElementGeometry &fvElemGeom, const Intersection &is, - int scvIdx, - int boundaryFaceIdx) const + int scvIdx, + int boundaryFaceIdx) const { const GlobalPosition &globalPos = element.geometry().corner(scvIdx); @@ -268,7 +268,7 @@ public: void source(PrimaryVarVector &values, const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { values = Scalar(0.0); } @@ -282,7 +282,7 @@ public: void initial(PrimaryVarVector &values, const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { const GlobalPosition &globalPos = element.geometry().corner(scvIdx); diff --git a/test/boxmodels/2p2c/injectionspatialparameters.hh b/test/boxmodels/2p2c/injectionspatialparameters.hh index f0551db1d7763960e4f7ed4aad9d0caebf65f08d..d5ac9694c167fd02b6cbe10701116f5808904c81 100644 --- a/test/boxmodels/2p2c/injectionspatialparameters.hh +++ b/test/boxmodels/2p2c/injectionspatialparameters.hh @@ -32,11 +32,11 @@ namespace Dumux template<class TypeTag> class InjectionSpatialParameters : public BoxSpatialParameters<TypeTag> { - typedef BoxSpatialParameters<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Grid)) Grid; + typedef BoxSpatialParameters<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Grid)) Grid; typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; - typedef typename Grid::ctype CoordScalar; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef typename Grid::ctype CoordScalar; enum { dim=GridView::dimension, dimWorld=GridView::dimensionworld, @@ -48,19 +48,19 @@ class InjectionSpatialParameters : public BoxSpatialParameters<TypeTag> gPhaseIdx = FluidSystem::nPhaseIdx, }; - typedef Dune::FieldVector<CoordScalar,dim> LocalPosition; + typedef Dune::FieldVector<CoordScalar,dim> LocalPosition; typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; typedef Dune::FieldVector<CoordScalar,dimWorld> Vector; - typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes)) SolutionTypes; - typedef typename SolutionTypes::SolutionVector SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(VertexData)) VertexData; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluxData)) FluxData; - typedef std::vector<VertexData> VertexDataArray; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(SolutionVector)) SolutionVector; + + typedef typename GET_PROP_TYPE(TypeTag, PTAG(SecondaryVars)) SecondaryVars; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluxVars)) FluxVars; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(ElementSecondaryVars)) ElementSecondaryVars; typedef typename GET_PROP_TYPE(TypeTag, PTAG(FVElementGeometry)) FVElementGeometry; - typedef typename GridView::template Codim<0>::Entity Element; + typedef typename GridView::template Codim<0>::Entity Element; typedef RegularizedBrooksCorey<Scalar> EffMaterialLaw; //typedef LinearMaterial<Scalar> EffMaterialLaw; @@ -112,14 +112,14 @@ public: * \brief Apply the intrinsic permeability tensor to a pressure * potential gradient. * - * \param element The current finite element - * \param fvElemGeom The current finite volume geometry of the element - * \param scvfIdx The index sub-control volume face where the + * \param element The current finite element + * \param fvElemGeom The current finite volume geometry of the element + * \param scvfIdx The index sub-control volume face where the * intrinsic velocity ought to be calculated. */ const Scalar intrinsicPermeability(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global; if (isFineMaterial_(pos)) @@ -130,15 +130,15 @@ public: /*! * \brief Define the porosity \f$[-]\f$ of the soil * - * \param vDat The data defined on the sub-control volume - * \param element The finite element - * \param fvElemGeom The finite volume geometry - * \param scvIdx The local index of the sub-control volume where + * \param vDat The data defined on the sub-control volume + * \param element The finite element + * \param fvElemGeom The finite volume geometry + * \param scvIdx The local index of the sub-control volume where * the porosity needs to be defined */ double porosity(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global; if (isFineMaterial_(pos)) @@ -150,7 +150,7 @@ public: // return the brooks-corey context depending on the position const MaterialLawParams& materialLawParams(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { const GlobalPosition &pos = fvElemGeom.subContVol[scvIdx].global; if (isFineMaterial_(pos)) @@ -163,14 +163,14 @@ public: * * This is only required for non-isothermal models. * - * \param element The finite element - * \param fvElemGeom The finite volume geometry - * \param scvIdx The local index of the sub-control volume where + * \param element The finite element + * \param fvElemGeom The finite volume geometry + * \param scvIdx The local index of the sub-control volume where * the heat capacity needs to be defined */ double heatCapacity(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { return 790 // specific heat capacity of granite [J / (kg K)] @@ -184,20 +184,20 @@ public: * * This is only required for non-isothermal models. * - * \param heatFlux The result vector - * \param tempGrad The temperature gradient - * \param element The current finite element - * \param fvElemGeom The finite volume geometry of the current element - * \param scvfIdx The local index of the sub-control volume face where + * \param heatFlux The result vector + * \param tempGrad The temperature gradient + * \param element The current finite element + * \param fvElemGeom The finite volume geometry of the current element + * \param scvfIdx The local index of the sub-control volume face where * the matrix heat flux should be calculated */ void matrixHeatFlux(Vector &heatFlux, - const FluxData &fluxDat, - const VertexDataArray &vDat, + const FluxVars &fluxDat, + const ElementSecondaryVars &vDat, const Vector &tempGrad, const Element &element, const FVElementGeometry &fvElemGeom, - int scvfIdx) const + int scvfIdx) const { static const Scalar lWater = 0.6; static const Scalar lGranite = 2.8; diff --git a/test/boxmodels/2pni/injectionproblem2pni.hh b/test/boxmodels/2pni/injectionproblem2pni.hh index 9a6807df59051e2aa2ac64f2f8a5930890a124f0..d086ec78f91f95efa96ad3b61f6535fdff7d6a09 100644 --- a/test/boxmodels/2pni/injectionproblem2pni.hh +++ b/test/boxmodels/2pni/injectionproblem2pni.hh @@ -21,7 +21,7 @@ #include <dune/grid/io/file/dgfparser/dgfs.hh> #include <dune/grid/io/file/dgfparser/dgfyasp.hh> -#include <dumux/boxmodels/2pni/2pniboxmodel.hh> +#include <dumux/boxmodels/2pni/2pnimodel.hh> #include <dumux/material/fluidsystems/h2o_n2_system.hh> @@ -62,8 +62,8 @@ SET_PROP(InjectionProblem2PNI, LocalFEMSpace) enum{dim = GridView::dimension}; public: - typedef Dune::PDELab::Q1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for cubes -// typedef Dune::PDELab::P1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for simplices + typedef Dune::PDELab::Q1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for cubes +// typedef Dune::PDELab::P1LocalFiniteElementMap<Scalar,Scalar,dim> type; // for simplices }; // Set the problem property @@ -143,17 +143,15 @@ SET_BOOL_PROP(InjectionProblem2PNI, NewtonWriteConvergence, true); template<class TypeTag> class InjectionProblem2PNI #if !ISOTHERMAL - : public TwoPNIBoxProblem<TypeTag, - InjectionProblem2PNI<TypeTag> > + : public TwoPNIProblem<TypeTag> #else - : public TwoPNIBoxProblem<TypeTag, - InjectionProblem2PNI<TypeTag> > + : public TwoPNIProblem<TypeTag> #endif { - typedef InjectionProblem2PNI<TypeTag> ThisType; - typedef TwoPNIBoxProblem<TypeTag, ThisType> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; + typedef InjectionProblem2PNI<TypeTag> ThisType; + typedef TwoPNIProblem<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar; #if ISOTHERMAL typedef typename GET_PROP_TYPE(TypeTag, PTAG(TwoPIndices)) Indices; @@ -178,9 +176,10 @@ class InjectionProblem2PNI dimWorld = GridView::dimensionworld, }; - typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes)) SolutionTypes; - typedef typename SolutionTypes::PrimaryVarVector PrimaryVarVector; - typedef typename SolutionTypes::BoundaryTypeVector BoundaryTypeVector; + + typedef typename GET_PROP_TYPE(TypeTag, PTAG(PrimaryVarVector)) PrimaryVarVector; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(BoundaryTypes)) BoundaryTypes; + typedef typename GET_PROP_TYPE(TypeTag, PTAG(TimeManager)) TimeManager; typedef typename GridView::template Codim<0>::Entity Element; typedef typename GridView::template Codim<dim>::Entity Vertex; @@ -193,8 +192,8 @@ class InjectionProblem2PNI typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; public: - InjectionProblem2PNI(const GridView &grid) - : ParentType(grid) + InjectionProblem2PNI(TimeManager &timeManager, const GridView &gridView) + : ParentType(timeManager, gridView) { // initialize the tables of the fluid system FluidSystem::init(); @@ -224,7 +223,7 @@ public: * \brief Specifies which kind of boundary condition should be * used for which equation on a given boundary segment. */ - void boundaryTypes(BoundaryTypeVector &values, + void boundaryTypes(BoundaryTypes &values, const Element &element, const FVElementGeometry &fvElemGeom, const Intersection &is, @@ -306,7 +305,7 @@ public: */ Scalar temperature(const Element &element, const FVElementGeometry &fvElemGeom, - int scvIdx) const + int scvIdx) const { return 273.15 + 30; // [K] };