diff --git a/dumux/assembly/boxlocalassembler.hh b/dumux/assembly/boxlocalassembler.hh index 9487428f95ef5381fd0ae9118cd6f782b80f256e..86644925fff1ae9bf798135f4df6472a5a6b7c5d 100644 --- a/dumux/assembly/boxlocalassembler.hh +++ b/dumux/assembly/boxlocalassembler.hh @@ -205,6 +205,8 @@ class BoxLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, /*implicit=*/tr using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); using JacobianMatrix = typename GET_PROP_TYPE(TypeTag, JacobianMatrix); + using LocalResidual = typename GET_PROP_TYPE(TypeTag, LocalResidual); + using ElementResidualVector = typename LocalResidual::ElementResidualVector; enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; enum { dim = GET_PROP_TYPE(TypeTag, GridView)::dimension }; @@ -221,7 +223,7 @@ public: * * \return The element residual at the current solution. */ - auto assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) + ElementResidualVector assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) { // get some aliases for convenience const auto& element = this->element(); @@ -243,7 +245,7 @@ public: // create the element solution ElementSolutionVector elemSol(element, curSol, fvGeometry); - using ElementResidualVector = std::decay_t<decltype(origResiduals)>; + // create the vector storing the partial derivatives ElementResidualVector partialDerivs(element.subEntities(dim)); // calculation of the derivatives @@ -313,6 +315,8 @@ class BoxLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, /*implicit=*/fa using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); using JacobianMatrix = typename GET_PROP_TYPE(TypeTag, JacobianMatrix); + using LocalResidual = typename GET_PROP_TYPE(TypeTag, LocalResidual); + using ElementResidualVector = typename LocalResidual::ElementResidualVector; enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; enum { dim = GET_PROP_TYPE(TypeTag, GridView)::dimension }; @@ -327,7 +331,7 @@ public: * * \return The element residual at the current solution. */ - auto assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) + ElementResidualVector assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) { // get some aliases for convenience const auto& element = this->element(); @@ -349,7 +353,7 @@ public: // create the element solution ElementSolutionVector elemSol(element, curSol, fvGeometry); - using ElementResidualVector = std::decay_t<decltype(origResiduals)>; + // create the vector storing the partial derivatives ElementResidualVector partialDerivs(element.subEntities(dim)); // calculation of the derivatives @@ -412,6 +416,8 @@ class BoxLocalAssembler<TypeTag, Assembler, DiffMethod::analytic, /*implicit=*/t using ParentType = BoxLocalAssemblerBase<TypeTag, Assembler, ThisType, true>; using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); using JacobianMatrix = typename GET_PROP_TYPE(TypeTag, JacobianMatrix); + using LocalResidual = typename GET_PROP_TYPE(TypeTag, LocalResidual); + using ElementResidualVector = typename LocalResidual::ElementResidualVector; public: @@ -423,7 +429,7 @@ public: * * \return The element residual at the current solution. */ - auto assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) + ElementResidualVector assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) { // get some aliases for convenience const auto& element = this->element(); @@ -524,6 +530,8 @@ class BoxLocalAssembler<TypeTag, Assembler, DiffMethod::analytic, /*implicit=*/f using ParentType = BoxLocalAssemblerBase<TypeTag, Assembler, ThisType, false>; using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); using JacobianMatrix = typename GET_PROP_TYPE(TypeTag, JacobianMatrix); + using LocalResidual = typename GET_PROP_TYPE(TypeTag, LocalResidual); + using ElementResidualVector = typename LocalResidual::ElementResidualVector; public: @@ -535,7 +543,7 @@ public: * * \return The element residual at the current solution. */ - auto assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) + ElementResidualVector assembleJacobianAndResidualImpl(JacobianMatrix& A, GridVariables& gridVariables) { // get some aliases for convenience const auto& element = this->element();