mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Modification of solid thermo, thermo baffles, pyrolysis and
tutorial, solvers solve for h in the solid
This commit is contained in:
@ -43,7 +43,7 @@ Description
|
||||
#include "regionProperties.H"
|
||||
#include "compressibleCourantNo.H"
|
||||
#include "solidRegionDiffNo.H"
|
||||
#include "basicSolidThermo.H"
|
||||
#include "solidThermo.H"
|
||||
#include "radiationModel.H"
|
||||
#include "porousZones.H"
|
||||
#include "IObasicSourceList.H"
|
||||
|
||||
@ -34,7 +34,7 @@ Description
|
||||
#include "turbulenceModel.H"
|
||||
#include "fixedGradientFvPatchFields.H"
|
||||
#include "regionProperties.H"
|
||||
#include "basicSolidThermo.H"
|
||||
#include "solidThermo.H"
|
||||
#include "radiationModel.H"
|
||||
#include "porousZones.H"
|
||||
#include "IObasicSourceList.H"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Initialise solid field pointer lists
|
||||
PtrList<basicSolidThermo> porousSolidThermos(porousSolidRegions.size());
|
||||
PtrList<solidThermo> porousSolidThermos(porousSolidRegions.size());
|
||||
PtrList<IObasicSourceList> solidHeatSources(porousSolidRegions.size());
|
||||
PtrList<volScalarField> betavSolid(porousSolidRegions.size());
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
porousSolidThermos.set
|
||||
(
|
||||
i,
|
||||
basicSolidThermo::New(porousSolidRegions[i])
|
||||
solidThermo::New(porousSolidRegions[i])
|
||||
);
|
||||
Info<< " Adding sources\n" << endl;
|
||||
solidHeatSources.set
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
const fvMesh& mesh = porousSolidRegions[i];
|
||||
|
||||
basicSolidThermo& thermo = porousSolidThermos[i];
|
||||
solidThermo& thermo = porousSolidThermos[i];
|
||||
const volScalarField& betav = betavSolid[i];
|
||||
|
||||
tmp<volScalarField> trho = thermo.rho();
|
||||
@ -15,9 +15,9 @@
|
||||
const volScalarField& kappa = tkappa();
|
||||
//const volSymmTensorField& K = tK();
|
||||
|
||||
tmp<volScalarField> trhoCp = cp*rho;
|
||||
const volScalarField& rhoCp = trhoCp();
|
||||
tmp<volScalarField> talpha = thermo.alpha();
|
||||
const volScalarField& alpha = talpha();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
volScalarField& h = thermo.he();
|
||||
|
||||
IObasicSourceList& sources = solidHeatSources[i];
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
{
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
tmp<fvScalarMatrix> TEqn
|
||||
tmp<fvScalarMatrix> hEqn
|
||||
(
|
||||
- fvm::laplacian(betav*kappa, T, "laplacian(K,T)")
|
||||
+ sources(rhoCp, T)
|
||||
- fvm::laplacian(betav*alpha, h, "laplacian(alpha,h)")
|
||||
+ sources(rho, h)
|
||||
);
|
||||
|
||||
TEqn().relax();
|
||||
TEqn().solve();
|
||||
hEqn().relax();
|
||||
hEqn().solve();
|
||||
}
|
||||
|
||||
Info<< "Min/max T:" << min(T).value() << ' ' << max(T).value() << endl;
|
||||
}
|
||||
|
||||
thermo.correct();
|
||||
|
||||
Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Initialise solid field pointer lists
|
||||
PtrList<basicSolidThermo> thermos(solidRegions.size());
|
||||
PtrList<solidThermo> thermos(solidRegions.size());
|
||||
|
||||
// Populate solid field pointer lists
|
||||
forAll(solidRegions, i)
|
||||
@ -11,6 +11,6 @@
|
||||
thermos.set
|
||||
(
|
||||
i,
|
||||
basicSolidThermo::New(solidRegions[i])
|
||||
solidThermo::New(solidRegions[i])
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fvMesh& mesh = solidRegions[i];
|
||||
basicSolidThermo& thermo = thermos[i];
|
||||
solidThermo& thermo = thermos[i];
|
||||
|
||||
tmp<volScalarField> trho = thermo.rho();
|
||||
const volScalarField& rho = trho();
|
||||
@ -11,4 +11,7 @@
|
||||
//tmp<volSymmTensorField> tkappa = thermo.directionalkappa();
|
||||
const volScalarField& kappa = tkappa();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
tmp<volScalarField> talpha = thermo.alpha();
|
||||
const volScalarField& alpha = talpha();
|
||||
|
||||
volScalarField& h = thermo.he();
|
||||
|
||||
@ -1,16 +1,15 @@
|
||||
{
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix tEqn
|
||||
fvScalarMatrix hEqn
|
||||
(
|
||||
-fvm::laplacian(kappa, T)
|
||||
-fvm::laplacian(alpha, h)
|
||||
);
|
||||
tEqn.relax();
|
||||
tEqn.solve();
|
||||
hEqn.relax();
|
||||
hEqn.solve();
|
||||
}
|
||||
|
||||
Info<< "Min/max T:" << min(T).value() << ' '
|
||||
<< max(T).value() << endl;
|
||||
}
|
||||
|
||||
thermo.correct();
|
||||
|
||||
Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Initialise solid field pointer lists
|
||||
PtrList<basicSolidThermo> porousSolidThermos(porousSolidRegions.size());
|
||||
PtrList<solidThermo> porousSolidThermos(porousSolidRegions.size());
|
||||
PtrList<IObasicSourceList> solidHeatSources(porousSolidRegions.size());
|
||||
PtrList<volScalarField> betavSolid(porousSolidRegions.size());
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
porousSolidThermos.set
|
||||
(
|
||||
i,
|
||||
basicSolidThermo::New(porousSolidRegions[i])
|
||||
solidThermo::New(porousSolidRegions[i])
|
||||
);
|
||||
Info<< " Adding sources\n" << endl;
|
||||
solidHeatSources.set
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
fvMesh& mesh = porousSolidRegions[i];
|
||||
|
||||
basicSolidThermo& thermo = porousSolidThermos[i];
|
||||
solidThermo& thermo = porousSolidThermos[i];
|
||||
const volScalarField& betav = betavSolid[i];
|
||||
|
||||
tmp<volScalarField> trho = thermo.rho();
|
||||
@ -15,9 +15,12 @@
|
||||
const volScalarField& kappa = tkappa();
|
||||
//const volSymmTensorField& K = tK();
|
||||
|
||||
tmp<volScalarField> trhoCp = cp*rho;
|
||||
const volScalarField& rhoCp = trhoCp();
|
||||
//tmp<volScalarField> trhoCp = cp*rho;
|
||||
//const volScalarField& rhoCp = trhoCp();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
tmp<volScalarField> talpha = thermo.alpha();
|
||||
const volScalarField& alpha = talpha();
|
||||
|
||||
volScalarField& h = thermo.he();
|
||||
|
||||
IObasicSourceList& sources = solidHeatSources[i];
|
||||
|
||||
@ -6,22 +6,22 @@ if (finalIter)
|
||||
{
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
tmp<fvScalarMatrix> TEqn
|
||||
tmp<fvScalarMatrix> hEqn
|
||||
(
|
||||
fvm::ddt(betav*rho*cp, T)
|
||||
- fvm::laplacian(betav*kappa, T, "laplacian(K,T)")
|
||||
+ sources(rhoCp, T)
|
||||
fvm::ddt(betav*rho, h)
|
||||
- fvm::laplacian(betav*alpha, h, "laplacian(alpha,h)")
|
||||
+ sources(rho, h)
|
||||
);
|
||||
|
||||
TEqn().relax();
|
||||
TEqn().solve(mesh.solver(T.select(finalIter)));
|
||||
hEqn().relax();
|
||||
hEqn().solve(mesh.solver(h.select(finalIter)));
|
||||
}
|
||||
|
||||
Info<< "Min/max T:" << min(T).value() << ' ' << max(T).value() << endl;
|
||||
}
|
||||
|
||||
thermo.correct();
|
||||
|
||||
Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
|
||||
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::remove("finalIteration");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Initialise solid field pointer lists
|
||||
PtrList<basicSolidThermo> thermos(solidRegions.size());
|
||||
PtrList<solidThermo> thermos(solidRegions.size());
|
||||
|
||||
// Populate solid field pointer lists
|
||||
forAll(solidRegions, i)
|
||||
@ -8,5 +8,5 @@
|
||||
<< solidRegions[i].name() << nl << endl;
|
||||
|
||||
Info<< " Adding to thermos\n" << endl;
|
||||
thermos.set(i, basicSolidThermo::New(solidRegions[i]));
|
||||
thermos.set(i, solidThermo::New(solidRegions[i]));
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fvMesh& mesh = solidRegions[i];
|
||||
basicSolidThermo& thermo = thermos[i];
|
||||
solidThermo& thermo = thermos[i];
|
||||
|
||||
tmp<volScalarField> trho = thermo.rho();
|
||||
const volScalarField& rho = trho();
|
||||
@ -7,9 +7,12 @@
|
||||
tmp<volScalarField> tcp = thermo.Cp();
|
||||
const volScalarField& cp = tcp();
|
||||
|
||||
tmp<volScalarField> talpha = thermo.alpha();
|
||||
const volScalarField& alpha = talpha();
|
||||
tmp<volScalarField> tkappa = thermo.kappa();
|
||||
const volScalarField& kappa = tkappa();
|
||||
|
||||
//tmp<volSymmTensorField> tkappa = thermo.directionalKappa();
|
||||
//const volSymmTensorField& kappa = tkappa();
|
||||
|
||||
volScalarField& T = thermo.T();
|
||||
volScalarField& h = thermo.he();
|
||||
|
||||
@ -6,20 +6,20 @@ if (finalIter)
|
||||
{
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
tmp<fvScalarMatrix> TEqn
|
||||
tmp<fvScalarMatrix> hEqn
|
||||
(
|
||||
fvm::ddt(rho*cp, T)
|
||||
- fvm::laplacian(kappa, T)
|
||||
fvm::ddt(rho, h)
|
||||
- fvm::laplacian(alpha, h)
|
||||
);
|
||||
TEqn().relax();
|
||||
TEqn().solve(mesh.solver(T.select(finalIter)));
|
||||
hEqn().relax();
|
||||
hEqn().solve(mesh.solver(h.select(finalIter)));
|
||||
}
|
||||
|
||||
Info<< "Min/max T:" << min(T) << ' ' << max(T) << endl;
|
||||
}
|
||||
|
||||
thermo.correct();
|
||||
|
||||
Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
|
||||
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::remove("finalIteration");
|
||||
|
||||
Reference in New Issue
Block a user