37 if (psi_.needReference())
39 if (Pstream::master())
41 internalCoeffs_[
patchi][facei].component(cmpt) +=
42 diag()[psi_.mesh().boundary()[
patchi].faceCells()[facei]];
44 boundaryCoeffs_[
patchi][facei].component(cmpt) +=
45 diag()[psi_.mesh().boundary()[
patchi].faceCells()[facei]]
60 Info<<
"fvMatrix<Type>::solve(const dictionary& solverControls) : "
61 "solving fvMatrix<Type>"
67 "fvMatrix<Type>::solve",
78 addBoundarySource(source);
80 typename Type::labelType validComponents
84 psi_.mesh().solutionD(),
89 for(
direction cmpt=0; cmpt<Type::nComponents; cmpt++)
91 if (validComponents[cmpt] == -1)
continue;
96 addBoundaryDiag(
diag(), cmpt);
102 boundaryCoeffs_.component(cmpt)
107 internalCoeffs_.component(cmpt)
111 psi_.boundaryField().interfaces();
125 updateMatrixInterfaces
137 solverPerf = lduMatrix::solver::New
145 )->
solve(psiCmpt, sourceCmpt, cmpt);
155 solverPerfVec = solverPerf;
158 psi_.internalField().replace(cmpt, psiCmpt);
162 psi_.correctBoundaryConditions();
164 return solverPerfVec;
172 return solver(psi_.mesh().solverDict(psi_.name()));
178 return solve(fvMat_.psi_.mesh().solverDict(fvMat_.psi_.name()));
195 addBoundarySource(res);
198 for (
direction cmpt=0; cmpt<Type::nComponents; cmpt++)
203 addBoundaryDiag(boundaryDiagCmpt, cmpt);
207 boundaryCoeffs_.component(cmpt)
216 res.
component(cmpt) - boundaryDiagCmpt*psiCmpt,