From daa99760eb5e525246a51e419fe7d9971ca319e1 Mon Sep 17 00:00:00 2001 From: Kilian Weishaupt <kilian.weishaupt@iws.uni-stuttgart.de> Date: Fri, 10 Nov 2017 21:06:06 +0100 Subject: [PATCH] [staggered] Account for limitations of dune field vector * does not support /, use =/ instead * intialize with (0.0) instead of = 0.0 --- dumux/assembly/staggeredlocalassembler.hh | 18 +++++++++++------- dumux/implicit/staggered/localresidual.hh | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/dumux/assembly/staggeredlocalassembler.hh b/dumux/assembly/staggeredlocalassembler.hh index f363cf2c04..4cfec4176d 100644 --- a/dumux/assembly/staggeredlocalassembler.hh +++ b/dumux/assembly/staggeredlocalassembler.hh @@ -337,11 +337,12 @@ static void dCCdCC_(Assembler& assembler, ElementSolutionVector elemSol{std::move(priVars)}; curVolVars.update(elemSol, problem, elementJ, scvJ); - const auto deflectedResidual = localResidual.evalCellCenter(problem, element, fvGeometry, prevElemVolVars, curElemVolVars, - prevElemFaceVars, curElemFaceVars, - elemBcTypes, elemFluxVarsCache); + const auto deflectedResidual = localResidual.evalCellCenter(problem, element, fvGeometry, prevElemVolVars, curElemVolVars, + prevElemFaceVars, curElemFaceVars, + elemBcTypes, elemFluxVarsCache); - const auto partialDeriv = (deflectedResidual - ccResidual) / eps; + auto partialDeriv = (deflectedResidual - ccResidual); + partialDeriv /= eps; // update the global jacobian matrix with the current partial derivatives updateGlobalJacobian_(matrix[cellCenterIdx][cellCenterIdx], cellCenterGlobalI, globalJ, pvIdx, partialDeriv); @@ -402,7 +403,8 @@ static void dCCdFace_(Assembler& assembler, prevElemFaceVars, curElemFaceVars, elemBcTypes, elemFluxVarsCache); - const auto partialDeriv = (deflectedResidual - ccResidual) / eps; + auto partialDeriv = (deflectedResidual - ccResidual); + partialDeriv /= eps; // update the global jacobian matrix with the current partial derivatives updateGlobalJacobian_(matrix[cellCenterIdx][faceIdx], cellCenterGlobalI, globalJ, pvIdx - Indices::faceOffset, partialDeriv); @@ -468,7 +470,8 @@ static void dFacedCC_(Assembler& assembler, prevElemFaceVars, curElemFaceVars, elemBcTypes, elemFluxVarsCache); - const auto partialDeriv = (deflectedResidual - cachedResidual[scvf.localFaceIdx()]) / eps; + auto partialDeriv = (deflectedResidual - cachedResidual[scvf.localFaceIdx()]); + partialDeriv /= eps; // update the global jacobian matrix with the current partial derivatives updateGlobalJacobian_(matrix[faceIdx][cellCenterIdx], faceGlobalI, globalJ, pvIdx, partialDeriv); @@ -531,7 +534,8 @@ static void dFacedFace_(Assembler& assembler, prevElemFaceVars, curElemFaceVars, elemBcTypes, elemFluxVarsCache); - const auto partialDeriv = (deflectedResidual - cachedResidual[scvf.localFaceIdx()]) / eps; + auto partialDeriv = (deflectedResidual - cachedResidual[scvf.localFaceIdx()]); + partialDeriv /= eps; // update the global jacobian matrix with the current partial derivatives updateGlobalJacobian_(matrix[faceIdx][faceIdx], faceGlobalI, globalJ, pvIdx - Indices::faceOffset, partialDeriv); diff --git a/dumux/implicit/staggered/localresidual.hh b/dumux/implicit/staggered/localresidual.hh index eca59a79aa..7be67fc539 100644 --- a/dumux/implicit/staggered/localresidual.hh +++ b/dumux/implicit/staggered/localresidual.hh @@ -336,7 +336,7 @@ protected: prevCCStorage *= prevVolVars.extrusionFactor(); curCCStorage *= curVolVars.extrusionFactor(); - CellCenterResidual storageTerm = 0.0; + CellCenterResidual storageTerm(0.0); storageTerm = std::move(curCCStorage); storageTerm -= std::move(prevCCStorage); -- GitLab