36 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
39 const RdeltaTType& rDeltaT,
61 mesh.Vsc0()().field()*
rho.oldTime().field()
62 *psi0*rDeltaT/
mesh.Vsc()().field()
65 )/(
rho.field()*rDeltaT -
Sp.field());
71 rho.oldTime().field()*psi0*rDeltaT
74 )/(
rho.field()*rDeltaT -
Sp.field());
77 psi.correctBoundaryConditions();
81 template<
class RhoType,
class SpType,
class SuType>
92 const scalar rDeltaT = 1.0/
mesh.time().deltaTValue();
97 template<
class RhoType,
class SpType,
class SuType>
112 psi.correctBoundaryConditions();
114 if (fv::localEulerDdt::enabled(
mesh))
136 const scalar rDeltaT = 1.0/
mesh.time().deltaTValue();
157 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
161 const RdeltaTType& rDeltaT,
209 mesh.time().timeName(),
235 label own = owner[facei];
236 label nei = neighb[facei];
238 psiMaxn[own] =
max(psiMaxn[own], psiIf[nei]);
239 psiMinn[own] =
min(psiMinn[own], psiIf[nei]);
241 psiMaxn[nei] =
max(psiMaxn[nei], psiIf[own]);
242 psiMinn[nei] =
min(psiMinn[nei], psiIf[own]);
244 sumPhiBD[own] += phiBDIf[facei];
245 sumPhiBD[nei] -= phiBDIf[facei];
247 scalar phiCorrf = phiCorrIf[facei];
251 sumPhip[own] += phiCorrf;
252 mSumPhim[nei] += phiCorrf;
256 mSumPhim[own] -= phiCorrf;
257 sumPhip[nei] -= phiCorrf;
275 label pfCelli = pFaceCells[pFacei];
277 psiMaxn[pfCelli] =
max(psiMaxn[pfCelli], psiPNf[pFacei]);
278 psiMinn[pfCelli] =
min(psiMinn[pfCelli], psiPNf[pFacei]);
285 label pfCelli = pFaceCells[pFacei];
287 psiMaxn[pfCelli] =
max(psiMaxn[pfCelli], psiPf[pFacei]);
288 psiMinn[pfCelli] =
min(psiMinn[pfCelli], psiPf[pFacei]);
294 label pfCelli = pFaceCells[pFacei];
296 sumPhiBD[pfCelli] += phiBDPf[pFacei];
298 scalar phiCorrf = phiCorrPf[pFacei];
302 sumPhip[pfCelli] += phiCorrf;
306 mSumPhim[pfCelli] -= phiCorrf;
311 psiMaxn =
min(psiMaxn, psiMax);
312 psiMinn =
max(psiMinn, psiMin);
314 if (smoothLimiter > SMALL)
317 min(smoothLimiter*psiIf + (1.0 - smoothLimiter)*psiMaxn, psiMax);
319 max(smoothLimiter*psiIf + (1.0 - smoothLimiter)*psiMinn, psiMin);
329 (
rho.field()*rDeltaT -
Sp.field())*psiMaxn
332 - (V0().field()*rDeltaT)*
rho.oldTime().field()*psi0
339 - (
rho.field()*rDeltaT -
Sp.field())*psiMinn
341 + (V0().field()*rDeltaT)*
rho.oldTime().field()*psi0
349 (
rho.field()*rDeltaT -
Sp.field())*psiMaxn
351 - (
rho.oldTime().field()*rDeltaT)*psi0
359 - (
rho.field()*rDeltaT -
Sp.field())*psiMinn
360 + (
rho.oldTime().field()*rDeltaT)*psi0
368 for (
int j=0; j<nLimiterIter; j++)
375 label own = owner[facei];
376 label nei = neighb[facei];
378 scalar lambdaPhiCorrf = lambdaIf[facei]*phiCorrIf[facei];
380 if (lambdaPhiCorrf > 0.0)
382 sumlPhip[own] += lambdaPhiCorrf;
383 mSumlPhim[nei] += lambdaPhiCorrf;
387 mSumlPhim[own] -= lambdaPhiCorrf;
388 sumlPhip[nei] -= lambdaPhiCorrf;
401 label pfCelli = pFaceCells[pFacei];
403 scalar lambdaPhiCorrf = lambdaPf[pFacei]*phiCorrfPf[pFacei];
405 if (lambdaPhiCorrf > 0.0)
407 sumlPhip[pfCelli] += lambdaPhiCorrf;
411 mSumlPhim[pfCelli] -= lambdaPhiCorrf;
421 (sumlPhip[celli] + psiMaxn[celli])
422 /(mSumPhim[celli] - SMALL),
429 (mSumlPhim[celli] + psiMinn[celli])
430 /(sumPhip[celli] + SMALL),
440 if (phiCorrIf[facei] > 0.0)
442 lambdaIf[facei] =
min
445 min(lambdap[owner[facei]], lambdam[neighb[facei]])
450 lambdaIf[facei] =
min
453 min(lambdam[owner[facei]], lambdap[neighb[facei]])
465 if (isA<wedgeFvPatch>(
mesh.boundary()[
patchi]))
476 label pfCelli = pFaceCells[pFacei];
478 if (phiCorrfPf[pFacei] > 0.0)
481 min(lambdaPf[pFacei], lambdap[pfCelli]);
486 min(lambdaPf[pFacei], lambdam[pfCelli]);
500 if ((phiBDPf[pFacei] + phiCorrPf[pFacei]) > SMALL*SMALL)
502 label pfCelli = pFaceCells[pFacei];
504 if (phiCorrfPf[pFacei] > 0.0)
507 min(lambdaPf[pFacei], lambdap[pfCelli]);
512 min(lambdaPf[pFacei], lambdam[pfCelli]);
524 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
527 const RdeltaTType& rDeltaT,
536 const bool returnCorr
553 mesh.time().timeName(),
585 phiPsi = phiBD +
lambda*phiCorr;
590 template<
class SurfaceScalarFieldList>
604 phiPsiCorrs[0].boundaryField();
608 if (bfld[
patchi].coupled())