diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C index 39c2158dda..8c5ec52bed 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C @@ -50,199 +50,17 @@ PDRkEpsilon::PDRkEpsilon const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, - const basicThermo& thermophysicalModel + const basicThermo& thermophysicalModel, + const word& turbulenceModelName, + const word& modelName ) : - RASModel(typeName, rho, U, phi, thermophysicalModel), - - Cmu_ - ( - dimensioned::lookupOrAddToDict - ( - "Cmu", - coeffDict_, - 0.09 - ) - ), - C1_ - ( - dimensioned::lookupOrAddToDict - ( - "C1", - coeffDict_, - 1.44 - ) - ), - C2_ - ( - dimensioned::lookupOrAddToDict - ( - "C2", - coeffDict_, - 1.92 - ) - ), - sigmak_ - ( - dimensioned::lookupOrAddToDict - ( - "sigmak", - coeffDict_, - 1.0 - ) - ), - sigmaEps_ - ( - dimensioned::lookupOrAddToDict - ( - "sigmaEps", - coeffDict_, - 1.3 - ) - ), - Prt_ - ( - dimensioned::lookupOrAddToDict - ( - "Prt", - coeffDict_, - 1.0 - ) - ), - - k_ - ( - IOobject - ( - "k", - runTime_.timeName(), - mesh_, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - autoCreateK("k", mesh_) - ), - epsilon_ - ( - IOobject - ( - "epsilon", - runTime_.timeName(), - mesh_, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - autoCreateEpsilon("epsilon", mesh_) - ), - mut_ - ( - IOobject - ( - "mut", - runTime_.timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - autoCreateMut("mut", mesh_) - ), - alphat_ - ( - IOobject - ( - "alphat", - runTime_.timeName(), - mesh_, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - autoCreateAlphat("alphat", mesh_) - ) -{ - bound(epsilon_, epsilonMin_); - - mut_ = Cmu_*rho_*sqr(k_)/epsilon_; - mut_.correctBoundaryConditions(); - - alphat_ = mut_/Prt_; - alphat_.correctBoundaryConditions(); - - printCoeffs(); -} + kEpsilon(rho, U, phi, thermophysicalModel, turbulenceModelName, modelName) +{} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -tmp PDRkEpsilon::R() const -{ - return tmp - ( - new volSymmTensorField - ( - IOobject - ( - "R", - runTime_.timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - ((2.0/3.0)*I)*k_ - (mut_/rho_)*dev(twoSymm(fvc::grad(U_))), - k_.boundaryField().types() - ) - ); -} - - -tmp PDRkEpsilon::devRhoReff() const -{ - return tmp - ( - new volSymmTensorField - ( - IOobject - ( - "devRhoReff", - runTime_.timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - -muEff()*dev(twoSymm(fvc::grad(U_))) - ) - ); -} - - -tmp PDRkEpsilon::divDevRhoReff(volVectorField& U) const -{ - return - ( - - fvm::laplacian(muEff(), U) - fvc::div(muEff()*dev2(fvc::grad(U)().T())) - ); -} - - -bool PDRkEpsilon::read() -{ - if (RASModel::read()) - { - Cmu_.readIfPresent(coeffDict_); - C1_.readIfPresent(coeffDict_); - C2_.readIfPresent(coeffDict_); - sigmak_.readIfPresent(coeffDict()); - sigmaEps_.readIfPresent(coeffDict()); - Prt_.readIfPresent(coeffDict()); - - return true; - } - else - { - return false; - } -} - - void PDRkEpsilon::correct() { if (!turbulence_) @@ -271,7 +89,7 @@ void PDRkEpsilon::correct() volScalarField G("RASModel::G", mut_*(tgradU() && dev(twoSymm(tgradU())))); tgradU.clear(); - // Update espsilon and G at the wall + // Update epsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); // Add the blockage generation term so that it is included consistently @@ -320,6 +138,7 @@ void PDRkEpsilon::correct() solve(kEqn); bound(k_, kMin_); + // Re-calculate viscosity mut_ = rho_*Cmu_*sqr(k_)/epsilon_; mut_.correctBoundaryConditions(); diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H index 483c7257dc..4f3d63db67 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,12 +25,13 @@ Class Foam::compressible::RASModels::PDRkEpsilon Description - Standard k-epsilon turbulence model with additional source terms + Standard k-epsilon turbulence model for compressible flow + with additional source terms corresponding to PDR basic drag model (\link basic.H \endlink) The default model coefficients correspond to the following: @verbatim - kEpsilonCoeffs + PDRkEpsilonCoeffs { Cmu 0.09; C1 1.44; @@ -53,7 +54,6 @@ Description SourceFiles PDRkEpsilon.C - PDRkEpsilonCorrect.C \*---------------------------------------------------------------------------*/ @@ -61,6 +61,7 @@ SourceFiles #define compressiblePDRkEpsilon_H #include "RASModel.H" +#include "kEpsilon.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -77,26 +78,8 @@ namespace RASModels class PDRkEpsilon : - public RASModel + public kEpsilon { - // Private data - - // Model coefficients - - dimensionedScalar Cmu_; - dimensionedScalar C1_; - dimensionedScalar C2_; - dimensionedScalar sigmak_; - dimensionedScalar sigmaEps_; - dimensionedScalar Prt_; - - // Fields - - volScalarField k_; - volScalarField epsilon_; - volScalarField mut_; - volScalarField alphat_; - public: @@ -112,7 +95,9 @@ public: const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, - const basicThermo& thermophysicalModel + const basicThermo& thermophysicalModel, + const word& turbulenceModelName = turbulenceModel::typeName, + const word& modelName = typeName ); @@ -123,62 +108,9 @@ public: // Member Functions - //- Return the effective diffusivity for k - tmp DkEff() const - { - return tmp - ( - new volScalarField("DkEff", mut_/sigmak_ + mu()) - ); - } - - //- Return the effective diffusivity for epsilon - tmp DepsilonEff() const - { - return tmp - ( - new volScalarField("DepsilonEff", mut_/sigmaEps_ + mu()) - ); - } - - //- Return the turbulence viscosity - virtual tmp mut() const - { - return mut_; - } - - //- Return the turbulence thermal diffusivity - virtual tmp alphat() const - { - return alphat_; - } - - //- Return the turbulence kinetic energy - virtual tmp k() const - { - return k_; - } - - //- Return the turbulence kinetic energy dissipation rate - virtual tmp epsilon() const - { - return epsilon_; - } - - //- Return the Reynolds stress tensor - virtual tmp R() const; - - //- Return the effective stress tensor including the laminar stress - virtual tmp devRhoReff() const; - - //- Return the source term for the momentum equation - virtual tmp divDevRhoReff(volVectorField& U) const; - //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct(); - //- Read turbulenceProperties dictionary - virtual bool read(); }; diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options index 4cd6539edf..e7a1103a4f 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options @@ -6,10 +6,12 @@ EXE_INC = \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel EXE_LIBS = \ -lbasicThermophysicalModels \ + -lbasicSolidThermo \ -lspecie \ -lcompressibleRASModels \ -lcompressibleLESModels \ diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C index 738319ec10..922b94a8d6 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C @@ -37,6 +37,7 @@ Description #include "regionProperties.H" #include "compressibleCourantNo.H" #include "solidRegionDiffNo.H" +#include "basicSolidThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options index a97ce0aae4..1664808079 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options @@ -7,6 +7,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \ -I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude @@ -14,5 +15,6 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ -lbasicThermophysicalModels \ + -lbasicSolidThermo \ -lspecie \ -lcompressibleRASModels diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C index 927bd8124d..be93fd01df 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C @@ -35,6 +35,7 @@ Description #include "fixedGradientFvPatchFields.H" #include "regionProperties.H" #include "compressibleCourantNo.H" +#include "basicSolidThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H index 8f109a3f82..be13e670c3 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H @@ -1,8 +1,5 @@ // Initialise solid field pointer lists - PtrList rhos(solidRegions.size()); - PtrList cps(solidRegions.size()); - PtrList Ks(solidRegions.size()); - PtrList Ts(solidRegions.size()); + PtrList thermos(solidRegions.size()); // Populate solid field pointer lists forAll(solidRegions, i) @@ -10,75 +7,10 @@ Info<< "*** Reading solid mesh thermophysical properties for region " << solidRegions[i].name() << nl << endl; - Info<< " Adding to rhos\n" << endl; - rhos.set + Info<< " Adding to thermos\n" << endl; + thermos.set ( i, - new volScalarField - ( - IOobject - ( - "rho", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to cps\n" << endl; - cps.set - ( - i, - new volScalarField - ( - IOobject - ( - "cp", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to Ks\n" << endl; - Ks.set - ( - i, - new volScalarField - ( - IOobject - ( - "K", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to Ts\n" << endl; - Ts.set - ( - i, - new volScalarField - ( - IOobject - ( - "T", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) + basicSolidThermo::New(solidRegions[i]) ); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H index f9e80e3d72..1e78cc297a 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H @@ -1,6 +1,14 @@ fvMesh& mesh = solidRegions[i]; + basicSolidThermo& thermo = thermos[i]; - volScalarField& rho = rhos[i]; - volScalarField& cp = cps[i]; - volScalarField& K = Ks[i]; - volScalarField& T = Ts[i]; + tmp trho = thermo.rho(); + const volScalarField& rho = trho(); + + tmp tcp = thermo.cp(); + const volScalarField& cp = tcp(); + + tmp tK = thermo.K(); + //tmp tK = thermo.directionalK(); + const volScalarField& K = tK(); + + volScalarField& T = thermo.T(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H index 8f109a3f82..be13e670c3 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H @@ -1,8 +1,5 @@ // Initialise solid field pointer lists - PtrList rhos(solidRegions.size()); - PtrList cps(solidRegions.size()); - PtrList Ks(solidRegions.size()); - PtrList Ts(solidRegions.size()); + PtrList thermos(solidRegions.size()); // Populate solid field pointer lists forAll(solidRegions, i) @@ -10,75 +7,10 @@ Info<< "*** Reading solid mesh thermophysical properties for region " << solidRegions[i].name() << nl << endl; - Info<< " Adding to rhos\n" << endl; - rhos.set + Info<< " Adding to thermos\n" << endl; + thermos.set ( i, - new volScalarField - ( - IOobject - ( - "rho", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to cps\n" << endl; - cps.set - ( - i, - new volScalarField - ( - IOobject - ( - "cp", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to Ks\n" << endl; - Ks.set - ( - i, - new volScalarField - ( - IOobject - ( - "K", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) - ); - - Info<< " Adding to Ts\n" << endl; - Ts.set - ( - i, - new volScalarField - ( - IOobject - ( - "T", - runTime.timeName(), - solidRegions[i], - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - solidRegions[i] - ) + basicSolidThermo::New(solidRegions[i]) ); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H index f9e80e3d72..1e78cc297a 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H @@ -1,6 +1,14 @@ fvMesh& mesh = solidRegions[i]; + basicSolidThermo& thermo = thermos[i]; - volScalarField& rho = rhos[i]; - volScalarField& cp = cps[i]; - volScalarField& K = Ks[i]; - volScalarField& T = Ts[i]; + tmp trho = thermo.rho(); + const volScalarField& rho = trho(); + + tmp tcp = thermo.cp(); + const volScalarField& cp = tcp(); + + tmp tK = thermo.K(); + //tmp tK = thermo.directionalK(); + const volScalarField& K = tK(); + + volScalarField& T = thermo.T(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H index 4b09671de2..77dc6f04bf 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffusionNo.H @@ -1,15 +1,17 @@ scalar DiNum = -GREAT; - forAll(solidRegions, regionI) + forAll(solidRegions, i) { +# include "setRegionSolidFields.H" + DiNum = max ( solidRegionDiffNo ( - solidRegions[regionI], + solidRegions[i], runTime, - rhos[regionI]*cps[regionI], - Ks[regionI] + rho*cp, + K ), DiNum ); diff --git a/applications/test/DynamicList/DynamicListTest.C b/applications/test/DynamicList/DynamicListTest.C index 822ee3cacb..a4e3ae25ff 100644 --- a/applications/test/DynamicList/DynamicListTest.C +++ b/applications/test/DynamicList/DynamicListTest.C @@ -31,6 +31,41 @@ Description using namespace Foam; +template +void printInfo +( + const word& tag, + const UList& lst, + const bool showSize = false +) +{ + Info<< "<" << tag; + if (showSize) + { + Info<< " size=\"" << lst.size() << "\""; + } + Info<< ">" << lst << "" << endl; +} + + +template +void printInfo +( + const word& tag, + const DynamicList& lst, + const bool showSize = false +) +{ + Info<< "<" << tag; + if (showSize) + { + Info<< " size=\"" << lst.size() + << "\" capacity=\"" << lst.capacity() << "\""; + } + Info<< ">" << lst << "" << endl; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: @@ -104,10 +139,8 @@ int main(int argc, char *argv[]) List