Thermodynamics: Changed h-eqn to conserve total energy

This commit is contained in:
Henry
2011-11-22 17:54:13 +00:00
parent 95a5facaf0
commit 96068a670d
48 changed files with 109 additions and 223 deletions

View File

@ -13,4 +13,5 @@
{
U = invA & (UEqn.H() - betav*fvc::grad(p));
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
}

View File

@ -58,12 +58,12 @@
)
);
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
"DpDt",
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
Info<< "Creating the unstrained laminar flame speed\n" << endl;

View File

@ -5,7 +5,8 @@
+ mvConvection->fvmDiv(phi, h)
- fvm::laplacian(Db, h)
==
betav*DpDt
betav*dpdt
- betav*(fvc::ddt(rho, K) + fvc::div(phi, K))
);
thermo.correct();

View File

@ -13,6 +13,6 @@ if (ign.ignited())
//+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), hu)
==
betav*DpDt*rho/thermo.rhou()
betav*(dpdt - (fvc::ddt(rho, K) + fvc::div(phi, K)))*rho/thermo.rhou()
);
}

View File

@ -64,5 +64,6 @@ else
U -= invA & (betav*fvc::grad(p));
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);

View File

@ -12,4 +12,5 @@
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p));
K = 0.5*magSqr(U);
}

View File

@ -60,12 +60,11 @@
)
);
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
Info<< "Creating field Xi\n" << endl;
volScalarField Xi

View File

@ -5,7 +5,8 @@
+ mvConvection->fvmDiv(phi, h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
DpDt
dpdt
- (fvc::ddt(rho, K) + fvc::div(phi, K))
);
hEqn.relax();

View File

@ -13,6 +13,6 @@ if (ign.ignited())
//+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), hu)
==
DpDt*rho/thermo.rhou()
(dpdt - (fvc::ddt(rho, K) + fvc::div(phi, K)))*rho/thermo.rhou()
);
}

View File

@ -64,5 +64,6 @@ else
U -= rAU*fvc::grad(p);
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);

View File

@ -54,8 +54,8 @@
)
);
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));

View File

@ -5,7 +5,7 @@
+ fvm::div(phi, h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
DpDt
- fvc::div(phi, 0.5*magSqr(U))
);
thermo.correct();

View File

@ -8,4 +8,5 @@
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p));
K = 0.5*magSqr(U);
}

View File

@ -57,5 +57,6 @@ else
U -= rAU*fvc::grad(p);
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);

View File

@ -23,4 +23,6 @@
)*mesh.magSf()
)
);
K = 0.5*magSqr(U);
}

View File

@ -53,7 +53,8 @@ tmp<fv::convectionScheme<scalar> > mvConvection
+ mvConvection->fvmDiv(phi, hs)
- fvm::laplacian(turbulence->alphaEff(), hs)
==
DpDt
dpdt
- (fvc::ddt(rho, K) + fvc::div(phi, K))
+ combustion->Sh()
+ radiation->Shs(thermo)
+ parcels.Sh(hs)

View File

@ -83,12 +83,12 @@
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
);
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
"DpDt",
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
Info<< "Calculating field g.h\n" << endl;

View File

@ -43,5 +43,6 @@ p = p_rgh + rho*gh;
U += rAU*fvc::reconstruct((phi - phiU)/rhorAUf);
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);

View File

@ -12,4 +12,5 @@
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p));
K = 0.5*magSqr(U);
}

View File

@ -65,11 +65,13 @@ autoPtr<compressible::turbulenceModel> turbulence
// Set the turbulence into the combustion model
combustion->setTurbulence(turbulence());
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;

View File

@ -6,7 +6,8 @@
- fvm::laplacian(turbulence->alphaEff(), hs)
// - fvm::laplacian(turbulence->muEff(), hs) // unit lewis no.
==
DpDt
dpdt
- (fvc::ddt(rho, K) + fvc::div(phi, K))
+ combustion->Sh()
);

View File

@ -64,5 +64,6 @@ else
U -= rAU*fvc::grad(p);
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);

View File

@ -12,4 +12,5 @@
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p));
K = 0.5*magSqr(U);
}

View File

@ -67,11 +67,13 @@ autoPtr<compressible::turbulenceModel> turbulence
// Set the turbulence into the combustion model
combustion->setTurbulence(turbulence());
Info<< "Creating field DpDt\n" << endl;
volScalarField DpDt
(
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt("dpdt", fvc::ddt(p));
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;

View File

@ -6,7 +6,8 @@
- fvm::laplacian(turbulence->alphaEff(), hs)
// - fvm::laplacian(turbulence->muEff(), hs) // unit lewis no.
==
DpDt
dpdt
- (fvc::ddt(rho, K) + fvc::div(phi, K))
+ combustion->Sh()
);

View File

@ -86,6 +86,7 @@
U -= rAU*fvc::grad(p);
U.correctBoundaryConditions();
K = 0.5*magSqr(U);
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
dpdt = fvc::ddt(p);
}

View File

@ -5,8 +5,7 @@
- fvm::Sp(fvc::div(phi), h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
fvc::div(phi/fvc::interpolate(rho), rho/psi, "div(U,p)")
- (rho/psi)*fvc::div(phi/fvc::interpolate(rho))
- fvc::div(phi, 0.5*magSqr(U), "div(phi,K)")
);
hEqn.relax();

View File

@ -5,8 +5,7 @@
- fvm::Sp(fvc::div(phi), h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p))
- p*fvc::div(phi/fvc::interpolate(rho))
- fvc::div(phi, 0.5*magSqr(U), "div(phi,K)")
);
hEqn.relax();

View File

@ -5,8 +5,7 @@
- fvm::Sp(fvc::div(phi), h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p))
- p*fvc::div(phi/fvc::interpolate(rho))
- fvc::div(phi, 0.5*magSqr(U), "div(phi,K)")
+ radiation->Sh(thermo)
);

View File

@ -5,8 +5,7 @@
- fvm::Sp(fvc::div(phi), h)
- fvm::laplacian(turb.alphaEff(), h)
==
fvc::div(phi/fvc::interpolate(rho), p, "div(U,p)")
- p*fvc::div(phi/fvc::interpolate(rho))
- fvc::div(phi, 0.5*magSqr(U), "div(phi,K)")
+ rad.Sh(thermo)
);

View File

@ -31,7 +31,7 @@ divSchemes
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phiU,p) Gauss limitedLinear 1;
div(phi,K) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;

View File

@ -29,7 +29,7 @@ divSchemes
{
default none;
div(phi,U) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,K) Gauss linear;
div(phi,k) Gauss limitedLinear 0.1;
div(phiXi,Xi) Gauss limitedLinear01 0.1;
div(phiXi,Su) Gauss limitedLinear01 0.1;

View File

@ -29,7 +29,7 @@ divSchemes
{
default none;
div(phi,U) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,K) Gauss linear;
div(phi,k) Gauss limitedLinear 0.1;
div(phiXi,Xi) Gauss limitedLinear01 0.1;
div(phiXi,Su) Gauss limitedLinear01 0.1;

View File

@ -30,7 +30,7 @@ divSchemes
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phid,p) Gauss limitedLinear 1;
div(phiU,p) Gauss linear;
div(phi,K) Gauss limitedLinear 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div(phi,R) Gauss limitedLinear 1;

View File

@ -29,8 +29,8 @@ divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,K) Gauss upwind;
div(phid,p) Gauss upwind;
div(phiU,p) Gauss linear;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(phi,R) Gauss upwind;

View File

@ -40,7 +40,7 @@ divSchemes
hs limitedLinear 1;
};
div((muEff*dev2(T(grad(U))))) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,K) Gauss limitedLinear 1;
div(Ji,Ii_h) Gauss upwind;
}

View File

@ -41,7 +41,7 @@ divSchemes
};
div((muEff*dev2(T(grad(U))))) Gauss linear;
div(phi,omega) Gauss limitedLinear 1;
div(phiU,p) Gauss linear;
div(phi,K) Gauss limitedLinear 1;
div(U) Gauss linear;
div(Ji,Ii_h) Gauss upwind;
}

View File

@ -24,7 +24,8 @@ boundaryField
{
type MarshakRadiation;
T T;
emissivity 1;
emissivityMode lookup;
emissivity uniform 1.0;
value uniform 0;
}
}

View File

@ -15,25 +15,31 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
3
4
(
base
{
type patch;
nFaces 3600;
nFaces 3456;
startFace 637200;
}
outlet
{
type patch;
nFaces 3600;
startFace 640800;
startFace 640656;
}
sides
{
type patch;
nFaces 14400;
startFace 644400;
startFace 644256;
}
inlet
{
type patch;
nFaces 144;
startFace 658656;
}
)

View File

@ -29,6 +29,7 @@ divSchemes
{
default none;
div(phi,U) Gauss linear;
div(phi,K) Gauss linear;
div(phi,k) Gauss limitedLinear 0.1;
div(phi,Yi_hs) Gauss multivariateSelection
{
@ -40,7 +41,6 @@ divSchemes
hs limitedLinear 1;
};
div((muEff*dev2(T(grad(U))))) Gauss linear;
div(phiU,p) Gauss linear;
div(Ji,Ii_h) Gauss upwind;
}

View File

@ -33,7 +33,7 @@ divSchemes
div(phi,U) Gauss limitedLinearV 1;
div(phi,Yi_h) Gauss limitedLinear01 1;
div(phi,h) Gauss limitedLinear 1;
div(phiU,p) Gauss limitedLinear 1;
div(phi,K) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div(phi,k) Gauss limitedLinear 1;

View File

@ -29,14 +29,14 @@ divSchemes
{
default none;
div(phi,U) Gauss upwind; //limitedLinearV 1; //upwind;
div(phi,U) Gauss upwind;
div((muEff*dev2(T(grad(U))))) Gauss linear;
div(phi,h) Gauss upwind; //limitedLinear 1; //upwind;
div(phi,h) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(phi,k) Gauss upwind;
div(phid,p) Gauss upwind;
div(U,p) Gauss linear;
div(phi,K) Gauss upwind;
}
laplacianSchemes
@ -46,14 +46,8 @@ laplacianSchemes
interpolationSchemes
{
default none;
interpolate(rho) linear;
div(U,p) upwind phi;
interpolate((psi*U)) linear;
interpolate(U) linear;
default linear;
UD upwind phid;
interpolate(p) linear;
interpolate(((rho|(A(U)-H(1)))-(rho|A(U)))) linear;
}
snGradSchemes

View File

@ -17,14 +17,6 @@ FoamFile
solvers
{
p0
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.01;
}
p
{
solver GAMG;
@ -40,120 +32,7 @@ solvers
mergeLevels 1;
}
U0
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.1;
}
U1
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 1;
tolerance 1e-08;
relTol 0.1;
}
U
{
solver GAMG;
tolerance 1e-08;
relTol 0.1;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration true;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair;
mergeLevels 1;
}
h0
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.1;
}
h1
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 1;
tolerance 1e-08;
relTol 0.1;
}
h
{
solver GAMG;
tolerance 1e-08;
relTol 0.1;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration true;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair;
mergeLevels 1;
}
k0
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.1;
}
k1
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 1;
tolerance 1e-08;
relTol 0.1;
}
k
{
solver GAMG;
tolerance 1e-08;
relTol 0.1;
smoother GaussSeidel;
nPreSweeps 0;
nPostSweeps 2;
nFinestSweeps 2;
cacheAgglomeration true;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair;
mergeLevels 1;
}
epsilon0
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-08;
relTol 0.1;
}
epsilon1
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 1;
tolerance 1e-08;
relTol 0.1;
}
epsilon
"(U|h|k|epsilon)"
{
solver GAMG;
tolerance 1e-08;
@ -182,31 +61,15 @@ relaxationFactors
fields
{
p 1;
rho 1; //0.1;
rho 1;
}
equations
{
U 0.9;
h 0.95;
h 0.8;
k 0.9;
epsilon 0.9;
}
}
relaxationFactors0
{
fields
{
p 0.3;
rho 0.1;
}
equations
{
U 0.7;
h 0.7;
k 0.7;
epsilon 0.7;
}
}
// ************************************************************************* //

View File

@ -28,6 +28,7 @@ divSchemes
{
default none;
div(phi,U) Gauss limitedLinear 0.2;
div(phi,K) Gauss limitedLinear 0.2;
div(phi,h) Gauss limitedLinear 0.2;
div(phi,k) Gauss limitedLinear 0.2;
div(phi,epsilon) Gauss limitedLinear 0.2;

View File

@ -28,6 +28,7 @@ divSchemes
{
default none;
div(phi,U) Gauss limitedLinear 0.2;
div(phi,K) Gauss limitedLinear 0.2;
div(phi,h) Gauss limitedLinear 0.2;
div(phi,k) Gauss limitedLinear 0.2;
div(phi,epsilon) Gauss limitedLinear 0.2;

View File

@ -30,6 +30,7 @@ divSchemes
default none;
div(phi,U) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,K) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(phi,R) Gauss upwind;

View File

@ -29,6 +29,7 @@ divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,K) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;

View File

@ -29,6 +29,7 @@ divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,K) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;