diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C index 3ca9ddd62c..4ba078901b 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C @@ -2348,12 +2348,19 @@ Foam::operator& GeometricField& Mphi = tMphi(); // Loop over field components - for (direction cmpt=0; cmpt::nComponents; cmpt++) + if (M.hasDiag()) { - scalarField psiCmpt(psi.field().component(cmpt)); - scalarField boundaryDiagCmpt(M.diag()); - M.addBoundaryDiag(boundaryDiagCmpt, cmpt); - Mphi.internalField().replace(cmpt, -boundaryDiagCmpt*psiCmpt); + for (direction cmpt=0; cmpt::nComponents; cmpt++) + { + scalarField psiCmpt(psi.field().component(cmpt)); + scalarField boundaryDiagCmpt(M.diag()); + M.addBoundaryDiag(boundaryDiagCmpt, cmpt); + Mphi.internalField().replace(cmpt, -boundaryDiagCmpt*psiCmpt); + } + } + else + { + Mphi.internalField() = pTraits::zero; } Mphi.internalField() += M.lduMatrix::H(psi.field()) + M.source();