From b88dd7c6c0190f3a63f60ca4175e4b335f771803 Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 4 Mar 2011 18:24:15 +0000 Subject: [PATCH 1/2] ENH: Updated PDRFoam --- .../solvers/combustion/PDRFoam/Make/files | 10 +- .../solvers/combustion/PDRFoam/Make/options | 3 +- .../solvers/combustion/PDRFoam/PDRFoam.C | 7 +- .../combustion/PDRFoam/PDRFoamAutoRefine.C | 51 ++++---- .../basicXiSubXiEq/basicXiSubXiEq.C | 116 ++++++++++-------- .../basicXiSubXiEq/basicXiSubXiEq.H | 14 +-- .../XiGModels/basicXiSubG/basicXiSubG.C | 33 ++++- .../XiGModels/basicXiSubG/basicXiSubG.H | 3 +- .../dragModels/PDRDragModel/PDRDragModel.C | 4 +- .../dragModels/PDRDragModel/PDRDragModel.H | 8 +- .../dragModels/PDRDragModel/newPDRDragModel.C | 63 ++++++++++ .../PDRModels/dragModels/basic/basic.C | 58 ++++----- .../PDRModels/dragModels/basic/basic.H | 11 +- .../turbulence/PDRkEpsilon/PDRkEpsilon.C | 43 ++++++- .../turbulence/PDRkEpsilon/PDRkEpsilon.H | 19 ++- .../solvers/combustion/PDRFoam/StCourantNo.H | 2 +- .../XiModels/XiEqModels/Gulder/Gulder.C | 89 ++++++++++++-- .../XiModels/XiEqModels/Gulder/Gulder.H | 16 ++- .../SCOPEBlendXiEq/SCOPEBlendXiEq.H | 8 +- .../XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C | 27 ++-- .../XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H | 14 ++- .../XiModels/XiEqModels/XiEqModel/XiEqModel.C | 40 +++++- .../XiModels/XiEqModels/XiEqModel/XiEqModel.H | 10 +- .../XiEqModels/XiEqModel/newXiEqModel.C | 67 ++++++++++ .../instabilityXiEq/instabilityXiEq.C | 2 +- .../instabilityXiEq/instabilityXiEq.H | 8 +- .../PDRFoam/XiModels/XiGModels/KTS/KTS.C | 13 +- .../PDRFoam/XiModels/XiGModels/KTS/KTS.H | 7 +- .../XiModels/XiGModels/XiGModel/XiGModel.H | 3 +- .../XiModels/XiGModels/XiGModel/newXiGModel.C | 67 ++++++++++ .../XiGModels/instabilityG/instabilityG.C | 14 +-- .../XiGModels/instabilityG/instabilityG.H | 9 +- .../PDRFoam/XiModels/XiModel/XiModel.H | 8 +- .../PDRFoam/XiModels/XiModel/newXiModel.C | 65 ++++++++++ .../PDRFoam/XiModels/algebraic/algebraic.C | 2 +- .../PDRFoam/XiModels/algebraic/algebraic.H | 12 +- .../combustion/PDRFoam/XiModels/fixed/fixed.C | 2 +- .../combustion/PDRFoam/XiModels/fixed/fixed.H | 10 +- .../PDRFoam/XiModels/transport/transport.H | 9 +- .../solvers/combustion/PDRFoam/bEqn.H | 2 +- .../solvers/combustion/PDRFoam/createFields.H | 32 ++++- .../SCOPE/SCOPELaminarFlameSpeed.C | 17 ++- .../SCOPE/SCOPELaminarFlameSpeed.H | 6 +- 43 files changed, 764 insertions(+), 240 deletions(-) create mode 100644 applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C create mode 100644 applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C create mode 100644 applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C create mode 100644 applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C diff --git a/applications/solvers/combustion/PDRFoam/Make/files b/applications/solvers/combustion/PDRFoam/Make/files index 1e5d200ccb..95fc888c0c 100644 --- a/applications/solvers/combustion/PDRFoam/Make/files +++ b/applications/solvers/combustion/PDRFoam/Make/files @@ -1,25 +1,25 @@ XiModels/XiModel/XiModel.C -XiModels/XiModel/XiModelNew.C +XiModels/XiModel/newXiModel.C XiModels/fixed/fixed.C XiModels/algebraic/algebraic.C XiModels/transport/transport.C XiModels/XiEqModels/XiEqModel/XiEqModel.C -XiModels/XiEqModels/XiEqModel/XiEqModelNew.C +XiModels/XiEqModels/XiEqModel/newXiEqModel.C XiModels/XiEqModels/Gulder/Gulder.C XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C XiModels/XiGModels/XiGModel/XiGModel.C -XiModels/XiGModels/XiGModel/XiGModelNew.C +XiModels/XiGModels/XiGModel/newXiGModel.C XiModels/XiGModels/KTS/KTS.C XiModels/XiGModels/instabilityG/instabilityG.C PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C PDRModels/dragModels/PDRDragModel/PDRDragModel.C -PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C +PDRModels/dragModels/PDRDragModel/newPDRDragModel.C PDRModels/dragModels/basic/basic.C PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C @@ -27,7 +27,7 @@ PDRModels/XiGModels/basicXiSubG/basicXiSubG.C laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C -/* PDRFoamAutoRefine.C */ +/*PDRFoamAutoRefine.C*/ PDRFoam.C EXE = $(FOAM_APPBIN)/PDRFoam diff --git a/applications/solvers/combustion/PDRFoam/Make/options b/applications/solvers/combustion/PDRFoam/Make/options index 3432f09ef7..2f1a3cdbab 100644 --- a/applications/solvers/combustion/PDRFoam/Make/options +++ b/applications/solvers/combustion/PDRFoam/Make/options @@ -15,7 +15,8 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/triSurface/lnInclude EXE_LIBS = \ -lengine \ diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C index 0197d8e0b3..2f11a8db1a 100644 --- a/applications/solvers/combustion/PDRFoam/PDRFoam.C +++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) #include "createFields.H" #include "initContinuityErrs.H" #include "readTimeControls.H" - #include "CourantNo.H" + #include "compressibleCourantNo.H" #include "setInitialDeltaT.H" scalar StCoNum = 0.0; @@ -91,11 +91,10 @@ int main(int argc, char *argv[]) { #include "readTimeControls.H" #include "readPISOControls.H" - #include "CourantNo.H" + #include "compressibleCourantNo.H" #include "setDeltaT.H" runTime++; - Info<< "\n\nTime = " << runTime.timeName() << endl; #include "rhoEqn.H" diff --git a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C index bf31388aaa..b7d4b42bc9 100644 --- a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C +++ b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,7 +80,7 @@ int main(int argc, char *argv[]) #include "createFields.H" #include "initContinuityErrs.H" #include "readTimeControls.H" - #include "CourantNo.H" + #include "compressibleCourantNo.H" #include "setInitialDeltaT.H" scalar StCoNum = 0.0; @@ -89,17 +89,15 @@ int main(int argc, char *argv[]) Info<< "\nStarting time loop\n" << endl; + bool hasChanged = false; + while (runTime.run()) { #include "readTimeControls.H" #include "readPISOControls.H" - #include "CourantNo.H" + #include "compressibleCourantNo.H" #include "setDeltaT.H" - runTime++; - - Info<< "\n\nTime = " << runTime.timeName() << endl; - // Indicators for refinement. Note: before runTime++ // only for postprocessing reasons. tmp tmagGradP = mag(fvc::grad(p)); @@ -111,7 +109,10 @@ int main(int argc, char *argv[]) normalisedGradP.writeOpt() = IOobject::AUTO_WRITE; tmagGradP.clear(); - bool meshChanged = false; + runTime++; + + Info<< "\n\nTime = " << runTime.timeName() << endl; + { // Make the fluxes absolute fvc::makeAbsolute(phi, rho, U); @@ -134,29 +135,27 @@ int main(int argc, char *argv[]) } } - //volScalarField pIndicator("pIndicator", - // p*(fvc::laplacian(p)) - // / ( - // magSqr(fvc::grad(p)) - // + dimensionedScalar - // ( - // "smallish", - // sqr(p.dimensions()/dimLength), - // 1E-6 - // ) - // )); - //pIndicator.writeOpt() = IOobject::AUTO_WRITE; - // Flux estimate for introduced faces. volVectorField rhoU("rhoU", rho*U); // Do any mesh changes - meshChanged = mesh.update(); + bool meshChanged = mesh.update(); -// if (mesh.moving() || meshChanged) -// { -// #include "correctPhi.H" -// } + + if (meshChanged) + { + hasChanged = true; + } + + if (runTime.write() && hasChanged) + { + betav.write(); + Lobs.write(); + CT.write(); + drag->writeFields(); + flameWrinkling->writeFields(); + hasChanged = false; + } // Make the fluxes relative to the mesh motion fvc::makeRelative(phi, rho, U); diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C index 35f9bb02f3..70933519bb 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,55 +50,12 @@ Foam::XiEqModels::basicSubGrid::basicSubGrid : XiEqModel(XiEqProperties, thermo, turbulence, Su), - N_ - ( - IOobject - ( - "N", - Su.mesh().time().findInstance(polyMesh::meshSubDir, "N"), - polyMesh::meshSubDir, - Su.mesh(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - Su.mesh() - ), - - ns_ - ( - IOobject - ( - "ns", - Su.mesh().time().findInstance(polyMesh::meshSubDir, "ns"), - polyMesh::meshSubDir, - Su.mesh(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - Su.mesh() - ), - B_ ( IOobject ( "B", - Su.mesh().time().findInstance(polyMesh::meshSubDir, "B"), - polyMesh::meshSubDir, - Su.mesh(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - Su.mesh() - ), - - Lobs_ - ( - IOobject - ( - "Lobs", - Su.mesh().time().findInstance(polyMesh::meshSubDir, "Lobs"), - polyMesh::meshSubDir, + Su.mesh().facesInstance(), Su.mesh(), IOobject::MUST_READ, IOobject::NO_WRITE @@ -120,8 +77,12 @@ Foam::XiEqModels::basicSubGrid::~basicSubGrid() Foam::tmp Foam::XiEqModels::basicSubGrid::XiEq() const { - const objectRegistry& db = Su_.db(); - const volVectorField& U = db.lookupObject("U"); + const fvMesh& mesh = Su_.mesh(); + const volVectorField& U = mesh.lookupObject("U"); + + const volScalarField& Nv = mesh.lookupObject("Nv"); + const volSymmTensorField& nsv = + mesh.lookupObject("nsv"); volScalarField magU(mag(U)); volVectorField Uhat @@ -129,20 +90,71 @@ Foam::tmp Foam::XiEqModels::basicSubGrid::XiEq() const U/(mag(U) + dimensionedScalar("Usmall", U.dimensions(), 1e-4)) ); - volScalarField n(max(N_ - (Uhat & ns_ & Uhat), scalar(1e-4))); + const scalarField Cw = pow(mesh.V(), 2.0/3.0); - volScalarField b((Uhat & B_ & Uhat)/n); + tmp tN + ( + new volScalarField + ( + IOobject + ( + "tN", + mesh.time().constant(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("zero", Nv.dimensions(), 0.0), + zeroGradientFvPatchVectorField::typeName + ) + ); + + volScalarField& N = tN(); + + N.internalField() = Nv.internalField()*Cw; + + tmp tns + ( + new volSymmTensorField + ( + IOobject + ( + "tns", + U.mesh().time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedSymmTensor + ( + "zero", + nsv.dimensions(), + pTraits::zero + ), + zeroGradientFvPatchSymmTensorField::typeName + ) + ); + + volSymmTensorField& ns = tns(); + + ns.internalField() = nsv.internalField()*Cw; + + volScalarField n(max(N - (Uhat & ns & Uhat), scalar(1e-4))); + + volScalarField b((Uhat & B_ & Uhat)/sqrt(n)); volScalarField up(sqrt((2.0/3.0)*turbulence_.k())); volScalarField XiSubEq ( scalar(1) - + max(2.2*sqrt(b), min(0.34*magU/up, scalar(1.6))) - *min(0.25*n, scalar(1)) + + max(2.2*sqrt(b), min(0.34*magU/up*sqrt(b), scalar(1.6))) + * min(n, scalar(1)) ); - return XiSubEq*XiEqModel_->XiEq(); + return (XiSubEq*XiEqModel_->XiEq()); } diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H index a9d915d2a4..768c4e1f02 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/XiEqModels/basicXiSubXiEq/basicXiSubXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,18 +85,9 @@ class basicSubGrid { // Private data - //- Count - volScalarField N_; - - //- Sub-count - volSymmTensorField ns_; - //- tblock volSymmTensorField B_; - //- Typical obstacle diameters per cell - volScalarField Lobs_; - //- Equilibrium Xi model due to turbulence autoPtr XiEqModel_; @@ -129,7 +120,8 @@ public: //- Destructor - virtual ~basicSubGrid(); + + virtual ~basicSubGrid(); // Member Functions diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C index cc8e7ee2aa..3be4385857 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,8 +34,8 @@ namespace XiGModels { defineTypeNameAndDebug(basicSubGrid, 0); addToRunTimeSelectionTable(XiGModel, basicSubGrid, dictionary); -} -} +}; +}; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -66,12 +66,37 @@ Foam::tmp Foam::XiGModels::basicSubGrid::G() const { const objectRegistry& db = Su_.db(); const volVectorField& U = db.lookupObject("U"); - const volScalarField& N = db.lookupObject("N"); + const volScalarField& Nv = db.lookupObject("Nv"); const volScalarField& Lobs = db.lookupObject("Lobs"); tmp tGtot = XiGModel_->G(); volScalarField& Gtot = tGtot(); + const scalarField Cw = pow(Su_.mesh().V(), 2.0/3.0); + + tmp tN + ( + new volScalarField + ( + IOobject + ( + "tN", + Su_.mesh().time().timeName(), + Su_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + Su_.mesh(), + dimensionedScalar("zero", Nv.dimensions(), 0.0), + zeroGradientFvPatchVectorField::typeName + ) + ); + + volScalarField& N = tN(); + + N.internalField() = Nv.internalField()*Cw; + forAll(N, celli) { if (N[celli] > 1e-3) diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H index 22e23a1278..094bd17a24 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H @@ -108,7 +108,8 @@ public: //- Destructor - virtual ~basicSubGrid(); + + virtual ~basicSubGrid(); // Member Functions diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C index 5caaadef14..e75b6b0009 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,7 @@ namespace Foam { defineTypeNameAndDebug(PDRDragModel, 0); defineRunTimeSelectionTable(PDRDragModel, dictionary); -} +}; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H index c9efeab3c4..c787c77d12 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H @@ -138,7 +138,8 @@ public: //- Destructor - virtual ~PDRDragModel(); + + virtual ~PDRDragModel(); // Member Functions @@ -162,6 +163,11 @@ public: { return true; } + + virtual void writeFields() const + { + notImplemented("PDRDragModel::write()"); + } }; diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C new file mode 100644 index 0000000000..829ef540c3 --- /dev/null +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C @@ -0,0 +1,63 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "PDRDragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::PDRDragModel::New +( + const dictionary& PDRProperties, + const compressible::RASModel& turbulence, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& phi +) +{ + word PDRDragModelTypeName = PDRProperties.lookup("PDRDragModel"); + + Info<< "Selecting flame-wrinkling model " << PDRDragModelTypeName << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(PDRDragModelTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "PDRDragModel::New" + ) << "Unknown PDRDragModel type " + << PDRDragModelTypeName << endl << endl + << "Valid PDRDragModels are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr + (cstrIter()(PDRProperties, turbulence, rho, U, phi)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C index 6e485a7a3c..785490db2f 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,34 +53,12 @@ Foam::PDRDragModels::basic::basic Csu("Csu", dimless, PDRDragModelCoeffs_.lookup("Csu")), Csk("Csk", dimless, PDRDragModelCoeffs_.lookup("Csk")), - Aw2_ - ( - "Aw2", - sqr - ( - volScalarField - ( - IOobject - ( - "Aw", - U_.mesh().time().findInstance(polyMesh::meshSubDir, "Aw"), - polyMesh::meshSubDir, - U_.mesh(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - U_.mesh() - ) - ) - ), - - CR_ + Aw_ ( IOobject ( - "CR", - U_.mesh().time().findInstance(polyMesh::meshSubDir, "CR"), - polyMesh::meshSubDir, + "Aw", + U_.mesh().facesInstance(), U_.mesh(), IOobject::MUST_READ, IOobject::NO_WRITE @@ -88,13 +66,12 @@ Foam::PDRDragModels::basic::basic U_.mesh() ), - CT_ + CR_ ( IOobject ( - "CT", - U_.mesh().time().findInstance(polyMesh::meshSubDir, "CT"), - polyMesh::meshSubDir, + "CR", + U_.mesh().facesInstance(), U_.mesh(), IOobject::MUST_READ, IOobject::NO_WRITE @@ -114,19 +91,24 @@ Foam::PDRDragModels::basic::~basic() Foam::tmp Foam::PDRDragModels::basic::Dcu() const { - const volScalarField& betav = U_.db().lookupObject("betav"); + const volScalarField& betav = + U_.db().lookupObject("betav"); - return (0.5*rho_)*CR_*mag(U_) + (Csu*I)*betav*turbulence_.muEff()*Aw2_; + return (0.5*rho_)*CR_*mag(U_) + (Csu*I)*betav*turbulence_.muEff()*sqr(Aw_); } Foam::tmp Foam::PDRDragModels::basic::Gk() const { - const volScalarField& betav = U_.db().lookupObject("betav"); + const volScalarField& betav = + U_.db().lookupObject("betav"); + + const volSymmTensorField& CT = + U_.db().lookupObject("CT"); return - (0.5*rho_)*mag(U_)*(U_ & CT_ & U_) - + Csk*betav*turbulence_.muEff()*Aw2_*magSqr(U_); + (0.5*rho_)*mag(U_)*(U_ & CT & U_) + + Csk*betav*turbulence_.muEff()*sqr(Aw_)*magSqr(U_); } @@ -141,4 +123,10 @@ bool Foam::PDRDragModels::basic::read(const dictionary& PDRProperties) } +void Foam::PDRDragModels::basic::writeFields() const +{ + Aw_.write(); + CR_.write(); +} + // ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H index 83df5fa11b..7c2a995ee6 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,9 +102,8 @@ class basic dimensionedScalar Csu; dimensionedScalar Csk; - volScalarField Aw2_; + volScalarField Aw_; volSymmTensorField CR_; - volSymmTensorField CT_; // Private Member Functions @@ -136,7 +135,8 @@ public: //- Destructor - virtual ~basic(); + + virtual ~basic(); // Member Functions @@ -149,6 +149,9 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& PDRProperties); + + //- Write fields + void writeFields() const; }; diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C index c96477d9c6..5615b9c5e8 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,12 +55,36 @@ PDRkEpsilon::PDRkEpsilon const word& modelName ) : - kEpsilon(rho, U, phi, thermophysicalModel, turbulenceModelName, modelName) + kEpsilon(rho, U, phi, thermophysicalModel, turbulenceModelName, modelName), + + C4_ + ( + dimensioned::lookupOrAddToDict + ( + "C4", + coeffDict_, + 0.1 + ) + ) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +bool PDRkEpsilon::read() +{ + if (RASModel::read()) + { + C4_.readIfPresent(coeffDict_); + return true; + } + else + { + return false; + } +} + + void PDRkEpsilon::correct() { if (!turbulence_) @@ -89,18 +113,25 @@ void PDRkEpsilon::correct() volScalarField G("RASModel::G", mut_*(tgradU() && dev(twoSymm(tgradU())))); tgradU.clear(); - // Update epsilon and G at the wall + // Update espsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); // Add the blockage generation term so that it is included consistently // in both the k and epsilon equations - const volScalarField& betav = U_.db().lookupObject("betav"); + const volScalarField& betav = + U_.db().lookupObject("betav"); + + const volScalarField& Lobs = + U_.db().lookupObject("Lobs"); const PDRDragModel& drag = U_.db().lookupObject("PDRDragModel"); volScalarField GR(drag.Gk()); + volScalarField LI = + C4_*(Lobs + dimensionedScalar("minLength", dimLength, VSMALL)); + // Dissipation equation tmp epsEqn ( @@ -108,7 +139,8 @@ void PDRkEpsilon::correct() + fvm::div(phi_, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == - C1_*(betav*G + GR)*epsilon_/k_ + C1_*betav*G*epsilon_/k_ + + 1.5*pow(Cmu_, 3.0/4.0)*GR*sqrt(k_)/LI - fvm::SuSp(((2.0/3.0)*C1_)*betav*rho_*divU, epsilon_) - fvm::Sp(C2_*betav*rho_*epsilon_/k_, epsilon_) ); @@ -138,7 +170,6 @@ 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 45f172377d..c4fe3e6b4b 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H @@ -25,23 +25,23 @@ Class Foam::compressible::RASModels::PDRkEpsilon Description - Standard k-epsilon turbulence model for compressible flow - with additional source terms + Standard k-epsilon turbulence model with additional source terms corresponding to PDR basic drag model (\link basic.H \endlink) The default model coefficients correspond to the following: - \verbatim + @verbatim PDRkEpsilonCoeffs { Cmu 0.09; C1 1.44; C2 1.92; C3 -0.33; // only for compressible + C4 0.1; sigmak 1.0; // only for compressible sigmaEps 1.3; Prt 1.0; // only for compressible } - \endverbatim + @endverbatim The turbulence source term \f$ G_{R} \f$ appears in the \f$ \kappa-\epsilon \f$ equation for the generation of turbulence due to @@ -80,6 +80,11 @@ class PDRkEpsilon : public kEpsilon { + // Private data + + // Model coefficients + dimensionedScalar C4_; + public: @@ -107,10 +112,12 @@ public: // Member Functions - + //- Solve the turbulence equations and correct the turbulence viscosity - virtual void correct(); + void correct(); + //- Read turbulenceProperties dictionary + bool read(); }; diff --git a/applications/solvers/combustion/PDRFoam/StCourantNo.H b/applications/solvers/combustion/PDRFoam/StCourantNo.H index 5f870711fa..5561f63a2e 100644 --- a/applications/solvers/combustion/PDRFoam/StCourantNo.H +++ b/applications/solvers/combustion/PDRFoam/StCourantNo.H @@ -34,7 +34,7 @@ Description if (mesh.nInternalFaces()) { - scalarField sumPhi + scalarField sumPhi ( fvc::surfaceSum(mag(phiSt))().internalField() / rho.internalField() diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C index 9e62af2e48..c4444bcfd0 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,8 +49,9 @@ Foam::XiEqModels::Gulder::Gulder ) : XiEqModel(XiEqProperties, thermo, turbulence, Su), - XiEqCoef(readScalar(XiEqModelCoeffs_.lookup("XiEqCoef"))), - SuMin(0.01*Su.average()) + XiEqCoef_(readScalar(XiEqModelCoeffs_.lookup("XiEqCoef"))), + SuMin_(0.01*Su.average()), + uPrimeCoef_(readScalar(XiEqModelCoeffs_.lookup("uPrimeCoef"))) {} @@ -66,19 +67,92 @@ Foam::tmp Foam::XiEqModels::Gulder::XiEq() const { volScalarField up(sqrt((2.0/3.0)*turbulence_.k())); const volScalarField& epsilon = turbulence_.epsilon(); + const fvMesh& mesh = Su_.mesh(); + + const volVectorField& U = mesh.lookupObject("U"); + + const volSymmTensorField& CT = mesh.lookupObject("CT"); + const volScalarField& Nv = mesh.lookupObject("Nv"); + const volSymmTensorField& nsv = + mesh.lookupObject("nsv"); + + tmp tN + ( + new volScalarField + ( + IOobject + ( + "tN", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("zero", Nv.dimensions(), 0.0), + zeroGradientFvPatchVectorField::typeName + ) + ); + + volScalarField& N = tN(); + + N.internalField() = Nv.internalField()*pow(mesh.V(), 2.0/3.0); + + tmp tns + ( + new volSymmTensorField + ( + IOobject + ( + "tns", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedSymmTensor + ( + "zero", + nsv.dimensions(), + pTraits::zero + ) + ) + ); + + volSymmTensorField& ns = tns(); + + ns.internalField() = nsv.internalField()*pow(mesh.V(), 2.0/3.0); + + const volVectorField Uhat + ( + U/(mag(U) + dimensionedScalar("Usmall", U.dimensions(), 1e-4)) + ); + + const volScalarField nr(sqrt(max(N - (Uhat & ns & Uhat), 1e-4))); + + const scalarField cellWidth(pow(mesh.V(), 1.0/3.0)); + + const scalarField upLocal(uPrimeCoef_*sqrt((U & CT & U)*cellWidth)); + + const scalarField deltaUp(upLocal*(max(1.0, pow(nr, 0.5)) - 1.0)); + + up.internalField() += deltaUp; volScalarField tauEta(sqrt(mag(thermo_.muu()/(thermo_.rhou()*epsilon)))); - volScalarField Reta + volScalarField Reta = ( up - / ( + / + ( sqrt(epsilon*tauEta) + dimensionedScalar("1e-8", up.dimensions(), 1e-8) ) ); - return 1.0 + XiEqCoef*sqrt(up/(Su_ + SuMin))*Reta; + return (1.0 + XiEqCoef_*sqrt(up/(Su_ + SuMin_))*Reta); } @@ -86,7 +160,8 @@ bool Foam::XiEqModels::Gulder::read(const dictionary& XiEqProperties) { XiEqModel::read(XiEqProperties); - XiEqModelCoeffs_.lookup("XiEqCoef") >> XiEqCoef; + XiEqModelCoeffs_.lookup("XiEqCoef") >> XiEqCoef_; + XiEqModelCoeffs_.lookup("uPrimeCoef") >> uPrimeCoef_; return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H index ebfeaa39a7..d82626fe7a 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,8 +55,14 @@ class Gulder { // Private data - scalar XiEqCoef; - dimensionedScalar SuMin; + //- Model constant + scalar XiEqCoef_; + + //- Minimum laminar burning velocity + const dimensionedScalar SuMin_; + + //- Model constant + scalar uPrimeCoef_; // Private Member Functions @@ -87,7 +93,8 @@ public: //- Destructor - virtual ~Gulder(); + + virtual ~Gulder(); // Member Functions @@ -97,6 +104,7 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiEqProperties); + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H index 740fc7d57b..f551096546 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,7 +27,7 @@ Class Description Simple SCOPEBlendXiEq model for XiEq based on SCOPEXiEqs correlation with a linear correction function to give a plausible profile for XiEq. - See \link SCOPELaminarFlameSpeed.H \endlink for details on the SCOPE + See @link SCOPELaminarFlameSpeed.H @endlink for details on the SCOPE laminar flame speed model. SourceFiles @@ -92,7 +92,8 @@ public: //- Destructor - virtual ~SCOPEBlend(); + + virtual ~SCOPEBlend(); // Member Functions @@ -105,6 +106,7 @@ public: { return true; } + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C index ac6c129202..d0b7efeded 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,10 +49,10 @@ Foam::XiEqModels::SCOPEXiEq::SCOPEXiEq ) : XiEqModel(XiEqProperties, thermo, turbulence, Su), - XiEqCoef(readScalar(XiEqModelCoeffs_.lookup("XiEqCoef"))), - XiEqExp(readScalar(XiEqModelCoeffs_.lookup("XiEqExp"))), - lCoef(readScalar(XiEqModelCoeffs_.lookup("lCoef"))), - SuMin(0.01*Su.average()), + XiEqCoef_(readScalar(XiEqModelCoeffs_.lookup("XiEqCoef"))), + XiEqExp_(readScalar(XiEqModelCoeffs_.lookup("XiEqExp"))), + lCoef_(readScalar(XiEqModelCoeffs_.lookup("lCoef"))), + SuMin_(0.01*Su.average()), MaModel ( IOdictionary @@ -62,7 +62,7 @@ Foam::XiEqModels::SCOPEXiEq::SCOPEXiEq "combustionProperties", Su.mesh().time().constant(), Su.mesh(), - IOobject::MUST_READ_IF_MODIFIED + IOobject::MUST_READ ) ), thermo @@ -84,10 +84,10 @@ Foam::tmp Foam::XiEqModels::SCOPEXiEq::XiEq() const const volScalarField& epsilon = turbulence_.epsilon(); volScalarField up(sqrt((2.0/3.0)*k)); - volScalarField l((lCoef*sqrt(3.0/2.0))*up*k/epsilon); + volScalarField l(lCoef_*sqrt(3.0/2.0)*up*k/epsilon); volScalarField Rl(up*l*thermo_.rhou()/thermo_.muu()); - volScalarField upBySu(up/(Su_ + SuMin)); + volScalarField upBySu(up/(Su_ + SuMin_)); volScalarField K(0.157*upBySu/sqrt(Rl)); volScalarField Ma(MaModel.Ma()); @@ -114,7 +114,7 @@ Foam::tmp Foam::XiEqModels::SCOPEXiEq::XiEq() const if (Ma[celli] > 0.01) { xieq[celli] = - XiEqCoef*pow(K[celli]*Ma[celli], -XiEqExp)*upBySu[celli]; + XiEqCoef_*pow(K[celli]*Ma[celli], -XiEqExp_)*upBySu[celli]; } } @@ -130,7 +130,8 @@ Foam::tmp Foam::XiEqModels::SCOPEXiEq::XiEq() const if (Ma[facei] > 0.01) { xieqp[facei] = - XiEqCoef*pow(Kp[facei]*Map[facei], -XiEqExp)*upBySup[facei]; + XiEqCoef_*pow(Kp[facei]*Map[facei], -XiEqExp_) + *upBySup[facei]; } } } @@ -143,9 +144,9 @@ bool Foam::XiEqModels::SCOPEXiEq::read(const dictionary& XiEqProperties) { XiEqModel::read(XiEqProperties); - XiEqModelCoeffs_.lookup("XiEqCoef") >> XiEqCoef; - XiEqModelCoeffs_.lookup("XiEqExp") >> XiEqExp; - XiEqModelCoeffs_.lookup("lCoef") >> lCoef; + XiEqModelCoeffs_.lookup("XiEqCoef") >> XiEqCoef_; + XiEqModelCoeffs_.lookup("XiEqExp") >> XiEqExp_; + XiEqModelCoeffs_.lookup("lCoef") >> lCoef_; return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H index 63415ad33c..ca1f72d69a 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,10 +58,10 @@ class SCOPEXiEq { // Private data - scalar XiEqCoef; - scalar XiEqExp; - scalar lCoef; - dimensionedScalar SuMin; + scalar XiEqCoef_; + scalar XiEqExp_; + scalar lCoef_; + dimensionedScalar SuMin_; //- The SCOPE laminar flame speed model used to obtain the // Marstein number. Note: the laminar flame speed need not be @@ -97,7 +97,8 @@ public: //- Destructor - virtual ~SCOPEXiEq(); + + virtual ~SCOPEXiEq(); // Member Functions @@ -107,6 +108,7 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiEqProperties); + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C index 1524643108..de5850e913 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,31 @@ Foam::XiEqModel::XiEqModel ), thermo_(thermo), turbulence_(turbulence), - Su_(Su) + Su_(Su), + Nv_ + ( + IOobject + ( + "Nv", + Su.mesh().facesInstance(), + Su.mesh(), + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + Su.mesh() + ), + nsv_ + ( + IOobject + ( + "nsv", + Su.mesh().facesInstance(), + Su.mesh(), + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + Su.mesh() + ) {} @@ -73,4 +97,16 @@ bool Foam::XiEqModel::read(const dictionary& XiEqProperties) } +void Foam::XiEqModel::writeFields() const +{ + Nv_.write(); + nsv_.write(); + if (Su_.mesh().foundObject("B")) + { + const volSymmTensorField& B = + Su_.mesh().lookupObject("B"); + B.write(); + } +} + // ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H index 85a151c216..72227d4688 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -67,6 +67,8 @@ protected: const hhuCombustionThermo& thermo_; const compressible::RASModel& turbulence_; const volScalarField& Su_; + volScalarField Nv_; + volSymmTensorField nsv_; private: @@ -133,7 +135,8 @@ public: //- Destructor - virtual ~XiEqModel(); + + virtual ~XiEqModel(); // Member Functions @@ -146,6 +149,9 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiEqProperties) = 0; + + //- Write fields + void writeFields() const; }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C new file mode 100644 index 0000000000..a5b7c27cb7 --- /dev/null +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "XiEqModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::XiEqModel::New +( + const dictionary& XiEqProperties, + const hhuCombustionThermo& thermo, + const compressible::RASModel& turbulence, + const volScalarField& Su +) +{ + word XiEqModelTypeName = XiEqProperties.lookup("XiEqModel"); + + Info<< "Selecting flame-wrinkling model " << XiEqModelTypeName << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(XiEqModelTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "XiEqModel::New" + "(" + " const hhuCombustionThermo& thermo," + " const compressible::RASModel& turbulence," + " const volScalarField& Su" + ")" + ) << "Unknown XiEqModel type " + << XiEqModelTypeName << endl << endl + << "Valid XiEqModels are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr + (cstrIter()(XiEqProperties, thermo, turbulence, Su)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C index cd25337a75..e32b748066 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C @@ -64,7 +64,7 @@ Foam::XiEqModels::instability::~instability() Foam::tmp Foam::XiEqModels::instability::XiEq() const { - volScalarField turbXiEq(XiEqModel_->XiEq()); + volScalarField turbXiEq = XiEqModel_->XiEq(); return XiEqIn/turbXiEq + turbXiEq; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H index 3b0bd1fa63..7d093d3fc4 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,7 +27,7 @@ Class Description This is the equilibrium level of the flame wrinkling generated by instability. It is a constant (default 2.5). It is used in - \link XiModel.H \endlink. + @link XiModel.H @endlink. SourceFiles instability.C @@ -91,7 +91,8 @@ public: //- Destructor - virtual ~instability(); + + virtual ~instability(); // Member Functions @@ -101,6 +102,7 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiEqProperties); + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C index caf44f2ec4..b74f4f3ae7 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,7 @@ Foam::XiGModels::KTS::KTS ) : XiGModel(XiGProperties, thermo, turbulence, Su), - GEtaCoef(readScalar(XiGModelCoeffs_.lookup("GEtaCoef"))) + GEtaCoef_(readScalar(XiGModelCoeffs_.lookup("GEtaCoef"))) {} @@ -63,13 +63,12 @@ Foam::XiGModels::KTS::~KTS() Foam::tmp Foam::XiGModels::KTS::G() const { - // volScalarField up(sqrt((2.0/3.0)*turbulence_.k())); + volScalarField up(sqrt((2.0/3.0)*turbulence_.k())); const volScalarField& epsilon = turbulence_.epsilon(); - tmp tauEta = - sqrt(mag(thermo_.muu()/(thermo_.rhou()*epsilon))); + volScalarField tauEta(sqrt(mag(thermo_.muu()/(thermo_.rhou()*epsilon)))); - return GEtaCoef/tauEta; + return (GEtaCoef_/tauEta); } @@ -77,7 +76,7 @@ bool Foam::XiGModels::KTS::read(const dictionary& XiGProperties) { XiGModel::read(XiGProperties); - XiGModelCoeffs_.lookup("GEtaCoef") >> GEtaCoef; + XiGModelCoeffs_.lookup("GEtaCoef") >> GEtaCoef_; return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H index eb87a7dc8e..dde331158b 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,7 +55,7 @@ class KTS { // Private data - scalar GEtaCoef; + scalar GEtaCoef_; // Private Member Functions @@ -86,7 +86,8 @@ public: //- Destructor - virtual ~KTS(); + + virtual ~KTS(); // Member Functions diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H index 40eeba53ac..79b4e03dfc 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H @@ -130,7 +130,8 @@ public: //- Destructor - virtual ~XiGModel(); + + virtual ~XiGModel(); // Member Functions diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C new file mode 100644 index 0000000000..935b5ff9f5 --- /dev/null +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "XiGModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::XiGModel::New +( + const dictionary& XiGProperties, + const hhuCombustionThermo& thermo, + const compressible::RASModel& turbulence, + const volScalarField& Su +) +{ + word XiGModelTypeName = XiGProperties.lookup("XiGModel"); + + Info<< "Selecting flame-wrinkling model " << XiGModelTypeName << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(XiGModelTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "XiGModel::New" + "(" + " const hhuCombustionThermo& thermo," + " const compressible::RASModel& turbulence," + " const volScalarField& Su" + ")" + ) << "Unknown XiGModel type " + << XiGModelTypeName << endl << endl + << "Valid XiGModels are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr + (cstrIter()(XiGProperties, thermo, turbulence, Su)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C index 277dfb1d9e..7def10da2b 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,8 +49,8 @@ Foam::XiGModels::instabilityG::instabilityG ) : XiGModel(XiGProperties, thermo, turbulence, Su), - GIn(XiGModelCoeffs_.lookup("GIn")), - lambdaIn(XiGModelCoeffs_.lookup("lambdaIn")), + GIn_(XiGModelCoeffs_.lookup("GIn")), + lambdaIn_(XiGModelCoeffs_.lookup("lambdaIn")), XiGModel_(XiGModel::New(XiGModelCoeffs_, thermo, turbulence, Su)) {} @@ -66,7 +66,7 @@ Foam::XiGModels::instabilityG::~instabilityG() Foam::tmp Foam::XiGModels::instabilityG::G() const { volScalarField turbXiG(XiGModel_->G()); - return GIn*GIn/(GIn + turbXiG) + turbXiG; + return (GIn_*GIn_/(GIn_ + turbXiG) + turbXiG); } @@ -78,7 +78,7 @@ Foam::tmp Foam::XiGModels::instabilityG::Db() const const volScalarField& mgb = db.lookupObject("mgb"); return XiGModel_->Db() - + rho*Su_*(Xi - 1.0)*mgb*(0.5*lambdaIn)/(mgb + 1.0/lambdaIn); + + rho*Su_*(Xi - 1.0)*mgb*(0.5*lambdaIn_)/(mgb + 1.0/lambdaIn_); } @@ -86,8 +86,8 @@ bool Foam::XiGModels::instabilityG::read(const dictionary& XiGProperties) { XiGModel::read(XiGProperties); - XiGModelCoeffs_.lookup("GIn") >> GIn; - XiGModelCoeffs_.lookup("lambdaIn") >> lambdaIn; + XiGModelCoeffs_.lookup("GIn") >> GIn_; + XiGModelCoeffs_.lookup("lambdaIn") >> lambdaIn_; return true; } diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H index 948d4a35ad..e6b8648a23 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/instabilityG/instabilityG.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,10 +58,10 @@ class instabilityG // Private data //- Flame instabilityG wrinling generation rate coefficient - dimensionedScalar GIn; + dimensionedScalar GIn_; //- InstabilityG length-scale - dimensionedScalar lambdaIn; + dimensionedScalar lambdaIn_; //- Xi generation rate model due to all other processes autoPtr XiGModel_; @@ -95,7 +95,8 @@ public: //- Destructor - virtual ~instabilityG(); + + virtual ~instabilityG(); // Member Functions diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H index 8f7b0c0422..1111e1b70f 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/XiModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -201,7 +201,8 @@ public: //- Destructor - virtual ~XiModel(); + + virtual ~XiModel(); // Member Functions @@ -237,6 +238,9 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiProperties) = 0; + + //- Write fields related to Xi model + virtual void writeFields() = 0; }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C new file mode 100644 index 0000000000..902b0e9962 --- /dev/null +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "XiModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::XiModel::New +( + const dictionary& XiProperties, + const hhuCombustionThermo& thermo, + const compressible::RASModel& turbulence, + const volScalarField& Su, + const volScalarField& rho, + const volScalarField& b, + const surfaceScalarField& phi +) +{ + word XiModelTypeName = XiProperties.lookup("XiModel"); + + Info<< "Selecting flame-wrinkling model " << XiModelTypeName << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(XiModelTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "XiModel::New" + ) << "Unknown XiModel type " + << XiModelTypeName << endl << endl + << "Valid XiModels are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr + (cstrIter()(XiProperties, thermo, turbulence, Su, rho, b, phi)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C index fbf8baff49..c58339940e 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H index d08cb0a6be..d0581f0b1a 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/algebraic/algebraic.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -96,7 +96,8 @@ public: //- Destructor - virtual ~algebraic(); + + virtual ~algebraic(); // Member Functions @@ -109,6 +110,13 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiProperties); + + //- Write fields of the XiEq model + virtual void writeFields() + { + XiEqModel_().writeFields(); + } + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C index bc2df338a6..4c271bba2e 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H index 5829768be8..1b0aee17f3 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/fixed/fixed.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,7 +84,8 @@ public: //- Destructor - virtual ~fixed(); + + virtual ~fixed(); // Member Functions @@ -95,6 +96,11 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiProperties); + + //- Write fields of the XiEq model + virtual void writeFields() + {} + }; diff --git a/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H index f65984d631..c75099c816 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H @@ -96,7 +96,8 @@ public: //- Destructor - virtual ~transport(); + + virtual ~transport(); // Member Functions @@ -124,6 +125,12 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& XiProperties); + + //- Write fields of the XiEq model + virtual void writeFields() + { + XiEqModel_().writeFields(); + } }; diff --git a/applications/solvers/combustion/PDRFoam/bEqn.H b/applications/solvers/combustion/PDRFoam/bEqn.H index bdc21c1bab..348e4b8991 100644 --- a/applications/solvers/combustion/PDRFoam/bEqn.H +++ b/applications/solvers/combustion/PDRFoam/bEqn.H @@ -30,7 +30,7 @@ if (ign.ignited()) // Calculate flame normal etc. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // volVectorField n(fvc::grad(b)); + //volVectorField n(fvc::grad(b)); volVectorField n(fvc::reconstruct(fvc::snGrad(b)*mesh.magSf())); volScalarField mgb("mgb", mag(n)); diff --git a/applications/solvers/combustion/PDRFoam/createFields.H b/applications/solvers/combustion/PDRFoam/createFields.H index 233383ab1c..15a0ecafea 100644 --- a/applications/solvers/combustion/PDRFoam/createFields.H +++ b/applications/solvers/combustion/PDRFoam/createFields.H @@ -30,7 +30,6 @@ //const volScalarField& T = thermo->T(); - Info<< "\nReading field U\n" << endl; volVectorField U ( @@ -94,8 +93,35 @@ IOobject ( "betav", - runTime.findInstance(polyMesh::meshSubDir, "betav"), - polyMesh::meshSubDir, + mesh.facesInstance(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + mesh + ); + + Info<< "Reading field Lobs\n" << endl; + volScalarField Lobs + ( + IOobject + ( + "Lobs", + mesh.facesInstance(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + mesh + ); + + Info<< "Reading field CT\n" << endl; + volSymmTensorField CT + ( + IOobject + ( + "CT", + mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE diff --git a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C index 7ce9a6da3f..ed860d9ca9 100644 --- a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C +++ b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,6 +23,7 @@ License \*---------------------------------------------------------------------------*/ +#include "IFstream.H" #include "SCOPELaminarFlameSpeed.H" #include "addToRunTimeSelectionTable.H" @@ -68,7 +69,19 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE : laminarFlameSpeed(dict, ct), - coeffsDict_(dict.subDict(typeName + "Coeffs").subDict(fuel_)), + coeffsDict_ + ( + dictionary + ( + IFstream + ( + fileName + ( + dict.lookup("fuelFile") + ) + )() + ).subDict(typeName + "Coeffs") + ), LFL_(readScalar(coeffsDict_.lookup("lowerFlamabilityLimit"))), UFL_(readScalar(coeffsDict_.lookup("upperFlamabilityLimit"))), SuPolyL_(coeffsDict_.subDict("lowerSuPolynomial")), diff --git a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H index 7f4a6c0d14..ae260afced 100644 --- a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H +++ b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -134,7 +134,7 @@ class SCOPE polynomial MaPolyU_; - // Private Member Functions + // Private member functions //- Polynomial evaluated from the given equivalence ratio // and polynomial coefficients @@ -194,7 +194,7 @@ public: ); - //- Destructor + // Destructor ~SCOPE(); From 1fbf80f4109debdcf66aeea3eeb2c4a19841128a Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 4 Mar 2011 18:27:48 +0000 Subject: [PATCH 2/2] STY: date correction --- .../PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H | 2 +- .../PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C | 2 +- .../PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H | 2 +- .../PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C | 2 +- applications/solvers/combustion/PDRFoam/StCourantNo.H | 2 +- .../PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H | 2 +- .../PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C | 2 +- .../XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C | 2 +- .../XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H | 2 +- .../combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H | 2 +- .../PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C | 2 +- .../solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C | 2 +- .../solvers/combustion/PDRFoam/XiModels/transport/transport.H | 2 +- .../PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H index 094bd17a24..e3af54c041 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/XiGModels/basicXiSubG/basicXiSubG.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C index e75b6b0009..31cd0165fe 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H index c787c77d12..d0f13d3046 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C index 829ef540c3..b45e4789f4 100644 --- a/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C +++ b/applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/newPDRDragModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/StCourantNo.H b/applications/solvers/combustion/PDRFoam/StCourantNo.H index 5561f63a2e..55140320a4 100644 --- a/applications/solvers/combustion/PDRFoam/StCourantNo.H +++ b/applications/solvers/combustion/PDRFoam/StCourantNo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H index f551096546..9a5a55017c 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C index a5b7c27cb7..8b59dbb9b6 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/newXiEqModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C index e32b748066..e5f04b7483 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H index 7d093d3fc4..41e9017f51 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H index 79b4e03dfc..bd6ebe4a96 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/XiGModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C index 935b5ff9f5..4049cda2ef 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiGModels/XiGModel/newXiGModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C index 902b0e9962..426c70cf40 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C +++ b/applications/solvers/combustion/PDRFoam/XiModels/XiModel/newXiModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H index c75099c816..86dc798da0 100644 --- a/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H +++ b/applications/solvers/combustion/PDRFoam/XiModels/transport/transport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H index ae260afced..03806e5ed3 100644 --- a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H +++ b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License