diff --git a/dumux/assembly/boxlocalassembler.hh b/dumux/assembly/boxlocalassembler.hh index 292ddf3be65c2ca6438e3881c1e499af0071e15b..7b183bc63adcda0303a181ab42adb8879e5723c4 100644 --- a/dumux/assembly/boxlocalassembler.hh +++ b/dumux/assembly/boxlocalassembler.hh @@ -28,7 +28,6 @@ #include #include -#include #include #include #include @@ -44,22 +43,18 @@ namespace Dumux { * \ingroup Assembly * \ingroup BoxDiscretization * \brief A base class for all local box assemblers - * \tparam TypeTag The TypeTag * \tparam Assembler The assembler type * \tparam Implementation The actual implementation * \tparam implicit Specifies whether the time discretization is implicit or not not (i.e. explicit) */ -template -class BoxLocalAssemblerBase : public FVLocalAssemblerBase +template +class BoxLocalAssemblerBase : public FVLocalAssemblerBase { - using ParentType = FVLocalAssemblerBase; - using JacobianMatrix = GetPropType; - using GridVariables = GetPropType; - using SolutionVector = GetPropType; - using ElementVolumeVariables = typename GetPropType::LocalView; - - enum { numEq = GetPropType::numEq() }; - + using ParentType = FVLocalAssemblerBase; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; + using SolutionVector = typename Assembler::ResidualType; + using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView; public: using ParentType::ParentType; @@ -226,12 +221,12 @@ public: const auto dirichletValues = this->problem().dirichlet(this->element(), scvI); // set the Dirichlet conditions in residual and jacobian - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) + for (auto eqIdx = 0U; eqIdx < dirichletValues.size(); ++eqIdx) { if (bcTypes.isDirichlet(eqIdx)) { const auto pvIdx = bcTypes.eqToDirichletIndex(eqIdx); - assert(0 <= pvIdx && pvIdx < numEq); + assert(0 <= pvIdx && pvIdx < dirichletValues.size()); applyDirichlet(scvI, dirichletValues, eqIdx, pvIdx); } } @@ -246,11 +241,10 @@ public: * \ingroup Assembly * \ingroup BoxDiscretization * \brief An assembler for Jacobian and residual contribution per element (box methods) - * \tparam TypeTag The TypeTag * \tparam diffMethod The differentiation method to residual compute derivatives * \tparam implicit Specifies whether the time discretization is implicit or not not (i.e. explicit) */ -template +template class BoxLocalAssembler; /*! @@ -258,25 +252,21 @@ class BoxLocalAssembler; * \ingroup BoxDiscretization * \brief Box local assembler using numeric differentiation and implicit time discretization */ -template -class BoxLocalAssembler -: public BoxLocalAssemblerBase, true> +template +class BoxLocalAssembler +: public BoxLocalAssemblerBase, true> { - using ThisType = BoxLocalAssembler; - using ParentType = BoxLocalAssemblerBase; - using Scalar = GetPropType; - using GridVariables = GetPropType; - using VolumeVariables = GetPropType; - using JacobianMatrix = GetPropType; - using LocalResidual = GetPropType; - using ElementResidualVector = typename LocalResidual::ElementResidualVector; + using ThisType = BoxLocalAssembler; + using ParentType = BoxLocalAssemblerBase; - enum { numEq = GetPropType::numEq() }; - enum { dim = GetPropType::GridView::dimension }; - - static constexpr bool enableGridFluxVarsCache = getPropValue(); + using Scalar = typename Assembler::Scalar; + using GridVariables = typename Assembler::GridVariables; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using ElementResidualVector = typename Assembler::LocalResidual::ElementResidualVector; + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + static constexpr auto dim = Assembler::GridGeometry::GridView::dimension; public: using ParentType::ParentType; @@ -320,7 +310,7 @@ public: // dof index and corresponding actual pri vars const auto dofIdx = scv.dofIndex(); auto& curVolVars = this->getVolVarAccess(gridVariables.curGridVolVars(), curElemVolVars, scv); - const VolumeVariables origVolVars(curVolVars); + const auto origVolVars = curVolVars; // calculate derivatives w.r.t to the privars at the dof at hand for (int pvIdx = 0; pvIdx < numEq; pvIdx++) @@ -377,23 +367,21 @@ public: * \ingroup BoxDiscretization * \brief Box local assembler using numeric differentiation and explicit time discretization */ -template -class BoxLocalAssembler -: public BoxLocalAssemblerBase, false> +template +class BoxLocalAssembler +: public BoxLocalAssemblerBase, false> { - using ThisType = BoxLocalAssembler; - using ParentType = BoxLocalAssemblerBase; - using Scalar = GetPropType; - using GridVariables = GetPropType; - using VolumeVariables = GetPropType; - using JacobianMatrix = GetPropType; - using LocalResidual = GetPropType; - using ElementResidualVector = typename LocalResidual::ElementResidualVector; - - enum { numEq = GetPropType::numEq() }; - enum { dim = GetPropType::GridView::dimension }; + using ThisType = BoxLocalAssembler; + using ParentType = BoxLocalAssemblerBase; + + using Scalar = typename Assembler::Scalar; + using GridVariables = typename Assembler::GridVariables; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using ElementResidualVector = typename Assembler::LocalResidual::ElementResidualVector; + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + static constexpr auto dim = Assembler::GridGeometry::GridView::dimension; public: using ParentType::ParentType; @@ -441,7 +429,7 @@ public: // dof index and corresponding actual pri vars const auto dofIdx = scv.dofIndex(); auto& curVolVars = this->getVolVarAccess(gridVariables.curGridVolVars(), curElemVolVars, scv); - const VolumeVariables origVolVars(curVolVars); + const auto origVolVars = curVolVars; // calculate derivatives w.r.t to the privars at the dof at hand for (int pvIdx = 0; pvIdx < numEq; pvIdx++) @@ -489,18 +477,17 @@ public: * \ingroup BoxDiscretization * \brief Box local assembler using analytic differentiation and implicit time discretization */ -template -class BoxLocalAssembler -: public BoxLocalAssemblerBase, true> +template +class BoxLocalAssembler +: public BoxLocalAssemblerBase, true> { - using ThisType = BoxLocalAssembler; - using ParentType = BoxLocalAssemblerBase; - using GridVariables = GetPropType; - using JacobianMatrix = GetPropType; - using LocalResidual = GetPropType; - using ElementResidualVector = typename LocalResidual::ElementResidualVector; + using ThisType = BoxLocalAssembler; + using ParentType = BoxLocalAssemblerBase; + using GridVariables = typename Assembler::GridVariables; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using ElementResidualVector = typename Assembler::LocalResidual::ElementResidualVector; public: using ParentType::ParentType; @@ -608,18 +595,17 @@ public: * \ingroup BoxDiscretization * \brief Box local assembler using analytic differentiation and explicit time discretization */ -template -class BoxLocalAssembler -: public BoxLocalAssemblerBase, false> +template +class BoxLocalAssembler +: public BoxLocalAssemblerBase, false> { - using ThisType = BoxLocalAssembler; - using ParentType = BoxLocalAssemblerBase; - using GridVariables = GetPropType; - using JacobianMatrix = GetPropType; - using LocalResidual = GetPropType; - using ElementResidualVector = typename LocalResidual::ElementResidualVector; + using ThisType = BoxLocalAssembler; + using ParentType = BoxLocalAssemblerBase; + using GridVariables = typename Assembler::GridVariables; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using ElementResidualVector = typename Assembler::LocalResidual::ElementResidualVector; public: using ParentType::ParentType; diff --git a/dumux/assembly/boxlocalresidual.hh b/dumux/assembly/boxlocalresidual.hh index ca6410ddb234126ee96b1a49097e5aedb43a3cd8..9dcacf6460d3e6f5ff3dfe93bed8d7d94794f53d 100644 --- a/dumux/assembly/boxlocalresidual.hh +++ b/dumux/assembly/boxlocalresidual.hh @@ -47,7 +47,6 @@ class BoxLocalResidual : public FVLocalResidual using Problem = GetPropType; using GridView = typename GetPropType::GridView; using Element = typename GridView::template Codim<0>::Entity; - using ElementBoundaryTypes = GetPropType; using FVElementGeometry = typename GetPropType::LocalView; using ElementVolumeVariables = typename GetPropType::LocalView; using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; @@ -56,6 +55,7 @@ class BoxLocalResidual : public FVLocalResidual public: using ElementResidualVector = typename ParentType::ElementResidualVector; + using ElementBoundaryTypes = GetPropType; using ParentType::ParentType; //! evaluate flux residuals for one sub control volume face and add to residual diff --git a/dumux/assembly/cclocalassembler.hh b/dumux/assembly/cclocalassembler.hh index 004bb7e8f09c4ce0c77f1afd1dad6c11d7e3f100..d8cf8deca8dff2d9871f5c1178cb7016bb3276e1 100644 --- a/dumux/assembly/cclocalassembler.hh +++ b/dumux/assembly/cclocalassembler.hh @@ -25,12 +25,12 @@ #ifndef DUMUX_CC_LOCAL_ASSEMBLER_HH #define DUMUX_CC_LOCAL_ASSEMBLER_HH +#include #include #include // for GhostEntity #include #include -#include #include #include #include @@ -47,21 +47,18 @@ namespace Dumux { * \ingroup Assembly * \ingroup CCDiscretization * \brief A base class for all local cell-centered assemblers - * \tparam TypeTag The TypeTag * \tparam Assembler The assembler type * \tparam Implementation The actual implementation * \tparam implicit Specifies whether the time discretization is implicit or not (i.e. explicit) */ -template -class CCLocalAssemblerBase : public FVLocalAssemblerBase +template +class CCLocalAssemblerBase : public FVLocalAssemblerBase { - using ParentType = FVLocalAssemblerBase; - using GridView = typename GetPropType::GridView; - using JacobianMatrix = GetPropType; - using GridVariables = GetPropType; - using SolutionVector = GetPropType; - using ElementVolumeVariables = typename GetPropType::LocalView; - using NumEqVector = GetPropType; + using ParentType = FVLocalAssemblerBase; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; + using SolutionVector = typename Assembler::ResidualType; + using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView; static_assert(!Assembler::Problem::enableInternalDirichletConstraints(), "Internal Dirichlet constraints are currently not implemented for cc-methods!"); @@ -115,11 +112,10 @@ public: * \ingroup Assembly * \ingroup CCDiscretization * \brief An assembler for Jacobian and residual contribution per element (cell-centered methods) - * \tparam TypeTag The TypeTag * \tparam diffMethod The differentiation method to residual compute derivatives * \tparam implicit Specifies whether the time discretization is implicit or not not (i.e. explicit) */ -template +template class CCLocalAssembler; /*! @@ -127,27 +123,31 @@ class CCLocalAssembler; * \ingroup CCDiscretization * \brief Cell-centered scheme local assembler using numeric differentiation and implicit time discretization */ -template -class CCLocalAssembler -: public CCLocalAssemblerBase, true > +template +class CCLocalAssembler +: public CCLocalAssemblerBase, true > { - using ThisType = CCLocalAssembler; - using ParentType = CCLocalAssemblerBase; - using Scalar = GetPropType; - using NumEqVector = GetPropType; - using Element = typename GetPropType::GridView::template Codim<0>::Entity; - using GridGeometry = GetPropType; - using FVElementGeometry = typename GridGeometry::LocalView; - using GridVariables = GetPropType; - using JacobianMatrix = GetPropType; - - enum { numEq = GetPropType::numEq() }; - enum { dim = GetPropType::GridView::dimension }; - - using FluxStencil = Dumux::FluxStencil; + using ThisType = CCLocalAssembler; + using ParentType = CCLocalAssemblerBase; + + using Scalar = typename Assembler::Scalar; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; + using SolutionVector = typename Assembler::ResidualType; + using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView; + using GridGeometry = typename Assembler::GridGeometry; + using Element = typename GridGeometry::GridView::template Codim<0>::Entity; + + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + static constexpr auto dim = GridGeometry::GridView::dimension; + + // TODO Deduce from Assembler::Problem + using NumEqVector = Dune::FieldVector; + + using FluxStencil = Dumux::FluxStencil; static constexpr int maxElementStencilSize = GridGeometry::maxElementStencilSize; - static constexpr bool enableGridFluxVarsCache = getPropValue(); + static constexpr bool enableGridFluxVarsCache = GridVariables::GridFluxVariablesCache::cachingEnabled; public: @@ -313,20 +313,24 @@ public: * \ingroup CCDiscretization * \brief Cell-centered scheme local assembler using numeric differentiation and explicit time discretization */ -template -class CCLocalAssembler -: public CCLocalAssemblerBase, false> +template +class CCLocalAssembler +: public CCLocalAssemblerBase, false> { - using ThisType = CCLocalAssembler; - using ParentType = CCLocalAssemblerBase; - using Scalar = GetPropType; - using NumEqVector = GetPropType; - using Element = typename GetPropType::GridView::template Codim<0>::Entity; - using GridVariables = GetPropType; - using JacobianMatrix = GetPropType; + using ThisType = CCLocalAssembler; + using ParentType = CCLocalAssemblerBase; + + using Scalar = typename Assembler::Scalar; + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; + using GridGeometry = typename Assembler::GridGeometry; + using Element = typename GridGeometry::GridView::template Codim<0>::Entity; - enum { numEq = GetPropType::numEq() }; + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + + // TODO Deduce from Assembler::Problem + using NumEqVector = Dune::FieldVector; public: using ParentType::ParentType; @@ -425,18 +429,21 @@ public: * \ingroup CCDiscretization * \brief Cell-centered scheme local assembler using analytic (hand-coded) differentiation and implicit time discretization */ -template -class CCLocalAssembler -: public CCLocalAssemblerBase, true> +template +class CCLocalAssembler +: public CCLocalAssemblerBase, true> { - using ThisType = CCLocalAssembler; - using ParentType = CCLocalAssemblerBase; - using NumEqVector = GetPropType; - using JacobianMatrix = GetPropType; - using GridVariables = GetPropType; + using ThisType = CCLocalAssembler; + using ParentType = CCLocalAssemblerBase; + + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; - enum { numEq = GetPropType::numEq() }; + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + + // TODO Deduce from Assembler::Problem + using NumEqVector = Dune::FieldVector; public: using ParentType::ParentType; @@ -517,19 +524,21 @@ public: * \ingroup CCDiscretization * \brief Cell-centered scheme local assembler using analytic (hand-coded) differentiation and explicit time discretization */ -template -class CCLocalAssembler -: public CCLocalAssemblerBase, false> +template +class CCLocalAssembler +: public CCLocalAssemblerBase, false> { - using ThisType = CCLocalAssembler; - using ParentType = CCLocalAssemblerBase; - using NumEqVector = GetPropType; - using JacobianMatrix = GetPropType; - using GridVariables = GetPropType; + using ThisType = CCLocalAssembler; + using ParentType = CCLocalAssemblerBase; + + using JacobianMatrix = typename Assembler::JacobianMatrix; + using GridVariables = typename Assembler::GridVariables; - enum { numEq = GetPropType::numEq() }; + static constexpr auto numEq = GridVariables::VolumeVariables::PrimaryVariables::dimension; + // TODO Deduce from Assembler::Problem + using NumEqVector = Dune::FieldVector; public: using ParentType::ParentType; diff --git a/dumux/assembly/cclocalresidual.hh b/dumux/assembly/cclocalresidual.hh index 9f1c48fc764fe979ddbc1c6c2e40bedcfcb29fa3..790d65bd5620a93c740601d667862c8c3499645d 100644 --- a/dumux/assembly/cclocalresidual.hh +++ b/dumux/assembly/cclocalresidual.hh @@ -43,7 +43,6 @@ class CCLocalResidual : public FVLocalResidual using Problem = GetPropType; using Element = typename GetPropType::GridView::template Codim<0>::Entity; using NumEqVector = GetPropType; - using ElementBoundaryTypes = GetPropType; using ElementVolumeVariables = typename GetPropType::LocalView; using ElementFluxVariablesCache = typename GetPropType::LocalView; using FVElementGeometry = typename GetPropType::LocalView; @@ -51,6 +50,7 @@ class CCLocalResidual : public FVLocalResidual public: using ElementResidualVector = typename ParentType::ElementResidualVector; + using ElementBoundaryTypes = GetPropType; using ParentType::ParentType; //! evaluate the flux residual for a sub control volume face and add to residual diff --git a/dumux/assembly/fvassembler.hh b/dumux/assembly/fvassembler.hh index c60d14fff8cd37d56417d2574acf57b8daa5b87e..411ce12cd20719c7c17545845359d45961f2a15a 100644 --- a/dumux/assembly/fvassembler.hh +++ b/dumux/assembly/fvassembler.hh @@ -51,7 +51,6 @@ template class FVAssembler { using GridView = typename GetPropType::GridView; - using LocalResidual = GetPropType; using Element = typename GridView::template Codim<0>::Entity; using TimeLoop = TimeLoopBase>; using SolutionVector = GetPropType; @@ -60,8 +59,8 @@ class FVAssembler static constexpr bool isBox = discMethod == DiscretizationMethod::box; using ThisType = FVAssembler; - using LocalAssembler = std::conditional_t, - CCLocalAssembler>; + using LocalAssembler = std::conditional_t, + CCLocalAssembler>; public: using Scalar = GetPropType; @@ -69,6 +68,7 @@ public: using GridGeometry = GetPropType; using Problem = GetPropType; using GridVariables = GetPropType; + using LocalResidual = GetPropType; using ResidualType = SolutionVector; diff --git a/dumux/assembly/fvlocalassemblerbase.hh b/dumux/assembly/fvlocalassemblerbase.hh index 7d894ca276fce2b65e621189b2ad167908ed3bbd..dd680f5b360ba460a83e612fc11649f51301cd63 100644 --- a/dumux/assembly/fvlocalassemblerbase.hh +++ b/dumux/assembly/fvlocalassemblerbase.hh @@ -29,7 +29,6 @@ #include #include -#include #include #include @@ -38,33 +37,32 @@ namespace Dumux { /*! * \ingroup Assembly * \brief A base class for all local assemblers - * \tparam TypeTag The TypeTag * \tparam Assembler The assembler type * \tparam Implementation The assembler implementation * \tparam useImplicitAssembly Specifies whether the time discretization is implicit or not not (i.e. explicit) */ -template +template class FVLocalAssemblerBase { - using Problem = GetPropType; - using GridView = typename GetPropType::GridView; - using Scalar = GetPropType; - using JacobianMatrix = GetPropType; - using GridVariables = GetPropType; + using Problem = typename Assembler::Problem; + using Scalar = typename Assembler::Scalar; + using GridVariables = typename Assembler::GridVariables; using SolutionVector = typename Assembler::ResidualType; - using ElementBoundaryTypes = GetPropType; - using FVElementGeometry = typename GetPropType::LocalView; - using SubControlVolume = typename FVElementGeometry::SubControlVolume; - using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; - using GridVolumeVariables = GetPropType; - using ElementVolumeVariables = typename GetPropType::LocalView; - using VolumeVariables = GetPropType; - using ElementFluxVariablesCache = typename GetPropType::LocalView; - using Element = typename GridView::template Codim<0>::Entity; - static constexpr auto numEq = GetPropType::numEq(); + using GridGeometry = typename Assembler::GridGeometry; + using FVElementGeometry = typename GridGeometry::LocalView; + using SubControlVolume = typename GridGeometry::SubControlVolume; + using SubControlVolumeFace = typename GridGeometry::SubControlVolumeFace; + using GridVolumeVariables = typename GridVariables::GridVolumeVariables; + using ElementVolumeVariables = typename GridVolumeVariables::LocalView; + using VolumeVariables = typename GridVariables::VolumeVariables; + using GridFluxVariablesCache = typename GridVariables::GridFluxVariablesCache; + using ElementFluxVariablesCache = typename GridFluxVariablesCache::LocalView; + using Element = typename GridGeometry::GridView::template Codim<0>::Entity; + using ElementBoundaryTypes = typename Assembler::LocalResidual::ElementBoundaryTypes; + static constexpr auto numEq = VolumeVariables::PrimaryVariables::dimension; public: - using LocalResidual = GetPropType; + using LocalResidual = typename Assembler::LocalResidual; using ElementResidualVector = typename LocalResidual::ElementResidualVector; /*! @@ -310,11 +308,11 @@ protected: const Implementation &asImp_() const { return *static_cast(this); } - template(), int> = 0> + template = 0> VolumeVariables& getVolVarAccess(GridVolumeVariables& gridVolVars, ElementVolumeVariables& elemVolVars, const SubControlVolume& scv) { return elemVolVars[scv]; } - template(), int> = 0> + template = 0> VolumeVariables& getVolVarAccess(GridVolumeVariables& gridVolVars, ElementVolumeVariables& elemVolVars, const SubControlVolume& scv) { return gridVolVars.volVars(scv); } diff --git a/dumux/assembly/fvlocalresidual.hh b/dumux/assembly/fvlocalresidual.hh index 3c105ea8b6c86be567736ebdf50dbe25cac41073..21530e32a42b9499e6e7bfa0f8a6c94e2f2bea0f 100644 --- a/dumux/assembly/fvlocalresidual.hh +++ b/dumux/assembly/fvlocalresidual.hh @@ -54,7 +54,6 @@ class FVLocalResidual using SubControlVolume = typename FVElementGeometry::SubControlVolume; using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; using NumEqVector = GetPropType; - using ElementBoundaryTypes = GetPropType; using ElementFluxVariablesCache = typename GetPropType::LocalView; using VolumeVariables = GetPropType; using ElementVolumeVariables = typename GetPropType::LocalView; @@ -158,6 +157,7 @@ public: return residual; } + template ElementResidualVector evalFluxAndSource(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars, @@ -358,6 +358,7 @@ public: * \param elemFluxVarsCache The flux variable caches for the element stencil * \param scvf The sub control volume face the flux term is integrated over */ + template void evalFlux(ElementResidualVector& residual, const Problem& problem, const Element& element, diff --git a/dumux/assembly/staggeredlocalresidual.hh b/dumux/assembly/staggeredlocalresidual.hh index 15ef2a4a9abef2ba95991fa4980fc8943e4cfb8e..ea67a2dae9b9903d36989894ab7e003fe7e95690 100644 --- a/dumux/assembly/staggeredlocalresidual.hh +++ b/dumux/assembly/staggeredlocalresidual.hh @@ -44,7 +44,6 @@ class StaggeredLocalResidual using Implementation = GetPropType; using Problem = GetPropType; using Element = typename GridView::template Codim<0>::Entity; - using ElementBoundaryTypes = GetPropType; using ElementVolumeVariables = typename GetPropType::LocalView; using ElementFluxVariablesCache = typename GetPropType::LocalView; using FVElementGeometry = typename GetPropType::LocalView; @@ -62,6 +61,7 @@ public: using CellCenterResidualValue = GetPropType; using FaceResidualValue = GetPropType; using ElementResidualVector = CellCenterResidualValue; + using ElementBoundaryTypes = GetPropType; //! the constructor StaggeredLocalResidual(const Problem* problem, diff --git a/dumux/freeflow/navierstokes/staggered/localresidual.hh b/dumux/freeflow/navierstokes/staggered/localresidual.hh index 7a57d81386995844a95586eacb39114f75cab9a3..18f2dc81190f44b9030b825cc50ed33cffbd35ec 100644 --- a/dumux/freeflow/navierstokes/staggered/localresidual.hh +++ b/dumux/freeflow/navierstokes/staggered/localresidual.hh @@ -68,7 +68,6 @@ class NavierStokesResidualImpl using Element = typename GridView::template Codim<0>::Entity; using SubControlVolume = typename FVElementGeometry::SubControlVolume; using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; - using ElementBoundaryTypes = GetPropType; using CellCenterPrimaryVariables = GetPropType; using FacePrimaryVariables = GetPropType; using FluxVariables = GetPropType; @@ -80,6 +79,7 @@ class NavierStokesResidualImpl using ModelTraits = GetPropType; public: + using ElementBoundaryTypes = typename ParentType::ElementBoundaryTypes; using EnergyLocalResidual = FreeFlowEnergyLocalResidual 1)>; // account for the offset of the cell center privars within the PrimaryVariables container diff --git a/dumux/multidomain/facet/box/localresidual.hh b/dumux/multidomain/facet/box/localresidual.hh index f4d548c36933ad45406cc5824346c0213a131e00..55ef0b47fe062bc33094bf09e8cf00875e3b91b0 100644 --- a/dumux/multidomain/facet/box/localresidual.hh +++ b/dumux/multidomain/facet/box/localresidual.hh @@ -45,7 +45,6 @@ class BoxFacetCouplingLocalResidual : public FVLocalResidual using Problem = GetPropType; using GridView = typename GetPropType::GridView; using Element = typename GridView::template Codim<0>::Entity; - using ElementBoundaryTypes = GetPropType; using FVElementGeometry = typename GetPropType::LocalView; using ElementVolumeVariables = typename GetPropType::LocalView; using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; @@ -54,6 +53,7 @@ class BoxFacetCouplingLocalResidual : public FVLocalResidual public: using ElementResidualVector = typename ParentType::ElementResidualVector; + using ElementBoundaryTypes = GetPropType; using ParentType::ParentType; //! evaluate flux residuals for one sub control volume face and add to residual diff --git a/dumux/porousmediumflow/mpnc/localresidual.hh b/dumux/porousmediumflow/mpnc/localresidual.hh index 3ae3b7f5e9b74283ccedffef0e421316e5480f7c..fa400b6081cc26f9f5360ef7594b4b07ea356c9e 100644 --- a/dumux/porousmediumflow/mpnc/localresidual.hh +++ b/dumux/porousmediumflow/mpnc/localresidual.hh @@ -47,7 +47,6 @@ class MPNCLocalResidual : public CompositionalLocalResidual using ParentType = CompositionalLocalResidual; using Element = typename GetPropType::GridView::template Codim<0>::Entity; using FVElementGeometry = typename GetPropType::LocalView; - using ElementBoundaryTypes = GetPropType; using ElementFluxVariablesCache = typename GetPropType::LocalView; using ElementVolumeVariables = typename GetPropType::LocalView; using ModelTraits = GetPropType; @@ -58,7 +57,7 @@ class MPNCLocalResidual : public CompositionalLocalResidual public: using ParentType::ParentType; - + using typename ParentType::ElementBoundaryTypes; using typename ParentType::ElementResidualVector; ElementResidualVector evalFluxAndSource(const Element& element,