diff --git a/dumux/multidomain/common/multidomainconvergencewriter.hh b/dumux/multidomain/common/multidomainconvergencewriter.hh index b49b3f27d0325bcfb20f9a4d7a406c17af718322..ba2e626c0aafc085cfbe6cf16a2b66ef7cbc709c 100644 --- a/dumux/multidomain/common/multidomainconvergencewriter.hh +++ b/dumux/multidomain/common/multidomainconvergencewriter.hh @@ -44,6 +44,7 @@ struct MultiDomainConvergenceWriter typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; + typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; @@ -121,8 +122,8 @@ struct MultiDomainConvergenceWriter SolutionVector1 deltaU1(uLastIter1); SolutionVector2 deltaU2(uLastIter2); - SplitAndMerge<TypeTag>::splitSolVector(uLastIter, uLastIter1, uLastIter2); - SplitAndMerge<TypeTag>::splitSolVector(deltaU, deltaU1, deltaU2); + SplitAndMerge::splitSolVector(uLastIter, uLastIter1, uLastIter2); + SplitAndMerge::splitSolVector(deltaU, deltaU1, deltaU2); std::cout << "\n writing convergence file of current Newton iteration \n"; ctl_.method().model().sdModel1().addConvergenceVtkFields(*vtkMultiWriter1_, uLastIter1, deltaU1); diff --git a/dumux/multidomain/common/multidomainmodel.hh b/dumux/multidomain/common/multidomainmodel.hh index 814daa8b326babf7ed2cb01988d48d9537eeb96a..4d22a4a665b8e4f548c5f02703b6c434fcce7a1d 100644 --- a/dumux/multidomain/common/multidomainmodel.hh +++ b/dumux/multidomain/common/multidomainmodel.hh @@ -58,7 +58,7 @@ class MultiDomainModel typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Model) SubDomainModel1; typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Model) SubDomainModel2; - typedef Dumux::SplitAndMerge<TypeTag> SplitAndMerge; + typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; enum { numEq1 = GET_PROP_VALUE(TypeTag, NumEq1), diff --git a/dumux/multidomain/common/multidomainnewtoncontroller.hh b/dumux/multidomain/common/multidomainnewtoncontroller.hh index cc71989d5332466cb4cfec7160d0f233f58224a4..d021a668d4d027d5f00e312628d8618a3ef851e0 100644 --- a/dumux/multidomain/common/multidomainnewtoncontroller.hh +++ b/dumux/multidomain/common/multidomainnewtoncontroller.hh @@ -63,6 +63,7 @@ class MultiDomainNewtonController : public NewtonController<TypeTag> typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; + typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; @@ -241,11 +242,9 @@ public: */ void newtonEndStep(SolutionVector &uCurrentIter, SolutionVector &uLastIter) { - typedef Dumux::SplitAndMerge<TypeTag> Common; - - Common::splitSolVector(this->model_().curSol(), - this->model_().sdModel1().curSol(), - this->model_().sdModel2().curSol()); + SplitAndMerge::splitSolVector(this->model_().curSol(), + this->model_().sdModel1().curSol(), + this->model_().sdModel2().curSol()); ParentType::newtonEndStep(uCurrentIter, uLastIter); } diff --git a/dumux/multidomain/common/multidomainproperties.hh b/dumux/multidomain/common/multidomainproperties.hh index 373062fc7e514aef02728bc2c05685cc4890b493..22b480b770be28e83d37cdd546834b9e186aa1bd 100644 --- a/dumux/multidomain/common/multidomainproperties.hh +++ b/dumux/multidomain/common/multidomainproperties.hh @@ -120,6 +120,9 @@ NEW_PROP_TAG(ConstraintsTrafo); //! Specifies the type of the jacobian matrix as used for the linear solver NEW_PROP_TAG(JacobianMatrix); +//! the routines that are used to split and merge solution vectors +NEW_PROP_TAG(SplitAndMerge); + } // namespace Properties } // namespace Dumux diff --git a/dumux/multidomain/common/multidomainpropertydefaults.hh b/dumux/multidomain/common/multidomainpropertydefaults.hh index 10fb338c8cdb9476bf63e2ec861ad0bb1c4e8885..3ec34d67bd681950eebbac6cbcab574662faffaa 100644 --- a/dumux/multidomain/common/multidomainpropertydefaults.hh +++ b/dumux/multidomain/common/multidomainpropertydefaults.hh @@ -240,6 +240,9 @@ SET_INT_PROP(MultiDomain, LinearSolverMaxIterations, 250); // set the maximum time step divisions SET_INT_PROP(MultiDomain, NewtonMaxTimeStepDivisions, 10); +// set the routines for splitting and merging solution vectors +SET_TYPE_PROP(MultiDomain, SplitAndMerge, SplitAndMerge<TypeTag>); + } // namespace Properties } // namespace Dumux