mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
fvMatrix::operator&: filter matrix with no diagonal as special case
This commit is contained in:
@ -2348,12 +2348,19 @@ Foam::operator&
|
|||||||
GeometricField<Type, fvPatchField, volMesh>& Mphi = tMphi();
|
GeometricField<Type, fvPatchField, volMesh>& Mphi = tMphi();
|
||||||
|
|
||||||
// Loop over field components
|
// Loop over field components
|
||||||
for (direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
|
if (M.hasDiag())
|
||||||
{
|
{
|
||||||
scalarField psiCmpt(psi.field().component(cmpt));
|
for (direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
|
||||||
scalarField boundaryDiagCmpt(M.diag());
|
{
|
||||||
M.addBoundaryDiag(boundaryDiagCmpt, cmpt);
|
scalarField psiCmpt(psi.field().component(cmpt));
|
||||||
Mphi.internalField().replace(cmpt, -boundaryDiagCmpt*psiCmpt);
|
scalarField boundaryDiagCmpt(M.diag());
|
||||||
|
M.addBoundaryDiag(boundaryDiagCmpt, cmpt);
|
||||||
|
Mphi.internalField().replace(cmpt, -boundaryDiagCmpt*psiCmpt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Mphi.internalField() = pTraits<Type>::zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mphi.internalField() += M.lduMatrix::H(psi.field()) + M.source();
|
Mphi.internalField() += M.lduMatrix::H(psi.field()) + M.source();
|
||||||
|
|||||||
Reference in New Issue
Block a user