35 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
38 const RdeltaTType& rDeltaT,
58 rho.field()*
psi.internalField()*rDeltaT
61 )/(
rho.field()*rDeltaT -
Sp.field());
67 rho.field()*
psi.internalField()*rDeltaT
70 )/(
rho.field()*rDeltaT -
Sp.field());
73 psi.correctBoundaryConditions();
77 template<
class RhoType,
class SpType,
class SuType>
92 if (fv::localEulerDdt::enabled(
mesh))
112 const scalar rDeltaT = 1.0/
mesh.time().deltaTValue();
132 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
136 const RdeltaTType& rDeltaT,
186 mesh.time().timeName(),
210 label own = owner[facei];
211 label nei = neighb[facei];
213 psiMaxn[own] =
max(psiMaxn[own], psiIf[nei]);
214 psiMinn[own] =
min(psiMinn[own], psiIf[nei]);
216 psiMaxn[nei] =
max(psiMaxn[nei], psiIf[own]);
217 psiMinn[nei] =
min(psiMinn[nei], psiIf[own]);
219 scalar phiCorrf = phiCorrIf[facei];
223 sumPhip[own] += phiCorrf;
224 mSumPhim[nei] += phiCorrf;
228 mSumPhim[own] -= phiCorrf;
229 sumPhip[nei] -= phiCorrf;
246 label pfCelli = pFaceCells[pFacei];
248 psiMaxn[pfCelli] =
max(psiMaxn[pfCelli], psiPNf[pFacei]);
249 psiMinn[pfCelli] =
min(psiMinn[pfCelli], psiPNf[pFacei]);
256 label pfCelli = pFaceCells[pFacei];
258 psiMaxn[pfCelli] =
max(psiMaxn[pfCelli], psiPf[pFacei]);
259 psiMinn[pfCelli] =
min(psiMinn[pfCelli], psiPf[pFacei]);
265 label pfCelli = pFaceCells[pFacei];
267 scalar phiCorrf = phiCorrPf[pFacei];
271 sumPhip[pfCelli] += phiCorrf;
275 mSumPhim[pfCelli] -= phiCorrf;
280 psiMaxn =
min(psiMaxn + extremaCoeff*(psiMax - psiMin), psiMax);
281 psiMinn =
max(psiMinn - extremaCoeff*(psiMax - psiMin), psiMin);
283 if (smoothLimiter > SMALL)
286 min(smoothLimiter*psiIf + (1.0 - smoothLimiter)*psiMaxn, psiMax);
288 max(smoothLimiter*psiIf + (1.0 - smoothLimiter)*psiMinn, psiMin);
294 (
rho.field()*rDeltaT -
Sp.field())*psiMaxn
296 -
rho.field()*
psi.internalField()*rDeltaT
303 - (
rho.field()*rDeltaT -
Sp.field())*psiMinn
304 +
rho.field()*
psi.internalField()*rDeltaT
310 for (
int j=0; j<nLimiterIter; j++)
317 label own = owner[facei];
318 label nei = neighb[facei];
320 scalar lambdaPhiCorrf = lambdaIf[facei]*phiCorrIf[facei];
322 if (lambdaPhiCorrf > 0.0)
324 sumlPhip[own] += lambdaPhiCorrf;
325 mSumlPhim[nei] += lambdaPhiCorrf;
329 mSumlPhim[own] -= lambdaPhiCorrf;
330 sumlPhip[nei] -= lambdaPhiCorrf;
343 label pfCelli = pFaceCells[pFacei];
345 scalar lambdaPhiCorrf = lambdaPf[pFacei]*phiCorrfPf[pFacei];
347 if (lambdaPhiCorrf > 0.0)
349 sumlPhip[pfCelli] += lambdaPhiCorrf;
353 mSumlPhim[pfCelli] -= lambdaPhiCorrf;
363 (sumlPhip[celli] + psiMaxn[celli])
364 /(mSumPhim[celli] - SMALL),
371 (mSumlPhim[celli] + psiMinn[celli])
372 /(sumPhip[celli] + SMALL),
382 if (phiCorrIf[facei] > 0.0)
384 lambdaIf[facei] =
min
387 min(lambdap[owner[facei]], lambdam[neighb[facei]])
392 lambdaIf[facei] =
min
395 min(lambdam[owner[facei]], lambdap[neighb[facei]])
407 if (isA<wedgeFvPatch>(
mesh.boundary()[
patchi]))
418 label pfCelli = pFaceCells[pFacei];
420 if (phiCorrfPf[pFacei] > 0.0)
423 min(lambdaPf[pFacei], lambdap[pfCelli]);
428 min(lambdaPf[pFacei], lambdam[pfCelli]);
441 if (phiPf[pFacei] > SMALL*SMALL)
443 label pfCelli = pFaceCells[pFacei];
445 if (phiCorrfPf[pFacei] > 0.0)
448 min(lambdaPf[pFacei], lambdap[pfCelli]);
453 min(lambdaPf[pFacei], lambdam[pfCelli]);
465 template<
class RdeltaTType,
class RhoType,
class SpType,
class SuType>
468 const RdeltaTType& rDeltaT,
488 mesh.time().timeName(),