From 69cf5b850d17cda1acfc665e31327940565903e2 Mon Sep 17 00:00:00 2001 From: Thomas Fetzer <thomas.fetzer@iws.uni-stuttgart.de> Date: Tue, 13 Jan 2015 16:22:43 +0000 Subject: [PATCH] [multidomain] introduced proporties and propertydefaults for the coupled stokes-darcy models, that the model does not have to use runtime parameters. properties from the test problem headers have been moved to the model properties. reviewed by gruenich git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@14045 2fb0f335-1f38-0410-981e-8018bf24f1b0 --- .../2cnistokes2p2cniproperties.hh | 58 +++++++++++++ .../2cnistokes2p2cnipropertydefaults.hh | 46 +++++++++++ .../2cstokes2p2c/2cstokes2p2clocaloperator.hh | 23 ++---- .../2cstokes2p2c/2cstokes2p2cproperties.hh | 61 ++++++++++++++ .../2cstokes2p2cpropertydefaults.hh | 81 +++++++++++++++++++ .../2cnistokes2p2cniproblem.hh | 43 ++-------- .../2cnistokes2p2cni/2p2cnisubproblem.hh | 3 - .../test_2cnistokes2p2cni.input | 2 - .../test_2cnistokes2p2cni_reference.input | 4 +- .../2cstokes2p2c/2cstokes2p2cproblem.hh | 41 ++-------- .../2cstokes2p2c/2p2csubproblem.hh | 3 - .../2cstokes2p2c/test_2cstokes2p2c.input | 4 +- .../test_2cstokes2p2c_reference.input | 4 +- 13 files changed, 272 insertions(+), 101 deletions(-) create mode 100644 dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproperties.hh create mode 100644 dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnipropertydefaults.hh create mode 100644 dumux/multidomain/2cstokes2p2c/2cstokes2p2cproperties.hh create mode 100644 dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh diff --git a/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproperties.hh b/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproperties.hh new file mode 100644 index 0000000000..7c888bcfa1 --- /dev/null +++ b/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproperties.hh @@ -0,0 +1,58 @@ +// -*- 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 Defines the properties required for the coupled 2cnistokes2p2cni model. + */ + +#ifndef DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTIES_HH +#define DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTIES_HH + +#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh> + +namespace Dumux +{ + +//////////////////////////////// +// properties +//////////////////////////////// +namespace Properties +{ + +////////////////////////////////////////////////////////////////// +// Type tags +////////////////////////////////////////////////////////////////// + +//! The type tags for the coupled 2cnistokes2p2cni model +NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNI, INHERITS_FROM(TwoCStokesTwoPTwoC)); + +////////////////////////////////////////////////////////////////// +// Property tags +////////////////////////////////////////////////////////////////// + +} // end namespace properties + +} // end namespace Dumux + + +#endif diff --git a/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnipropertydefaults.hh b/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnipropertydefaults.hh new file mode 100644 index 0000000000..d84e2d64c9 --- /dev/null +++ b/dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnipropertydefaults.hh @@ -0,0 +1,46 @@ +// -*- 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 Defines default values for the properties required by the + * coupled 2cnistokes2p2cni model. + */ +#ifndef DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTY_DEFAULTS_HH +#define DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTY_DEFAULTS_HH + +#include "2cnistokes2p2cniproperties.hh" + +namespace Dumux +{ +namespace Properties +{ +////////////////////////////////////////////////////////////////// +// Property defaults +////////////////////////////////////////////////////////////////// + + +} // end namespace properties + +} // end namespace Dumux + +#endif diff --git a/dumux/multidomain/2cstokes2p2c/2cstokes2p2clocaloperator.hh b/dumux/multidomain/2cstokes2p2c/2cstokes2p2clocaloperator.hh index ba3f8be44a..ad2f1620b9 100644 --- a/dumux/multidomain/2cstokes2p2c/2cstokes2p2clocaloperator.hh +++ b/dumux/multidomain/2cstokes2p2c/2cstokes2p2clocaloperator.hh @@ -33,6 +33,7 @@ #include <dune/pdelab/localoperator/idefault.hh> #include <dumux/multidomain/common/multidomainproperties.hh> +#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh> #include <dumux/freeflow/stokesnc/stokesncmodel.hh> #include <dumux/implicit/2p2c/2p2cmodel.hh> @@ -129,23 +130,13 @@ class TwoCStokesTwoPTwoCLocalOperator : TwoCStokesTwoPTwoCLocalOperator(GlobalProblem& globalProblem) : globalProblem_(globalProblem) { - try - { - blModel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, UseBoundaryLayerModel); - massTransferModel_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, MassTransferModel); - } - catch (...) { - blModel_ = 0; - massTransferModel_ = 1; - std::cout << "For using the mass transfer model, the following paremeters have to be set:\n"; - std::cout << "FreeFlow.UseBoundaryLayerModel\n"; - std::cout << "FreeFlow.MassTransferModel\n"; - } + blModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, BoundaryLayerModel); + massTransferModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, MassTransferModel); - if (massTransferModel_ == 1) - std::cout << "Using power law for mass transfer coefficient\n"; - else if (massTransferModel_ == 2) - std::cout << "Using Schluender model for mass transfer\n"; + if (blModel_ > 0) + std::cout << "Using boundary layer model " << blModel_ << std::endl; + if (massTransferModel_ > 0) + std::cout << "Using mass transfer model " << massTransferModel_ << std::endl; } // multidomain flags diff --git a/dumux/multidomain/2cstokes2p2c/2cstokes2p2cproperties.hh b/dumux/multidomain/2cstokes2p2c/2cstokes2p2cproperties.hh new file mode 100644 index 0000000000..f31823ecd4 --- /dev/null +++ b/dumux/multidomain/2cstokes2p2c/2cstokes2p2cproperties.hh @@ -0,0 +1,61 @@ +// -*- 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 Defines the properties required for the coupled 2cstokes2p2c model. + */ + +#ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH +#define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH + +#include <dumux/multidomain/common/multidomainpropertydefaults.hh> + +namespace Dumux +{ + +//////////////////////////////// +// properties +//////////////////////////////// +namespace Properties +{ + +////////////////////////////////////////////////////////////////// +// Type tags +////////////////////////////////////////////////////////////////// + +//! The type tags for the coupled 2cstokes2p2c model +NEW_TYPE_TAG(TwoCStokesTwoPTwoC, INHERITS_FROM(MultiDomain)); + +////////////////////////////////////////////////////////////////// +// Property tags +////////////////////////////////////////////////////////////////// + +NEW_PROP_TAG(FreeFlowBoundaryLayerModel); //!< Type of the used boundary layer model +NEW_PROP_TAG(FreeFlowMassTransferModel); //!< Type of the used mass transfer model + +} // end namespace properties + +} // end namespace Dumux + + +#endif diff --git a/dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh b/dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh new file mode 100644 index 0000000000..0bf48e4854 --- /dev/null +++ b/dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh @@ -0,0 +1,81 @@ +// -*- 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 Defines default values for the properties required by the + * coupled 2cstokes2p2c model. + */ +#ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTY_DEFAULTS_HH +#define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTY_DEFAULTS_HH + +#include "2cstokes2p2cproperties.hh" +#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cnewtoncontroller.hh> + +namespace Dumux +{ +namespace Properties +{ +////////////////////////////////////////////////////////////////// +// Property defaults +////////////////////////////////////////////////////////////////// + +// Specify the multidomain gridview +SET_PROP(TwoCStokesTwoPTwoC, GridView) +{ + typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; + public: + typedef typename MDGrid::LeafGridView type; +}; + +// Specify the type of the used solution vector +SET_PROP(TwoCStokesTwoPTwoC, SolutionVector) +{ + private: + typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator) MDGridOperator; + public: + typedef typename MDGridOperator::Traits::Domain type; +}; + +// Specify the type of the multidomain assembler +SET_TYPE_PROP(TwoCStokesTwoPTwoC, JacobianAssembler, Dumux::MultiDomainAssembler<TypeTag>); + +// Specif the used Newton controller +SET_TYPE_PROP(TwoCStokesTwoPTwoC, NewtonController, Dumux::TwoCStokesTwoPTwoCNewtonController<TypeTag>); + +// set this to one here (must fit to the structure of the coupled matrix which has block length 1) +SET_INT_PROP(TwoCStokesTwoPTwoC, NumEq, 1); + +// Write the solutions of individual newton iterations? +SET_BOOL_PROP(TwoCStokesTwoPTwoC, NewtonWriteConvergence, false); + +//! 0 = none, 1 = Blasius, 2 and 3 = turbulent BL, 9 = constant thickness +SET_INT_PROP(TwoCStokesTwoPTwoC, FreeFlowBoundaryLayerModel, 0); + +//! 0 = none, 1 = power law, 2 = Schluender model mass transfer model +SET_INT_PROP(TwoCStokesTwoPTwoC, FreeFlowMassTransferModel, 0); + +} // end namespace properties + +} // end namespace Dumux + +#endif diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh index b2bd6092de..3752008c23 100644 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh @@ -38,8 +38,8 @@ #include <dumux/material/fluidsystems/h2oairfluidsystem.hh> #include <dumux/multidomain/common/multidomainproblem.hh> -#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cnewtoncontroller.hh> #include <dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnilocaloperator.hh> +#include <dumux/multidomain/2cnistokes2p2cni/2cnistokes2p2cnipropertydefaults.hh> //#include <dumux/linear/amgbackend.hh> #include <dumux/linear/seqsolverbackend.hh> #ifdef HAVE_PARDISO @@ -57,7 +57,7 @@ class TwoCNIStokesTwoPTwoCNIProblem; namespace Properties { -NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNIProblem, INHERITS_FROM(MultiDomain)); +NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNIProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); // Set the grid type SET_PROP(TwoCNIStokesTwoPTwoCNIProblem, Grid) @@ -72,17 +72,13 @@ SET_PROP(TwoCNIStokesTwoPTwoCNIProblem, Grid) #endif }; -// Specify the multidomain gridview -SET_PROP(TwoCNIStokesTwoPTwoCNIProblem, GridView) -{ - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - public: - typedef typename MDGrid::LeafGridView type; -}; - // Set the global problem SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, Problem, TwoCNIStokesTwoPTwoCNIProblem<TypeTag>); +// Set the local coupling operator +SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, 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)); @@ -110,37 +106,11 @@ SET_PROP(TwoCNIStokesTwoPTwoCNIProblem, FluidSystem) /*useComplexrelations=*/true> type; }; -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, JacobianAssembler, Dumux::MultiDomainAssembler<TypeTag>); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, MultiDomainCouplingLocalOperator, - Dumux::TwoCNIStokesTwoPTwoCNILocalOperator<TypeTag>); - -SET_PROP(TwoCNIStokesTwoPTwoCNIProblem, SolutionVector) -{ - private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator) MDGridOperator; - public: - typedef typename MDGridOperator::Traits::Domain type; -}; - -// the newton controller from the TwoCStokesTwoPTwoC model is used -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, NewtonController, TwoCStokesTwoPTwoCNewtonController<TypeTag>); - -//SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, SSORRestartedGMResBackend<TypeTag>); -// if you do not have PARDISO, the SuperLU solver is used: #ifdef HAVE_PARDISO SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, PardisoBackend<TypeTag>); #else SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNIProblem, LinearSolver, SuperLUBackend<TypeTag>); #endif // HAVE_PARDISO - - -// set this to one here (must fit to the structure of the coupled matrix which has block length 1) -SET_INT_PROP(TwoCNIStokesTwoPTwoCNIProblem, NumEq, 1); - -// Write the solutions of individual newton iterations? -SET_BOOL_PROP(TwoCNIStokesTwoPTwoCNIProblem, NewtonWriteConvergence, false); } /*! @@ -170,7 +140,6 @@ class TwoCNIStokesTwoPTwoCNIProblem : public MultiDomainProblem<TypeTag> typedef MultiDomainProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, Model) Model; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cniTypeTag; diff --git a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh index f94e2a8665..05d7f51674 100644 --- a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh @@ -259,9 +259,6 @@ public: ParentType::init(); this->model().globalStorage(storageLastTimestep_); - - const int blModel = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, UseBoundaryLayerModel); - std::cout << "Using boundary layer model " << blModel << std::endl; } // \} diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input index 8518d2c790..5f511f6c1f 100644 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input +++ b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input @@ -93,10 +93,8 @@ SinusTemperatureAmplitude = 0.0 # 0.5 SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC -UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 -MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model ############################################################# [PorousMedium] diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input index 9ccbf29d19..48cf1a5d7b 100644 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input +++ b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input @@ -93,10 +93,10 @@ SinusTemperatureAmplitude = 0.0 # 0.5 SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC -UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness +# UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 -MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model +# MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model ############################################################# [PorousMedium] diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh index d3cb6293e8..9d9b45ab3d 100644 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh +++ b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh @@ -36,10 +36,10 @@ #include <dune/grid/multidomaingrid.hh> #include <dune/grid/io/file/dgfparser.hh> +#include <dumux/material/fluidsystems/h2oairfluidsystem.hh> #include <dumux/multidomain/common/multidomainproblem.hh> #include <dumux/multidomain/2cstokes2p2c/2cstokes2p2clocaloperator.hh> -#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cnewtoncontroller.hh> -#include <dumux/material/fluidsystems/h2oairfluidsystem.hh> +#include <dumux/multidomain/2cstokes2p2c/2cstokes2p2cpropertydefaults.hh> #ifdef HAVE_PARDISO #include <dumux/linear/pardisobackend.hh> #endif // HAVE_PARDISO @@ -55,7 +55,7 @@ class TwoCStokesTwoPTwoCProblem; namespace Properties { -NEW_TYPE_TAG(TwoCStokesTwoPTwoCProblem, INHERITS_FROM(MultiDomain)); +NEW_TYPE_TAG(TwoCStokesTwoPTwoCProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); // Set the grid type SET_PROP(TwoCStokesTwoPTwoCProblem, Grid) @@ -70,17 +70,13 @@ SET_PROP(TwoCStokesTwoPTwoCProblem, Grid) #endif }; -// Specify the multidomain gridview -SET_PROP(TwoCStokesTwoPTwoCProblem, GridView) -{ - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - public: - typedef typename MDGrid::LeafGridView type; -}; - // Set the global problem SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, Problem, Dumux::TwoCStokesTwoPTwoCProblem<TypeTag>); +// Set the local coupling operator +SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, 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)); @@ -107,34 +103,12 @@ SET_PROP(TwoCStokesTwoPTwoCProblem, FluidSystem) /*useComplexrelations=*/false> type; }; -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, JacobianAssembler, Dumux::MultiDomainAssembler<TypeTag>); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, MultiDomainCouplingLocalOperator, Dumux::TwoCStokesTwoPTwoCLocalOperator<TypeTag>); - -SET_PROP(TwoCStokesTwoPTwoCProblem, SolutionVector) -{ - private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator) MDGridOperator; - public: - typedef typename MDGridOperator::Traits::Domain type; -}; - -// newton controller -SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, NewtonController, Dumux::TwoCStokesTwoPTwoCNewtonController<TypeTag>); - // if you do not have PARDISO, the SuperLU solver is used: #ifdef HAVE_PARDISO SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, LinearSolver, PardisoBackend<TypeTag>); #else SET_TYPE_PROP(TwoCStokesTwoPTwoCProblem, LinearSolver, SuperLUBackend<TypeTag>); #endif // HAVE_PARDISO - -// set this to one here (must fit to the structure of the coupled matrix which has block length 1) -SET_INT_PROP(TwoCStokesTwoPTwoCProblem, NumEq, 1); - -// Write the solutions of individual newton iterations? -SET_BOOL_PROP(TwoCStokesTwoPTwoCProblem, NewtonWriteConvergence, false); } /*! @@ -164,7 +138,6 @@ class TwoCStokesTwoPTwoCProblem : public MultiDomainProblem<TypeTag> typedef MultiDomainProblem<TypeTag> ParentType; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) NewtonController; typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cTypeTag; diff --git a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh index b142a3e90f..832ad94caf 100644 --- a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh +++ b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh @@ -224,9 +224,6 @@ public: ParentType::init(); this->model().globalStorage(storageLastTimestep_); - - const int blModel = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, FreeFlow, UseBoundaryLayerModel); - std::cout << "Using boundary layer model " << blModel << std::endl; } /*! diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input index e2befdcdbd..d67308428f 100644 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input +++ b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input @@ -92,10 +92,10 @@ SinusTemperatureAmplitude = 0.0 # 0.5 SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC -UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness +# UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 -MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model +# MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model ############################################################# [PorousMedium] diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input index ee9eb71d56..a9d01f9cc0 100644 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input +++ b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input @@ -92,10 +92,10 @@ SinusTemperatureAmplitude = 0.0 # 0.5 SinusTemperaturePeriod = 3600 # in seconds BeaversJosephSlipVel = 0.00134 ExponentMTC = 0.0 # 1./6., Mass transfer coefficient for S^MTC -UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness +# UseBoundaryLayerModel = 0 # 0 for no boundary layer model, 1 for Blasius, 2 and 3 for turbulent BL, 9 for constant thickness BoundaryLayerOffset = 0.0 # for BL model like Blasius, determines a virtual run-up distance for the flow ConstThickness = 0.0016 # for a constant BL thickness, use BL model 9 -MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model +# MassTransferModel = 0 # 0 for none, 1 for power law, 2 for Schluender model ############################################################# [PorousMedium] -- GitLab