From 136063dadd13470a4dd643c7bfcf30fa87cad292 Mon Sep 17 00:00:00 2001 From: Thomas Fetzer <thomas.fetzer@iws.uni-stuttgart.de> Date: Wed, 3 Feb 2016 09:38:04 +0100 Subject: [PATCH] [multidomain] Implement todos A base problem on the model level was necessary --- .../2cnistokes2p2cni/localoperator.hh | 16 +- dumux/multidomain/2cnistokes2p2cni/problem.hh | 88 +++++++++ .../multidomain/2cstokes2p2c/localoperator.hh | 71 ++------ dumux/multidomain/2cstokes2p2c/problem.hh | 172 ++++++++++++++++++ .../2cnistokes2p2cniproblem.hh | 36 ++-- .../2cnistokes2p2cni/test_2cnistokes2p2cni.cc | 2 +- .../2cnizeroeq2p2cniproblem.hh | 37 ++-- .../2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc | 2 +- .../2cstokes2p2c/2cstokes2p2cproblem.hh | 38 ++-- .../2cstokes2p2c/test_2cstokes2p2c.cc | 2 +- .../2czeroeq2p2c/2czeroeq2p2cproblem.hh | 34 ++-- .../2czeroeq2p2c/test_2czeroeq2p2c.cc | 2 +- 12 files changed, 354 insertions(+), 146 deletions(-) create mode 100644 dumux/multidomain/2cnistokes2p2cni/problem.hh create mode 100644 dumux/multidomain/2cstokes2p2c/problem.hh diff --git a/dumux/multidomain/2cnistokes2p2cni/localoperator.hh b/dumux/multidomain/2cnistokes2p2cni/localoperator.hh index 343d17ff06..5a1a653248 100644 --- a/dumux/multidomain/2cnistokes2p2cni/localoperator.hh +++ b/dumux/multidomain/2cnistokes2p2cni/localoperator.hh @@ -263,7 +263,7 @@ public: // conductive energy flux Scalar conductiveFlux = bfNormal1.two_norm() - * evalBoundaryLayerTemperatureGradient(cParams, vertInElem1) + * this->globalProblem().evalBoundaryLayerTemperatureGradient(cParams, vertInElem1) * (boundaryVars1.thermalConductivity() + boundaryVars1.thermalEddyConductivity()); @@ -275,11 +275,11 @@ public: if (compIdx != phaseCompIdx1) { Scalar diffusiveFlux = bfNormal1.two_norm() - * ParentType::evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) + * this->globalProblem().evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) * (boundaryVars1.diffusionCoeff(compIdx) + boundaryVars1.eddyDiffusivity()) * boundaryVars1.molarDensity() - * ParentType::evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); + * this->globalProblem().evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); sumDiffusiveFluxes += diffusiveFlux; sumDiffusiveEnergyFlux += diffusiveFlux * boundaryVars1.componentEnthalpy(compIdx) @@ -518,20 +518,14 @@ public: /*! * \brief Returns the temperature gradient through the boundary layer * - * \todo This function could be moved to a more model specific place, because - * of its runtime parameters. - * * \param cParams a parameter container * \param scvIdx The local index of the sub-control volume of the Stokes domain */ template<typename CParams> + DUNE_DEPRECATED_MSG("evalBoundaryLayerTemperatureGradient() is deprecated.") Scalar evalBoundaryLayerTemperatureGradient(CParams cParams, const int scvIdx) const { - const Scalar temperatureOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - Scalar normalTemperatureGrad = cParams.elemVolVarsCur1[scvIdx].temperature() - - temperatureOut; - return normalTemperatureGrad - / ParentType::evalBoundaryLayerModel(cParams, scvIdx).thermalBoundaryLayerThickness(); + this->globalProblem().evalBoundaryLayerTemperatureGradient(cParams, scvIdx); } }; } // end namespace Dumux diff --git a/dumux/multidomain/2cnistokes2p2cni/problem.hh b/dumux/multidomain/2cnistokes2p2cni/problem.hh new file mode 100644 index 0000000000..05e2420fc5 --- /dev/null +++ b/dumux/multidomain/2cnistokes2p2cni/problem.hh @@ -0,0 +1,88 @@ +// -*- 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 The problem class for the coupling of a non-isothermal two-component Stokes + * and a non-isothermal two-phase two-component Darcy model. + */ + +#ifndef DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH +#define DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH + +#include <dumux/freeflow/stokesncni/properties.hh> +#include <dumux/multidomain/2cstokes2p2c/problem.hh> +#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> + +#include "properties.hh" + +namespace Dumux +{ + +/*! + * \ingroup TwoPTwoCNIStokesTwoCNIModel + * \ingroup TwoPTwoCNIZeroEqTwoCNIModel + * \brief The problem class for the coupling of a non-isothermal two-component Stokes + * and a non-isothermal two-phase two-component Darcy model. + */ +template <class TypeTag> +class TwoCNIStokesTwoPTwoCNIProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> +{ + typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation; + + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; + +public: + //! The constructor + template<class GridView> + TwoCNIStokesTwoPTwoCNIProblem(TimeManager &timeManager, + GridView gridView) + : ParentType(timeManager, gridView) + { } + + /*! + * \brief Returns the temperature gradient through the boundary layer + * + * \param cParams a parameter container + * \param scvIdx1 The local index of the sub-control volume of the Stokes domain + */ + template<typename CParams> + Scalar evalBoundaryLayerTemperatureGradient(CParams cParams, const int scvIdx) const + { + const Scalar temperatureOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); + Scalar normalTemperatureGrad = cParams.elemVolVarsCur1[scvIdx].temperature() + - temperatureOut; + return normalTemperatureGrad + / asImp_().evalBoundaryLayerModel(cParams, scvIdx).thermalBoundaryLayerThickness(); + } + +private: + //! Returns the implementation of the problem (i.e. static polymorphism) + Implementation &asImp_() + { return *static_cast<Implementation *>(this); } + + //! \copydoc asImp_() + const Implementation &asImp_() const + { return *static_cast<const Implementation *>(this); } +}; + +} // namespace Dumux + +#endif // DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH diff --git a/dumux/multidomain/2cstokes2p2c/localoperator.hh b/dumux/multidomain/2cstokes2p2c/localoperator.hh index 3232b9998b..24ff32f4b0 100644 --- a/dumux/multidomain/2cstokes2p2c/localoperator.hh +++ b/dumux/multidomain/2cstokes2p2c/localoperator.hh @@ -32,13 +32,13 @@ #include <dune/pdelab/localoperator/pattern.hh> #include <dune/pdelab/localoperator/idefault.hh> -#include <dumux/multidomain/properties.hh> -#include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> #include <dumux/freeflow/boundarylayermodel.hh> #include <dumux/freeflow/masstransfermodel.hh> #include <dumux/freeflow/stokesnc/model.hh> +#include <dumux/multidomain/properties.hh> #include <dumux/porousmediumflow/2p2c/implicit/model.hh> +#include "propertydefaults.hh" namespace Dumux { @@ -559,13 +559,13 @@ public: * cParams.elemVolVarsCur1[vertInElem1].massFraction(transportCompIdx1); Scalar diffusiveFlux = bfNormal1.two_norm() - * evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) + * globalProblem_.evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) * (boundaryVars1.diffusionCoeff(transportCompIdx1) + boundaryVars1.eddyDiffusivity()) * boundaryVars1.molarDensity() * FluidSystem::molarMass(transportCompIdx1); - const Scalar massTransferCoeff = evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); + const Scalar massTransferCoeff = globalProblem_.evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); if (massTransferModel_ && globalProblem_.sdProblem1().isCornerPoint(globalPos1)) { @@ -695,7 +695,7 @@ public: { const Scalar diffusiveFlux = bfNormal1.two_norm() - * evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) + * globalProblem_.evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) * (boundaryVars1.diffusionCoeff(transportCompIdx1) + boundaryVars1.eddyDiffusivity()) * boundaryVars1.molarDensity() @@ -703,7 +703,7 @@ public: Scalar advectiveFlux = normalMassFlux * cParams.elemVolVarsCur1[vertInElem1].massFraction(transportCompIdx1); - const Scalar massTransferCoeff = evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); + const Scalar massTransferCoeff = globalProblem_.evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); if (globalProblem_.sdProblem1().isCornerPoint(globalPos1) && massTransferModel_) { @@ -887,88 +887,41 @@ public: /*! * \brief Returns a BoundaryLayerModel object * - * This function is reused in Child LocalOperators and used for extracting - * the respective boundary layer thickness.<br> - * \todo This function could be moved to a more model specific place, because - * of its runtime parameters. - * * \param cParams a parameter container * \param scvIdx1 The local index of the sub-control volume of the Stokes domain */ template<typename CParams> + DUNE_DEPRECATED_MSG("evalBoundaryLayerModel() is deprecated.") BoundaryLayerModel<TypeTag> evalBoundaryLayerModel(CParams cParams, const int scvIdx1) const { - // current position + additional virtual runup distance - const Scalar distance = cParams.fvGeometry1.subContVol[scvIdx1].global[0] - + GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, Offset); - BoundaryLayerModel<TypeTag> boundaryLayerModel(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity), - distance, - cParams.elemVolVarsCur1[scvIdx1].kinematicViscosity(), - blModel_); - if (blModel_ == 1) - boundaryLayerModel.setConstThickness(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, ConstThickness)); - if (blModel_ >= 4) - boundaryLayerModel.setYPlus(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, YPlus)); - if (blModel_ >= 5) - boundaryLayerModel.setRoughnessLength(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, RoughnessLength)); - if (blModel_ == 7) - boundaryLayerModel.setHydraulicDiameter(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, HydraulicDiameter)); - - return boundaryLayerModel; + globalProblem().evalBoundaryLayerModel(cParams, cParams); } /*! * \brief Returns the concentration gradient through the boundary layer * - * \todo This function could be moved to a more model specific place, because - * of its runtime parameters. - * * \param cParams a parameter container * \param scvIdx1 The local index of the sub-control volume of the Stokes domain */ template<typename CParams> + DUNE_DEPRECATED_MSG("evalBoundaryLayerConcentrationGradient() is deprecated.") Scalar evalBoundaryLayerConcentrationGradient(CParams cParams, const int scvIdx1) const { - static_assert(numComponents1 == 2, - "This coupling condition is only implemented for two components."); - Scalar massFractionOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - Scalar M1 = FluidSystem::molarMass(transportCompIdx1); - Scalar M2 = FluidSystem::molarMass(phaseCompIdx1); - Scalar X2 = 1.0 - massFractionOut; - Scalar massToMoleDenominator = M2 + X2*(M1 - M2); - Scalar moleFractionOut = massFractionOut * M2 /massToMoleDenominator; - - Scalar normalMoleFracGrad = cParams.elemVolVarsCur1[scvIdx1].moleFraction(transportCompIdx1) - - moleFractionOut; - return normalMoleFracGrad / evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(); + globalProblem().evalBoundaryLayerConcentrationGradient(cParams, scvIdx1); } /*! * \brief Returns the mass transfer coefficient * - * This function is reused in Child LocalOperators. - * \todo This function could be moved to a more model specific place, because - * of its runtime parameters. - * * \param cParams a parameter container * \param scvIdx1 The local index of the sub-control volume of the Stokes domain * \param scvIdx2 The local index of the sub-control volume of the Darcy domain */ template<typename CParams> + DUNE_DEPRECATED_MSG("evalMassTransferCoefficient() is deprecated.") Scalar evalMassTransferCoefficient(CParams cParams, const int scvIdx1, const int scvIdx2) const { - MassTransferModel<TypeTag> massTransferModel(cParams.elemVolVarsCur2[scvIdx2].saturation(wPhaseIdx2), - cParams.elemVolVarsCur2[scvIdx2].porosity(), - evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(), - massTransferModel_); - if (massTransferModel_ == 1) - massTransferModel.setMassTransferCoeff(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, Coefficient)); - if (massTransferModel_ == 2 || massTransferModel_ == 4) - massTransferModel.setCharPoreRadius(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, CharPoreRadius)); - if (massTransferModel_ == 3) - massTransferModel.setCapillaryPressure(cParams.elemVolVarsCur2[scvIdx2].capillaryPressure()); - - return massTransferModel.massTransferCoefficient(); + globalProblem().evalMassTransferCoefficient(cParams, scvIdx1, scvIdx2); } protected: diff --git a/dumux/multidomain/2cstokes2p2c/problem.hh b/dumux/multidomain/2cstokes2p2c/problem.hh new file mode 100644 index 0000000000..f6739e16df --- /dev/null +++ b/dumux/multidomain/2cstokes2p2c/problem.hh @@ -0,0 +1,172 @@ +// -*- 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 The problem class for the coupling of a isothermal two-component Stokes + * and a isothermal two-phase two-component Darcy model. + */ + +#ifndef DUMUX_2C_STOKES_2P2C_PROBLEM_HH +#define DUMUX_2C_STOKES_2P2C_PROBLEM_HH + +#include <dumux/freeflow/boundarylayermodel.hh> +#include <dumux/freeflow/masstransfermodel.hh> +#include <dumux/freeflow/stokesnc/properties.hh> +#include <dumux/multidomain/problem.hh> +#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> + +#include "properties.hh" + +namespace Dumux +{ + +/*! + * \ingroup TwoPTwoCStokesTwoCModel + * \ingroup TwoPTwoCZeroEqTwoCModel + * \brief The problem class for the coupling of a isothermal two-component Stokes + * and a isothermal two-phase two-component Darcy model. + */ +template <class TypeTag> +class TwoCStokesTwoPTwoCProblem : public MultiDomainProblem<TypeTag> +{ + typedef MultiDomainProblem<TypeTag> ParentType; + typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation; + + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; + typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; + + typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cTypeTag; + typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TwoPTwoCTypeTag; + typedef typename GET_PROP_TYPE(Stokes2cTypeTag, Indices) Stokes2cIndices; + typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, Indices) TwoPTwoCIndices; + + // Stokes + enum { numComponents1 = Stokes2cIndices::numComponents }; + enum { // component indices + transportCompIdx1 = Stokes2cIndices::transportCompIdx, //!< Index of transported component + phaseCompIdx1 = Stokes2cIndices::phaseCompIdx //!< Index of main component of the phase + }; + // Darcy + enum { // phase indices + wPhaseIdx2 = TwoPTwoCIndices::wPhaseIdx, //!< Index for the liquid phase + }; + +public: + //! The constructor + template<class GridView> + TwoCStokesTwoPTwoCProblem(TimeManager &timeManager, + GridView gridView) + : ParentType(timeManager, gridView) + { + blModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, BoundaryLayer, Model); + massTransferModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, MassTransfer, Model); + } + + /*! + * \brief Returns a BoundaryLayerModel object + * + * \param cParams a parameter container + * \param scvIdx1 The local index of the sub-control volume of the Stokes domain + */ + template<typename CParams> + BoundaryLayerModel<TypeTag> evalBoundaryLayerModel(CParams cParams, const int scvIdx1) const + { + // current position + additional virtual runup distance + const Scalar distance = cParams.fvGeometry1.subContVol[scvIdx1].global[0] + + GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, Offset); + BoundaryLayerModel<TypeTag> boundaryLayerModel(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity), + distance, + cParams.elemVolVarsCur1[scvIdx1].kinematicViscosity(), + blModel_); + if (blModel_ == 1) + boundaryLayerModel.setConstThickness(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, ConstThickness)); + if (blModel_ >= 4) + boundaryLayerModel.setYPlus(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, YPlus)); + if (blModel_ >= 5) + boundaryLayerModel.setRoughnessLength(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, RoughnessLength)); + if (blModel_ == 7) + boundaryLayerModel.setHydraulicDiameter(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, HydraulicDiameter)); + + return boundaryLayerModel; + } + + /*! + * \brief Returns the concentration gradient through the boundary layer + * + * \param cParams a parameter container + * \param scvIdx1 The local index of the sub-control volume of the Stokes domain + */ + template<typename CParams> + Scalar evalBoundaryLayerConcentrationGradient(CParams cParams, const int scvIdx1) const + { + static_assert(numComponents1 == 2, + "This coupling condition is only implemented for two components."); + Scalar massFractionOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); + Scalar M1 = FluidSystem::molarMass(transportCompIdx1); + Scalar M2 = FluidSystem::molarMass(phaseCompIdx1); + Scalar X2 = 1.0 - massFractionOut; + Scalar massToMoleDenominator = M2 + X2*(M1 - M2); + Scalar moleFractionOut = massFractionOut * M2 /massToMoleDenominator; + + Scalar normalMoleFracGrad = cParams.elemVolVarsCur1[scvIdx1].moleFraction(transportCompIdx1) + - moleFractionOut; + return normalMoleFracGrad / asImp_().evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(); + } + + /*! + * \brief Returns the mass transfer coefficient + * + * \param cParams a parameter container + * \param scvIdx1 The local index of the sub-control volume of the Stokes domain + * \param scvIdx1 The local index of the sub-control volume of the Darcy domain + */ + template<typename CParams> + Scalar evalMassTransferCoefficient(CParams cParams, const int scvIdx1, const int scvIdx2) const + { + MassTransferModel<TypeTag> massTransferModel(cParams.elemVolVarsCur2[scvIdx2].saturation(wPhaseIdx2), + cParams.elemVolVarsCur2[scvIdx2].porosity(), + asImp_().evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(), + massTransferModel_); + if (massTransferModel_ == 1) + massTransferModel.setMassTransferCoeff(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, Coefficient)); + if (massTransferModel_ == 2 || massTransferModel_ == 4) + massTransferModel.setCharPoreRadius(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, CharPoreRadius)); + if (massTransferModel_ == 3) + massTransferModel.setCapillaryPressure(cParams.elemVolVarsCur2[scvIdx2].capillaryPressure()); + + return massTransferModel.massTransferCoefficient(); + } + +private: + //! Returns the implementation of the problem (i.e. static polymorphism) + Implementation &asImp_() + { return *static_cast<Implementation *>(this); } + + //! \copydoc asImp_() + const Implementation &asImp_() const + { return *static_cast<const Implementation *>(this); } + + unsigned int blModel_; + unsigned int massTransferModel_; +}; + +} // namespace Dumux + +#endif // DUMUX_2C_STOKES_2P2C_PROBLEM_HH diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh index b05808c40d..4fb12df0b4 100644 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh @@ -38,8 +38,8 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> +#include <dumux/multidomain/2cnistokes2p2cni/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> #include <dumux/linear/seqsolverbackend.hh> @@ -53,29 +53,29 @@ namespace Dumux { template <class TypeTag> -class TwoCNIStokesTwoPTwoCNIProblem; +class TwoCNIStokesTwoPTwoCNITestProblem; namespace Properties { -NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNIProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); +NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNITestProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); // Set the grid type -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); // Set the global problem -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, Problem, TwoCNIStokesTwoPTwoCNIProblem<TypeTag>); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, Problem, TwoCNIStokesTwoPTwoCNITestProblem<TypeTag>); // Set the local coupling operator -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, MultiDomainCouplingLocalOperator, +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, MultiDomainCouplingLocalOperator, Dumux::TwoCNIStokesTwoPTwoCNILocalOperator<TypeTag>); // Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, SubDomain1TypeTag, TTAG(Stokes2cniSubProblem)); -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, SubDomain1TypeTag, TTAG(Stokes2cniSubProblem)); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); // Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(Stokes2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNIProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNIProblem)); +SET_TYPE_PROP(Stokes2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNITestProblem)); +SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNITestProblem)); // Set the other sub-problem for each of the two sub-problems SET_TYPE_PROP(Stokes2cniSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCNISubProblem)); @@ -85,14 +85,14 @@ SET_TYPE_PROP(TwoPTwoCNISubProblem, OtherSubDomainTypeTag, TTAG(Stokes2cniSubPro SET_TYPE_PROP(TwoPTwoCNISubProblem, SpatialParams, Dumux::TwoCNIStokesTwoPTwoCNISpatialParams<TypeTag>); // Set the fluid system to use complex relations (last argument) -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, FluidSystem, +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, FluidSystem, FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar), Dumux::H2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, true>); #ifdef HAVE_PARDISO -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, PardisoBackend<TypeTag>); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, LinearSolver, PardisoBackend<TypeTag>); #else -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, SuperLUBackend<TypeTag>); +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, LinearSolver, SuperLUBackend<TypeTag>); #endif // HAVE_PARDISO } @@ -109,11 +109,11 @@ SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, SuperLUBackend<TypeTa * The initial and boundary conditions of the submodels are specified in the two subproblems, * 2p2cnisubproblem.hh and stokes2cnisubproblem.hh, which are accessible via the coupled problem. */ -template <class TypeTag = TTAG(TwoCNIStokesTwoPTwoCNIProblem) > -class TwoCNIStokesTwoPTwoCNIProblem : public MultiDomainProblem<TypeTag> +template <class TypeTag = TTAG(TwoCNIStokesTwoPTwoCNITestProblem) > +class TwoCNIStokesTwoPTwoCNITestProblem : public TwoCNIStokesTwoPTwoCNIProblem<TypeTag> { - typedef TwoCNIStokesTwoPTwoCNIProblem<TypeTag> ThisType; - typedef MultiDomainProblem<TypeTag> ParentType; + typedef TwoCNIStokesTwoPTwoCNITestProblem<TypeTag> ThisType; + typedef TwoCNIStokesTwoPTwoCNIProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; @@ -134,7 +134,7 @@ public: * \param gridView The grid view */ template<class GridView> - TwoCNIStokesTwoPTwoCNIProblem(TimeManager &timeManager, + TwoCNIStokesTwoPTwoCNITestProblem(TimeManager &timeManager, GridView gridView) : ParentType(timeManager, gridView) { diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc index 80b9a87672..3718717de8 100644 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc +++ b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc @@ -69,7 +69,7 @@ void printUsage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { #if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCNIStokesTwoPTwoCNIProblem) ProblemTypeTag; + typedef TTAG(TwoCNIStokesTwoPTwoCNITestProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); #else #warning "You need to have SuperLU or UMFPack installed to run this test." diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh index e30ffb212e..600bfa4874 100644 --- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh +++ b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh @@ -29,8 +29,8 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> +#include <dumux/multidomain/2cnistokes2p2cni/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> #include "2cnizeroeq2p2cnispatialparameters.hh" @@ -40,29 +40,29 @@ namespace Dumux { template <class TypeTag> -class TwoCNIZeroEqTwoPTwoCNIProblem; +class TwoCNIZeroEqTwoPTwoCNITestProblem; namespace Properties { -NEW_TYPE_TAG(TwoCNIZeroEqTwoPTwoCNIProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); +NEW_TYPE_TAG(TwoCNIZeroEqTwoPTwoCNITestProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); // Set the grid type -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); // Set the global problem -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, Problem, TwoCNIZeroEqTwoPTwoCNIProblem<TypeTag>); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, Problem, TwoCNIZeroEqTwoPTwoCNITestProblem<TypeTag>); // Set the local coupling operator -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, MultiDomainCouplingLocalOperator, +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, MultiDomainCouplingLocalOperator, Dumux::TwoCNIStokesTwoPTwoCNILocalOperator<TypeTag>); // Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, SubDomain1TypeTag, TTAG(ZeroEq2cniSubProblem)); -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, SubDomain1TypeTag, TTAG(ZeroEq2cniSubProblem)); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); // Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(ZeroEq2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNIProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNIProblem)); +SET_TYPE_PROP(ZeroEq2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem)); +SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem)); // Set the other sub-problem for each of the two sub-problems SET_TYPE_PROP(ZeroEq2cniSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCNISubProblem)); @@ -72,15 +72,15 @@ SET_TYPE_PROP(TwoPTwoCNISubProblem, OtherSubDomainTypeTag, TTAG(ZeroEq2cniSubPro SET_TYPE_PROP(TwoPTwoCNISubProblem, SpatialParams, Dumux::TwoCNIZeroEqTwoPTwoCNISpatialParams<TypeTag>); // Set the fluid system to use complex relations (last argument) -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, FluidSystem, +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, FluidSystem, FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar), Dumux::H2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, true>); // If SuperLU is not available, the UMFPack solver is used: #ifdef HAVE_SUPERLU -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, LinearSolver, SuperLUBackend<TypeTag>); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, LinearSolver, SuperLUBackend<TypeTag>); #else -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, LinearSolver, UMFPackBackend<TypeTag>); +SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, LinearSolver, UMFPackBackend<TypeTag>); #endif } @@ -95,10 +95,11 @@ SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNIProblem, LinearSolver, UMFPackBackend<TypeTa * The initial and boundary conditions of the submodels are specified in the two subproblems, * 2p2csubproblem.hh and zeroeq2csubproblem.hh, which are accessible via the coupled problem. */ -template <class TypeTag = TTAG(TwoCNIZeroEqTwoPTwoCNIProblem) > -class TwoCNIZeroEqTwoPTwoCNIProblem : public MultiDomainProblem<TypeTag> +template <class TypeTag = TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem) > +class TwoCNIZeroEqTwoPTwoCNITestProblem : public TwoCNIStokesTwoPTwoCNIProblem<TypeTag> { - typedef MultiDomainProblem<TypeTag> ParentType; + typedef TwoCNIZeroEqTwoPTwoCNITestProblem<TypeTag> ThisType; + typedef TwoCNIStokesTwoPTwoCNIProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; @@ -119,8 +120,8 @@ public: * \param gridView The grid view */ template<class GridView> - TwoCNIZeroEqTwoPTwoCNIProblem(TimeManager &timeManager, - GridView gridView) + TwoCNIZeroEqTwoPTwoCNITestProblem(TimeManager &timeManager, + GridView gridView) : ParentType(timeManager, gridView) { dtInit_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, DtInitial); diff --git a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc b/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc index a8928e576e..d7d4d24f70 100644 --- a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc +++ b/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc @@ -104,7 +104,7 @@ void printUsage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { #if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCNIZeroEqTwoPTwoCNIProblem) ProblemTypeTag; + typedef TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); #else #warning "You need to have SuperLU or UMFPack installed to run this test." diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh index 391d3a6933..d38dd88f0a 100644 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh +++ b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh @@ -38,8 +38,8 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cstokes2p2c/localoperator.hh> +#include <dumux/multidomain/2cstokes2p2c/problem.hh> #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> #ifdef HAVE_PARDISO @@ -53,29 +53,29 @@ namespace Dumux { template <class TypeTag> -class TwoCStokesTwoPTwoCProblem; +class TwoCStokesTwoPTwoCTestProblem; namespace Properties { -NEW_TYPE_TAG(TwoCStokesTwoPTwoCProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); +NEW_TYPE_TAG(TwoCStokesTwoPTwoCTestProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); // Set the grid type -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); // Set the global problem -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, Problem, Dumux::TwoCStokesTwoPTwoCProblem<TypeTag>); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, Problem, Dumux::TwoCStokesTwoPTwoCTestProblem<TypeTag>); // Set the local coupling operator -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, MultiDomainCouplingLocalOperator, +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, MultiDomainCouplingLocalOperator, Dumux::TwoCStokesTwoPTwoCLocalOperator<TypeTag>); // Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, SubDomain1TypeTag, TTAG(Stokes2cSubProblem)); -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, SubDomain1TypeTag, TTAG(Stokes2cSubProblem)); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); // Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(Stokes2cSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCProblem)); +SET_TYPE_PROP(Stokes2cSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCTestProblem)); +SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCTestProblem)); // Set the other sub-problem for each of the two sub-problems SET_TYPE_PROP(Stokes2cSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCSubProblem)); @@ -85,15 +85,15 @@ SET_TYPE_PROP(TwoPTwoCSubProblem, OtherSubDomainTypeTag, TTAG(Stokes2cSubProblem SET_TYPE_PROP(TwoPTwoCSubProblem, SpatialParams, Dumux::TwoCStokesTwoPTwoCSpatialParams<TypeTag>); // Set the fluid system to use simple relations (last argument) -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, FluidSystem, +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, FluidSystem, FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar), Dumux::H2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, false>); // if you do not have PARDISO, the SuperLU solver is used: #ifdef HAVE_PARDISO -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, LinearSolver, PardisoBackend<TypeTag>); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, LinearSolver, PardisoBackend<TypeTag>); #else -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, LinearSolver, SuperLUBackend<TypeTag>); +SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, LinearSolver, SuperLUBackend<TypeTag>); #endif // HAVE_PARDISO } @@ -110,11 +110,11 @@ SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, LinearSolver, SuperLUBackend<TypeTag>); * The initial and boundary conditions of the submodels are specified in the two subproblems, * 2p2csubproblem.hh and stokes2csubproblem.hh, which are accessible via the coupled problem. */ -template <class TypeTag = TTAG(TwoCStokesTwoPTwoCProblem) > -class TwoCStokesTwoPTwoCProblem : public MultiDomainProblem<TypeTag> +template <class TypeTag = TTAG(TwoCStokesTwoPTwoCTestProblem) > +class TwoCStokesTwoPTwoCTestProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> { - typedef TwoCStokesTwoPTwoCProblem<TypeTag> ThisType; - typedef MultiDomainProblem<TypeTag> ParentType; + typedef TwoCStokesTwoPTwoCTestProblem<TypeTag> ThisType; + typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; @@ -134,8 +134,8 @@ public: * \param gridView The grid view */ template<class GridView> - TwoCStokesTwoPTwoCProblem(TimeManager &timeManager, - GridView gridView) + TwoCStokesTwoPTwoCTestProblem(TimeManager &timeManager, + GridView gridView) : ParentType(timeManager, gridView) { interfacePosY_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc index 9220752005..e9deb26bca 100644 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc +++ b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc @@ -69,7 +69,7 @@ void printUsage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { #if (HAVE_SUPERLU || HAVE_PARDISO) - typedef TTAG(TwoCStokesTwoPTwoCProblem) ProblemTypeTag; + typedef TTAG(TwoCStokesTwoPTwoCTestProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); #else #warning "You need to have SuperLU or Pardiso installed to run this test." diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh index d5dea14c09..fa52a61140 100644 --- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh +++ b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh @@ -29,8 +29,8 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cstokes2p2c/localoperator.hh> +#include <dumux/multidomain/2cstokes2p2c/problem.hh> #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> #include "2czeroeq2p2cspatialparameters.hh" @@ -40,29 +40,29 @@ namespace Dumux { template <class TypeTag> -class TwoCZeroEqTwoPTwoCProblem; +class TwoCZeroEqTwoPTwoCTestProblem; namespace Properties { -NEW_TYPE_TAG(TwoCZeroEqTwoPTwoCProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); +NEW_TYPE_TAG(TwoCZeroEqTwoPTwoCTestProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); // Set the grid type -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); // Set the global problem -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, Problem, TwoCZeroEqTwoPTwoCProblem<TypeTag>); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, Problem, TwoCZeroEqTwoPTwoCTestProblem<TypeTag>); // Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, SubDomain1TypeTag, TTAG(ZeroEq2cSubProblem)); -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, SubDomain1TypeTag, TTAG(ZeroEq2cSubProblem)); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); // Set the local coupling operator -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, MultiDomainCouplingLocalOperator, +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, MultiDomainCouplingLocalOperator, Dumux::TwoCStokesTwoPTwoCLocalOperator<TypeTag>); // Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(ZeroEq2cSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCProblem)); +SET_TYPE_PROP(ZeroEq2cSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCTestProblem)); +SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCTestProblem)); // Set the other sub-problem for each of the two sub-problems SET_TYPE_PROP(ZeroEq2cSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCSubProblem)); @@ -72,15 +72,15 @@ SET_TYPE_PROP(TwoPTwoCSubProblem, OtherSubDomainTypeTag, TTAG(ZeroEq2cSubProblem SET_TYPE_PROP(TwoPTwoCSubProblem, SpatialParams, Dumux::TwoCZeroEqTwoPTwoCSpatialParams<TypeTag>); // Set the fluid system to use simple relations (last argument) -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, FluidSystem, +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, FluidSystem, FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar), Dumux::H2O<typename GET_PROP_TYPE(TypeTag, Scalar)>, false>); // If SuperLU is not available, the UMFPack solver is used: #ifdef HAVE_SUPERLU -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, LinearSolver, SuperLUBackend<TypeTag>); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, LinearSolver, SuperLUBackend<TypeTag>); #else -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, LinearSolver, UMFPackBackend<TypeTag>); +SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, LinearSolver, UMFPackBackend<TypeTag>); #endif } @@ -95,10 +95,10 @@ SET_TYPE_PROP(TwoCZeroEqTwoPTwoCProblem, LinearSolver, UMFPackBackend<TypeTag>); * The initial and boundary conditions of the submodels are specified in the two subproblems, * 2p2csubproblem.hh and zeroeq2csubproblem.hh, which are accessible via the coupled problem. */ -template <class TypeTag = TTAG(TwoCZeroEqTwoPTwoCProblem) > -class TwoCZeroEqTwoPTwoCProblem : public MultiDomainProblem<TypeTag> +template <class TypeTag = TTAG(TwoCZeroEqTwoPTwoCTestProblem) > +class TwoCZeroEqTwoPTwoCTestProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> { - typedef MultiDomainProblem<TypeTag> ParentType; + typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; @@ -119,7 +119,7 @@ public: * \param gridView The grid view */ template<class GridView> - TwoCZeroEqTwoPTwoCProblem(TimeManager &timeManager, + TwoCZeroEqTwoPTwoCTestProblem(TimeManager &timeManager, GridView gridView) : ParentType(timeManager, gridView) { diff --git a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc b/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc index a43adecf2b..4f006e2b35 100644 --- a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc +++ b/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc @@ -94,7 +94,7 @@ void printUsage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { #if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCZeroEqTwoPTwoCProblem) ProblemTypeTag; + typedef TTAG(TwoCZeroEqTwoPTwoCTestProblem) ProblemTypeTag; return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); #else #warning "You need to have SuperLU or UMFPack installed to run this test." -- GitLab