mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Thermodynamics: Completed most of the conversion of the enthalpy source
This commit is contained in:
@ -23,4 +23,5 @@
|
||||
)*mesh.magSf()
|
||||
)
|
||||
);
|
||||
K = 0.5*magSqr(U);
|
||||
}
|
||||
|
||||
@ -74,9 +74,8 @@
|
||||
// Force p_rgh to be consistent with p
|
||||
p_rgh = p - rho*gh;
|
||||
|
||||
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));
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
+ fvm::div(phi, h)
|
||||
- fvm::laplacian(turbulence->alphaEff(), h)
|
||||
==
|
||||
DpDt
|
||||
dpdt
|
||||
- (fvc::ddt(rho, K) + fvc::div(phi, K))
|
||||
);
|
||||
|
||||
hEqn.relax();
|
||||
|
||||
@ -47,6 +47,7 @@
|
||||
// calculated from the relaxed pressure
|
||||
U += rAU*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rhorAUf);
|
||||
U.correctBoundaryConditions();
|
||||
K = 0.5*magSqr(U);
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,7 +56,7 @@
|
||||
// Second part of thermodynamic density update
|
||||
thermo.rho() += psi*p_rgh;
|
||||
|
||||
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
|
||||
dpdt = fvc::ddt(p);
|
||||
|
||||
#include "rhoEqn.H"
|
||||
#include "compressibleContinuityErrs.H"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Initialise fluid field pointer lists
|
||||
PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> rhoFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> KFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> kappaFluid(fluidRegions.size());
|
||||
PtrList<volVectorField> UFluid(fluidRegions.size());
|
||||
PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
|
||||
PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
|
||||
@ -50,15 +50,15 @@
|
||||
)
|
||||
);
|
||||
|
||||
Info<< " Adding to KFluid\n" << endl;
|
||||
KFluid.set
|
||||
Info<< " Adding to kappaFluid\n" << endl;
|
||||
kappaFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"K",
|
||||
"kappa",
|
||||
runTime.timeName(),
|
||||
fluidRegions[i],
|
||||
IOobject::NO_READ,
|
||||
|
||||
@ -71,5 +71,5 @@
|
||||
<< max(rho).value() << endl;
|
||||
|
||||
// Update thermal conductivity
|
||||
K = thermo.Cp()*turb.alphaEff();
|
||||
kappa = thermo.Cp()*turb.alphaEff();
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
basicRhoThermo& thermo = thermoFluid[i];
|
||||
volScalarField& rho = rhoFluid[i];
|
||||
volScalarField& K = KFluid[i];
|
||||
volScalarField& kappa = kappaFluid[i];
|
||||
volVectorField& U = UFluid[i];
|
||||
surfaceScalarField& phi = phiFluid[i];
|
||||
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
tmp<volScalarField> tcp = thermo.Cp();
|
||||
const volScalarField& cp = tcp();
|
||||
|
||||
tmp<volScalarField> tK = thermo.K();
|
||||
//tmp<volSymmTensorField> tK = thermo.directionalK();
|
||||
const volScalarField& K = tK();
|
||||
tmp<volScalarField> tkappa = thermo.K();
|
||||
//tmp<volSymmTensorField> tkappa = thermo.directionalkappa();
|
||||
const volScalarField& kappa = tkappa();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
{
|
||||
fvScalarMatrix tEqn
|
||||
(
|
||||
-fvm::laplacian(K, T)
|
||||
-fvm::laplacian(kappa, T)
|
||||
);
|
||||
tEqn.relax();
|
||||
tEqn.solve();
|
||||
|
||||
@ -22,5 +22,6 @@
|
||||
)*mesh.magSf()
|
||||
),
|
||||
mesh.solver(U.select(finalIter))
|
||||
);
|
||||
);
|
||||
K = 0.5*magSqr(U);
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Initialise fluid field pointer lists
|
||||
PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> rhoFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> KFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> kappaFluid(fluidRegions.size());
|
||||
PtrList<volVectorField> UFluid(fluidRegions.size());
|
||||
PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
|
||||
PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
|
||||
@ -10,7 +10,8 @@
|
||||
PtrList<volScalarField> ghFluid(fluidRegions.size());
|
||||
PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
|
||||
PtrList<radiation::radiationModel> radiation(fluidRegions.size());
|
||||
PtrList<volScalarField> DpDtFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> KFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> dpdtFluid(fluidRegions.size());
|
||||
|
||||
List<scalar> initialMassFluid(fluidRegions.size());
|
||||
|
||||
@ -45,15 +46,15 @@
|
||||
)
|
||||
);
|
||||
|
||||
Info<< " Adding to KFluid\n" << endl;
|
||||
KFluid.set
|
||||
Info<< " Adding to kappaFluid\n" << endl;
|
||||
kappaFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"K",
|
||||
"kappa",
|
||||
runTime.timeName(),
|
||||
fluidRegions[i],
|
||||
IOobject::NO_READ,
|
||||
@ -175,22 +176,25 @@
|
||||
|
||||
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
||||
|
||||
Info<< " Adding to DpDtFluid\n" << endl;
|
||||
DpDtFluid.set
|
||||
Info<< " Adding to KFluid\n" << endl;
|
||||
KFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
"DpDt",
|
||||
fvc::DDt
|
||||
(
|
||||
surfaceScalarField
|
||||
(
|
||||
"phiU",
|
||||
phiFluid[i]/fvc::interpolate(rhoFluid[i])
|
||||
),
|
||||
thermoFluid[i].p()
|
||||
)
|
||||
"K",
|
||||
0.5*magSqr(UFluid[i])
|
||||
)
|
||||
);
|
||||
|
||||
Info<< " Adding to dpdtFluid\n" << endl;
|
||||
dpdtFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
"dpdt",
|
||||
fvc::ddt(thermoFluid[i].p())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
+ fvm::div(phi, h)
|
||||
- fvm::laplacian(turb.alphaEff(), h)
|
||||
==
|
||||
DpDt
|
||||
dpdt
|
||||
- (fvc::ddt(rho, K) + fvc::div(phi, K))
|
||||
+ rad.Sh(thermo)
|
||||
);
|
||||
|
||||
|
||||
@ -68,11 +68,13 @@
|
||||
// Correct velocity field
|
||||
U += rAU*fvc::reconstruct((phi - phiU)/rhorAUf);
|
||||
U.correctBoundaryConditions();
|
||||
K = 0.5*magSqr(U);
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
|
||||
// Update pressure substantive derivative
|
||||
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
|
||||
// Update pressure time derivative
|
||||
dpdt = fvc::ddt(p);
|
||||
|
||||
|
||||
// Solve continuity
|
||||
#include "rhoEqn.H"
|
||||
@ -91,5 +93,5 @@
|
||||
}
|
||||
|
||||
// Update thermal conductivity
|
||||
K = thermoFluid[i].Cp()*turb.alphaEff();
|
||||
kappa = thermoFluid[i].Cp()*turb.alphaEff();
|
||||
}
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
|
||||
basicRhoThermo& thermo = thermoFluid[i];
|
||||
volScalarField& rho = rhoFluid[i];
|
||||
volScalarField& K = KFluid[i];
|
||||
volScalarField& kappa = kappaFluid[i];
|
||||
volVectorField& U = UFluid[i];
|
||||
surfaceScalarField& phi = phiFluid[i];
|
||||
|
||||
compressible::turbulenceModel& turb = turbulence[i];
|
||||
volScalarField& DpDt = DpDtFluid[i];
|
||||
volScalarField& K = KFluid[i];
|
||||
volScalarField& dpdt = dpdtFluid[i];
|
||||
|
||||
volScalarField& p = thermo.p();
|
||||
const volScalarField& psi = thermo.psi();
|
||||
|
||||
@ -7,9 +7,9 @@
|
||||
tmp<volScalarField> tcp = thermo.Cp();
|
||||
const volScalarField& cp = tcp();
|
||||
|
||||
tmp<volScalarField> tK = thermo.K();
|
||||
//tmp<volSymmTensorField> tK = thermo.directionalK();
|
||||
const volScalarField& K = tK();
|
||||
//const volSymmTensorField& K = tK();
|
||||
tmp<volScalarField> tkappa = thermo.K();
|
||||
//tmp<volSymmTensorField> tkappa = thermo.directionalkappa();
|
||||
const volScalarField& kappa = tkappa();
|
||||
//const volSymmTensorField& kappa = tkappa();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
|
||||
@ -31,7 +31,7 @@ Foam::scalar Foam::solidRegionDiffNo
|
||||
const fvMesh& mesh,
|
||||
const Time& runTime,
|
||||
const volScalarField& Cprho,
|
||||
const volScalarField& K
|
||||
const volScalarField& kappa
|
||||
)
|
||||
{
|
||||
scalar DiNum = 0.0;
|
||||
@ -39,16 +39,16 @@ Foam::scalar Foam::solidRegionDiffNo
|
||||
|
||||
//- Take care: can have fluid domains with 0 cells so do not test for
|
||||
// zero internal faces.
|
||||
surfaceScalarField KrhoCpbyDelta
|
||||
surfaceScalarField kapparhoCpbyDelta
|
||||
(
|
||||
mesh.surfaceInterpolation::deltaCoeffs()
|
||||
* fvc::interpolate(K)
|
||||
* fvc::interpolate(kappa)
|
||||
/ fvc::interpolate(Cprho)
|
||||
);
|
||||
|
||||
DiNum = gMax(KrhoCpbyDelta.internalField())*runTime.deltaT().value();
|
||||
DiNum = gMax(kapparhoCpbyDelta.internalField())*runTime.deltaT().value();
|
||||
|
||||
meanDiNum = (average(KrhoCpbyDelta)).value()*runTime.deltaT().value();
|
||||
meanDiNum = (average(kapparhoCpbyDelta)).value()*runTime.deltaT().value();
|
||||
|
||||
Info<< "Region: " << mesh.name() << " Diffusion Number mean: " << meanDiNum
|
||||
<< " max: " << DiNum << endl;
|
||||
@ -62,26 +62,26 @@ Foam::scalar Foam::solidRegionDiffNo
|
||||
const fvMesh& mesh,
|
||||
const Time& runTime,
|
||||
const volScalarField& Cprho,
|
||||
const volSymmTensorField& Kdirectional
|
||||
const volSymmTensorField& kappadirectional
|
||||
)
|
||||
{
|
||||
scalar DiNum = 0.0;
|
||||
scalar meanDiNum = 0.0;
|
||||
|
||||
volScalarField K(mag(Kdirectional));
|
||||
volScalarField kappa(mag(kappadirectional));
|
||||
|
||||
//- Take care: can have fluid domains with 0 cells so do not test for
|
||||
// zero internal faces.
|
||||
surfaceScalarField KrhoCpbyDelta
|
||||
surfaceScalarField kapparhoCpbyDelta
|
||||
(
|
||||
mesh.surfaceInterpolation::deltaCoeffs()
|
||||
* fvc::interpolate(K)
|
||||
* fvc::interpolate(kappa)
|
||||
/ fvc::interpolate(Cprho)
|
||||
);
|
||||
|
||||
DiNum = gMax(KrhoCpbyDelta.internalField())*runTime.deltaT().value();
|
||||
DiNum = gMax(kapparhoCpbyDelta.internalField())*runTime.deltaT().value();
|
||||
|
||||
meanDiNum = (average(KrhoCpbyDelta)).value()*runTime.deltaT().value();
|
||||
meanDiNum = (average(kapparhoCpbyDelta)).value()*runTime.deltaT().value();
|
||||
|
||||
Info<< "Region: " << mesh.name() << " Diffusion Number mean: " << meanDiNum
|
||||
<< " max: " << DiNum << endl;
|
||||
|
||||
@ -39,7 +39,7 @@ namespace Foam
|
||||
const fvMesh& mesh,
|
||||
const Time& runTime,
|
||||
const volScalarField& Cprho,
|
||||
const volScalarField& K
|
||||
const volScalarField& kappa
|
||||
);
|
||||
|
||||
scalar solidRegionDiffNo
|
||||
@ -47,7 +47,7 @@ namespace Foam
|
||||
const fvMesh& mesh,
|
||||
const Time& runTime,
|
||||
const volScalarField& Cprho,
|
||||
const volSymmTensorField& K
|
||||
const volSymmTensorField& kappa
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
forAll(solidRegions, i)
|
||||
{
|
||||
# include "setRegionSolidFields.H"
|
||||
#include "setRegionSolidFields.H"
|
||||
|
||||
DiNum = max
|
||||
(
|
||||
@ -11,7 +11,7 @@
|
||||
solidRegions[i],
|
||||
runTime,
|
||||
rho*cp,
|
||||
K
|
||||
kappa
|
||||
),
|
||||
DiNum
|
||||
);
|
||||
|
||||
@ -9,7 +9,7 @@ if (finalIter)
|
||||
tmp<fvScalarMatrix> TEqn
|
||||
(
|
||||
fvm::ddt(rho*cp, T)
|
||||
- fvm::laplacian(K, T)
|
||||
- fvm::laplacian(kappa, T)
|
||||
);
|
||||
TEqn().relax();
|
||||
TEqn().solve(mesh.solver(T.select(finalIter)));
|
||||
|
||||
Reference in New Issue
Block a user