45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
{
|
|
// Create relative velocity
|
|
Urel == U;
|
|
mrfZones.relativeVelocity(Urel);
|
|
|
|
// Bound the relative velocity to preserve the i to h conversion bound
|
|
// HJ, 22/Mar/2017
|
|
volScalarField magUrel = mag(Urel);
|
|
|
|
if (max(magUrel) > UMax)
|
|
{
|
|
volScalarField UrelLimiter = pos(magUrel - UMax)*UMax/(magUrel + smallU)
|
|
+ neg(magUrel - UMax);
|
|
UrelLimiter.max(scalar(0));
|
|
UrelLimiter.min(scalar(1));
|
|
|
|
Urel *= UrelLimiter;
|
|
Urel.correctBoundaryConditions();
|
|
}
|
|
|
|
// Create rotational velocity (= omega x r)
|
|
Urot == U - Urel;
|
|
|
|
fvScalarMatrix iEqn
|
|
(
|
|
fvm::div(phi, i)
|
|
+ fvm::SuSp(-fvc::div(phi), i)
|
|
- fvm::laplacian(turbulence->alphaEff(), i)
|
|
==
|
|
// Viscous heating: note sign (devRhoReff has a minus in it)
|
|
- (turbulence->devRhoReff() && fvc::grad(U))
|
|
);
|
|
|
|
iEqn.relax();
|
|
|
|
iEqn.solve();
|
|
|
|
// From rothalpy, calculate enthalpy after solution of rothalpy equation
|
|
h = i + 0.5*(magSqr(Urot) - magSqr(Urel));
|
|
h.correctBoundaryConditions();
|
|
|
|
// Update thermo for new h
|
|
thermo.correct();
|
|
psis = thermo.psi()/thermo.Cp()*thermo.Cv();
|
|
}
|