Completed update of ddtCorr to use Uf for DyM solvers

This commit is contained in:
Henry
2013-09-12 16:58:39 +01:00
parent e678146fbf
commit 17f2d5f189
9 changed files with 55 additions and 16 deletions

View File

@ -48,6 +48,7 @@ int main(int argc, char *argv[])
#include "createEngineMesh.H" #include "createEngineMesh.H"
#include "createFields.H" #include "createFields.H"
#include "createFvOptions.H" #include "createFvOptions.H"
#include "createRhoUf.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "readEngineTimeControls.H" #include "readEngineTimeControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"

View File

@ -72,6 +72,7 @@ int main(int argc, char *argv[])
#include "readCombustionProperties.H" #include "readCombustionProperties.H"
#include "createFields.H" #include "createFields.H"
#include "createFvOptions.H" #include "createFvOptions.H"
#include "createRhoUf.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "readEngineTimeControls.H" #include "readEngineTimeControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"

View File

@ -15,12 +15,12 @@ if (pimple.transonic())
*( *(
( (
(fvc::interpolate(rho*HbyA) & mesh.Sf()) (fvc::interpolate(rho*HbyA) & mesh.Sf())
//***HGW + rhorAUf*fvc::ddtCorr(rho, U, phi) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
)/fvc::interpolate(rho) )/fvc::interpolate(rho)
- fvc::meshPhi(rho, U)
) )
); );
fvc::makeRelative(phid, psi, U);
fvOptions.makeRelative(fvc::interpolate(psi), phid); fvOptions.makeRelative(fvc::interpolate(psi), phid);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -51,11 +51,11 @@ else
"phiHbyA", "phiHbyA",
( (
(fvc::interpolate(rho*HbyA) & mesh.Sf()) (fvc::interpolate(rho*HbyA) & mesh.Sf())
//***HGW + rhorAUf*fvc::ddtCorr(rho, U, phi) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
) )
- fvc::interpolate(rho)*fvc::meshPhi(rho, U)
); );
fvc::makeRelative(phiHbyA, rho, U);
fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA); fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -88,6 +88,15 @@ U.correctBoundaryConditions();
fvOptions.correct(U); fvOptions.correct(U);
K = 0.5*magSqr(U); K = 0.5*magSqr(U);
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());
rhoUf +=
mesh.Sf()
*(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf))
/sqr(mesh.magSf());
}
if (thermo.dpdt()) if (thermo.dpdt())
{ {
dpdt = fvc::ddt(p) - fvc::div(fvc::meshPhi(rho, U), p); dpdt = fvc::ddt(p) - fvc::div(fvc::meshPhi(rho, U), p);

View File

@ -26,6 +26,7 @@ if (pimple.transonic())
)/fvc::interpolate(rho) )/fvc::interpolate(rho)
); );
fvc::makeRelative(phid, psi, U);
fvOptions.makeRelative(fvc::interpolate(psi), phid); fvOptions.makeRelative(fvc::interpolate(psi), phid);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -58,6 +59,7 @@ else
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
); );
fvc::makeRelative(phiHbyA, rho, U);
fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA); fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -102,6 +104,15 @@ U.correctBoundaryConditions();
fvOptions.correct(U); fvOptions.correct(U);
K = 0.5*magSqr(U); K = 0.5*magSqr(U);
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());
rhoUf +=
mesh.Sf()
*(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf))
/sqr(mesh.magSf());
}
if (thermo.dpdt()) if (thermo.dpdt())
{ {
dpdt = fvc::ddt(p); dpdt = fvc::ddt(p);

View File

@ -76,6 +76,9 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
{ {
// Store momentum to set rhoUf for introduced faces.
volVectorField rhoU("rhoU", rho*U);
// Store divrhoU from the previous time-step/mesh for the correctPhi // Store divrhoU from the previous time-step/mesh for the correctPhi
volScalarField divrhoU(fvc::div(fvc::absolute(phi, rho, U))); volScalarField divrhoU(fvc::div(fvc::absolute(phi, rho, U)));

View File

@ -13,12 +13,13 @@ surfaceScalarField phid
*( *(
( (
(fvc::interpolate(rho*HbyA) & mesh.Sf()) (fvc::interpolate(rho*HbyA) & mesh.Sf())
//***HGW + rhorAUf*fvc::ddtCorr(rho, U, phi) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
)/fvc::interpolate(rho) )/fvc::interpolate(rho)
- fvc::meshPhi(rho, U)
) )
); );
fvc::makeRelative(phid, psi, U);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
@ -37,3 +38,12 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
U = HbyA - rAU*fvc::grad(p); U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions(); U.correctBoundaryConditions();
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());
rhoUf +=
mesh.Sf()
*(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf))
/sqr(mesh.magSf());
}

View File

@ -64,12 +64,6 @@ int main(int argc, char *argv[])
mesh.movePoints(motionPtr->newPoints()); mesh.movePoints(motionPtr->newPoints());
// Calculate absolute flux from the mapped surface velocity
phi = mesh.Sf() & rhoUf;
// Make the flux relative to the mesh motion
fvc::makeRelative(phi, rho, U);
#include "rhoEqn.H" #include "rhoEqn.H"
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop

View File

@ -15,12 +15,12 @@ if (pimple.transonic())
*( *(
( (
(fvc::interpolate(rho*HbyA) & mesh.Sf()) (fvc::interpolate(rho*HbyA) & mesh.Sf())
//***HGW + rhorAUf*fvc::ddtCorr(rho, U, phi) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
)/fvc::interpolate(rho) )/fvc::interpolate(rho)
- fvc::meshPhi(rho, U)
) )
); );
fvc::makeRelative(phid, psi, U);
fvOptions.makeRelative(fvc::interpolate(psi), phid); fvOptions.makeRelative(fvc::interpolate(psi), phid);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -52,11 +52,11 @@ else
"phiHbyA", "phiHbyA",
( (
(fvc::interpolate(HbyA) & mesh.Sf()) (fvc::interpolate(HbyA) & mesh.Sf())
//***HGW + rhorAUf*fvc::ddtCorr(rho, U, phi) + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
) )
- fvc::interpolate(rho)*fvc::meshPhi(rho, U)
); );
fvc::makeRelative(phiHbyA, rho, U);
fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA); fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA);
while (pimple.correctNonOrthogonal()) while (pimple.correctNonOrthogonal())
@ -90,6 +90,15 @@ U.correctBoundaryConditions();
fvOptions.correct(U); fvOptions.correct(U);
K = 0.5*magSqr(U); K = 0.5*magSqr(U);
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());
rhoUf +=
mesh.Sf()
*(fvc::absolute(phi, rho, U) - (mesh.Sf() & rhoUf))
/sqr(mesh.magSf());
}
if (thermo.dpdt()) if (thermo.dpdt())
{ {
dpdt = fvc::ddt(p) - fvc::div(fvc::meshPhi(rho, U), p); dpdt = fvc::ddt(p) - fvc::div(fvc::meshPhi(rho, U), p);

View File

@ -52,6 +52,7 @@ int main(int argc, char *argv[])
#include "readGravitationalAcceleration.H" #include "readGravitationalAcceleration.H"
#include "createFields.H" #include "createFields.H"
#include "createFvOptions.H" #include "createFvOptions.H"
#include "createRhoUf.H"
#include "createClouds.H" #include "createClouds.H"
#include "createRadiationModel.H" #include "createRadiationModel.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"