diff --git a/dumux/multidomain/2cstokes2p2c/localoperator.hh b/dumux/multidomain/2cstokes2p2c/localoperator.hh index b1ad103c9f13673b5d9f09e4355d1f7c95e9dc47..ba5f07097063a56082e0e8c6fca705bdbfb1374f 100644 --- a/dumux/multidomain/2cstokes2p2c/localoperator.hh +++ b/dumux/multidomain/2cstokes2p2c/localoperator.hh @@ -32,7 +32,7 @@ #include <dune/pdelab/localoperator/pattern.hh> #include <dune/pdelab/localoperator/idefault.hh> -#include <dumux/multidomain/common/properties.hh> +#include <dumux/multidomain/properties.hh> #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> #include <dumux/freeflow/boundarylayermodel.hh> #include <dumux/freeflow/masstransfermodel.hh> diff --git a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh b/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh index 712cf33479a3425e96ea0d8e9659a56ff49c4e04..51b47acc3f43a66d16c1216ff3c4007802269e0d 100644 --- a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh +++ b/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh @@ -24,7 +24,7 @@ #ifndef DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH #define DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH -#include <dumux/multidomain/common/newtoncontroller.hh> +#include <dumux/multidomain/newtoncontroller.hh> namespace Dumux { diff --git a/dumux/multidomain/2cstokes2p2c/properties.hh b/dumux/multidomain/2cstokes2p2c/properties.hh index 6ca47f6bce33334e7bd7879eaae0a2e3b7cb1d5b..36330a143e4838836ad6abca6b7efdb161f079df 100644 --- a/dumux/multidomain/2cstokes2p2c/properties.hh +++ b/dumux/multidomain/2cstokes2p2c/properties.hh @@ -28,7 +28,7 @@ #ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH #define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH -#include <dumux/multidomain/common/propertydefaults.hh> +#include <dumux/multidomain/propertydefaults.hh> namespace Dumux { diff --git a/dumux/multidomain/common/assembler.hh b/dumux/multidomain/assembler.hh similarity index 100% rename from dumux/multidomain/common/assembler.hh rename to dumux/multidomain/assembler.hh diff --git a/dumux/multidomain/boxcouplinglocalresidual.hh b/dumux/multidomain/boxcouplinglocalresidual.hh new file mode 100644 index 0000000000000000000000000000000000000000..651e50a1a67452bff4a67ef40e2aef8e5243dfee --- /dev/null +++ b/dumux/multidomain/boxcouplinglocalresidual.hh @@ -0,0 +1,224 @@ +// -*- 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 Element-wise calculation of the Jacobian matrix for problems + * using the coupled box model. + */ +#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH +#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH + +#include <dune/common/deprecated.hh> + +#include <dumux/implicit/box/localresidual.hh> + +namespace Dumux +{ +/*! + * \ingroup ImplicitLocalResidual + * \ingroup TwoPTwoCNIStokesTwoCNIModel + * \ingroup TwoPTwoCNIZeroEqTwoCNIModel + * \brief Element-wise calculation of the Jacobian matrix for problems + * using the coupled box model. + */ +template<class TypeTag> +class BoxCouplingLocalResidual : public BoxLocalResidual<TypeTag> +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + + enum { + numEq = GET_PROP_VALUE(TypeTag, NumEq), + + dim = GridView::dimension, + dimWorld = GridView::dimensionworld + }; + + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GridView::Grid::ctype CoordScalar; + + typedef typename GridView::template Codim<0>::Entity Element; + typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; + + typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes; + typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; + + // copying the local residual class is not a good idea + BoxCouplingLocalResidual(const BoxCouplingLocalResidual &); + +public: + //! \brief The constructor + BoxCouplingLocalResidual() + { } + + /*! + * \brief Compute the local residual, i.e. the deviation of the + * equations from zero. Gets a solution vector computed by PDELab + * + * \tparam ElemSolVectorType The local solution for the element using PDELab ordering + * + * \param element The DUNE Codim<0> entity for which the residual + * ought to be calculated + * \param fvGeometry The element geometry + * \param elementSolVector The local solution for the element using PDELab ordering + * \param volVarsPrev Volume variables of the previous time step + * \param volVarsCur Volume variables of the current time step + */ + template<typename ElemSolVectorType> + DUNE_DEPRECATED_MSG("evalPDELab() is deprecated.") + void evalPDELab(const Element &element, + const FVElementGeometry& fvGeometry, + const ElemSolVectorType& elementSolVector, + ElementVolumeVariables& volVarsPrev, + ElementVolumeVariables& volVarsCur) + { + this->elemPtr_ = &element; + this->fvElemGeomPtr_ = &fvGeometry; + + volVarsPrev.update(this->problem_(), + element, + fvGeometry, + true /* oldSol? */); + volVarsCur.updatePDELab(this->problem_(), + element, + fvGeometry, + elementSolVector); + ElementBoundaryTypes bcTypes; + bcTypes.update(this->problem_(), element, fvGeometry); + + asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes); + } + + /*! + * \brief Compute the local residual, i.e. the deviation of the + * equations from zero without taking boundary conditions into account. + * This is required for the flux calculation at the interface + * (called from the coupled problem). Calls evalPDELab with the + * required removal of the stabilization at the boundary (stokes). + * + * \param element The DUNE Codim<0> entity for which the residual + * ought to be calculated + * \param fvGeometry The element geometry + * \param volVarsPrev Volume variables of the previous time step + * \param volVarsCur Volume variables of the current time step + */ + DUNE_DEPRECATED_MSG("evalNoBoundary() is deprecated.") + void evalNoBoundary(const Element &element, + const FVElementGeometry fvGeometry, + ElementVolumeVariables& volVarsPrev, + ElementVolumeVariables& volVarsCur) + { + volVarsPrev.update(this->problem_(), + element, + fvGeometry, + true /* oldSol? */); + volVarsCur.update(this->problem_(), + element, + fvGeometry, + false /* oldSol? */); + + ElementBoundaryTypes bcTypes; + bcTypes.update(this->problem_(), element, fvGeometry); + + asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes); + } + + /*! + * \brief Compute the local residual, i.e. the deviation of the + * equations from zero. Calls evalBoundaryPDELab, + * where the stabilization of the mass balance (stokes) + * is removed. No further boundary conditions are employed. + * + * \param element The DUNE Codim<0> entity for which the residual + * ought to be calculated + * \param fvGeometry The finite-volume geometry of the element + * \param prevVolVars The volume averaged variables for all + * sub-control volumes of the element at the previous + * time level + * \param curVolVars The volume averaged variables for all + * sub-control volumes of the element at the current + * time level + * \param bcTypes The types of the boundary conditions for all + * vertices of the element + */ + void evalPDELab(const Element &element, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &prevVolVars, + const ElementVolumeVariables &curVolVars, + const ElementBoundaryTypes &bcTypes) + { + const int numVerts = fvGeometry.numScv; +#if HAVE_VALGRIND + for (int i=0; i < numVerts; i++) { + Valgrind::CheckDefined(prevVolVars[i]); + Valgrind::CheckDefined(curVolVars[i]); + } +#endif // HAVE_VALGRIND + + this->elemPtr_ = &element; + this->fvElemGeomPtr_ = &fvGeometry; + this->bcTypesPtr_ = &bcTypes; + this->prevVolVarsPtr_ = &prevVolVars; + this->curVolVarsPtr_ = &curVolVars; + + // reset residual + this->residual_.resize(numVerts); + this->storageTerm_.resize(numVerts); + + this->residual_ = 0; + this->storageTerm_ = 0; + + asImp_().evalFluxes_(); + asImp_().evalVolumeTerms_(); + + // evaluate the boundary (modified version) + asImp_().evalBoundaryPDELab_(); + +#if HAVE_VALGRIND + for (int i=0; i < numVerts; i++) + Valgrind::CheckDefined(this->residual_[i]); +#endif // HAVE_VALGRIND + } + +protected: + /*! + * \brief Empty method, has to be overwritten if required. + * Called e.g. for the removal of the stabilization of the + * stokes model. + */ + void evalBoundaryPDELab_() + { } + + Implementation &asImp_() + { + assert(static_cast<Implementation*>(this) != 0); + return *static_cast<Implementation*>(this); + } + + const Implementation &asImp_() const + { + assert(static_cast<const Implementation*>(this) != 0); + return *static_cast<const Implementation*>(this); + } +}; + +} // namespace Dumux + +#endif // DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/common/boxcouplinglocalresidual.hh b/dumux/multidomain/common/boxcouplinglocalresidual.hh index 651e50a1a67452bff4a67ef40e2aef8e5243dfee..d1c41e2ecca818b6f80d7516fe669b7994e3b39b 100644 --- a/dumux/multidomain/common/boxcouplinglocalresidual.hh +++ b/dumux/multidomain/common/boxcouplinglocalresidual.hh @@ -1,224 +1,8 @@ -// -*- 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 Element-wise calculation of the Jacobian matrix for problems - * using the coupled box model. - */ -#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH +#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH_OLD +#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH_OLD -#include <dune/common/deprecated.hh> +#warning this header is deprecated, use dumux/multidomain/boxcouplinglocalresidual.hh instead -#include <dumux/implicit/box/localresidual.hh> +#include <dumux/multidomain/boxcouplinglocalresidual.hh> -namespace Dumux -{ -/*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled box model. - */ -template<class TypeTag> -class BoxCouplingLocalResidual : public BoxLocalResidual<TypeTag> -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { - numEq = GET_PROP_VALUE(TypeTag, NumEq), - - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::Grid::ctype CoordScalar; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - - // copying the local residual class is not a good idea - BoxCouplingLocalResidual(const BoxCouplingLocalResidual &); - -public: - //! \brief The constructor - BoxCouplingLocalResidual() - { } - - /*! - * \brief Compute the local residual, i.e. the deviation of the - * equations from zero. Gets a solution vector computed by PDELab - * - * \tparam ElemSolVectorType The local solution for the element using PDELab ordering - * - * \param element The DUNE Codim<0> entity for which the residual - * ought to be calculated - * \param fvGeometry The element geometry - * \param elementSolVector The local solution for the element using PDELab ordering - * \param volVarsPrev Volume variables of the previous time step - * \param volVarsCur Volume variables of the current time step - */ - template<typename ElemSolVectorType> - DUNE_DEPRECATED_MSG("evalPDELab() is deprecated.") - void evalPDELab(const Element &element, - const FVElementGeometry& fvGeometry, - const ElemSolVectorType& elementSolVector, - ElementVolumeVariables& volVarsPrev, - ElementVolumeVariables& volVarsCur) - { - this->elemPtr_ = &element; - this->fvElemGeomPtr_ = &fvGeometry; - - volVarsPrev.update(this->problem_(), - element, - fvGeometry, - true /* oldSol? */); - volVarsCur.updatePDELab(this->problem_(), - element, - fvGeometry, - elementSolVector); - ElementBoundaryTypes bcTypes; - bcTypes.update(this->problem_(), element, fvGeometry); - - asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes); - } - - /*! - * \brief Compute the local residual, i.e. the deviation of the - * equations from zero without taking boundary conditions into account. - * This is required for the flux calculation at the interface - * (called from the coupled problem). Calls evalPDELab with the - * required removal of the stabilization at the boundary (stokes). - * - * \param element The DUNE Codim<0> entity for which the residual - * ought to be calculated - * \param fvGeometry The element geometry - * \param volVarsPrev Volume variables of the previous time step - * \param volVarsCur Volume variables of the current time step - */ - DUNE_DEPRECATED_MSG("evalNoBoundary() is deprecated.") - void evalNoBoundary(const Element &element, - const FVElementGeometry fvGeometry, - ElementVolumeVariables& volVarsPrev, - ElementVolumeVariables& volVarsCur) - { - volVarsPrev.update(this->problem_(), - element, - fvGeometry, - true /* oldSol? */); - volVarsCur.update(this->problem_(), - element, - fvGeometry, - false /* oldSol? */); - - ElementBoundaryTypes bcTypes; - bcTypes.update(this->problem_(), element, fvGeometry); - - asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes); - } - - /*! - * \brief Compute the local residual, i.e. the deviation of the - * equations from zero. Calls evalBoundaryPDELab, - * where the stabilization of the mass balance (stokes) - * is removed. No further boundary conditions are employed. - * - * \param element The DUNE Codim<0> entity for which the residual - * ought to be calculated - * \param fvGeometry The finite-volume geometry of the element - * \param prevVolVars The volume averaged variables for all - * sub-control volumes of the element at the previous - * time level - * \param curVolVars The volume averaged variables for all - * sub-control volumes of the element at the current - * time level - * \param bcTypes The types of the boundary conditions for all - * vertices of the element - */ - void evalPDELab(const Element &element, - const FVElementGeometry &fvGeometry, - const ElementVolumeVariables &prevVolVars, - const ElementVolumeVariables &curVolVars, - const ElementBoundaryTypes &bcTypes) - { - const int numVerts = fvGeometry.numScv; -#if HAVE_VALGRIND - for (int i=0; i < numVerts; i++) { - Valgrind::CheckDefined(prevVolVars[i]); - Valgrind::CheckDefined(curVolVars[i]); - } -#endif // HAVE_VALGRIND - - this->elemPtr_ = &element; - this->fvElemGeomPtr_ = &fvGeometry; - this->bcTypesPtr_ = &bcTypes; - this->prevVolVarsPtr_ = &prevVolVars; - this->curVolVarsPtr_ = &curVolVars; - - // reset residual - this->residual_.resize(numVerts); - this->storageTerm_.resize(numVerts); - - this->residual_ = 0; - this->storageTerm_ = 0; - - asImp_().evalFluxes_(); - asImp_().evalVolumeTerms_(); - - // evaluate the boundary (modified version) - asImp_().evalBoundaryPDELab_(); - -#if HAVE_VALGRIND - for (int i=0; i < numVerts; i++) - Valgrind::CheckDefined(this->residual_[i]); -#endif // HAVE_VALGRIND - } - -protected: - /*! - * \brief Empty method, has to be overwritten if required. - * Called e.g. for the removal of the stabilization of the - * stokes model. - */ - void evalBoundaryPDELab_() - { } - - Implementation &asImp_() - { - assert(static_cast<Implementation*>(this) != 0); - return *static_cast<Implementation*>(this); - } - - const Implementation &asImp_() const - { - assert(static_cast<const Implementation*>(this) != 0); - return *static_cast<const Implementation*>(this); - } -}; - -} // namespace Dumux - -#endif // DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH +#endif diff --git a/dumux/multidomain/common/multidomainassembler.hh b/dumux/multidomain/common/multidomainassembler.hh index 814bfa681029ccbc9dace32efbfd04e66520a71a..d5e4f6654556a4033423817ddca74534adf0cb13 100644 --- a/dumux/multidomain/common/multidomainassembler.hh +++ b/dumux/multidomain/common/multidomainassembler.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_ASSEMBLER_HH_OLD #define DUMUX_MULTIDOMAIN_ASSEMBLER_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/assembler.hh instead +#warning this header is deprecated, use dumux/multidomain/assembler.hh instead -#include <dumux/multidomain/common/assembler.hh> +#include <dumux/multidomain/assembler.hh> #endif diff --git a/dumux/multidomain/common/multidomainconvergencewriter.hh b/dumux/multidomain/common/multidomainconvergencewriter.hh index a6a1671e08cccae44c13c6cd97c2a94ee3a26f69..98bd359046c35da6d86683172f9c5ffbf5ff264a 100644 --- a/dumux/multidomain/common/multidomainconvergencewriter.hh +++ b/dumux/multidomain/common/multidomainconvergencewriter.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH_OLD #define DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/convergencewriter.hh instead +#warning this header is deprecated, use dumux/multidomain/convergencewriter.hh instead -#include <dumux/multidomain/common/convergencewriter.hh> +#include <dumux/multidomain/convergencewriter.hh> #endif diff --git a/dumux/multidomain/common/multidomainlocaloperator.hh b/dumux/multidomain/common/multidomainlocaloperator.hh index 2eb8c8572b59cb226cc6fc65b07fa5776b0ca94f..14af986bb6d2d008d28a76fac7fb9d8637efd9c5 100644 --- a/dumux/multidomain/common/multidomainlocaloperator.hh +++ b/dumux/multidomain/common/multidomainlocaloperator.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH_OLD #define DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/localoperator.hh instead +#warning this header is deprecated, use dumux/multidomain/localoperator.hh instead -#include <dumux/multidomain/common/localoperator.hh> +#include <dumux/multidomain/localoperator.hh> #endif diff --git a/dumux/multidomain/common/multidomainmodel.hh b/dumux/multidomain/common/multidomainmodel.hh index f97f6031ebd6a6961164a4ae54e3a88eceebbb2c..107c441ed87d8e26461ad4d2d8fd37d62b1fa17e 100644 --- a/dumux/multidomain/common/multidomainmodel.hh +++ b/dumux/multidomain/common/multidomainmodel.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_MODEL_HH_OLD #define DUMUX_MULTIDOMAIN_MODEL_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/model.hh instead +#warning this header is deprecated, use dumux/multidomain/model.hh instead -#include <dumux/multidomain/common/model.hh> +#include <dumux/multidomain/model.hh> #endif diff --git a/dumux/multidomain/common/multidomainnewtoncontroller.hh b/dumux/multidomain/common/multidomainnewtoncontroller.hh index 88ccdc0bddcb9e7081ff109f4f17764807c4e78f..2201deda6f2882e5f8d68857ee8e33b74d9ee517 100644 --- a/dumux/multidomain/common/multidomainnewtoncontroller.hh +++ b/dumux/multidomain/common/multidomainnewtoncontroller.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH_OLD #define DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/newtoncontroller.hh instead +#warning this header is deprecated, use dumux/multidomain/newtoncontroller.hh instead -#include <dumux/multidomain/common/newtoncontroller.hh> +#include <dumux/multidomain/newtoncontroller.hh> #endif diff --git a/dumux/multidomain/common/multidomainproblem.hh b/dumux/multidomain/common/multidomainproblem.hh index c95ccb2e01730d194c83b5ffcaf07f84b3eac8e2..ea174ce9b79edee6dbf649c6a4a9d1624389fb56 100644 --- a/dumux/multidomain/common/multidomainproblem.hh +++ b/dumux/multidomain/common/multidomainproblem.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_PROBLEM_HH_OLD #define DUMUX_MULTIDOMAIN_PROBLEM_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/problem.hh instead +#warning this header is deprecated, use dumux/multidomain/problem.hh instead -#include <dumux/multidomain/common/problem.hh> +#include <dumux/multidomain/problem.hh> #endif diff --git a/dumux/multidomain/common/multidomainproperties.hh b/dumux/multidomain/common/multidomainproperties.hh index 22c05bf084d5ad399fc283b6141ba4de8d5a3c39..e9875b8077017fbf3ed8d4675233bafc8e0f30a1 100644 --- a/dumux/multidomain/common/multidomainproperties.hh +++ b/dumux/multidomain/common/multidomainproperties.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_PROPERTIES_HH_OLD #define DUMUX_MULTIDOMAIN_PROPERTIES_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/properties.hh instead +#warning this header is deprecated, use dumux/multidomain/properties.hh instead -#include <dumux/multidomain/common/properties.hh> +#include <dumux/multidomain/properties.hh> #endif diff --git a/dumux/multidomain/common/multidomainpropertydefaults.hh b/dumux/multidomain/common/multidomainpropertydefaults.hh index e234dbcd747b487c88a772be2f83ec52b6ca6f20..12e10bc65278d9e2fb3978b4211d28ccabc2260c 100644 --- a/dumux/multidomain/common/multidomainpropertydefaults.hh +++ b/dumux/multidomain/common/multidomainpropertydefaults.hh @@ -1,8 +1,8 @@ #ifndef DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH_OLD #define DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH_OLD -#warning this header is deprecated, use dumux/multidomain/common/propertydefaults.hh instead +#warning this header is deprecated, use dumux/multidomain/propertydefaults.hh instead -#include <dumux/multidomain/common/propertydefaults.hh> +#include <dumux/multidomain/propertydefaults.hh> #endif diff --git a/dumux/multidomain/common/splitandmerge.hh b/dumux/multidomain/common/splitandmerge.hh index 297971ff9cbc346a4629eb63e1392aea953d2fd3..78c09503b81dd14228f3bf47208933e969c5c44e 100644 --- a/dumux/multidomain/common/splitandmerge.hh +++ b/dumux/multidomain/common/splitandmerge.hh @@ -1,240 +1,8 @@ -// -*- 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 Some methods required by several classes of the coupling model. - */ -#ifndef DUMUX_SPLIT_AND_MERGE_HH -#define DUMUX_SPLIT_AND_MERGE_HH +#ifndef DUMUX_SPLIT_AND_MERGE_HH_OLD +#define DUMUX_SPLIT_AND_MERGE_HH_OLD -#include "properties.hh" -#include <dumux/common/valgrind.hh> +#warning this header is deprecated, use dumux/multidomain/splitandmerge.hh instead -namespace Dumux -{ -/*! - * \ingroup MultidomainModel - * \brief Some methods required by several classes of the coupling model. - */ -template<class TypeTag> -class SplitAndMerge -{ - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2; +#include <dumux/multidomain/splitandmerge.hh> - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(SubTypeTag1, SolutionVector) SolutionVector1; - typedef typename GET_PROP_TYPE(SubTypeTag2, SolutionVector) SolutionVector2; - - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; - typedef typename GET_PROP_TYPE(SubTypeTag1, JacobianMatrix) JacobianMatrix1; - typedef typename GET_PROP_TYPE(SubTypeTag2, JacobianMatrix) JacobianMatrix2; - - - enum { - numEq1 = GET_PROP_VALUE(SubTypeTag1, NumEq), - numEq2 = GET_PROP_VALUE(SubTypeTag2, NumEq) - }; -public: - /*! - * \brief Merge two solution vectors of the sub models into a - * global vector: nonoverlapping case. - * - * \param vec1 Input vector with solution of subdomain 1 - * \param vec2 Input vector with solution of subdomain 2 - * \param dest Destination vector for global solution - * - */ - static void mergeSolVectors(const SolutionVector1 &vec1, - const SolutionVector2 &vec2, - SolutionVector &dest) - { -// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); -// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); - - int nDofs1 = vec1.size(); - int nDofs2 = vec2.size(); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - { - dest.base()[i*numEq1 + j][0] = vec1[i][j]; - - Valgrind::CheckDefined(dest.base()[i*numEq1 + j][0]); - } - - for (int i = 0; i < nDofs2; ++i) - for (int j = 0; j < numEq2; j++) - { - dest.base()[nDofs1*numEq1 + i*numEq2 + j][0] = vec2[i][j]; - - Valgrind::CheckDefined(dest.base()[nDofs1*numEq1 + i*numEq2 + j][0]); - } -// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); - } - - /*! - * \brief Split a global solution vector into two solution vectors - * of the sub models: nonoverlapping case. - * - * \param vec Input vector with global solution - * \param dest1 Destination vector with solution of subdomain 1 - * \param dest2 Destination vector with solution of subdomain 2 - * - */ - static void splitSolVector(const SolutionVector &vec, - SolutionVector1 &dest1, - SolutionVector2 &dest2) - { -// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); - - int nDofs1 = dest1.size(); - int nDofs2 = dest2.size(); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest1[i][j] = vec.base()[i*numEq1 + j][0]; - - for (int i = 0; i < nDofs2; ++i) - for (int j = 0; j < numEq2; j++) - dest2[i][j] = vec.base()[nDofs1*numEq1 + i*numEq2 + j][0]; - -// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); -// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); - } - - /*! - * \brief Merge two solution vectors of the sub models into a - * global vector: more general case. - * - * \param vec1 Input vector with solution of subdomain 1 - * \param vec2 Input vector with solution of subdomain 2 - * \param dest Destination vector for global solution - * \param subDOFToCoupledDOF unused - * - */ - static void mergeSolVectors(const SolutionVector1 &vec1, - const SolutionVector2 &vec2, - SolutionVector &dest, - const std::vector<int>& subDOFToCoupledDOF) - { - int nDofs1 = vec1.size(); - int nDofs2 = vec2.size(); -// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); -// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest.base()[i*numEq1 + j] = vec1[i][j]; - - for (int i = 0; i < nDofs2; ++i) - { - for (int j = numEq1; j < numEq2; j++) - dest.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)] = vec2[i][j]; - } -// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); - } - - /*! - * \brief Split a global solution vector into two solution vectors - * of the sub models: more general case. - * - * \param vec Input vector with global solution - * \param dest1 Destination vector with solution of subdomain 1 - * \param dest2 Destination vector with solution of subdomain 2 - * \param subDOFToCoupledDOF Identification vector between sub and global DOFs - * - */ - static void splitSolVector(const SolutionVector &vec, - SolutionVector1 &dest1, - SolutionVector2 &dest2, - const std::vector<int>& subDOFToCoupledDOF) - { - int nDofs1 = dest1.size(); - int nDofs2 = dest2.size(); - -// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest1[i][j] = vec.base()[i*numEq1 + j]; - - for (int i = 0; i < nDofs2; ++i) - { - int blockIdxCoupled = subDOFToCoupledDOF[i]; - for (int j = 0; j < numEq1; j++) - { - dest2[i][j] = vec.base()[blockIdxCoupled*numEq1 + j]; - } - - for (int j = numEq1; j < numEq2; j++) - dest2[i][j] = vec.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)]; - } -// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); -// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); - } - - - /*! - * \brief Merge individual jacobian matrices of the sub models - * into a global jacobian matrix. - * - * \param M1 Input jacobian matrix of subdomain 1 - * \param M2 Input jacobian matrix of subdomain 2 - * \param M Destination global jacobian matrix - * - */ - static void mergeMatrices(const JacobianMatrix1 &M1, - const JacobianMatrix2 &M2, - JacobianMatrix &M) - { - DUNE_THROW(Dune::NotImplemented, "mergeMatrices in coupled common"); - } - - /*! - * \brief Copy a sub matrix into into the main diagonal of the global matrix. - * - * \param Msub Sub matrix - * \param M Global matrix - * \param offset Offset in rows and columns - * - */ - template <class SubMatrix> - static void copyMatrix(const SubMatrix &Msub, - JacobianMatrix &M, - size_t offset) - { - // loop over all rows of the submatrix - typedef typename SubMatrix::ConstRowIterator RowIterator; - typedef typename SubMatrix::ConstColIterator ColIterator; - RowIterator endRow = Msub.end(); - for (RowIterator row = Msub.begin(); row != endRow; ++row) { - // loop over columns of the current row - ColIterator endCol = row->end(); - for (ColIterator col = row->begin(); col != endCol; ++ col) { - // copy entry in the global matrix - M[row.index() + offset][col.index() + offset] - = *col; - } - } - } - -}; -} // namespace Dumux - -#endif // DUMUX_SPLIT_AND_MERGE_HH +#endif diff --git a/dumux/multidomain/common/subdomainproperties.hh b/dumux/multidomain/common/subdomainproperties.hh index 4af5c2a8faca706ee4c54595288f702b843a6ff1..93321d681b0f4da8e8c3603a79a4096d742b7c6f 100644 --- a/dumux/multidomain/common/subdomainproperties.hh +++ b/dumux/multidomain/common/subdomainproperties.hh @@ -1,66 +1,8 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Specify properties required for the subdomains of the coupled model - */ -#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH -#define DUMUX_SUBDOMAIN_PROPERTIES_HH +#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH_OLD +#define DUMUX_SUBDOMAIN_PROPERTIES_HH_OLD -#include <dumux/common/propertysystem.hh> +#warning this header is deprecated, use dumux/multidomain/subdomainproperties.hh instead -namespace Dumux -{ -namespace Properties -{ +#include <dumux/multidomain/subdomainproperties.hh> -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tag from which sub-problems of coupling models inherit -NEW_TYPE_TAG(SubDomain); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// -//! Specifies the host grid -NEW_PROP_TAG(Grid); - -//! Specifies the scalar grid function space used for sub-problems -NEW_PROP_TAG(ScalarGridFunctionSpace); - -//! Specifies the grid function space used for sub-problems -NEW_PROP_TAG(GridFunctionSpace); - -//! Specifies the type of the constraints -NEW_PROP_TAG(Constraints); - -//! Specifies the local finite element space -NEW_PROP_TAG(LocalFEMSpace); - -//! Specifies the local operator -NEW_PROP_TAG(LocalOperator); - -} // namespace Properties -} // namespace Dumux -#endif // DUMUX_SUBDOMAIN_PROPERTIES_HH +#endif diff --git a/dumux/multidomain/common/subdomainpropertydefaults.hh b/dumux/multidomain/common/subdomainpropertydefaults.hh index e1227178637d170eca18d7f3a27cf55ee5f15b24..67087a5892355d26d99f4dbc2514a9245b950e71 100644 --- a/dumux/multidomain/common/subdomainpropertydefaults.hh +++ b/dumux/multidomain/common/subdomainpropertydefaults.hh @@ -1,140 +1,8 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Specify default properties required in the subdomains of dune-multidomain - */ -#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH -#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH +#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH_OLD +#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH_OLD -#include <dune/grid/multidomaingrid.hh> -#include <dune/pdelab/backend/istlvectorbackend.hh> -#include <dune/pdelab/backend/istlmatrixbackend.hh> -#include <dune/pdelab/finiteelementmap/qkfem.hh> -#include <dune/pdelab/constraints/conforming.hh> +#warning this header is deprecated, use dumux/multidomain/subdomainpropertydefaults.hh instead -#include "subdomainproperties.hh" -#include "properties.hh" -#include "localoperator.hh" -#include "boxcouplinglocalresidual.hh" +#include <dumux/multidomain/subdomainpropertydefaults.hh> -namespace Dumux -{ - -namespace Properties -{ - -// Specifies the grid type for the subdomains -SET_PROP(SubDomain, Grid) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomain; - typedef typename GET_PROP_TYPE(MultiDomain, Grid) HostGrid; - typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension,4> MDGridTraits; - typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> Grid; -public: - typedef typename Grid::SubDomainGrid type; -}; - -// set the default BaseLocalResidual to BoxCouplingLocalResidual -SET_TYPE_PROP(SubDomain, BaseLocalResidual, BoxCouplingLocalResidual<TypeTag>); - -// set the local operator used for submodels -SET_TYPE_PROP(SubDomain, LocalOperator, - Dumux::PDELab::MultiDomainLocalOperator<TypeTag>); - -// use the time manager for the coupled problem in the sub problems -SET_PROP(SubDomain, TimeManager) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; -public: - typedef typename GET_PROP_TYPE(MultiDomainTypeTag, TimeManager) type; -}; - -// set the constraints for the sub-models -SET_TYPE_PROP(SubDomain, Constraints, Dune::PDELab::NoConstraints); - -// set the grid functions space for the sub-models -SET_PROP(SubDomain, ScalarGridFunctionSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) FEM; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; -public: - typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints, - Dune::PDELab::ISTLVectorBackend<> > type; -}; - -// set the grid functions space for the sub-models -SET_PROP(SubDomain, GridFunctionSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag; - typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; -public: - typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq, VBE, OrderingTag> type; -}; - -// use the local FEM space associated with cubes by default -SET_PROP(SubDomain, LocalFEMSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum{dim = GridView::dimension}; -public: - typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; -}; - -SET_PROP(SubDomain, ParameterTree) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; - typedef typename GET_PROP(MultiDomainTypeTag, ParameterTree) ParameterTree; -public: - typedef typename ParameterTree::type type; - - static type &tree() - { return ParameterTree::tree(); } - - static type &compileTimeParams() - { return ParameterTree::compileTimeParams(); } - - static type &runTimeParams() - { return ParameterTree::runTimeParams(); } - - static type &deprecatedRunTimeParams() - { return ParameterTree::deprecatedRunTimeParams(); } - - static type &unusedNewRunTimeParams() - { return ParameterTree::unusedNewRunTimeParams(); } -}; - -} // namespace Properties -} // namespace Dumux - -#endif // DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH +#endif diff --git a/dumux/multidomain/common/convergencewriter.hh b/dumux/multidomain/convergencewriter.hh similarity index 100% rename from dumux/multidomain/common/convergencewriter.hh rename to dumux/multidomain/convergencewriter.hh diff --git a/dumux/multidomain/common/localoperator.hh b/dumux/multidomain/localoperator.hh similarity index 100% rename from dumux/multidomain/common/localoperator.hh rename to dumux/multidomain/localoperator.hh diff --git a/dumux/multidomain/common/model.hh b/dumux/multidomain/model.hh similarity index 100% rename from dumux/multidomain/common/model.hh rename to dumux/multidomain/model.hh diff --git a/dumux/multidomain/common/newtoncontroller.hh b/dumux/multidomain/newtoncontroller.hh similarity index 100% rename from dumux/multidomain/common/newtoncontroller.hh rename to dumux/multidomain/newtoncontroller.hh diff --git a/dumux/multidomain/common/problem.hh b/dumux/multidomain/problem.hh similarity index 100% rename from dumux/multidomain/common/problem.hh rename to dumux/multidomain/problem.hh diff --git a/dumux/multidomain/common/properties.hh b/dumux/multidomain/properties.hh similarity index 100% rename from dumux/multidomain/common/properties.hh rename to dumux/multidomain/properties.hh diff --git a/dumux/multidomain/common/propertydefaults.hh b/dumux/multidomain/propertydefaults.hh similarity index 100% rename from dumux/multidomain/common/propertydefaults.hh rename to dumux/multidomain/propertydefaults.hh diff --git a/dumux/multidomain/splitandmerge.hh b/dumux/multidomain/splitandmerge.hh new file mode 100644 index 0000000000000000000000000000000000000000..297971ff9cbc346a4629eb63e1392aea953d2fd3 --- /dev/null +++ b/dumux/multidomain/splitandmerge.hh @@ -0,0 +1,240 @@ +// -*- 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 Some methods required by several classes of the coupling model. + */ +#ifndef DUMUX_SPLIT_AND_MERGE_HH +#define DUMUX_SPLIT_AND_MERGE_HH + +#include "properties.hh" +#include <dumux/common/valgrind.hh> + +namespace Dumux +{ +/*! + * \ingroup MultidomainModel + * \brief Some methods required by several classes of the coupling model. + */ +template<class TypeTag> +class SplitAndMerge +{ + typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1; + typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2; + + typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; + typedef typename GET_PROP_TYPE(SubTypeTag1, SolutionVector) SolutionVector1; + typedef typename GET_PROP_TYPE(SubTypeTag2, SolutionVector) SolutionVector2; + + typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; + typedef typename GET_PROP_TYPE(SubTypeTag1, JacobianMatrix) JacobianMatrix1; + typedef typename GET_PROP_TYPE(SubTypeTag2, JacobianMatrix) JacobianMatrix2; + + + enum { + numEq1 = GET_PROP_VALUE(SubTypeTag1, NumEq), + numEq2 = GET_PROP_VALUE(SubTypeTag2, NumEq) + }; +public: + /*! + * \brief Merge two solution vectors of the sub models into a + * global vector: nonoverlapping case. + * + * \param vec1 Input vector with solution of subdomain 1 + * \param vec2 Input vector with solution of subdomain 2 + * \param dest Destination vector for global solution + * + */ + static void mergeSolVectors(const SolutionVector1 &vec1, + const SolutionVector2 &vec2, + SolutionVector &dest) + { +// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); +// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); + + int nDofs1 = vec1.size(); + int nDofs2 = vec2.size(); + + for (int i = 0; i < nDofs1; ++i) + for (int j = 0; j < numEq1; j++) + { + dest.base()[i*numEq1 + j][0] = vec1[i][j]; + + Valgrind::CheckDefined(dest.base()[i*numEq1 + j][0]); + } + + for (int i = 0; i < nDofs2; ++i) + for (int j = 0; j < numEq2; j++) + { + dest.base()[nDofs1*numEq1 + i*numEq2 + j][0] = vec2[i][j]; + + Valgrind::CheckDefined(dest.base()[nDofs1*numEq1 + i*numEq2 + j][0]); + } +// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); + } + + /*! + * \brief Split a global solution vector into two solution vectors + * of the sub models: nonoverlapping case. + * + * \param vec Input vector with global solution + * \param dest1 Destination vector with solution of subdomain 1 + * \param dest2 Destination vector with solution of subdomain 2 + * + */ + static void splitSolVector(const SolutionVector &vec, + SolutionVector1 &dest1, + SolutionVector2 &dest2) + { +// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); + + int nDofs1 = dest1.size(); + int nDofs2 = dest2.size(); + + for (int i = 0; i < nDofs1; ++i) + for (int j = 0; j < numEq1; j++) + dest1[i][j] = vec.base()[i*numEq1 + j][0]; + + for (int i = 0; i < nDofs2; ++i) + for (int j = 0; j < numEq2; j++) + dest2[i][j] = vec.base()[nDofs1*numEq1 + i*numEq2 + j][0]; + +// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); +// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); + } + + /*! + * \brief Merge two solution vectors of the sub models into a + * global vector: more general case. + * + * \param vec1 Input vector with solution of subdomain 1 + * \param vec2 Input vector with solution of subdomain 2 + * \param dest Destination vector for global solution + * \param subDOFToCoupledDOF unused + * + */ + static void mergeSolVectors(const SolutionVector1 &vec1, + const SolutionVector2 &vec2, + SolutionVector &dest, + const std::vector<int>& subDOFToCoupledDOF) + { + int nDofs1 = vec1.size(); + int nDofs2 = vec2.size(); +// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); +// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); + + for (int i = 0; i < nDofs1; ++i) + for (int j = 0; j < numEq1; j++) + dest.base()[i*numEq1 + j] = vec1[i][j]; + + for (int i = 0; i < nDofs2; ++i) + { + for (int j = numEq1; j < numEq2; j++) + dest.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)] = vec2[i][j]; + } +// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); + } + + /*! + * \brief Split a global solution vector into two solution vectors + * of the sub models: more general case. + * + * \param vec Input vector with global solution + * \param dest1 Destination vector with solution of subdomain 1 + * \param dest2 Destination vector with solution of subdomain 2 + * \param subDOFToCoupledDOF Identification vector between sub and global DOFs + * + */ + static void splitSolVector(const SolutionVector &vec, + SolutionVector1 &dest1, + SolutionVector2 &dest2, + const std::vector<int>& subDOFToCoupledDOF) + { + int nDofs1 = dest1.size(); + int nDofs2 = dest2.size(); + +// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); + for (int i = 0; i < nDofs1; ++i) + for (int j = 0; j < numEq1; j++) + dest1[i][j] = vec.base()[i*numEq1 + j]; + + for (int i = 0; i < nDofs2; ++i) + { + int blockIdxCoupled = subDOFToCoupledDOF[i]; + for (int j = 0; j < numEq1; j++) + { + dest2[i][j] = vec.base()[blockIdxCoupled*numEq1 + j]; + } + + for (int j = numEq1; j < numEq2; j++) + dest2[i][j] = vec.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)]; + } +// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); +// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); + } + + + /*! + * \brief Merge individual jacobian matrices of the sub models + * into a global jacobian matrix. + * + * \param M1 Input jacobian matrix of subdomain 1 + * \param M2 Input jacobian matrix of subdomain 2 + * \param M Destination global jacobian matrix + * + */ + static void mergeMatrices(const JacobianMatrix1 &M1, + const JacobianMatrix2 &M2, + JacobianMatrix &M) + { + DUNE_THROW(Dune::NotImplemented, "mergeMatrices in coupled common"); + } + + /*! + * \brief Copy a sub matrix into into the main diagonal of the global matrix. + * + * \param Msub Sub matrix + * \param M Global matrix + * \param offset Offset in rows and columns + * + */ + template <class SubMatrix> + static void copyMatrix(const SubMatrix &Msub, + JacobianMatrix &M, + size_t offset) + { + // loop over all rows of the submatrix + typedef typename SubMatrix::ConstRowIterator RowIterator; + typedef typename SubMatrix::ConstColIterator ColIterator; + RowIterator endRow = Msub.end(); + for (RowIterator row = Msub.begin(); row != endRow; ++row) { + // loop over columns of the current row + ColIterator endCol = row->end(); + for (ColIterator col = row->begin(); col != endCol; ++ col) { + // copy entry in the global matrix + M[row.index() + offset][col.index() + offset] + = *col; + } + } + } + +}; +} // namespace Dumux + +#endif // DUMUX_SPLIT_AND_MERGE_HH diff --git a/dumux/multidomain/subdomainproperties.hh b/dumux/multidomain/subdomainproperties.hh new file mode 100644 index 0000000000000000000000000000000000000000..4af5c2a8faca706ee4c54595288f702b843a6ff1 --- /dev/null +++ b/dumux/multidomain/subdomainproperties.hh @@ -0,0 +1,66 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup Properties + * \ingroup ImplicitProperties + * \ingroup MultidomainModel + * \brief Specify properties required for the subdomains of the coupled model + */ +#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH +#define DUMUX_SUBDOMAIN_PROPERTIES_HH + +#include <dumux/common/propertysystem.hh> + +namespace Dumux +{ +namespace Properties +{ + +////////////////////////////////////////////////////////////////// +// Type tags +////////////////////////////////////////////////////////////////// + +//! The type tag from which sub-problems of coupling models inherit +NEW_TYPE_TAG(SubDomain); + +////////////////////////////////////////////////////////////////// +// Property tags +////////////////////////////////////////////////////////////////// +//! Specifies the host grid +NEW_PROP_TAG(Grid); + +//! Specifies the scalar grid function space used for sub-problems +NEW_PROP_TAG(ScalarGridFunctionSpace); + +//! Specifies the grid function space used for sub-problems +NEW_PROP_TAG(GridFunctionSpace); + +//! Specifies the type of the constraints +NEW_PROP_TAG(Constraints); + +//! Specifies the local finite element space +NEW_PROP_TAG(LocalFEMSpace); + +//! Specifies the local operator +NEW_PROP_TAG(LocalOperator); + +} // namespace Properties +} // namespace Dumux +#endif // DUMUX_SUBDOMAIN_PROPERTIES_HH diff --git a/dumux/multidomain/subdomainpropertydefaults.hh b/dumux/multidomain/subdomainpropertydefaults.hh new file mode 100644 index 0000000000000000000000000000000000000000..e1227178637d170eca18d7f3a27cf55ee5f15b24 --- /dev/null +++ b/dumux/multidomain/subdomainpropertydefaults.hh @@ -0,0 +1,140 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup Properties + * \ingroup ImplicitProperties + * \ingroup MultidomainModel + * \brief Specify default properties required in the subdomains of dune-multidomain + */ +#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH +#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH + +#include <dune/grid/multidomaingrid.hh> +#include <dune/pdelab/backend/istlvectorbackend.hh> +#include <dune/pdelab/backend/istlmatrixbackend.hh> +#include <dune/pdelab/finiteelementmap/qkfem.hh> +#include <dune/pdelab/constraints/conforming.hh> + +#include "subdomainproperties.hh" +#include "properties.hh" +#include "localoperator.hh" +#include "boxcouplinglocalresidual.hh" + +namespace Dumux +{ + +namespace Properties +{ + +// Specifies the grid type for the subdomains +SET_PROP(SubDomain, Grid) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomain; + typedef typename GET_PROP_TYPE(MultiDomain, Grid) HostGrid; + typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension,4> MDGridTraits; + typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> Grid; +public: + typedef typename Grid::SubDomainGrid type; +}; + +// set the default BaseLocalResidual to BoxCouplingLocalResidual +SET_TYPE_PROP(SubDomain, BaseLocalResidual, BoxCouplingLocalResidual<TypeTag>); + +// set the local operator used for submodels +SET_TYPE_PROP(SubDomain, LocalOperator, + Dumux::PDELab::MultiDomainLocalOperator<TypeTag>); + +// use the time manager for the coupled problem in the sub problems +SET_PROP(SubDomain, TimeManager) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; +public: + typedef typename GET_PROP_TYPE(MultiDomainTypeTag, TimeManager) type; +}; + +// set the constraints for the sub-models +SET_TYPE_PROP(SubDomain, Constraints, Dune::PDELab::NoConstraints); + +// set the grid functions space for the sub-models +SET_PROP(SubDomain, ScalarGridFunctionSpace) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) FEM; + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints; + enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; +public: + typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints, + Dune::PDELab::ISTLVectorBackend<> > type; +}; + +// set the grid functions space for the sub-models +SET_PROP(SubDomain, GridFunctionSpace) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace; + enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; + typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag; + typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; +public: + typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq, VBE, OrderingTag> type; +}; + +// use the local FEM space associated with cubes by default +SET_PROP(SubDomain, LocalFEMSpace) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; + typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; + enum{dim = GridView::dimension}; +public: + typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; +}; + +SET_PROP(SubDomain, ParameterTree) +{ +private: + typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; + typedef typename GET_PROP(MultiDomainTypeTag, ParameterTree) ParameterTree; +public: + typedef typename ParameterTree::type type; + + static type &tree() + { return ParameterTree::tree(); } + + static type &compileTimeParams() + { return ParameterTree::compileTimeParams(); } + + static type &runTimeParams() + { return ParameterTree::runTimeParams(); } + + static type &deprecatedRunTimeParams() + { return ParameterTree::deprecatedRunTimeParams(); } + + static type &unusedNewRunTimeParams() + { return ParameterTree::unusedNewRunTimeParams(); } +}; + +} // namespace Properties +} // namespace Dumux + +#endif // DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh index 288d03957d98f953578532ffbef0da348302c8b8..a322b57de6e66c99c46e068f48c2de604f32c5f8 100644 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh @@ -38,7 +38,7 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/common/problem.hh> +#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> diff --git a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh index 73c664b49b70ddaebc636cfee3c394079117b6ac..216e3bf2c9e4df0a24db0b7362260c69d981c6a4 100644 --- a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh @@ -30,8 +30,8 @@ #include <dumux/porousmediumflow/2p2c/implicit/model.hh> #include <dumux/io/gnuplotinterface.hh> #include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> -#include <dumux/multidomain/common/localoperator.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> +#include <dumux/multidomain/localoperator.hh> #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> #include "2cnistokes2p2cnispatialparams.hh" diff --git a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh index 87f20d8cbfaa02c23b8e1a6cfa3038c25f4b63ab..6fc08b9ba642327c88e8fcddc94e34f0a0d369af 100644 --- a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh @@ -26,7 +26,7 @@ #include <dumux/freeflow/stokesncni/model.hh> #include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> namespace Dumux { diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh index c476dbf1ec5cb57b4102b825a0261135d7247257..e8bd4f59befbeb23f9f8a84de656f46759050603 100644 --- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh +++ b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh @@ -29,7 +29,7 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/common/problem.hh> +#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> diff --git a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh index c1d002ca16bbcabe3cbe3316f5081bd81c85cb39..c6fc61a2b32fa36424af5bc9f186cc051a379e0a 100644 --- a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh +++ b/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh @@ -28,8 +28,8 @@ #include <dumux/porousmediumflow/implicit/problem.hh> #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh> #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> -#include <dumux/multidomain/common/localoperator.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> +#include <dumux/multidomain/localoperator.hh> #include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh> #include "2cnizeroeq2p2cnispatialparameters.hh" diff --git a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh index 55f39c590c75dd94195c552d1d046ad414ea6b01..15f52e7cb0d0b29c3df1578e93f946b9e81a50d3 100644 --- a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh +++ b/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh @@ -25,7 +25,7 @@ #define DUMUX_ZEROEQTWOCNI_SUBPROBLEM_HH #include <dumux/freeflow/zeroeqncni/model.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> #include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh> namespace Dumux diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh index b0059934f69c0f8a5f1dd2f14fa298df1f636e47..257feded9262b80471e7b876568f53f3ff235ee4 100644 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh +++ b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh @@ -38,7 +38,7 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/common/problem.hh> +#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cstokes2p2c/localoperator.hh> #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> diff --git a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh index 9e73ad3a825ff3264815ef29b0b8e6a914be612c..97fb3d109a50b6665a45c72b635ae2fd9a3663d7 100644 --- a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh +++ b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh @@ -29,8 +29,8 @@ #include <dumux/porousmediumflow/2p2c/implicit/indices.hh> #include <dumux/porousmediumflow/implicit/problem.hh> #include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> -#include <dumux/multidomain/common/localoperator.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> +#include <dumux/multidomain/localoperator.hh> #include "2cstokes2p2cspatialparams.hh" diff --git a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh index 6cf0ae00e95e7608941345eca36a410ad0a23d4d..9c2d290d7274badb83b3a21e38edae54ce40c7a0 100644 --- a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh +++ b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh @@ -26,7 +26,7 @@ #include <dumux/freeflow/stokesnc/model.hh> #include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> namespace Dumux { diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh index 9054039ddaf71011f4ddc20318fbc48d8f272c64..9bb2b2b4ab577c735e0eb45e58ed2621f4153384 100644 --- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh +++ b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh @@ -29,7 +29,7 @@ #include <dune/grid/io/file/dgfparser.hh> #include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/common/problem.hh> +#include <dumux/multidomain/problem.hh> #include <dumux/multidomain/2cstokes2p2c/localoperator.hh> #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> diff --git a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh b/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh index 1ab0ca40a3991fef299f42792776c19b8cd33266..4bf1c105e8060718f6f7d284b19c7f9b28329f23 100644 --- a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh +++ b/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh @@ -27,8 +27,8 @@ #include <dumux/porousmediumflow/2p2c/implicit/indices.hh> #include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> -#include <dumux/multidomain/common/localoperator.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> +#include <dumux/multidomain/localoperator.hh> #include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh> #include "2czeroeq2p2cspatialparameters.hh" diff --git a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh b/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh index b97caf150c9a61282f1589e21098378d7c340a59..82d4bbb4f651da1db08b01e5a1eac037be0345d0 100644 --- a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh +++ b/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh @@ -25,7 +25,7 @@ #define DUMUX_ZEROEQTWOCSUBPROBLEM_HH #include <dumux/freeflow/zeroeqnc/model.hh> -#include <dumux/multidomain/common/subdomainpropertydefaults.hh> +#include <dumux/multidomain/subdomainpropertydefaults.hh> #include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh> namespace Dumux