From 22aae2816d050f8b5136848a233788b38123e066 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 23 Nov 2017 16:57:12 +0000 Subject: [PATCH] ENH: combustionModels: Changed the construction order The combustion and chemistry models no longer select and own the thermodynamic model; they hold a reference instead. The construction of the combustion and chemistry models has been changed to require a reference to the thermodyanmics, rather than the mesh and a phase name. At the solver-level the thermo, turbulence and combustion models are now selected in sequence. The cyclic dependency between the three models has been resolved, and the raw-pointer based post-construction step for the combustion model has been removed. The old solver-level construction sequence (typically in createFields.H) was as follows: autoPtr combustion ( combustionModels::psiCombustionModel::New(mesh) ); psiReactionThermo& thermo = combustion->thermo(); // Create rho, U, phi, etc... autoPtr turbulence ( compressible::turbulenceModel::New(rho, U, phi, thermo) ); combustion->setTurbulence(*turbulence); The new sequence is: autoPtr thermo(psiReactionThermo::New(mesh)); // Create rho, U, phi, etc... autoPtr turbulence ( compressible::turbulenceModel::New(rho, U, phi, *thermo) ); autoPtr combustion ( combustionModels::psiCombustionModel::New(*thermo, *turbulence) ); ENH: combustionModel, chemistryModel: Simplified model selection The combustion and chemistry model selection has been simplified so that the user does not have to specify the form of the thermodynamics. Examples of new combustion and chemistry entries are as follows: In constant/combustionProperties: combustionModel PaSR; combustionModel FSD; In constant/chemistryProperties: chemistryType { solver ode; method TDAC; } All the angle bracket parts of the model names (e.g., ) have been removed as well as the chemistryThermo entry. The changes are mostly backward compatible. Only support for the angle bracket form of chemistry solver names has been removed. Warnings will print if some of the old entries are used, as the parts relating to thermodynamics are now ignored. ENH: combustionModel, chemistryModel: Simplified model selection Updated all tutorials to the new format STYLE: combustionModel: Namespace changes Wrapped combustion model make macros in the Foam namespace and removed combustion model namespace from the base classes. This fixes a namespace specialisation bug in gcc 4.8. It is also somewhat less verbose in the solvers. This resolves bug report https://bugs.openfoam.org/view.php?id=2787 ENH: combustionModels: Default to the "none" model When the constant/combustionProperties dictionary is missing, the solver will now default to the "none" model. This is consistent with how radiation models are selected. --- .../solvers/combustion/chemFoam/chemFoam.C | 5 +- .../combustion/chemFoam/createFieldRefs.H | 6 +- .../combustion/chemFoam/createFields.H | 14 +- .../combustion/fireFoam/createFields.H | 21 +- .../solvers/combustion/fireFoam/fireFoam.C | 3 +- .../combustion/reactingFoam/createFields.H | 22 +- .../combustion/reactingFoam/reactingFoam.C | 3 +- .../rhoReactingBuoyantFoam/createFields.H | 19 +- .../rhoReactingBuoyantFoam.C | 3 +- .../rhoReactingFoam/createFields.H | 18 +- .../rhoReactingFoam/rhoReactingFoam.C | 3 +- .../coalChemistryFoam/coalChemistryFoam.C | 3 +- .../coalChemistryFoam/createFields.H | 18 +- .../reactingParcelFoam/createFields.H | 18 +- .../reactingParcelFoam/reactingParcelFoam.C | 3 +- .../simpleReactingParcelFoam/createFields.H | 18 +- .../simpleReactingParcelFoam.C | 3 +- .../lagrangian/sprayFoam/createFields.H | 18 +- .../sprayFoam/engineFoam/engineFoam.C | 3 +- .../sprayFoam/sprayDyMFoam/sprayDyMFoam.C | 3 +- .../solvers/lagrangian/sprayFoam/sprayFoam.C | 3 +- .../twoPhaseMixtureThermo.C | 6 + .../twoPhaseMixtureThermo.H | 3 + .../multiphaseMixtureThermo.C | 15 + .../multiphaseMixtureThermo.H | 3 + .../MovingPhaseModel/MovingPhaseModel.H | 8 +- .../ReactingPhaseModel/ReactingPhaseModel.C | 40 +-- .../ThermoPhaseModel/ThermoPhaseModel.C | 34 +- .../ThermoPhaseModel/ThermoPhaseModel.H | 10 +- .../phaseModel/phaseModel/phaseModels.C | 42 +-- .../ChemistryCombustion.C} | 37 +- .../ChemistryCombustion.H} | 58 ++- .../CombustionModel/CombustionModel.C} | 53 +-- .../CombustionModel/CombustionModel.H} | 77 ++-- .../CombustionModel/CombustionModels.C} | 25 +- .../ThermoCombustion/ThermoCombustion.C} | 39 +- .../ThermoCombustion/ThermoCombustion.H} | 56 ++- src/combustionModels/EDC/EDC.C | 46 +-- src/combustionModels/EDC/EDC.H | 10 +- src/combustionModels/EDC/EDCs.C | 12 +- src/combustionModels/FSD/FSD.C | 52 +-- src/combustionModels/FSD/FSD.H | 12 +- src/combustionModels/FSD/FSDs.C | 52 ++- src/combustionModels/Make/files | 11 +- src/combustionModels/PaSR/PaSR.C | 50 +-- src/combustionModels/PaSR/PaSR.H | 10 +- src/combustionModels/PaSR/PaSRs.C | 14 +- .../combustionModel/combustionModel.C | 62 ++-- .../combustionModel/combustionModel.H | 43 ++- .../combustionModel/combustionModelI.H | 22 +- .../combustionModelTemplates.C | 180 ++++++++++ .../combustionModel/makeCombustionTypes.H | 92 +++-- src/combustionModels/diffusion/diffusion.C | 38 +- src/combustionModels/diffusion/diffusion.H | 12 +- src/combustionModels/diffusion/diffusions.C | 50 ++- .../infinitelyFastChemistry.C | 40 +-- .../infinitelyFastChemistry.H | 12 +- .../infinitelyFastChemistrys.C | 50 ++- src/combustionModels/laminar/laminar.C | 46 +-- src/combustionModels/laminar/laminar.H | 14 +- src/combustionModels/laminar/laminars.C | 14 +- .../noCombustion/noCombustion.C | 36 +- .../noCombustion/noCombustion.H | 16 +- .../noCombustion/noCombustions.C | 26 +- .../psiChemistryCombustion.H | 111 ------ .../psiCombustionModel/psiCombustionModel.C | 74 ---- .../psiCombustionModelNew.C | 77 ---- .../psiThermoCombustion/psiThermoCombustion.C | 64 ---- .../rhoChemistryCombustion.H | 111 ------ .../rhoCombustionModel/rhoCombustionModel.H | 153 -------- .../rhoCombustionModelNew.C | 77 ---- .../rhoThermoCombustion/rhoThermoCombustion.C | 64 ---- .../singleStepCombustion.C | 38 +- .../singleStepCombustion.H | 13 +- .../zoneCombustion/zoneCombustion.C | 72 ++-- .../zoneCombustion/zoneCombustion.H | 20 +- .../zoneCombustion/zoneCombustions.C | 15 +- .../pyrolysisModels/noPyrolysis/noPyrolysis.C | 11 +- .../pyrolysisModels/noPyrolysis/noPyrolysis.H | 12 +- .../reactingOneDim/reactingOneDim.C | 40 +-- .../reactingOneDim/reactingOneDim.H | 6 +- .../basic/basicThermo/basicThermo.H | 3 + .../basic/heThermo/heThermo.H | 6 + .../chemistryModel/Make/files | 7 +- .../BasicChemistryModel.C} | 40 +-- .../BasicChemistryModel.H} | 69 ++-- .../BasicChemistryModelI.H} | 15 +- .../BasicChemistryModels.C | 339 ++++++++++++++++++ .../StandardChemistryModel.C} | 83 +++-- .../StandardChemistryModel.H} | 36 +- .../StandardChemistryModelI.H} | 41 +-- .../TDACChemistryModel/TDACChemistryModel.C | 84 ++--- .../TDACChemistryModel/TDACChemistryModel.H | 33 +- .../TDACChemistryModel/TDACChemistryModelI.H | 79 ++-- .../chemistryReductionMethodNew.C | 102 +++--- .../reduction/makeChemistryReductionMethods.C | 46 +-- .../reduction/makeChemistryReductionMethods.H | 8 +- .../chemistryTabulationMethodNew.C | 104 +++--- .../makeChemistryTabulationMethods.C | 46 +-- .../makeChemistryTabulationMethods.H | 4 +- .../basicChemistryModel/basicChemistryModel.C | 22 +- .../basicChemistryModel/basicChemistryModel.H | 14 +- .../basicChemistryModelTemplates.C | 242 ++++++------- .../chemistryModel/makeChemistryModel.H | 22 +- .../psiChemistryModel/psiChemistryModel.H | 135 ------- .../psiChemistryModel/psiChemistryModels.C | 189 ---------- .../rhoChemistryModel/rhoChemistryModel.C | 69 ---- .../rhoChemistryModel/rhoChemistryModels.C | 189 ---------- .../EulerImplicit/EulerImplicit.C | 6 +- .../EulerImplicit/EulerImplicit.H | 10 +- .../chemistrySolver/chemistrySolver.C | 7 +- .../chemistrySolver/chemistrySolver.H | 7 +- .../makeChemistrySolverTypes.H | 59 ++- .../chemistrySolver/makeChemistrySolvers.C | 46 +-- .../noChemistrySolver/noChemistrySolver.C | 7 +- .../noChemistrySolver/noChemistrySolver.H | 4 +- .../chemistryModel/chemistrySolver/ode/ode.C | 11 +- .../chemistryModel/chemistrySolver/ode/ode.H | 6 +- .../specieReactionRates/specieReactionRates.C | 25 +- .../reactionThermo/makeReactionThermo.H | 28 +- .../basicMultiComponentMixture.C | 1 + .../basicMultiComponentMixture.H | 5 +- .../basicSolidChemistryModel.C | 11 +- .../basicSolidChemistryModel.H | 26 +- .../basicSolidChemistryModelI.H | 6 +- .../basicSolidChemistryModelNew.C | 27 +- .../pyrolysisChemistryModel.C | 35 +- .../pyrolysisChemistryModel.H | 6 +- .../solidChemistryModel/solidChemistryModel.C | 18 +- .../solidChemistryModel/solidChemistryModel.H | 6 +- .../makeSolidChemistrySolverType.H | 4 +- .../thermophysicalPropertiesSelector.H | 9 + .../chemFoam/gri/constant/chemistryProperties | 3 +- .../chemFoam/h2/constant/chemistryProperties | 3 +- .../ic8h18/constant/chemistryProperties | 3 +- .../ic8h18_TDAC/constant/chemistryProperties | 5 +- .../nc7h16/constant/chemistryProperties | 3 +- .../constant/combustionProperties | 4 +- .../constant/combustionProperties | 2 +- .../constant/combustionProperties | 6 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../DLR_A_LTS/constant/chemistryProperties | 5 +- .../constant/chemistryProperties.test | 5 +- .../DLR_A_LTS/constant/combustionProperties | 2 +- .../SandiaD_LTS/constant/chemistryProperties | 5 +- .../SandiaD_LTS/constant/combustionProperties | 2 +- .../RAS/membrane/constant/chemistryProperties | 3 +- .../membrane/constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 5 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 5 +- .../constant/chemistryProperties.new | 5 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../cylinder/constant/chemistryProperties | 3 +- .../cylinder/constant/combustionProperties | 2 +- .../filter/constant/chemistryProperties | 3 +- .../filter/constant/combustionProperties | 2 +- .../hotBoxes/constant/chemistryProperties | 3 +- .../hotBoxes/constant/combustionProperties | 2 +- .../parcelInBox/constant/chemistryProperties | 3 +- .../parcelInBox/constant/combustionProperties | 2 +- .../rivuletPanel/constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../splashPanel/constant/chemistryProperties | 3 +- .../splashPanel/constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../constant/chemistryProperties | 3 +- .../constant/combustionProperties | 2 +- .../aachenBomb/constant/chemistryProperties | 3 +- .../aachenBomb/constant/combustionProperties | 2 +- .../constant/chemistryProperties.gas | 3 +- .../constant/combustionProperties.gas | 2 +- .../constant/chemistryProperties.gas | 3 +- .../constant/combustionProperties.gas | 2 +- .../constant/chemistryProperties.gas | 3 +- .../constant/combustionProperties.gas | 2 +- 190 files changed, 2266 insertions(+), 2991 deletions(-) rename src/combustionModels/{rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C => CombustionModel/ChemistryCombustion/ChemistryCombustion.C} (65%) rename src/combustionModels/{psiCombustionModel/psiThermoCombustion/psiThermoCombustion.H => CombustionModel/ChemistryCombustion/ChemistryCombustion.H} (65%) rename src/combustionModels/{rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.C => CombustionModel/CombustionModel/CombustionModel.C} (61%) rename src/combustionModels/{psiCombustionModel/psiCombustionModel/psiCombustionModel.H => CombustionModel/CombustionModel/CombustionModel.H} (64%) rename src/{thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H => combustionModels/CombustionModel/CombustionModel/CombustionModels.C} (77%) rename src/combustionModels/{psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.C => CombustionModel/ThermoCombustion/ThermoCombustion.C} (66%) rename src/combustionModels/{rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.H => CombustionModel/ThermoCombustion/ThermoCombustion.H} (65%) create mode 100644 src/combustionModels/combustionModel/combustionModelTemplates.C delete mode 100644 src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.H delete mode 100644 src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.C delete mode 100644 src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModelNew.C delete mode 100644 src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.C delete mode 100644 src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.H delete mode 100644 src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.H delete mode 100644 src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModelNew.C delete mode 100644 src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.C rename src/thermophysicalModels/chemistryModel/chemistryModel/{psiChemistryModel/psiChemistryModel.C => BasicChemistryModel/BasicChemistryModel.C} (65%) rename src/thermophysicalModels/chemistryModel/chemistryModel/{rhoChemistryModel/rhoChemistryModel.H => BasicChemistryModel/BasicChemistryModel.H} (65%) rename src/thermophysicalModels/chemistryModel/chemistryModel/{psiChemistryModel/psiChemistryModelI.H => BasicChemistryModel/BasicChemistryModelI.H} (77%) create mode 100644 src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModels.C rename src/thermophysicalModels/chemistryModel/chemistryModel/{chemistryModel/chemistryModel.C => StandardChemistryModel/StandardChemistryModel.C} (88%) rename src/thermophysicalModels/chemistryModel/chemistryModel/{chemistryModel/chemistryModel.H => StandardChemistryModel/StandardChemistryModel.H} (91%) rename src/thermophysicalModels/chemistryModel/chemistryModel/{chemistryModel/chemistryModelI.H => StandardChemistryModel/StandardChemistryModelI.H} (63%) delete mode 100644 src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H delete mode 100644 src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C delete mode 100644 src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.C delete mode 100644 src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C diff --git a/applications/solvers/combustion/chemFoam/chemFoam.C b/applications/solvers/combustion/chemFoam/chemFoam.C index 2a52eca117..7e32e64b87 100644 --- a/applications/solvers/combustion/chemFoam/chemFoam.C +++ b/applications/solvers/combustion/chemFoam/chemFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,7 +37,8 @@ Description #include "fvCFD.H" #include "psiReactionThermo.H" -#include "psiChemistryModel.H" +#include "BasicChemistryModel.H" +#include "reactingMixture.H" #include "chemistrySolver.H" #include "OFstream.H" #include "thermoPhysicsTypes.H" diff --git a/applications/solvers/combustion/chemFoam/createFieldRefs.H b/applications/solvers/combustion/chemFoam/createFieldRefs.H index ef34180b32..fa0fbe2fe9 100644 --- a/applications/solvers/combustion/chemFoam/createFieldRefs.H +++ b/applications/solvers/combustion/chemFoam/createFieldRefs.H @@ -1,4 +1,8 @@ -scalar dtChem = refCast(chemistry).deltaTChem()[0]; +BasicChemistryModel& chemistry = pChemistry(); +scalar dtChem = refCast> +( + chemistry +).deltaTChem()[0]; basicMultiComponentMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); volScalarField& p = thermo.p(); diff --git a/applications/solvers/combustion/chemFoam/createFields.H b/applications/solvers/combustion/chemFoam/createFields.H index ada27f69a8..34fcf68290 100644 --- a/applications/solvers/combustion/chemFoam/createFields.H +++ b/applications/solvers/combustion/chemFoam/createFields.H @@ -23,14 +23,16 @@ #include "createBaseFields.H" - Info<< nl << "Reading thermophysicalProperties" << endl; - autoPtr pChemistry(psiChemistryModel::New(mesh)); - - psiChemistryModel& chemistry = pChemistry(); - - psiReactionThermo& thermo = chemistry.thermo(); + Info<< "Reading thermophysical properties\n" << endl; + autoPtr pThermo(psiReactionThermo::New(mesh)); + psiReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h"); + autoPtr> pChemistry + ( + BasicChemistryModel::New(thermo) + ); + volScalarField rho ( IOobject diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H index 8db1885d33..5ce421a6bd 100644 --- a/applications/solvers/combustion/fireFoam/createFields.H +++ b/applications/solvers/combustion/fireFoam/createFields.H @@ -1,16 +1,6 @@ -Info<< "Creating combustion model\n" << endl; - -autoPtr combustion -( - combustionModels::psiCombustionModel::New - ( - mesh - ) -); - Info<< "Reading thermophysical properties\n" << endl; - -psiReactionThermo& thermo = combustion->thermo(); +autoPtr pThermo(psiReactionThermo::New(mesh)); +psiReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); SLGThermo slgThermo(mesh, thermo); @@ -74,8 +64,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the combustion model -combustion->setTurbulence(turbulence()); +Info<< "Creating combustion model\n" << endl; +autoPtr> combustion +( + CombustionModel::New(thermo, turbulence()) +); #include "readGravitationalAcceleration.H" diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 84f7a830e8..1821b7a540 100644 --- a/applications/solvers/combustion/fireFoam/fireFoam.C +++ b/applications/solvers/combustion/fireFoam/fireFoam.C @@ -41,7 +41,8 @@ Description #include "radiationModel.H" #include "SLGThermo.H" #include "solidChemistryModel.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "pimpleControl.H" #include "fvOptions.H" diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H index 8ef86846b9..b45da388cd 100644 --- a/applications/solvers/combustion/reactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/createFields.H @@ -1,13 +1,8 @@ #include "createRDeltaT.H" -Info<< "Creating reaction model\n" << endl; - -autoPtr reaction -( - combustionModels::psiCombustionModel::New(mesh) -); - -psiReactionThermo& thermo = reaction->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(psiReactionThermo::New(mesh)); +psiReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); @@ -18,8 +13,7 @@ if (!composition.species().found(inertSpecie)) { FatalIOErrorIn(args.executable().c_str(), thermo) << "Inert specie " << inertSpecie << " not found in available species " - << composition.species() - << exit(FatalIOError); + << composition.species() << exit(FatalIOError); } volScalarField rho @@ -47,7 +41,6 @@ volVectorField U mesh ); - volScalarField& p = thermo.p(); #include "compressibleCreatePhi.H" @@ -68,8 +61,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the reaction model -reaction->setTurbulence(turbulence()); +Info<< "Creating reaction model\n" << endl; +autoPtr> reaction +( + CombustionModel::New(thermo, turbulence()) +); multivariateSurfaceInterpolationScheme::fieldTable fields; diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C index 3a3b76402f..ff769cf4d2 100644 --- a/applications/solvers/combustion/reactingFoam/reactingFoam.C +++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C @@ -34,7 +34,8 @@ Description #include "fvCFD.H" #include "turbulentFluidThermoModel.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "multivariateScheme.H" #include "pimpleControl.H" #include "pressureControl.H" diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H index afa58af394..7c28c1879a 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H @@ -1,13 +1,8 @@ #include "createRDeltaT.H" -Info<< "Creating reaction model\n" << endl; - -autoPtr reaction -( - combustionModels::rhoCombustionModel::New(mesh) -); - -rhoReactionThermo& thermo = reaction->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(rhoReactionThermo::New(mesh)); +rhoReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); @@ -67,9 +62,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the reaction model -reaction->setTurbulence(turbulence()); - +Info<< "Creating reaction model\n" << endl; +autoPtr> reaction +( + CombustionModel::New(thermo, turbulence()) +); #include "readGravitationalAcceleration.H" #include "readhRef.H" diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C index 183604219b..3517d25658 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C @@ -34,7 +34,8 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "rhoCombustionModel.H" +#include "rhoReactionThermo.H" +#include "CombustionModel.H" #include "turbulentFluidThermoModel.H" #include "multivariateScheme.H" #include "pimpleControl.H" diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H index b4d03cb761..024755ef4d 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H @@ -1,13 +1,8 @@ #include "createRDeltaT.H" -Info<< "Creating reaction model\n" << endl; - -autoPtr reaction -( - combustionModels::rhoCombustionModel::New(mesh) -); - -rhoReactionThermo& thermo = reaction->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(rhoReactionThermo::New(mesh)); +rhoReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); @@ -69,8 +64,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the reaction model -reaction->setTurbulence(turbulence()); +Info<< "Creating reaction model\n" << endl; +autoPtr> reaction +( + CombustionModel::New(thermo, turbulence()) +); multivariateSurfaceInterpolationScheme::fieldTable fields; diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C index 7a02553489..9277ef0041 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C @@ -34,7 +34,8 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "rhoCombustionModel.H" +#include "rhoReactionThermo.H" +#include "CombustionModel.H" #include "turbulentFluidThermoModel.H" #include "multivariateScheme.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C index 1febe270c1..e51f053fcd 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C +++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C @@ -37,7 +37,8 @@ Description #include "turbulentFluidThermoModel.H" #include "basicThermoCloud.H" #include "coalCloud.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "fvOptions.H" #include "radiationModel.H" #include "SLGThermo.H" diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H index 158c7bd563..3ea11e9ccc 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H @@ -2,14 +2,9 @@ #include "readGravitationalAcceleration.H" -Info<< "Creating combustion model\n" << endl; - -autoPtr combustion -( - combustionModels::psiCombustionModel::New(mesh) -); - -psiReactionThermo& thermo = combustion->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(psiReactionThermo::New(mesh)); +psiReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); SLGThermo slgThermo(mesh, thermo); @@ -112,8 +107,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the combustion model -combustion->setTurbulence(turbulence()); +Info<< "Creating combustion model\n" << endl; +autoPtr> combustion +( + CombustionModel::New(thermo, turbulence()) +); volScalarField Qdot ( diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H index 81fc4bb6d5..c2352ee5b4 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H @@ -1,13 +1,8 @@ #include "createRDeltaT.H" -Info<< "Creating combustion model\n" << endl; - -autoPtr combustion -( - combustionModels::rhoCombustionModel::New(mesh) -); - -rhoReactionThermo& thermo = combustion->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(rhoReactionThermo::New(mesh)); +rhoReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); SLGThermo slgThermo(mesh, thermo); @@ -68,8 +63,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the combustion model -combustion->setTurbulence(turbulence()); +Info<< "Creating combustion model\n" << endl; +autoPtr> combustion +( + CombustionModel::New(thermo, turbulence()) +); #include "readGravitationalAcceleration.H" #include "readhRef.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C index d2df47c8cb..d5c7a2a4f1 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C @@ -37,7 +37,8 @@ Description #include "turbulentFluidThermoModel.H" #include "basicReactingMultiphaseCloud.H" #include "surfaceFilmModel.H" -#include "rhoCombustionModel.H" +#include "rhoReactionThermo.H" +#include "CombustionModel.H" #include "radiationModel.H" #include "SLGThermo.H" #include "fvOptions.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H index 2be141b8db..1b28e78f1f 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H @@ -1,13 +1,8 @@ #include "readGravitationalAcceleration.H" -Info<< "Creating combustion model\n" << endl; - -autoPtr combustion -( - combustionModels::rhoCombustionModel::New(mesh) -); - -rhoReactionThermo& thermo = combustion->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(rhoReactionThermo::New(mesh)); +rhoReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); SLGThermo slgThermo(mesh, thermo); @@ -91,8 +86,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the combustion model -combustion->setTurbulence(turbulence()); +Info<< "Creating combustion model\n" << endl; +autoPtr> combustion +( + CombustionModel::New(thermo, turbulence()) +); Info<< "Creating multi-variate interpolation scheme\n" << endl; multivariateSurfaceInterpolationScheme::fieldTable fields; diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C index 20a6a70828..e7bab7de83 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/simpleReactingParcelFoam.C @@ -33,7 +33,8 @@ Description #include "fvCFD.H" #include "turbulentFluidThermoModel.H" #include "basicReactingMultiphaseCloud.H" -#include "rhoCombustionModel.H" +#include "rhoReactionThermo.H" +#include "CombustionModel.H" #include "radiationModel.H" #include "IOporosityModelList.H" #include "fvOptions.H" diff --git a/applications/solvers/lagrangian/sprayFoam/createFields.H b/applications/solvers/lagrangian/sprayFoam/createFields.H index 972246cc2c..7f62f6229c 100644 --- a/applications/solvers/lagrangian/sprayFoam/createFields.H +++ b/applications/solvers/lagrangian/sprayFoam/createFields.H @@ -1,13 +1,8 @@ #include "readGravitationalAcceleration.H" -Info<< "Creating combustion model\n" << endl; - -autoPtr combustion -( - combustionModels::psiCombustionModel::New(mesh) -); - -psiReactionThermo& thermo = combustion->thermo(); +Info<< "Reading thermophysical properties\n" << endl; +autoPtr pThermo(psiReactionThermo::New(mesh)); +psiReactionThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); SLGThermo slgThermo(mesh, thermo); @@ -91,8 +86,11 @@ autoPtr turbulence ) ); -// Set the turbulence into the combustion model -combustion->setTurbulence(turbulence()); +Info<< "Creating combustion model\n" << endl; +autoPtr> combustion +( + CombustionModel::New(thermo, turbulence()) +); multivariateSurfaceInterpolationScheme::fieldTable fields; diff --git a/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C b/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C index 71f0be0df5..1b7076e3a5 100644 --- a/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/engineFoam/engineFoam.C @@ -35,7 +35,8 @@ Description #include "engineMesh.H" #include "turbulentFluidThermoModel.H" #include "basicSprayCloud.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "radiationModel.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C index d047aa704b..46268f82b2 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/sprayDyMFoam.C @@ -37,7 +37,8 @@ Description #include "dynamicFvMesh.H" #include "turbulenceModel.H" #include "basicSprayCloud.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "radiationModel.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C index e3b6b9f1f1..5f5359c85e 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayFoam.C +++ b/applications/solvers/lagrangian/sprayFoam/sprayFoam.C @@ -36,7 +36,8 @@ Description #include "fvCFD.H" #include "turbulentFluidThermoModel.H" #include "basicSprayCloud.H" -#include "psiCombustionModel.H" +#include "psiReactionThermo.H" +#include "CombustionModel.H" #include "radiationModel.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C index 05d3bedfdc..69daa03abb 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C +++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.C @@ -98,6 +98,12 @@ void Foam::twoPhaseMixtureThermo::correct() } +Foam::word Foam::twoPhaseMixtureThermo::thermoName() const +{ + return thermo1_->thermoName() + ',' + thermo2_->thermoName(); +} + + bool Foam::twoPhaseMixtureThermo::incompressible() const { return thermo1_->incompressible() && thermo2_->incompressible(); diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H index 3c139dc8f1..11c895fa27 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H +++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/twoPhaseMixtureThermo.H @@ -113,6 +113,9 @@ public: //- Update mixture properties virtual void correct(); + //- Return the name of the thermo physics + virtual word thermoName() const; + //- Return true if the equation of state is incompressible // i.e. rho != f(p) virtual bool incompressible() const; diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C index 7e4717698a..114b29c46c 100644 --- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C +++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C @@ -150,6 +150,21 @@ void Foam::multiphaseMixtureThermo::correctRho(const volScalarField& dp) } +Foam::word Foam::multiphaseMixtureThermo::thermoName() const +{ + PtrDictionary::const_iterator phasei = phases_.begin(); + + word name = phasei().thermo().thermoName(); + + for (++ phasei; phasei != phases_.end(); ++ phasei) + { + name += ',' + phasei().thermo().thermoName(); + } + + return name; +} + + bool Foam::multiphaseMixtureThermo::incompressible() const { bool ico = true; diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H index 084b878084..63fe3969e7 100644 --- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H +++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H @@ -227,6 +227,9 @@ public: //- Update densities for given pressure change void correctRho(const volScalarField& dp); + //- Return the name of the thermo physics + virtual word thermoName() const; + //- Return true if the equation of state is incompressible // i.e. rho != f(p) virtual bool incompressible() const; diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H index 864a6b4259..7a120b2003 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,9 @@ class MovingPhaseModel : public BasePhaseModel { - // Private data +protected: + + // Protected data //- Velocity field volVectorField U_; @@ -94,6 +96,8 @@ class MovingPhaseModel tmp DbyA_; +private: + // Private static member functions //- Calculate and return the flux field diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C index aef23273f2..adea05a4ee 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,26 +37,9 @@ Foam::ReactingPhaseModel::ReactingPhaseModel const label index ) : - BasePhaseModel(fluid, phaseName, index, false), - reaction_ - ( - ReactionType::New - ( - fluid.mesh(), - combustionModel::combustionPropertiesName, - this->name() - ) - ) -{ - this->thermo_ = &reaction_->thermo(); - - this->thermo_->validate - ( - IOobject::groupName(phaseModel::typeName, this->name()), - "h", - "e" - ); -} + BasePhaseModel(fluid, phaseName, index), + reaction_(ReactionType::New(this->thermo_(), this->turbulence_())) +{} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // @@ -71,21 +54,6 @@ Foam::ReactingPhaseModel::~ReactingPhaseModel() template void Foam::ReactingPhaseModel::correctThermo() { - reaction_->setTurbulence - ( - const_cast - ( - this->mesh().template lookupObject - ( - IOobject::groupName - ( - turbulenceModel::propertiesName, - this->name() - ) - ) - ) - ); - BasePhaseModel::correctThermo(); reaction_->correct(); diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C index 7298516f13..7755afec23 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -41,28 +41,18 @@ Foam::ThermoPhaseModel::ThermoPhaseModel ( const phaseSystem& fluid, const word& phaseName, - const label index, - const bool createThermo + const label index ) : - BasePhaseModel(fluid, phaseName, index) + BasePhaseModel(fluid, phaseName, index), + thermo_(ThermoType::New(fluid.mesh(), this->name())) { - if (createThermo) - { - thermoPtr_.reset - ( - ThermoType::New(fluid.mesh(), this->name()).ptr() - ); - - thermo_ = thermoPtr_.ptr(); - - thermo_->validate - ( - IOobject::groupName(phaseModel::typeName, this->name()), - "h", - "e" - ); - } + thermo_->validate + ( + IOobject::groupName(phaseModel::typeName, this->name()), + "h", + "e" + ); } @@ -79,7 +69,7 @@ template const Foam::rhoThermo& Foam::ThermoPhaseModel::thermo() const { - return *thermo_; + return thermo_(); } @@ -87,7 +77,7 @@ template Foam::rhoThermo& Foam::ThermoPhaseModel::thermo() { - return *thermo_; + return thermo_(); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H index 56289cbf78..3f65910d29 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,10 +62,7 @@ protected: // Protected data //- Thermophysical model - autoPtr thermoPtr_; - - //- Thermophysical model - ThermoType* thermo_; + autoPtr thermo_; public: @@ -76,8 +73,7 @@ public: ( const phaseSystem& fluid, const word& phaseName, - const label index, - const bool createThermo = true + const label index ); diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C index 45fe19295c..0b26549984 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,7 +28,7 @@ License #include "rhoThermo.H" #include "rhoReactionThermo.H" -#include "rhoCombustionModel.H" +#include "CombustionModel.H" #include "phaseModel.H" #include "ThermoPhaseModel.H" @@ -45,13 +45,13 @@ License namespace Foam { typedef - MovingPhaseModel + AnisothermalPhaseModel < - AnisothermalPhaseModel + PurePhaseModel < - PurePhaseModel + InertPhaseModel < - InertPhaseModel + MovingPhaseModel < ThermoPhaseModel > @@ -69,13 +69,13 @@ namespace Foam ); typedef - MovingPhaseModel + IsothermalPhaseModel < - IsothermalPhaseModel + PurePhaseModel < - PurePhaseModel + InertPhaseModel < - InertPhaseModel + MovingPhaseModel < ThermoPhaseModel > @@ -93,13 +93,13 @@ namespace Foam ); typedef - MovingPhaseModel + AnisothermalPhaseModel < - AnisothermalPhaseModel + MultiComponentPhaseModel < - MultiComponentPhaseModel + InertPhaseModel < - InertPhaseModel + MovingPhaseModel < ThermoPhaseModel > @@ -117,17 +117,17 @@ namespace Foam ); typedef - MovingPhaseModel + AnisothermalPhaseModel < - AnisothermalPhaseModel + MultiComponentPhaseModel < - MultiComponentPhaseModel + ReactingPhaseModel < - ReactingPhaseModel + MovingPhaseModel < - ThermoPhaseModel, - combustionModels::rhoCombustionModel - > + ThermoPhaseModel + >, + CombustionModel > > > diff --git a/src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.C similarity index 65% rename from src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C rename to src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.C index 4d977c7fd5..3de9fda045 100644 --- a/src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C +++ b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,40 +23,51 @@ License \*---------------------------------------------------------------------------*/ -#include "rhoChemistryCombustion.H" +#include "ChemistryCombustion.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::combustionModels::rhoChemistryCombustion::rhoChemistryCombustion +template +Foam::ChemistryCombustion::ChemistryCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - rhoCombustionModel(modelType, mesh, combustionProperties, phaseName), - chemistryPtr_(rhoChemistryModel::New(mesh, phaseName)) + CombustionModel + ( + modelType, + thermo, + turb, + combustionProperties + ), + chemistryPtr_(BasicChemistryModel::New(thermo)) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::combustionModels::rhoChemistryCombustion::~rhoChemistryCombustion() +template +Foam::ChemistryCombustion:: +~ChemistryCombustion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -Foam::rhoReactionThermo& -Foam::combustionModels::rhoChemistryCombustion::thermo() +template +ReactionThermo& +Foam::ChemistryCombustion::thermo() { return chemistryPtr_->thermo(); } -const Foam::rhoReactionThermo& -Foam::combustionModels::rhoChemistryCombustion::thermo() const +template +const ReactionThermo& +Foam::ChemistryCombustion::thermo() const { return chemistryPtr_->thermo(); } diff --git a/src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.H b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H similarity index 65% rename from src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.H rename to src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H index f922e1a44d..e8d7f79a13 100644 --- a/src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.H +++ b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,89 +22,85 @@ License along with OpenFOAM. If not, see . Class - Foam::psiThermoCombustion + Foam::ChemistryCombustion Description - Compressibility-based thermo model wrapper for combustion models + Chemistry model wrapper for combustion models SourceFiles - psiThermoCombustion.C + ChemistryCombustion.C \*---------------------------------------------------------------------------*/ -#ifndef psiThermoCombustion_H -#define psiThermoCombustion_H +#ifndef ChemistryCombustion_H +#define ChemistryCombustion_H #include "autoPtr.H" -#include "psiCombustionModel.H" -#include "psiReactionThermo.H" +#include "CombustionModel.H" +#include "BasicChemistryModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -namespace combustionModels -{ /*---------------------------------------------------------------------------*\ - class psiThermoCombustion Declaration + class ChemistryCombustion Declaration \*---------------------------------------------------------------------------*/ -class psiThermoCombustion +template +class ChemistryCombustion : - public psiCombustionModel + public CombustionModel { - // Private Member Functions - - //- Construct as copy (not implemented) - psiThermoCombustion(const psiThermoCombustion&); - - //- Disallow default bitwise assignment - void operator=(const psiThermoCombustion&); - - protected: // Protected data //- Pointer to chemistry model - autoPtr thermoPtr_; + autoPtr> chemistryPtr_; public: // Constructors - //- Construct from components - psiThermoCombustion + //- Construct from components and thermo + ChemistryCombustion ( const word& modelType, - const fvMesh& mesh, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); //- Destructor - virtual ~psiThermoCombustion(); + virtual ~ChemistryCombustion(); // Member Functions //- Return access to the thermo package - virtual psiReactionThermo& thermo(); + virtual ReactionThermo& thermo(); //- Return const access to the thermo package - virtual const psiReactionThermo& thermo() const; + virtual const ReactionThermo& thermo() const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace combustionModels } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository + #include "ChemistryCombustion.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.C b/src/combustionModels/CombustionModel/CombustionModel/CombustionModel.C similarity index 61% rename from src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.C rename to src/combustionModels/CombustionModel/CombustionModel/CombustionModel.C index bcc0b18c3f..d27ec213e6 100644 --- a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.C +++ b/src/combustionModels/CombustionModel/CombustionModel/CombustionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,42 +23,55 @@ License \*---------------------------------------------------------------------------*/ -#include "rhoCombustionModel.H" - -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ - -namespace Foam -{ -namespace combustionModels -{ - defineTypeNameAndDebug(rhoCombustionModel, 0); - defineRunTimeSelectionTable(rhoCombustionModel, dictionary); -} -} +#include "CombustionModel.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::combustionModels::rhoCombustionModel::rhoCombustionModel +template +Foam::CombustionModel::CombustionModel ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - combustionModel(modelType, mesh, combustionProperties, phaseName) + combustionModel(modelType, thermo, turb, combustionProperties) {} +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +template +Foam::autoPtr> +Foam::CombustionModel::New +( + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties +) +{ + return + combustionModel::New> + ( + thermo, + turb, + combustionProperties + ); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::combustionModels::rhoCombustionModel::~rhoCombustionModel() +template +Foam::CombustionModel::~CombustionModel() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -bool Foam::combustionModels::rhoCombustionModel::read() +template +bool Foam::CombustionModel::read() { if (combustionModel::read()) { diff --git a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.H b/src/combustionModels/CombustionModel/CombustionModel/CombustionModel.H similarity index 64% rename from src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.H rename to src/combustionModels/CombustionModel/CombustionModel/CombustionModel.H index ae4a75c41b..5087641185 100644 --- a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.H +++ b/src/combustionModels/CombustionModel/CombustionModel/CombustionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,107 +22,97 @@ License along with OpenFOAM. If not, see . Class - Foam::psiCombustionModel + Foam::CombustionModel Description - Combustion models for compressibility-based thermodynamics + Combustion models for templated thermodynamics SourceFiles - psiCombustionModelI.H - psiCombustionModel.C - psiCombustionModelNew.C + CombustionModelI.H + CombustionModel.C + CombustionModelNew.C \*---------------------------------------------------------------------------*/ -#ifndef psiCombustionModel_H -#define psiCombustionModel_H +#ifndef CombustionModel_H +#define CombustionModel_H #include "combustionModel.H" #include "autoPtr.H" #include "runTimeSelectionTables.H" -#include "psiReactionThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -namespace combustionModels -{ /*---------------------------------------------------------------------------*\ - class psiCombustionModel Declaration + class CombustionModel Declaration \*---------------------------------------------------------------------------*/ -class psiCombustionModel +template +class CombustionModel : public combustionModel { - // Private Member Functions - - //- Construct as copy (not implemented) - psiCombustionModel(const psiCombustionModel&); - - //- Disallow default bitwise assignment - void operator=(const psiCombustionModel&); - - public: - typedef psiReactionThermo ReactionThermo; + //- Thermo type + typedef ReactionThermo reactionThermo; //- Runtime type information - TypeName("psiCombustionModel"); + TypeName("CombustionModel"); //- Declare run-time constructor selection tables declareRunTimeSelectionTable ( autoPtr, - psiCombustionModel, + CombustionModel, dictionary, ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ), - (modelType, mesh, combustionProperties, phaseName) + (modelType, thermo, turb, combustionProperties) ); // Constructors //- Construct from components - psiCombustionModel + CombustionModel ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); //- Selector - static autoPtr New + static autoPtr New ( - const fvMesh& mesh, - const word& combustionProperties=combustionPropertiesName, - const word& phaseName=word::null + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties=combustionPropertiesName ); //- Destructor - virtual ~psiCombustionModel(); + virtual ~CombustionModel(); // Member Functions //- Return access to the thermo package - virtual psiReactionThermo& thermo() = 0; + virtual ReactionThermo& thermo() = 0; //- Return const access to the thermo package - virtual const psiReactionThermo& thermo() const = 0; + virtual const ReactionThermo& thermo() const = 0; // IO @@ -134,11 +124,16 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace combustionModels } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository + #include "CombustionModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H b/src/combustionModels/CombustionModel/CombustionModel/CombustionModels.C similarity index 77% rename from src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H rename to src/combustionModels/CombustionModel/CombustionModel/CombustionModels.C index 9553c80d32..90536bd9e5 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H +++ b/src/combustionModels/CombustionModel/CombustionModel/CombustionModels.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,18 +23,21 @@ License \*---------------------------------------------------------------------------*/ -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +#include "makeCombustionTypes.H" -inline Foam::rhoReactionThermo& Foam::rhoChemistryModel::thermo() +#include "CombustionModel.H" + +#include "rhoReactionThermo.H" +#include "psiReactionThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam { - return *thermo_; + +makeCombustion(psiReactionThermo); +makeCombustion(rhoReactionThermo); + } - -inline const Foam::rhoReactionThermo& Foam::rhoChemistryModel::thermo() const -{ - return *thermo_; -} - - // ************************************************************************* // diff --git a/src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.C b/src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.C similarity index 66% rename from src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.C rename to src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.C index 032a063235..5960f9b5a9 100644 --- a/src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.C +++ b/src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,42 +23,51 @@ License \*---------------------------------------------------------------------------*/ -#include "psiChemistryCombustion.H" +#include "ThermoCombustion.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::combustionModels::psiChemistryCombustion::psiChemistryCombustion +template +Foam::ThermoCombustion::ThermoCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb ) : - psiCombustionModel(modelType, mesh, combustionProperties, phaseName), - chemistryPtr_(psiChemistryModel::New(mesh, phaseName)) + CombustionModel + ( + modelType, + thermo, + turb, + combustionModel::combustionPropertiesName + ), + thermo_(thermo) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::combustionModels::psiChemistryCombustion::~psiChemistryCombustion() +template +Foam::ThermoCombustion::~ThermoCombustion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -Foam::psiReactionThermo& -Foam::combustionModels::psiChemistryCombustion::thermo() +template +ReactionThermo& +Foam::ThermoCombustion::thermo() { - return chemistryPtr_->thermo(); + return thermo_; } -const Foam::psiReactionThermo& -Foam::combustionModels::psiChemistryCombustion::thermo() const +template +const ReactionThermo& +Foam::ThermoCombustion::thermo() const { - return chemistryPtr_->thermo(); + return thermo_; } diff --git a/src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.H b/src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.H similarity index 65% rename from src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.H rename to src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.H index 43041d4601..3b2784a596 100644 --- a/src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.H +++ b/src/combustionModels/CombustionModel/ThermoCombustion/ThermoCombustion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,53 +22,42 @@ License along with OpenFOAM. If not, see . Class - Foam::rhoThermoCombustion + Foam::ThermoCombustion Description - Density-based thermo model wrapper for combustion models + Thermo model wrapper for combustion models SourceFiles - rhoThermoCombustion.C + ThermoCombustion.C \*---------------------------------------------------------------------------*/ -#ifndef rhoThermoCombustion_H -#define rhoThermoCombustion_H +#ifndef ThermoCombustion_H +#define ThermoCombustion_H #include "autoPtr.H" -#include "rhoCombustionModel.H" -#include "rhoChemistryModel.H" +#include "CombustionModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -namespace combustionModels -{ /*---------------------------------------------------------------------------*\ - class rhoThermoCombustion Declaration + class ThermoCombustion Declaration \*---------------------------------------------------------------------------*/ -class rhoThermoCombustion +template +class ThermoCombustion : - public rhoCombustionModel + public CombustionModel { - // Private Member Functions - - //- Construct as copy (not implemented) - rhoThermoCombustion(const rhoThermoCombustion&); - - //- Disallow default bitwise assignment - void operator=(const rhoThermoCombustion&); - - protected: // Protected data - //- Pointer to thermo model - autoPtr thermoPtr_; + //- Thermo + ReactionThermo& thermo_; public: @@ -76,35 +65,40 @@ public: // Constructors //- Construct from components - rhoThermoCombustion + ThermoCombustion ( const word& modelType, - const fvMesh& mesh, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb ); //- Destructor - virtual ~rhoThermoCombustion(); + virtual ~ThermoCombustion(); // Member Functions //- Return access to the thermo package - virtual rhoReactionThermo& thermo(); + virtual ReactionThermo& thermo(); //- Return const access to the thermo package - virtual const rhoReactionThermo& thermo() const; + virtual const ReactionThermo& thermo() const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace combustionModels } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository + #include "ThermoCombustion.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/combustionModels/EDC/EDC.C b/src/combustionModels/EDC/EDC.C index 45d33a4523..f1b6546ead 100644 --- a/src/combustionModels/EDC/EDC.C +++ b/src/combustionModels/EDC/EDC.C @@ -27,16 +27,16 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::combustionModels::EDC::EDC +template +Foam::combustionModels::EDC::EDC ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - laminar(modelType, mesh, combustionProperties, phaseName), + laminar(modelType, thermo, turb, combustionProperties), version_ ( EDCversionNames.lookupOrDefault @@ -56,13 +56,13 @@ Foam::combustionModels::EDC::EDC ( IOobject ( - IOobject::groupName(typeName + ":kappa", phaseName), - mesh.time().timeName(), - mesh, + this->thermo().phasePropertyName(typeName + ":kappa"), + this->mesh().time().timeName(), + this->mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), - mesh, + this->mesh(), dimensionedScalar(dimless, Zero) ) {} @@ -70,15 +70,15 @@ Foam::combustionModels::EDC::EDC // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::combustionModels::EDC::~EDC() +template +Foam::combustionModels::EDC::~EDC() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void Foam::combustionModels::EDC::correct() +template +void Foam::combustionModels::EDC::correct() { if (this->active()) { @@ -172,17 +172,17 @@ void Foam::combustionModels::EDC::correct() } -template +template Foam::tmp -Foam::combustionModels::EDC::R(volScalarField& Y) const +Foam::combustionModels::EDC::R(volScalarField& Y) const { - return kappa_*laminar::R(Y); + return kappa_*laminar::R(Y); } -template +template Foam::tmp -Foam::combustionModels::EDC::Qdot() const +Foam::combustionModels::EDC::Qdot() const { tmp tQdot ( @@ -190,7 +190,7 @@ Foam::combustionModels::EDC::Qdot() const ( IOobject ( - IOobject::groupName(typeName + ":Qdot", this->phaseName_), + this->thermo().phasePropertyName(typeName + ":Qdot"), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -211,10 +211,10 @@ Foam::combustionModels::EDC::Qdot() const } -template -bool Foam::combustionModels::EDC::read() +template +bool Foam::combustionModels::EDC::read() { - if (Type::read()) + if (laminar::read()) { version_ = ( diff --git a/src/combustionModels/EDC/EDC.H b/src/combustionModels/EDC/EDC.H index a59fc55bcf..9e9b5dc4d7 100644 --- a/src/combustionModels/EDC/EDC.H +++ b/src/combustionModels/EDC/EDC.H @@ -128,10 +128,10 @@ const scalar EDCexp2[] = {3, 3, 2, 2}; Class EDC Declaration \*---------------------------------------------------------------------------*/ -template +template class EDC : - public laminar + public laminar { // Private data @@ -170,9 +170,9 @@ public: EDC ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& type, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/EDC/EDCs.C b/src/combustionModels/EDC/EDCs.C index bd81ae6834..62ad797cb5 100644 --- a/src/combustionModels/EDC/EDCs.C +++ b/src/combustionModels/EDC/EDCs.C @@ -25,8 +25,8 @@ License #include "makeCombustionTypes.H" -#include "psiChemistryCombustion.H" -#include "rhoChemistryCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "EDC.H" // * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * // @@ -49,8 +49,12 @@ Foam::combustionModels::EDCdefaultVersion(EDCversions::v2005); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeCombustionTypes(EDC, psiChemistryCombustion, psiCombustionModel); -makeCombustionTypes(EDC, rhoChemistryCombustion, rhoCombustionModel); +namespace Foam +{ +makeCombustionTypes(EDC, psiReactionThermo); +makeCombustionTypes(EDC, rhoReactionThermo); + +} // ************************************************************************* // diff --git a/src/combustionModels/FSD/FSD.C b/src/combustionModels/FSD/FSD.C index 965010bae3..e5f853a287 100644 --- a/src/combustionModels/FSD/FSD.C +++ b/src/combustionModels/FSD/FSD.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,21 +36,21 @@ namespace combustionModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -FSD::FSD +template +FSD::FSD ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - singleStepCombustion + singleStepCombustion ( modelType, - mesh, - combustionProperties, - phaseName + thermo, + turb, + combustionProperties ), reactionRateFlameArea_ ( @@ -65,7 +65,7 @@ FSD::FSD ( IOobject ( - IOobject::groupName("ft", phaseName), + this->thermo().phasePropertyName("ft"), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -87,23 +87,23 @@ FSD::FSD // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -FSD::~FSD() +template +FSD::~FSD() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void FSD::calculateSourceNorm() +template +void FSD::calculateSourceNorm() { this->singleMixturePtr_->fresCorrect(); const label fuelI = this->singleMixturePtr_->fuelIndex(); - const volScalarField& YFuel = this->thermoPtr_->composition().Y()[fuelI]; + const volScalarField& YFuel = this->thermo().composition().Y()[fuelI]; - const volScalarField& YO2 = this->thermoPtr_->composition().Y("O2"); + const volScalarField& YO2 = this->thermo().composition().Y("O2"); const dimensionedScalar s = this->singleMixturePtr_->s(); @@ -152,7 +152,7 @@ void FSD::calculateSourceNorm() ( IOobject ( - IOobject::groupName("Pc", this->phaseName_), + this->thermo().phasePropertyName("Pc"), U.time().timeName(), U.db(), IOobject::NO_READ, @@ -171,7 +171,7 @@ void FSD::calculateSourceNorm() ( IOobject ( - IOobject::groupName("omegaFuelBar", this->phaseName_), + this->thermo().phasePropertyName("omegaFuelBar"), U.time().timeName(), U.db(), IOobject::NO_READ, @@ -297,7 +297,7 @@ void FSD::calculateSourceNorm() ( IOobject ( - IOobject::groupName("products", this->phaseName_), + this->thermo().phasePropertyName("products"), U.time().timeName(), U.db(), IOobject::NO_READ, @@ -313,7 +313,7 @@ void FSD::calculateSourceNorm() forAll(productsIndex, j) { label specieI = productsIndex[j]; - const volScalarField& Yp = this->thermoPtr_->composition().Y()[specieI]; + const volScalarField& Yp = this->thermo().composition().Y()[specieI]; products += Yp; } @@ -330,8 +330,8 @@ void FSD::calculateSourceNorm() } -template -void FSD::correct() +template +void FSD::correct() { this->wFuel_ == dimensionedScalar(dimMass/dimTime/dimVolume, Zero); @@ -342,10 +342,10 @@ void FSD::correct() } -template -bool FSD::read() +template +bool FSD::read() { - if (singleStepCombustion::read()) + if (singleStepCombustion::read()) { this->coeffs().lookup("Cv") >> Cv_ ; this->coeffs().lookup("ftVarMin") >> ftVarMin_; diff --git a/src/combustionModels/FSD/FSD.H b/src/combustionModels/FSD/FSD.H index 42854d7b2d..daa840def2 100644 --- a/src/combustionModels/FSD/FSD.H +++ b/src/combustionModels/FSD/FSD.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,10 +80,10 @@ namespace combustionModels Class FSD Declaration \*---------------------------------------------------------------------------*/ -template +template class FSD : - public singleStepCombustion + public singleStepCombustion { // Private data @@ -142,9 +142,9 @@ public: FSD ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/FSD/FSDs.C b/src/combustionModels/FSD/FSDs.C index 1fff6a86e5..5c0d23de8f 100644 --- a/src/combustionModels/FSD/FSDs.C +++ b/src/combustionModels/FSD/FSDs.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,79 +26,73 @@ License #include "makeCombustionTypes.H" #include "thermoPhysicsTypes.H" -#include "psiCombustionModel.H" -#include "psiThermoCombustion.H" -#include "rhoCombustionModel.H" -#include "rhoThermoCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "FSD.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +namespace Foam +{ + // Combustion models based on sensibleEnthalpy makeCombustionTypesThermo ( FSD, - psiThermoCombustion, - gasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( FSD, - psiThermoCombustion, - constGasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasHThermoPhysics ); makeCombustionTypesThermo ( FSD, - rhoThermoCombustion, - gasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( FSD, - rhoThermoCombustion, - constGasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasHThermoPhysics ); // Combustion models based on sensibleInternalEnergy makeCombustionTypesThermo ( FSD, - psiThermoCombustion, - gasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( FSD, - psiThermoCombustion, - constGasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasEThermoPhysics ); makeCombustionTypesThermo ( FSD, - rhoThermoCombustion, - gasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( FSD, - rhoThermoCombustion, - constGasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasEThermoPhysics ); +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/Make/files b/src/combustionModels/Make/files index 39ffebeb54..572cac87cf 100644 --- a/src/combustionModels/Make/files +++ b/src/combustionModels/Make/files @@ -1,14 +1,5 @@ combustionModel/combustionModel.C - -psiCombustionModel/psiCombustionModel/psiCombustionModel.C -psiCombustionModel/psiCombustionModel/psiCombustionModelNew.C -psiCombustionModel/psiThermoCombustion/psiThermoCombustion.C -psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.C - -rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.C -rhoCombustionModel/rhoCombustionModel/rhoCombustionModelNew.C -rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.C -rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C +CombustionModel/CombustionModel/CombustionModels.C diffusion/diffusions.C infinitelyFastChemistry/infinitelyFastChemistrys.C diff --git a/src/combustionModels/PaSR/PaSR.C b/src/combustionModels/PaSR/PaSR.C index 7063e84dd8..7e205e12d0 100644 --- a/src/combustionModels/PaSR/PaSR.C +++ b/src/combustionModels/PaSR/PaSR.C @@ -27,28 +27,28 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::combustionModels::PaSR::PaSR +template +Foam::combustionModels::PaSR::PaSR ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - laminar(modelType, mesh, combustionProperties, phaseName), + laminar(modelType, thermo, turb, combustionProperties), Cmix_(readScalar(this->coeffs().lookup("Cmix"))), kappa_ ( IOobject ( - IOobject::groupName(typeName + ":kappa", phaseName), - mesh.time().timeName(), - mesh, + thermo.phasePropertyName(typeName + ":kappa"), + this->mesh().time().timeName(), + this->mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), - mesh, + this->mesh(), dimensionedScalar(dimless, Zero) ) {} @@ -56,19 +56,19 @@ Foam::combustionModels::PaSR::PaSR // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::combustionModels::PaSR::~PaSR() +template +Foam::combustionModels::PaSR::~PaSR() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void Foam::combustionModels::PaSR::correct() +template +void Foam::combustionModels::PaSR::correct() { if (this->active()) { - laminar::correct(); + laminar::correct(); tmp tepsilon(this->turbulence().epsilon()); const scalarField& epsilon = tepsilon(); @@ -100,33 +100,33 @@ void Foam::combustionModels::PaSR::correct() } -template +template Foam::tmp -Foam::combustionModels::PaSR::R(volScalarField& Y) const +Foam::combustionModels::PaSR::R(volScalarField& Y) const { - return kappa_*laminar::R(Y); + return kappa_*laminar::R(Y); } -template +template Foam::tmp -Foam::combustionModels::PaSR::Qdot() const +Foam::combustionModels::PaSR::Qdot() const { return tmp ( new volScalarField ( - IOobject::groupName(typeName + ":Qdot", this->phaseName_), - kappa_*laminar::Qdot() + this->thermo().phasePropertyName(typeName + ":Qdot"), + kappa_*laminar::Qdot() ) ); } -template -bool Foam::combustionModels::PaSR::read() +template +bool Foam::combustionModels::PaSR::read() { - if (laminar::read()) + if (laminar::read()) { this->coeffs().lookup("Cmix") >> Cmix_; return true; diff --git a/src/combustionModels/PaSR/PaSR.H b/src/combustionModels/PaSR/PaSR.H index e83b3eb52e..d80bc45c13 100644 --- a/src/combustionModels/PaSR/PaSR.H +++ b/src/combustionModels/PaSR/PaSR.H @@ -55,10 +55,10 @@ namespace combustionModels Class PaSR Declaration \*---------------------------------------------------------------------------*/ -template +template class PaSR : - public laminar + public laminar { // Private data @@ -90,9 +90,9 @@ public: PaSR ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/PaSR/PaSRs.C b/src/combustionModels/PaSR/PaSRs.C index 0e52c3f0aa..dd274777c3 100644 --- a/src/combustionModels/PaSR/PaSRs.C +++ b/src/combustionModels/PaSR/PaSRs.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,14 +25,18 @@ License #include "makeCombustionTypes.H" -#include "psiChemistryCombustion.H" -#include "rhoChemistryCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "PaSR.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeCombustionTypes(PaSR, psiChemistryCombustion, psiCombustionModel); -makeCombustionTypes(PaSR, rhoChemistryCombustion, rhoCombustionModel); +namespace Foam +{ +makeCombustionTypes(PaSR, psiReactionThermo); +makeCombustionTypes(PaSR, rhoReactionThermo); + +} // ************************************************************************* // diff --git a/src/combustionModels/combustionModel/combustionModel.C b/src/combustionModels/combustionModel/combustionModel.C index 1ed899200c..8f4771bc37 100644 --- a/src/combustionModels/combustionModel/combustionModel.C +++ b/src/combustionModels/combustionModel/combustionModel.C @@ -38,45 +38,59 @@ const Foam::word Foam::combustionModel::combustionPropertiesName ); +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::IOobject Foam::combustionModel::createIOobject +( + basicThermo& thermo, + const word& combustionProperties +) const +{ + IOobject io + ( + thermo.phasePropertyName(combustionProperties), + thermo.db().time().constant(), + thermo.db(), + IOobject::MUST_READ, + IOobject::NO_WRITE + ); + + if (io.typeHeaderOk(true)) + { + io.readOpt() = IOobject::MUST_READ_IF_MODIFIED; + return io; + } + else + { + io.readOpt() = IOobject::NO_READ; + return io; + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::combustionModel::combustionModel ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + basicThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - IOdictionary - ( - IOobject - ( - IOobject::groupName(combustionProperties, phaseName), - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ), - turbulencePtr_(), - mesh_(mesh), + IOdictionary(createIOobject(thermo, combustionProperties)), + mesh_(thermo.p().mesh()), + turb_(turb), active_(lookupOrDefault("active", true)), coeffs_(optionalSubDict(modelType + "Coeffs")), - modelType_(modelType), - phaseName_(phaseName) + modelType_(modelType) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::combustionModel::~combustionModel() -{ - if (turbulencePtr_) - { - turbulencePtr_ = 0; - } -} +{} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // diff --git a/src/combustionModels/combustionModel/combustionModel.H b/src/combustionModels/combustionModel/combustionModel.H index bfb46167b1..d75c95b70f 100644 --- a/src/combustionModels/combustionModel/combustionModel.H +++ b/src/combustionModels/combustionModel/combustionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -62,17 +62,24 @@ class combustionModel //- Disallow default bitwise assignment void operator=(const combustionModel&); + //- Construct the base IO object + IOobject createIOobject + ( + basicThermo& thermo, + const word& combustionProperties + ) const; + protected: // Protected data - //- Reference to the turbulence model - compressibleTurbulenceModel* turbulencePtr_; - //- Reference to the mesh database const fvMesh& mesh_; + //- Reference to the turbulence model + const compressibleTurbulenceModel& turb_; + //- Active Switch active_; @@ -82,9 +89,6 @@ protected: //- Model type const word modelType_; - //- Phase name - const word phaseName_; - public: @@ -101,9 +105,21 @@ public: combustionModel ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties=combustionPropertiesName, - const word& phaseName=word::null + basicThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties=combustionPropertiesName + ); + + + // Selectors + + //- Generic New for each of the related chemistry model + template + static autoPtr New + ( + typename CombustionModel::reactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); @@ -116,9 +132,6 @@ public: //- Return const access to the mesh database inline const fvMesh& mesh() const; - //- Set turbulence - inline void setTurbulence(compressibleTurbulenceModel& turbModel); - //- Return access to turbulence inline const compressibleTurbulenceModel& turbulence() const; @@ -156,6 +169,10 @@ public: #include "combustionModelI.H" +#ifdef NoRepository + #include "combustionModelTemplates.C" +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/combustionModels/combustionModel/combustionModelI.H b/src/combustionModels/combustionModel/combustionModelI.H index dc907fd097..8ddfc5d396 100644 --- a/src/combustionModels/combustionModel/combustionModelI.H +++ b/src/combustionModels/combustionModel/combustionModelI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,16 +34,7 @@ inline const Foam::fvMesh& Foam::combustionModel::mesh() const inline const Foam::compressibleTurbulenceModel& Foam::combustionModel::turbulence() const { - if (!turbulencePtr_) - { - FatalErrorInFunction - << "turbulencePtr_ is empty. Please use " - << "combustionModel::setTurbulence " - << "(compressibleTurbulenceModel&)" - << abort(FatalError); - } - - return *turbulencePtr_; + return turb_; } @@ -65,15 +56,6 @@ inline const Foam::Switch& Foam::combustionModel::active() const } -inline void Foam::combustionModel::setTurbulence -( - compressibleTurbulenceModel& turbModel -) -{ - turbulencePtr_ = &turbModel; -} - - inline const Foam::dictionary& Foam::combustionModel::coeffs() const { return coeffs_; diff --git a/src/combustionModels/combustionModel/combustionModelTemplates.C b/src/combustionModels/combustionModel/combustionModelTemplates.C new file mode 100644 index 0000000000..a9682776ce --- /dev/null +++ b/src/combustionModels/combustionModel/combustionModelTemplates.C @@ -0,0 +1,180 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\/ 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 . + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +template +Foam::autoPtr Foam::combustionModel::New +( + typename CombustionModel::reactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties +) +{ + IOobject combIO + ( + IOobject + ( + thermo.phasePropertyName(combustionProperties), + thermo.db().time().constant(), + thermo.db(), + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ) + ); + + word combModelName("none"); + if (combIO.typeHeaderOk(false)) + { + IOdictionary(combIO).lookup("combustionModel") >> combModelName; + } + else + { + Info<< "Combustion model not active: " + << thermo.phasePropertyName(combustionProperties) + << " not found" << endl; + } + + Info<< "Selecting combustion model " << combModelName << endl; + + const wordList cmpts2(basicThermo::splitThermoName(combModelName, 2)); + const wordList cmpts3(basicThermo::splitThermoName(combModelName, 3)); + if (cmpts2.size() == 2 || cmpts3.size() == 3) + { + combModelName = cmpts2.size() ? cmpts2[0] : cmpts3[0]; + + WarningInFunction + << "Template parameters are no longer required when selecting a " + << combustionModel::typeName << ". This information is now " + << "obtained directly from the thermodynamics. Actually selecting " + << "combustion model " << combModelName << "." << endl; + } + + typedef typename CombustionModel::dictionaryConstructorTable cstrTableType; + cstrTableType* cstrTable = CombustionModel::dictionaryConstructorTablePtr_; + + const word compCombModelName = + combModelName + '<' + CombustionModel::reactionThermo::typeName + '>'; + + const word thermoCombModelName = + combModelName + '<' + CombustionModel::reactionThermo::typeName + ',' + + thermo.thermoName() + '>'; + + typename cstrTableType::iterator compCstrIter = + cstrTable->find(compCombModelName); + + typename cstrTableType::iterator thermoCstrIter = + cstrTable->find(thermoCombModelName); + + if (compCstrIter == cstrTable->end() && thermoCstrIter == cstrTable->end()) + { + FatalErrorInFunction + << "Unknown " << combustionModel::typeName << " type " + << combModelName << endl << endl; + + const wordList names(cstrTable->toc()); + + wordList thisCmpts; + thisCmpts.append(word::null); + thisCmpts.append(CombustionModel::reactionThermo::typeName); + thisCmpts.append(basicThermo::splitThermoName(thermo.thermoName(), 5)); + + wordList validNames; + forAll(names, i) + { + wordList cmpts(basicThermo::splitThermoName(names[i], 2)); + if (cmpts.size() != 2) + { + cmpts = basicThermo::splitThermoName(names[i], 7); + } + + bool isValid = true; + for (label i = 1; i < cmpts.size() && isValid; ++ i) + { + isValid = isValid && cmpts[i] == thisCmpts[i]; + } + + if (isValid) + { + validNames.append(cmpts[0]); + } + } + + FatalErrorInFunction + << "Valid " << combustionModel::typeName << " types for this " + << "thermodynamic model are:" << endl << validNames << endl; + + List validCmpts2, validCmpts7; + validCmpts2.append(wordList(2, word::null)); + validCmpts2[0][0] = combustionModel::typeName; + validCmpts2[0][1] = "reactionThermo"; + validCmpts7.append(wordList(7, word::null)); + validCmpts7[0][0] = combustionModel::typeName; + validCmpts7[0][1] = "reactionThermo"; + validCmpts7[0][2] = "transport"; + validCmpts7[0][3] = "thermo"; + validCmpts7[0][4] = "equationOfState"; + validCmpts7[0][5] = "specie"; + validCmpts7[0][6] = "energy"; + forAll(names, i) + { + const wordList cmpts2(basicThermo::splitThermoName(names[i], 2)); + const wordList cmpts7(basicThermo::splitThermoName(names[i], 7)); + if (cmpts2.size() == 2) + { + validCmpts2.append(cmpts2); + } + if (cmpts7.size() == 7) + { + validCmpts7.append(cmpts7); + } + } + + FatalErrorInFunction + << "All " << validCmpts2[0][0] << '/' << validCmpts2[0][1] + << " combinations are:" << endl << endl; + printTable(validCmpts2, FatalErrorInFunction); + + FatalErrorInFunction << endl; + + FatalErrorInFunction + << "All " << validCmpts7[0][0] << '/' << validCmpts7[0][1] + << "/thermoPhysics combinations are:" << endl << endl; + printTable(validCmpts7, FatalErrorInFunction); + + FatalErrorInFunction << exit(FatalError); + } + + return autoPtr + ( + thermoCstrIter != cstrTable->end() + ? thermoCstrIter()(combModelName, thermo, turb, combustionProperties) + : compCstrIter()(combModelName, thermo, turb, combustionProperties) + ); +} + + +// ************************************************************************* // diff --git a/src/combustionModels/combustionModel/makeCombustionTypes.H b/src/combustionModels/combustionModel/makeCombustionTypes.H index 4bf871d3b2..0a4ec4ecd9 100644 --- a/src/combustionModels/combustionModel/makeCombustionTypes.H +++ b/src/combustionModels/combustionModel/makeCombustionTypes.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,61 +30,75 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeCombustionTypesThermo(CombModel, CombType, Thermo, Table) \ +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeCombustion(Comp) \ \ - typedef Foam::combustionModels::CombModel \ - \ - CombModel##CombType##Thermo; \ + typedef CombustionModel CombustionModel##Comp; \ \ defineTemplateTypeNameAndDebugWithName \ ( \ - CombModel##CombType##Thermo, \ - #CombModel"<"#CombType","#Thermo">", \ + CombustionModel##Comp, \ + ( \ + word(CombustionModel##Comp::typeName_()) + "<" + Comp::typeName \ + + ">" \ + ).c_str(), \ 0 \ ); \ \ - namespace Foam \ - { \ - namespace combustionModels \ - { \ - typedef CombModel CombModel##CombType##Thermo; \ - addToRunTimeSelectionTable \ - ( \ - Table, \ - CombModel##CombType##Thermo, \ - dictionary \ - ); \ - } \ - } + defineTemplateRunTimeSelectionTable \ + ( \ + CombustionModel##Comp, \ + dictionary \ + ); -#define makeCombustionTypes(CombModel, CombType, Table) \ +#define makeCombustionTypesThermo(CombModel, Comp, Thermo) \ \ - typedef Foam::combustionModels::CombModel \ - \ - CombModel##CombType; \ + typedef combustionModels::CombModel \ + CombModel##Comp##Thermo; \ \ defineTemplateTypeNameAndDebugWithName \ ( \ - CombModel##CombType, \ - #CombModel"<"#CombType">", \ + CombModel##Comp##Thermo, \ + ( \ + word(CombModel##Comp##Thermo::typeName_()) + "<" + Comp::typeName \ + + "," + Thermo::typeName() + ">" \ + ).c_str(), \ 0 \ ); \ \ - namespace Foam \ - { \ - namespace combustionModels \ - { \ - typedef CombModel CombModel##CombType; \ + CombustionModel:: \ + add##dictionary##ConstructorToTable \ + add##CombModel##Comp##Thermo##dictionary##ConstructorTo##\ +CombustionModel##Comp##Table_; + + +#define makeCombustionTypes(CombModel, Comp) \ \ - addToRunTimeSelectionTable \ - ( \ - Table, \ - CombModel##CombType, \ - dictionary \ - ); \ - } \ - } + typedef combustionModels::CombModel CombModel##Comp; \ + \ + defineTemplateTypeNameAndDebugWithName \ + ( \ + CombModel##Comp, \ + ( \ + word(CombModel##Comp::typeName_()) + "<" + Comp::typeName + ">" \ + ).c_str(), \ + 0 \ + ); \ + \ + CombustionModel:: \ + add##dictionary##ConstructorToTable \ + add##CombModel##Comp##dictionary##ConstructorTo##CombustionModel##Comp\ +##Table_; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/diffusion/diffusion.C b/src/combustionModels/diffusion/diffusion.C index 2de2a82e84..ffa80d4578 100644 --- a/src/combustionModels/diffusion/diffusion.C +++ b/src/combustionModels/diffusion/diffusion.C @@ -33,21 +33,21 @@ namespace combustionModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -diffusion::diffusion +template +diffusion::diffusion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - singleStepCombustion + singleStepCombustion ( modelType, - mesh, - combustionProperties, - phaseName + thermo, + turb, + combustionProperties ), C_(readScalar(this->coeffs().lookup("C"))), oxidantName_(this->coeffs().template lookupOrDefault("oxidant", "O2")) @@ -56,15 +56,15 @@ diffusion::diffusion // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -diffusion::~diffusion() +template +diffusion::~diffusion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void diffusion::correct() +template +void diffusion::correct() { this->wFuel_ == dimensionedScalar(dimMass/dimVolume/dimTime, Zero); @@ -75,12 +75,12 @@ void diffusion::correct() const label fuelI = this->singleMixturePtr_->fuelIndex(); const volScalarField& YFuel = - this->thermoPtr_->composition().Y()[fuelI]; + this->thermo().composition().Y()[fuelI]; - if (this->thermoPtr_->composition().contains(oxidantName_)) + if (this->thermo().composition().contains(oxidantName_)) { const volScalarField& YO2 = - this->thermoPtr_->composition().Y(oxidantName_); + this->thermo().composition().Y(oxidantName_); this->wFuel_ == C_*this->turbulence().muEff() @@ -91,10 +91,10 @@ void diffusion::correct() } -template -bool diffusion::read() +template +bool diffusion::read() { - if (singleStepCombustion::read()) + if (singleStepCombustion::read()) { this->coeffs().lookup("C") >> C_ ; this->coeffs().readIfPresent("oxidant", oxidantName_); diff --git a/src/combustionModels/diffusion/diffusion.H b/src/combustionModels/diffusion/diffusion.H index 2a01905b0c..3fc699d3d0 100644 --- a/src/combustionModels/diffusion/diffusion.H +++ b/src/combustionModels/diffusion/diffusion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,10 +53,10 @@ namespace combustionModels Class diffusion Declaration \*---------------------------------------------------------------------------*/ -template +template class diffusion : - public singleStepCombustion + public singleStepCombustion { // Private data @@ -88,9 +88,9 @@ public: diffusion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/diffusion/diffusions.C b/src/combustionModels/diffusion/diffusions.C index 68ec7b73ae..13317e5472 100644 --- a/src/combustionModels/diffusion/diffusions.C +++ b/src/combustionModels/diffusion/diffusions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,43 +26,42 @@ License #include "makeCombustionTypes.H" #include "thermoPhysicsTypes.H" -#include "psiThermoCombustion.H" -#include "rhoThermoCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "diffusion.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +namespace Foam +{ + // Combustion models based on sensibleEnthalpy makeCombustionTypesThermo ( diffusion, - psiThermoCombustion, - gasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( diffusion, - psiThermoCombustion, - constGasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasHThermoPhysics ); makeCombustionTypesThermo ( diffusion, - rhoThermoCombustion, - gasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( diffusion, - rhoThermoCombustion, - constGasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasHThermoPhysics ); @@ -71,34 +70,31 @@ makeCombustionTypesThermo makeCombustionTypesThermo ( diffusion, - psiThermoCombustion, - gasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( diffusion, - psiThermoCombustion, - constGasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasEThermoPhysics ); makeCombustionTypesThermo ( diffusion, - rhoThermoCombustion, - gasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( diffusion, - rhoThermoCombustion, - constGasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasEThermoPhysics ); +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.C b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.C index fb6def62f5..48df67eaf7 100644 --- a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.C +++ b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,21 +32,21 @@ namespace combustionModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -infinitelyFastChemistry::infinitelyFastChemistry +template +infinitelyFastChemistry::infinitelyFastChemistry ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - singleStepCombustion + singleStepCombustion ( modelType, - mesh, - combustionProperties, - phaseName + thermo, + turb, + combustionProperties ), C_(readScalar(this->coeffs().lookup("C"))) {} @@ -54,15 +54,15 @@ infinitelyFastChemistry::infinitelyFastChemistry // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -infinitelyFastChemistry::~infinitelyFastChemistry() +template +infinitelyFastChemistry::~infinitelyFastChemistry() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void infinitelyFastChemistry::correct() +template +void infinitelyFastChemistry::correct() { this->wFuel_ == dimensionedScalar(dimMass/dimVolume/dimTime, Zero); @@ -73,13 +73,13 @@ void infinitelyFastChemistry::correct() const label fuelI = this->singleMixturePtr_->fuelIndex(); const volScalarField& YFuel = - this->thermoPtr_->composition().Y()[fuelI]; + this->thermo().composition().Y()[fuelI]; const dimensionedScalar s = this->singleMixturePtr_->s(); - if (this->thermoPtr_->composition().contains("O2")) + if (this->thermo().composition().contains("O2")) { - const volScalarField& YO2 = this->thermoPtr_->composition().Y("O2"); + const volScalarField& YO2 = this->thermo().composition().Y("O2"); this->wFuel_ == this->rho()/(this->mesh().time().deltaT()*C_) @@ -89,10 +89,10 @@ void infinitelyFastChemistry::correct() } -template -bool infinitelyFastChemistry::read() +template +bool infinitelyFastChemistry::read() { - if (singleStepCombustion::read()) + if (singleStepCombustion::read()) { this->coeffs().lookup("C") >> C_ ; return true; diff --git a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.H b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.H index 8c899b76d5..1d13f0d9b7 100644 --- a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.H +++ b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistry.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,10 +53,10 @@ namespace combustionModels Class infinitelyFastChemistry Declaration \*---------------------------------------------------------------------------*/ -template +template class infinitelyFastChemistry : - public singleStepCombustion + public singleStepCombustion { // Private data @@ -85,9 +85,9 @@ public: infinitelyFastChemistry ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistrys.C b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistrys.C index 95e5a79d4f..9d5d6e8620 100644 --- a/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistrys.C +++ b/src/combustionModels/infinitelyFastChemistry/infinitelyFastChemistrys.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,44 +26,43 @@ License #include "makeCombustionTypes.H" #include "thermoPhysicsTypes.H" -#include "psiThermoCombustion.H" -#include "rhoThermoCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "infinitelyFastChemistry.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +namespace Foam +{ + // Combustion models based on sensibleEnthalpy makeCombustionTypesThermo ( infinitelyFastChemistry, - psiThermoCombustion, - gasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - psiThermoCombustion, - constGasHThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasHThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - rhoThermoCombustion, - gasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasHThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - rhoThermoCombustion, - constGasHThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasHThermoPhysics ); // Combustion models based on sensibleInternalEnergy @@ -71,34 +70,31 @@ makeCombustionTypesThermo makeCombustionTypesThermo ( infinitelyFastChemistry, - psiThermoCombustion, - gasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - psiThermoCombustion, - constGasEThermoPhysics, - psiCombustionModel + psiReactionThermo, + constGasEThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - rhoThermoCombustion, - gasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + gasEThermoPhysics ); makeCombustionTypesThermo ( infinitelyFastChemistry, - rhoThermoCombustion, - constGasEThermoPhysics, - rhoCombustionModel + rhoReactionThermo, + constGasEThermoPhysics ); +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/laminar/laminar.C b/src/combustionModels/laminar/laminar.C index b05013a984..1d59abe7b0 100644 --- a/src/combustionModels/laminar/laminar.C +++ b/src/combustionModels/laminar/laminar.C @@ -29,16 +29,22 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::combustionModels::laminar::laminar +template +Foam::combustionModels::laminar::laminar ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - Type(modelType, mesh, combustionProperties, phaseName), + ChemistryCombustion + ( + modelType, + thermo, + turb, + combustionProperties + ), integrateReactionRate_ ( this->coeffs().lookupOrDefault("integrateReactionRate", true) @@ -57,23 +63,23 @@ Foam::combustionModels::laminar::laminar // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::combustionModels::laminar::~laminar() +template +Foam::combustionModels::laminar::~laminar() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template +template Foam::tmp -Foam::combustionModels::laminar::tc() const +Foam::combustionModels::laminar::tc() const { return this->chemistryPtr_->tc(); } -template -void Foam::combustionModels::laminar::correct() +template +void Foam::combustionModels::laminar::correct() { if (this->active()) { @@ -114,9 +120,9 @@ void Foam::combustionModels::laminar::correct() } -template +template Foam::tmp -Foam::combustionModels::laminar::R(volScalarField& Y) const +Foam::combustionModels::laminar::R(volScalarField& Y) const { tmp tSu(new fvScalarMatrix(Y, dimMass/dimTime)); @@ -134,9 +140,9 @@ Foam::combustionModels::laminar::R(volScalarField& Y) const } -template +template Foam::tmp -Foam::combustionModels::laminar::Qdot() const +Foam::combustionModels::laminar::Qdot() const { tmp tQdot ( @@ -144,7 +150,7 @@ Foam::combustionModels::laminar::Qdot() const ( IOobject ( - IOobject::groupName(typeName + ":Qdot", this->phaseName_), + this->thermo().phasePropertyName(typeName + ":Qdot"), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -165,10 +171,10 @@ Foam::combustionModels::laminar::Qdot() const } -template -bool Foam::combustionModels::laminar::read() +template +bool Foam::combustionModels::laminar::read() { - if (Type::read()) + if (ChemistryCombustion::read()) { integrateReactionRate_ = this->coeffs().lookupOrDefault("integrateReactionRate", true); diff --git a/src/combustionModels/laminar/laminar.H b/src/combustionModels/laminar/laminar.H index 073cd101e5..54b9e20acb 100644 --- a/src/combustionModels/laminar/laminar.H +++ b/src/combustionModels/laminar/laminar.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,6 +38,8 @@ SourceFiles #ifndef combustionModels_laminar_H #define combustionModels_laminar_H +#include "ChemistryCombustion.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -49,10 +51,10 @@ namespace combustionModels Class laminar Declaration \*---------------------------------------------------------------------------*/ -template +template class laminar : - public Type + public ChemistryCombustion { // Private data @@ -90,9 +92,9 @@ public: laminar ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/laminar/laminars.C b/src/combustionModels/laminar/laminars.C index 73d400c095..474bf2a8b9 100644 --- a/src/combustionModels/laminar/laminars.C +++ b/src/combustionModels/laminar/laminars.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,14 +25,18 @@ License #include "makeCombustionTypes.H" -#include "psiChemistryCombustion.H" -#include "rhoChemistryCombustion.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "laminar.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeCombustionTypes(laminar, psiChemistryCombustion, psiCombustionModel); -makeCombustionTypes(laminar, rhoChemistryCombustion, rhoCombustionModel); +namespace Foam +{ +makeCombustionTypes(laminar, psiReactionThermo); +makeCombustionTypes(laminar, rhoReactionThermo); + +} // ************************************************************************* // diff --git a/src/combustionModels/noCombustion/noCombustion.C b/src/combustionModels/noCombustion/noCombustion.C index d2f53c3f3f..9284c7d3b8 100644 --- a/src/combustionModels/noCombustion/noCombustion.C +++ b/src/combustionModels/noCombustion/noCombustion.C @@ -28,36 +28,36 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::combustionModels::noCombustion::noCombustion +template +Foam::combustionModels::noCombustion::noCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - CombThermoType(modelType, mesh, phaseName) + ThermoCombustion(modelType, thermo, turb) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::combustionModels::noCombustion::~noCombustion() +template +Foam::combustionModels::noCombustion::~noCombustion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -void Foam::combustionModels::noCombustion::correct() +template +void Foam::combustionModels::noCombustion::correct() {} -template +template Foam::tmp -Foam::combustionModels::noCombustion::R +Foam::combustionModels::noCombustion::R ( volScalarField& Y ) const @@ -71,15 +71,15 @@ Foam::combustionModels::noCombustion::R } -template +template Foam::tmp -Foam::combustionModels::noCombustion::Qdot() const +Foam::combustionModels::noCombustion::Qdot() const { return tmp::New ( IOobject ( - IOobject::groupName(typeName + ":Qdot", this->phaseName_), + this->thermo().phasePropertyName(typeName + ":Qdot"), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -92,10 +92,10 @@ Foam::combustionModels::noCombustion::Qdot() const } -template -bool Foam::combustionModels::noCombustion::read() +template +bool Foam::combustionModels::noCombustion::read() { - if (CombThermoType::read()) + if (ThermoCombustion::read()) { return true; } diff --git a/src/combustionModels/noCombustion/noCombustion.H b/src/combustionModels/noCombustion/noCombustion.H index 0438c62121..06a75c37a9 100644 --- a/src/combustionModels/noCombustion/noCombustion.H +++ b/src/combustionModels/noCombustion/noCombustion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,6 +38,8 @@ SourceFiles #ifndef noCombustion_H #define noCombustion_H +#include "ThermoCombustion.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -49,10 +51,10 @@ namespace combustionModels Class noCombustion Declaration \*---------------------------------------------------------------------------*/ -template +template class noCombustion : - public CombThermoType + public ThermoCombustion { //- Disallow copy construct @@ -65,7 +67,7 @@ class noCombustion public: //- Runtime type information - TypeName("noCombustion"); + TypeName("none"); // Constructors @@ -74,9 +76,9 @@ public: noCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/noCombustion/noCombustions.C b/src/combustionModels/noCombustion/noCombustions.C index 516e5af823..8de7b6cd92 100644 --- a/src/combustionModels/noCombustion/noCombustions.C +++ b/src/combustionModels/noCombustion/noCombustions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,28 +25,18 @@ License #include "makeCombustionTypes.H" -#include "psiCombustionModel.H" -#include "rhoCombustionModel.H" -#include "psiThermoCombustion.H" -#include "rhoThermoCombustion.H" - +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "noCombustion.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeCombustionTypes -( - noCombustion, - psiThermoCombustion, - psiCombustionModel -); +namespace Foam +{ -makeCombustionTypes -( - noCombustion, - rhoThermoCombustion, - rhoCombustionModel -); +makeCombustionTypes(noCombustion, psiReactionThermo); +makeCombustionTypes(noCombustion, rhoReactionThermo); +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.H b/src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.H deleted file mode 100644 index 6da4496659..0000000000 --- a/src/combustionModels/psiCombustionModel/psiChemistryCombustion/psiChemistryCombustion.H +++ /dev/null @@ -1,111 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ 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 . - -Class - Foam::psiChemistryCombustion - -Description - Compressibility-based chemistry model wrapper for combustion models - -SourceFiles - psiChemistryCombustion.C - -\*---------------------------------------------------------------------------*/ - -#ifndef psiChemistryCombustion_H -#define psiChemistryCombustion_H - -#include "autoPtr.H" -#include "psiCombustionModel.H" -#include "psiChemistryModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace combustionModels -{ - -/*---------------------------------------------------------------------------*\ - class psiChemistryCombustion Declaration -\*---------------------------------------------------------------------------*/ - -class psiChemistryCombustion -: - public psiCombustionModel -{ - // Private Member Functions - - //- Construct as copy (not implemented) - psiChemistryCombustion(const psiChemistryCombustion&); - - //- Disallow default bitwise assignment - void operator=(const psiChemistryCombustion&); - - -protected: - - // Protected data - - //- Pointer to chemistry model - autoPtr chemistryPtr_; - - -public: - - // Constructors - - //- Construct from components and thermo - psiChemistryCombustion - ( - const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName - ); - - - //- Destructor - virtual ~psiChemistryCombustion(); - - - // Member Functions - - //- Return access to the thermo package - virtual psiReactionThermo& thermo(); - - //- Return const access to the thermo package - virtual const psiReactionThermo& thermo() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace combustionModels -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.C b/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.C deleted file mode 100644 index 36d78166b7..0000000000 --- a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModel.C +++ /dev/null @@ -1,74 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ 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 "psiCombustionModel.H" - -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ - -namespace Foam -{ -namespace combustionModels -{ - defineTypeNameAndDebug(psiCombustionModel, 0); - defineRunTimeSelectionTable(psiCombustionModel, dictionary); -} -} - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::combustionModels::psiCombustionModel::psiCombustionModel -( - const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName -) -: - combustionModel(modelType, mesh, combustionProperties, phaseName) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::combustionModels::psiCombustionModel::~psiCombustionModel() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -bool Foam::combustionModels::psiCombustionModel::read() -{ - if (combustionModel::read()) - { - return true; - } - else - { - return false; - } -} - - -// ************************************************************************* // diff --git a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModelNew.C b/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModelNew.C deleted file mode 100644 index 50e69d177d..0000000000 --- a/src/combustionModels/psiCombustionModel/psiCombustionModel/psiCombustionModelNew.C +++ /dev/null @@ -1,77 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ 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 "psiCombustionModel.H" - -// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // - -Foam::autoPtr -Foam::combustionModels::psiCombustionModel::New -( - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName -) -{ - const word modelType - ( - IOdictionary - ( - IOobject - ( - IOobject::groupName(combustionProperties, phaseName), - mesh.time().constant(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ) - ).lookup("combustionModel") - ); - - Info<< "Selecting combustion model " << modelType << endl; - - auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType); - - if (!cstrIter.found()) - { - FatalErrorInFunction - << "Unknown psiCombustionModel type " - << modelType << nl << nl - << "Valid combustionModel types :" << nl - << dictionaryConstructorTablePtr_->sortedToc() - << exit(FatalError); - } - - const word className = modelType.substr(0, modelType.find('<')); - - return autoPtr - ( - cstrIter()(className, mesh, combustionProperties, phaseName) - ); -} - - -// ************************************************************************* // diff --git a/src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.C b/src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.C deleted file mode 100644 index 72171d8a91..0000000000 --- a/src/combustionModels/psiCombustionModel/psiThermoCombustion/psiThermoCombustion.C +++ /dev/null @@ -1,64 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ 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 "psiThermoCombustion.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::combustionModels::psiThermoCombustion::psiThermoCombustion -( - const word& modelType, - const fvMesh& mesh, - const word& phaseName -) -: - psiCombustionModel(modelType, mesh, combustionPropertiesName, phaseName), - thermoPtr_(psiReactionThermo::New(mesh, phaseName)) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::combustionModels::psiThermoCombustion::~psiThermoCombustion() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -Foam::psiReactionThermo& -Foam::combustionModels::psiThermoCombustion::thermo() -{ - return *thermoPtr_; -} - - -const Foam::psiReactionThermo& -Foam::combustionModels::psiThermoCombustion::thermo() const -{ - return *thermoPtr_; -} - - -// ************************************************************************* // diff --git a/src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.H b/src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.H deleted file mode 100644 index 93d4731026..0000000000 --- a/src/combustionModels/rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.H +++ /dev/null @@ -1,111 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ 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 . - -Class - Foam::rhoChemistryCombustion - -Description - Density-based chemistry model wrapper for combustion models - -SourceFiles - rhoChemistryCombustion.C - -\*---------------------------------------------------------------------------*/ - -#ifndef rhoChemistryCombustion_H -#define rhoChemistryCombustion_H - -#include "autoPtr.H" -#include "rhoCombustionModel.H" -#include "rhoChemistryModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace combustionModels -{ - -/*---------------------------------------------------------------------------*\ - class rhoChemistryCombustion Declaration -\*---------------------------------------------------------------------------*/ - -class rhoChemistryCombustion -: - public rhoCombustionModel -{ - // Private Member Functions - - //- Construct as copy (not implemented) - rhoChemistryCombustion(const rhoChemistryCombustion&); - - //- Disallow default bitwise assignment - void operator=(const rhoChemistryCombustion&); - - -protected: - - // Protected data - - //- Pointer to chemistry model - autoPtr chemistryPtr_; - - -public: - - // Constructors - - //- Construct from components and thermo - rhoChemistryCombustion - ( - const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName - ); - - - //- Destructor - virtual ~rhoChemistryCombustion(); - - - // Member Functions - - //- Return access to the thermo package - virtual rhoReactionThermo& thermo(); - - //- Return const access to the thermo package - virtual const rhoReactionThermo& thermo() const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace combustionModels -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.H b/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.H deleted file mode 100644 index 2e261a5b98..0000000000 --- a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModel.H +++ /dev/null @@ -1,153 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ 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 . - -Class - Foam::rhoCombustionModel - -Description - Combustion models for rho-based thermodynamics - -SourceFiles - rhoCombustionModelI.H - rhoCombustionModel.C - rhoCombustionModelNew.C - -\*---------------------------------------------------------------------------*/ - -#ifndef rhoCombustionModel_H -#define rhoCombustionModel_H - -#include "combustionModel.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" -#include "rhoReactionThermo.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace combustionModels -{ - -/*---------------------------------------------------------------------------*\ - class rhoCombustionModel Declaration -\*---------------------------------------------------------------------------*/ - -class rhoCombustionModel -: - public combustionModel -{ - - // Private Member Functions - - //- Construct as copy (not implemented) - rhoCombustionModel(const rhoCombustionModel&); - - //- Disallow default bitwise assignment - void operator=(const rhoCombustionModel&); - - -public: - - typedef rhoReactionThermo ReactionThermo; - - - //- Runtime type information - TypeName("rhoCombustionModel"); - - - //- Declare run-time constructor selection tables - declareRunTimeSelectionTable - ( - autoPtr, - rhoCombustionModel, - dictionary, - ( - const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName - ), - (modelType, mesh, combustionProperties, phaseName) - ); - - - // Constructors - - - //- Construct from components - rhoCombustionModel - ( - const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName - ); - - - - //- Selector - static autoPtr New - ( - const fvMesh& mesh, - const word& combustionProperties=combustionPropertiesName, - const word& phaseName=word::null - ); - - - //- Destructor - virtual ~rhoCombustionModel(); - - - // Member Functions - - // Access functions - - //- Access combustion dict - inline const dictionary& coeff() const; - - - //- Return access to the thermo package - virtual rhoReactionThermo& thermo() = 0; - - //- Return const access to the thermo package - virtual const rhoReactionThermo& thermo() const = 0; - - - // IO - - //- Update properties from given dictionary - virtual bool read(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace combustionModels -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModelNew.C b/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModelNew.C deleted file mode 100644 index fb03177606..0000000000 --- a/src/combustionModels/rhoCombustionModel/rhoCombustionModel/rhoCombustionModelNew.C +++ /dev/null @@ -1,77 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ 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 "rhoCombustionModel.H" - -// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // - -Foam::autoPtr -Foam::combustionModels::rhoCombustionModel::New -( - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName -) -{ - const word modelType - ( - IOdictionary - ( - IOobject - ( - IOobject::groupName(combustionProperties, phaseName), - mesh.time().constant(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ) - ).lookup("combustionModel") - ); - - Info<< "Selecting combustion model " << modelType << endl; - - auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType); - - if (!cstrIter.found()) - { - FatalErrorInFunction - << "Unknown rhoCombustionModel type " - << modelType << nl << nl - << "Valid combustionModel types :" << nl - << dictionaryConstructorTablePtr_->sortedToc() - << exit(FatalError); - } - - const word className = modelType.substr(0, modelType.find('<')); - - return autoPtr - ( - cstrIter()(className, mesh, combustionProperties, phaseName) - ); -} - - -// ************************************************************************* // diff --git a/src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.C b/src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.C deleted file mode 100644 index e9b0e301c7..0000000000 --- a/src/combustionModels/rhoCombustionModel/rhoThermoCombustion/rhoThermoCombustion.C +++ /dev/null @@ -1,64 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ 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 "rhoThermoCombustion.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::combustionModels::rhoThermoCombustion::rhoThermoCombustion -( - const word& modelType, - const fvMesh& mesh, - const word& phaseName -) -: - rhoCombustionModel(modelType, mesh, combustionPropertiesName, phaseName), - thermoPtr_(rhoReactionThermo::New(mesh, phaseName)) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::combustionModels::rhoThermoCombustion::~rhoThermoCombustion() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -Foam::rhoReactionThermo& -Foam::combustionModels::rhoThermoCombustion::thermo() -{ - return *thermoPtr_; -} - - -const Foam::rhoReactionThermo& -Foam::combustionModels::rhoThermoCombustion::thermo() const -{ - return *thermoPtr_; -} - - -// ************************************************************************* // diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.C b/src/combustionModels/singleStepCombustion/singleStepCombustion.C index 31cf624a26..718aedd69a 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.C +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,22 +33,22 @@ namespace combustionModels // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -singleStepCombustion::singleStepCombustion +template +singleStepCombustion::singleStepCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - CombThermoType(modelType, mesh, phaseName), + ThermoCombustion(modelType, thermo, turb), singleMixturePtr_(nullptr), wFuel_ ( IOobject ( - IOobject::groupName("wFuel", phaseName), + this->thermo().phasePropertyName("wFuel"), this->mesh().time().timeName(), this->mesh(), IOobject::NO_READ, @@ -89,21 +89,21 @@ singleStepCombustion::singleStepCombustion // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -singleStepCombustion::~singleStepCombustion() +template +singleStepCombustion::~singleStepCombustion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -tmp singleStepCombustion::R +template +tmp singleStepCombustion::R ( volScalarField& Y ) const { const label specieI = - this->thermoPtr_->composition().species()[Y.member()]; + this->thermo().composition().species()[Y.member()]; volScalarField wSpecie ( @@ -125,22 +125,22 @@ tmp singleStepCombustion::R } -template +template tmp -singleStepCombustion::Qdot() const +singleStepCombustion::Qdot() const { const label fuelI = singleMixturePtr_->fuelIndex(); volScalarField& YFuel = - const_cast(this->thermoPtr_->composition().Y(fuelI)); + const_cast(this->thermo().composition().Y(fuelI)); return -singleMixturePtr_->qFuel()*(R(YFuel) & YFuel); } -template -bool singleStepCombustion::read() +template +bool singleStepCombustion::read() { - if (CombThermoType::read()) + if (ThermoCombustion::read()) { return true; } diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.H b/src/combustionModels/singleStepCombustion/singleStepCombustion.H index b7c5cb5c56..66f418cfd0 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.H +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,6 +39,7 @@ SourceFiles #define singleStepCombustion_H #include "singleStepReactingMixture.H" +#include "ThermoCombustion.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -51,10 +52,10 @@ namespace combustionModels Class singleStepCombustion Declaration \*---------------------------------------------------------------------------*/ -template +template class singleStepCombustion : - public CombThermoType + public ThermoCombustion { // Private Member Functions @@ -87,9 +88,9 @@ public: singleStepCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); diff --git a/src/combustionModels/zoneCombustion/zoneCombustion.C b/src/combustionModels/zoneCombustion/zoneCombustion.C index 3284c2aca5..262c2589b2 100644 --- a/src/combustionModels/zoneCombustion/zoneCombustion.C +++ b/src/combustionModels/zoneCombustion/zoneCombustion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,9 +27,9 @@ License // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // -template +template Foam::tmp -Foam::combustionModels::zoneCombustion::filter +Foam::combustionModels::zoneCombustion::filter ( const tmp& tR ) const @@ -72,9 +72,9 @@ Foam::combustionModels::zoneCombustion::filter } -template +template Foam::tmp -Foam::combustionModels::zoneCombustion::filter +Foam::combustionModels::zoneCombustion::filter ( const tmp& tS ) const @@ -100,23 +100,29 @@ Foam::combustionModels::zoneCombustion::filter // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::combustionModels::zoneCombustion::zoneCombustion +template +Foam::combustionModels::zoneCombustion::zoneCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ) : - Type(modelType, mesh, combustionProperties, phaseName), + CombustionModel + ( + modelType, + thermo, + turb, + combustionProperties + ), combustionModelPtr_ ( - Type::New + CombustionModel::New ( - mesh, - "zoneCombustionProperties", - phaseName + thermo, + turb, + "zoneCombustionProperties" ) ), zoneNames_(this->coeffs().lookup("zones")) @@ -125,56 +131,58 @@ Foam::combustionModels::zoneCombustion::zoneCombustion // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::combustionModels::zoneCombustion::~zoneCombustion() +template +Foam::combustionModels::zoneCombustion::~zoneCombustion() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -template -typename Type::ReactionThermo& -Foam::combustionModels::zoneCombustion::thermo() +template +ReactionThermo& Foam::combustionModels::zoneCombustion::thermo() { return combustionModelPtr_->thermo(); } -template -const typename Type::ReactionThermo& -Foam::combustionModels::zoneCombustion::thermo() const +template +const ReactionThermo& +Foam::combustionModels::zoneCombustion::thermo() const { return combustionModelPtr_->thermo(); } -template -void Foam::combustionModels::zoneCombustion::correct() +template +void Foam::combustionModels::zoneCombustion::correct() { combustionModelPtr_->correct(); } -template +template Foam::tmp -Foam::combustionModels::zoneCombustion::R(volScalarField& Y) const +Foam::combustionModels::zoneCombustion::R +( + volScalarField& Y +) const { return filter(combustionModelPtr_->R(Y)); } -template +template Foam::tmp -Foam::combustionModels::zoneCombustion::Qdot() const +Foam::combustionModels::zoneCombustion::Qdot() const { return filter(combustionModelPtr_->Qdot()); } -template -bool Foam::combustionModels::zoneCombustion::read() +template +bool Foam::combustionModels::zoneCombustion::read() { - if (Type::read()) + if (CombustionModel::read()) { combustionModelPtr_->read(); return true; diff --git a/src/combustionModels/zoneCombustion/zoneCombustion.H b/src/combustionModels/zoneCombustion/zoneCombustion.H index 351b40cab0..9f230c47ff 100644 --- a/src/combustionModels/zoneCombustion/zoneCombustion.H +++ b/src/combustionModels/zoneCombustion/zoneCombustion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,6 +38,8 @@ SourceFiles #ifndef zoneCombustion_H #define zoneCombustion_H +#include "CombustionModel.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -49,15 +51,15 @@ namespace combustionModels Class zoneCombustion Declaration \*---------------------------------------------------------------------------*/ -template +template class zoneCombustion : - public Type + public CombustionModel { // Private data //- The combustion model to be zone-filtered - autoPtr combustionModelPtr_; + autoPtr> combustionModelPtr_; //- List of zone names in which the reactions are active wordList zoneNames_; @@ -90,9 +92,9 @@ public: zoneCombustion ( const word& modelType, - const fvMesh& mesh, - const word& combustionProperties, - const word& phaseName + ReactionThermo& thermo, + const compressibleTurbulenceModel& turb, + const word& combustionProperties ); @@ -103,10 +105,10 @@ public: // Member Functions //- Return access to the thermo package - virtual typename Type::ReactionThermo& thermo(); + virtual ReactionThermo& thermo(); //- Return const access to the thermo package - virtual const typename Type::ReactionThermo& thermo() const; + virtual const ReactionThermo& thermo() const; //- Correct combustion rate virtual void correct(); diff --git a/src/combustionModels/zoneCombustion/zoneCombustions.C b/src/combustionModels/zoneCombustion/zoneCombustions.C index 9c0c9279f7..071be3052c 100644 --- a/src/combustionModels/zoneCombustion/zoneCombustions.C +++ b/src/combustionModels/zoneCombustion/zoneCombustions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,13 +25,18 @@ License #include "makeCombustionTypes.H" -#include "psiCombustionModel.H" -#include "rhoCombustionModel.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" #include "zoneCombustion.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makeCombustionTypes(zoneCombustion, psiCombustionModel, psiCombustionModel); -makeCombustionTypes(zoneCombustion, rhoCombustionModel, rhoCombustionModel); +namespace Foam +{ + +makeCombustionTypes(zoneCombustion, psiReactionThermo); +makeCombustionTypes(zoneCombustion, rhoReactionThermo); + +} // ************************************************************************* // diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C index 86d3aea4ac..706c6a33de 100644 --- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C +++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,9 +47,14 @@ addToRunTimeSelectionTable(pyrolysisModel, noPyrolysis, dictionary); void noPyrolysis::constructThermoChemistry() { + solidThermo_.reset + ( + solidReactionThermo::New(regionMesh()).ptr() + ); + solidChemistry_.reset ( - basicSolidChemistryModel::New(regionMesh()).ptr() + basicSolidChemistryModel::New(solidThermo_()).ptr() ); radiation_.reset(radiation::radiationModel::New @@ -97,6 +102,7 @@ noPyrolysis::noPyrolysis ) : pyrolysisModel(mesh, regionType), + solidThermo_(nullptr), solidChemistry_(nullptr), radiation_(nullptr) { @@ -116,6 +122,7 @@ noPyrolysis::noPyrolysis ) : pyrolysisModel(mesh, regionType), + solidThermo_(nullptr), solidChemistry_(nullptr), radiation_(nullptr) { diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H index 67cec6fdc0..0e7501ae83 100644 --- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H +++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,7 +50,7 @@ namespace pyrolysisModels { /*---------------------------------------------------------------------------*\ - Class noPyrolysis Declaration + Class noPyrolysis Declaration \*---------------------------------------------------------------------------*/ class noPyrolysis @@ -81,10 +81,13 @@ protected: //- Reset solidChemistryModel and solidThermo pointers void constructThermoChemistry(); - //- Pointer to the solid chemistry model + //- Reference to solid thermo + autoPtr solidThermo_; + + //- Reference to the solid chemistry model autoPtr solidChemistry_; - //- Pointer to radiation model + //- Pointer to radiation model autoPtr radiation_; @@ -148,7 +151,6 @@ public: //- Evolve the pyrolysis equations virtual void evolveRegion(); - }; diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C index b55b35771d..86ccd10f6e 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C @@ -152,7 +152,7 @@ void reactingOneDim::updatePhiGas() forAll(gasTable, gasI) { tmp tHsiGas = - solidChemistry_->gasHs(solidThermo_.p(), solidThermo_.T(), gasI); + solidChemistry_->gasHs(solidThermo_->p(), solidThermo_->T(), gasI); const volScalarField& HsiGas = tHsiGas(); @@ -300,7 +300,7 @@ void reactingOneDim::solveEnergy() InfoInFunction << endl; } - tmp alpha(solidThermo_.alpha()); + tmp alpha(solidThermo_->alpha()); fvScalarMatrix hEqn ( @@ -382,9 +382,9 @@ reactingOneDim::reactingOneDim ) : pyrolysisModel(modelType, mesh, regionType), - solidChemistry_(basicSolidChemistryModel::New(regionMesh())), - solidThermo_(solidChemistry_->solidThermo()), - radiation_(radiation::radiationModel::New(solidThermo_.T())), + solidThermo_(solidReactionThermo::New(regionMesh())), + solidChemistry_(basicSolidChemistryModel::New(solidThermo_())), + radiation_(radiation::radiationModel::New(solidThermo_->T())), rho_ ( IOobject @@ -395,10 +395,10 @@ reactingOneDim::reactingOneDim IOobject::NO_READ, IOobject::AUTO_WRITE ), - solidThermo_.rho() + solidThermo_->rho() ), - Ys_(solidThermo_.composition().Y()), - h_(solidThermo_.he()), + Ys_(solidThermo_->composition().Y()), + h_(solidThermo_->he()), nNonOrthCorr_(-1), maxDiff_(10), minimumDelta_(1e-4), @@ -482,9 +482,9 @@ reactingOneDim::reactingOneDim ) : pyrolysisModel(modelType, mesh, dict, regionType), - solidChemistry_(basicSolidChemistryModel::New(regionMesh())), - solidThermo_(solidChemistry_->solidThermo()), - radiation_(radiation::radiationModel::New(solidThermo_.T())), + solidThermo_(solidReactionThermo::New(regionMesh())), + solidChemistry_(basicSolidChemistryModel::New(solidThermo_())), + radiation_(radiation::radiationModel::New(solidThermo_->T())), rho_ ( IOobject @@ -495,10 +495,10 @@ reactingOneDim::reactingOneDim IOobject::NO_READ, IOobject::AUTO_WRITE ), - solidThermo_.rho() + solidThermo_->rho() ), - Ys_(solidThermo_.composition().Y()), - h_(solidThermo_.he()), + Ys_(solidThermo_->composition().Y()), + h_(solidThermo_->he()), nNonOrthCorr_(-1), maxDiff_(10), minimumDelta_(1e-4), @@ -641,13 +641,13 @@ const volScalarField& reactingOneDim::rho() const const volScalarField& reactingOneDim::T() const { - return solidThermo_.T(); + return solidThermo_->T(); } const tmp reactingOneDim::Cp() const { - return solidThermo_.Cp(); + return solidThermo_->Cp(); } @@ -659,7 +659,7 @@ tmp reactingOneDim::kappaRad() const tmp reactingOneDim::kappa() const { - return solidThermo_.kappa(); + return solidThermo_->kappa(); } @@ -703,12 +703,12 @@ void reactingOneDim::evolveRegion() calculateMassTransfer(); - solidThermo_.correct(); + solidThermo_->correct(); Info<< "pyrolysis min/max(T) = " - << gMin(solidThermo_.T().primitiveField()) + << gMin(solidThermo_->T().primitiveField()) << ", " - << gMax(solidThermo_.T().primitiveField()) + << gMax(solidThermo_->T().primitiveField()) << endl; } diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H index 09feafa320..e976dd7641 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H @@ -77,12 +77,12 @@ protected: // Protected data + //- Reference to solid thermo + autoPtr solidThermo_; + //- Reference to the solid chemistry model autoPtr solidChemistry_; - //- Reference to solid thermo - solidReactionThermo& solidThermo_; - //- Pointer to radiation model autoPtr radiation_; diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 9025bcf2c4..4eff40d891 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -255,6 +255,9 @@ public: //- Update properties virtual void correct() = 0; + //- Return the name of the thermo physics + virtual word thermoName() const = 0; + //- Return true if the equation of state is incompressible // i.e. rho != f(p) virtual bool incompressible() const = 0; diff --git a/src/thermophysicalModels/basic/heThermo/heThermo.H b/src/thermophysicalModels/basic/heThermo/heThermo.H index acd60a4397..f6235a57cd 100644 --- a/src/thermophysicalModels/basic/heThermo/heThermo.H +++ b/src/thermophysicalModels/basic/heThermo/heThermo.H @@ -125,6 +125,12 @@ public: return *this; } + //- Return the name of the thermo physics + virtual word thermoName() const + { + return MixtureType::thermoType::typeName(); + } + //- Return true if the equation of state is incompressible // i.e. rho != f(p) virtual bool incompressible() const diff --git a/src/thermophysicalModels/chemistryModel/Make/files b/src/thermophysicalModels/chemistryModel/Make/files index 19e704dcfc..630137c0e6 100644 --- a/src/thermophysicalModels/chemistryModel/Make/files +++ b/src/thermophysicalModels/chemistryModel/Make/files @@ -1,10 +1,5 @@ chemistryModel/basicChemistryModel/basicChemistryModel.C - -chemistryModel/psiChemistryModel/psiChemistryModel.C -chemistryModel/psiChemistryModel/psiChemistryModels.C - -chemistryModel/rhoChemistryModel/rhoChemistryModel.C -chemistryModel/rhoChemistryModel/rhoChemistryModels.C +chemistryModel/BasicChemistryModel/BasicChemistryModels.C chemistryModel/TDACChemistryModel/reduction/makeChemistryReductionMethods.C chemistryModel/TDACChemistryModel/tabulation/makeChemistryTabulationMethods.C diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.C similarity index 65% rename from src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C rename to src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.C index 75ed215f9c..ae0cf38784 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,46 +23,38 @@ License \*---------------------------------------------------------------------------*/ -#include "psiChemistryModel.H" -#include "fvMesh.H" - -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ - -namespace Foam -{ - defineTypeNameAndDebug(psiChemistryModel, 0); - defineRunTimeSelectionTable(psiChemistryModel, fvMesh); -} - +#include "BasicChemistryModel.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::psiChemistryModel::psiChemistryModel +template +Foam::BasicChemistryModel::BasicChemistryModel ( - const fvMesh& mesh, - const word& phaseName + ReactionThermo& thermo ) : - basicChemistryModel(mesh, phaseName), - thermo_(psiReactionThermo::New(mesh, phaseName)) + basicChemistryModel(thermo), + thermo_(thermo) {} // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // -Foam::autoPtr Foam::psiChemistryModel::New -( - const fvMesh& mesh, - const word& phaseName -) +template +Foam::autoPtr> +Foam::BasicChemistryModel::New(ReactionThermo& thermo) { - return basicChemistryModel::New(mesh, phaseName); + return basicChemistryModel::New> + ( + thermo + ); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::psiChemistryModel::~psiChemistryModel() +template +Foam::BasicChemistryModel::~BasicChemistryModel() {} diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H similarity index 65% rename from src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H index 3d160fa024..fdda362051 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,25 +22,23 @@ License along with OpenFOAM. If not, see . Class - Foam::rhoChemistryModel + Foam::BasicChemistryModel Description - Chemistry model for density-based thermodynamics + Basic chemistry model templated on thermodynamics SourceFiles - rhoChemistryModelI.H - rhoChemistryModel.C - newChemistryModel.C + BasicChemistryModelI.H + BasicChemistryModel.C \*---------------------------------------------------------------------------*/ -#ifndef rhoChemistryModel_H -#define rhoChemistryModel_H +#ifndef BasicChemistryModel_H +#define BasicChemistryModel_H #include "basicChemistryModel.H" #include "autoPtr.H" #include "runTimeSelectionTables.H" -#include "rhoReactionThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -51,72 +49,67 @@ namespace Foam class fvMesh; /*---------------------------------------------------------------------------*\ - class rhoChemistryModel Declaration + class BasicChemistryModel Declaration \*---------------------------------------------------------------------------*/ -class rhoChemistryModel +template +class BasicChemistryModel : public basicChemistryModel { - // Private Member Functions - - //- Construct as copy (not implemented) - rhoChemistryModel(const rhoChemistryModel&); - - //- Disallow default bitwise assignment - void operator=(const rhoChemistryModel&); - - protected: // Protected data - //- Thermo package - autoPtr thermo_; + //- Thermo + ReactionThermo& thermo_; public: //- Runtime type information - TypeName("rho"); + TypeName("BasicChemistryModel"); + + + //- Thermo type + typedef ReactionThermo reactionThermo; //- Declare run-time constructor selection tables declareRunTimeSelectionTable ( autoPtr, - rhoChemistryModel, - fvMesh, - (const fvMesh& mesh, const word& phaseName), - (mesh, phaseName) + BasicChemistryModel, + thermo, + (ReactionThermo& thermo), + (thermo) ); // Constructors - //- Construct from mesh and phase name - rhoChemistryModel(const fvMesh& mesh, const word& phaseName); + //- Construct from thermo + BasicChemistryModel(ReactionThermo& thermo); //- Selector - static autoPtr New + static autoPtr> New ( - const fvMesh& mesh, - const word& phaseName=word::null + ReactionThermo& thermo ); //- Destructor - virtual ~rhoChemistryModel(); + virtual ~BasicChemistryModel(); // Member Functions //- Return access to the thermo package - inline rhoReactionThermo& thermo(); + inline ReactionThermo& thermo(); //- Return const access to the thermo package - inline const rhoReactionThermo& thermo() const; + inline const ReactionThermo& thermo() const; }; @@ -126,7 +119,11 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "rhoChemistryModelI.H" +#ifdef NoRepository + #include "BasicChemistryModel.C" +#endif + +#include "BasicChemistryModelI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModelI.H similarity index 77% rename from src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModelI.H index 511d1a906c..4c21dc6024 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModelI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,17 +23,22 @@ License \*---------------------------------------------------------------------------*/ +#include "BasicChemistryModel.H" + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::psiReactionThermo& Foam::psiChemistryModel::thermo() +template +inline ReactionThermo& Foam::BasicChemistryModel::thermo() { - return *thermo_; + return thermo_; } -inline const Foam::psiReactionThermo& Foam::psiChemistryModel::thermo() const +template +inline const ReactionThermo& +Foam::BasicChemistryModel::thermo() const { - return *thermo_; + return thermo_; } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModels.C new file mode 100644 index 0000000000..c71217a5c8 --- /dev/null +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModels.C @@ -0,0 +1,339 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\/ 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 . + +InClass + Foam::psiChemistryModel + +Description + Creates chemistry model instances templated on the type of thermodynamics + +\*---------------------------------------------------------------------------*/ + +#include "makeChemistryModel.H" + +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" + +#include "StandardChemistryModel.H" +#include "TDACChemistryModel.H" +#include "thermoPhysicsTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + // Make base types + makeChemistryModel(psiReactionThermo); + makeChemistryModel(rhoReactionThermo); + + // Chemistry moldels based on sensibleEnthalpy + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + constGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + gasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + constIncompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + incompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + icoPoly8HThermoPhysics + ); + + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + constGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + gasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + constIncompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + incompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + icoPoly8HThermoPhysics + ); + + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + constGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + gasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + constIncompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + incompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + icoPoly8HThermoPhysics + ); + + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + constGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + gasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + constIncompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + incompressibleGasHThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + icoPoly8HThermoPhysics + ); + + + // Chemistry moldels based on sensibleInternalEnergy + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + constGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + gasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + constIncompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + incompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + psiReactionThermo, + icoPoly8EThermoPhysics + ); + + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + constGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + gasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + constIncompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + incompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + StandardChemistryModel, + rhoReactionThermo, + icoPoly8EThermoPhysics + ); + + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + constGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + gasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + constIncompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + incompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + psiReactionThermo, + icoPoly8EThermoPhysics + ); + + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + constGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + gasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + constIncompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + incompressibleGasEThermoPhysics + ); + + makeChemistryModelType + ( + TDACChemistryModel, + rhoReactionThermo, + icoPoly8EThermoPhysics + ); +} + +// ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.C similarity index 88% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C rename to src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.C index e202aa2399..7ccbd93401 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.C @@ -23,21 +23,20 @@ License \*---------------------------------------------------------------------------*/ -#include "chemistryModel.H" +#include "StandardChemistryModel.H" #include "reactingMixture.H" #include "UniformField.H" #include "extrapolatedCalculatedFvPatchFields.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::chemistryModel::chemistryModel +template +Foam::StandardChemistryModel::StandardChemistryModel ( - const fvMesh& mesh, - const word& phaseName + ReactionThermo& thermo ) : - CompType(mesh, phaseName), + BasicChemistryModel(thermo), ODESystem(), Y_(this->thermo().composition().Y()), reactions_ @@ -52,7 +51,14 @@ Foam::chemistryModel::chemistryModel nSpecie_(Y_.size()), nReaction_(reactions_.size()), - Treact_(CompType::template lookupOrDefault("Treact", 0.0)), + Treact_ + ( + BasicChemistryModel::template lookupOrDefault + ( + "Treact", + 0.0 + ) + ), RR_(nSpecie_), c_(nSpecie_), dcdt_(nSpecie_) @@ -68,33 +74,34 @@ Foam::chemistryModel::chemistryModel IOobject ( "RR." + Y_[fieldi].name(), - mesh.time().timeName(), - mesh, + this->mesh().time().timeName(), + this->mesh(), IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, + this->mesh(), dimensionedScalar(dimMass/dimVolume/dimTime, Zero) ) ); } - Info<< "chemistryModel: Number of species = " << nSpecie_ + Info<< "StandardChemistryModel: Number of species = " << nSpecie_ << " and reactions = " << nReaction_ << endl; } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::chemistryModel::~chemistryModel() +template +Foam::StandardChemistryModel:: +~StandardChemistryModel() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::chemistryModel::omega +template +void Foam::StandardChemistryModel::omega ( const scalarField& c, const scalar T, @@ -133,8 +140,8 @@ void Foam::chemistryModel::omega } -template -Foam::scalar Foam::chemistryModel::omegaI +template +Foam::scalar Foam::StandardChemistryModel::omegaI ( const label index, const scalarField& c, @@ -154,8 +161,8 @@ Foam::scalar Foam::chemistryModel::omegaI } -template -Foam::scalar Foam::chemistryModel::omega +template +Foam::scalar Foam::StandardChemistryModel::omega ( const Reaction& R, const scalarField& c, @@ -266,8 +273,8 @@ Foam::scalar Foam::chemistryModel::omega } -template -void Foam::chemistryModel::derivatives +template +void Foam::StandardChemistryModel::derivatives ( const scalar time, const scalarField& c, @@ -316,8 +323,8 @@ void Foam::chemistryModel::derivatives } -template -void Foam::chemistryModel::jacobian +template +void Foam::StandardChemistryModel::jacobian ( const scalar t, const scalarField& c, @@ -458,9 +465,9 @@ void Foam::chemistryModel::jacobian } -template +template Foam::tmp -Foam::chemistryModel::tc() const +Foam::StandardChemistryModel::tc() const { tmp ttc ( @@ -532,9 +539,9 @@ Foam::chemistryModel::tc() const } -template +template Foam::tmp -Foam::chemistryModel::Qdot() const +Foam::StandardChemistryModel::Qdot() const { tmp tQdot ( @@ -572,9 +579,9 @@ Foam::chemistryModel::Qdot() const } -template +template Foam::tmp> -Foam::chemistryModel::calculateRR +Foam::StandardChemistryModel::calculateRR ( const label ri, const label si @@ -641,8 +648,8 @@ Foam::chemistryModel::calculateRR } -template -void Foam::chemistryModel::calculate() +template +void Foam::StandardChemistryModel::calculate() { if (!this->chemistry_) { @@ -677,14 +684,14 @@ void Foam::chemistryModel::calculate() } -template +template template -Foam::scalar Foam::chemistryModel::solve +Foam::scalar Foam::StandardChemistryModel::solve ( const DeltaTType& deltaT ) { - CompType::correct(); + BasicChemistryModel::correct(); scalar deltaTMin = GREAT; @@ -748,8 +755,8 @@ Foam::scalar Foam::chemistryModel::solve } -template -Foam::scalar Foam::chemistryModel::solve +template +Foam::scalar Foam::StandardChemistryModel::solve ( const scalar deltaT ) @@ -763,8 +770,8 @@ Foam::scalar Foam::chemistryModel::solve } -template -Foam::scalar Foam::chemistryModel::solve +template +Foam::scalar Foam::StandardChemistryModel::solve ( const scalarField& deltaT ) diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.H similarity index 91% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.H index a19d7fdcdf..307bdab197 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModel.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see . Class - Foam::chemistryModel + Foam::StandardChemistryModel Description Extends base chemistry model by adding a thermo package, and ODE functions. @@ -30,14 +30,15 @@ Description terms. SourceFiles - chemistryModelI.H - chemistryModel.C + StandardChemistryModelI.H + StandardChemistryModel.C \*---------------------------------------------------------------------------*/ -#ifndef chemistryModel_H -#define chemistryModel_H +#ifndef StandardChemistryModel_H +#define StandardChemistryModel_H +#include "BasicChemistryModel.H" #include "Reaction.H" #include "ODESystem.H" #include "volFields.H" @@ -52,13 +53,13 @@ namespace Foam class fvMesh; /*---------------------------------------------------------------------------*\ - Class chemistryModel Declaration + Class StandardChemistryModel Declaration \*---------------------------------------------------------------------------*/ -template -class chemistryModel +template +class StandardChemistryModel : - public CompType, + public BasicChemistryModel, public ODESystem { // Private Member Functions @@ -69,16 +70,17 @@ class chemistryModel scalar solve(const DeltaTType& deltaT); //- Disallow copy constructor - chemistryModel(const chemistryModel&); + StandardChemistryModel(const StandardChemistryModel&); //- Disallow default bitwise assignment - void operator=(const chemistryModel&); + void operator=(const StandardChemistryModel&); protected: typedef ThermoType thermoType; + // Protected data //- Reference to the field of specie mass fractions @@ -119,17 +121,17 @@ protected: public: //- Runtime type information - TypeName("chemistryModel"); + TypeName("standard"); // Constructors - //- Construct from mesh - chemistryModel(const fvMesh& mesh, const word& phaseName); + //- Construct from thermo + StandardChemistryModel(ReactionThermo& thermo); //- Destructor - virtual ~chemistryModel(); + virtual ~StandardChemistryModel(); // Member Functions @@ -272,12 +274,12 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "chemistryModelI.H" +#include "StandardChemistryModelI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository - #include "chemistryModel.C" + #include "StandardChemistryModel.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModelI.H similarity index 63% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModelI.H index f797bf6d73..16249144be 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/StandardChemistryModel/StandardChemistryModelI.H @@ -28,73 +28,74 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline Foam::label Foam::chemistryModel::nEqns() const +template +inline Foam::label +Foam::StandardChemistryModel::nEqns() const { // nEqns = number of species + temperature + pressure return nSpecie_ + 2; } -template +template inline Foam::PtrList>& -Foam::chemistryModel::RR() +Foam::StandardChemistryModel::RR() { return RR_; } -template +template inline const Foam::PtrList>& -Foam::chemistryModel::reactions() const +Foam::StandardChemistryModel::reactions() const { return reactions_; } -template +template inline const Foam::PtrList& -Foam::chemistryModel::specieThermo() const +Foam::StandardChemistryModel::specieThermo() const { return specieThermo_; } -template +template inline Foam::label -Foam::chemistryModel::nSpecie() const +Foam::StandardChemistryModel::nSpecie() const { return nSpecie_; } -template +template inline Foam::label -Foam::chemistryModel::nReaction() const +Foam::StandardChemistryModel::nReaction() const { return nReaction_; } -template +template inline Foam::scalar -Foam::chemistryModel::Treact() const +Foam::StandardChemistryModel::Treact() const { return Treact_; } -template +template inline Foam::scalar& -Foam::chemistryModel::Treact() +Foam::StandardChemistryModel::Treact() { return Treact_; } -template +template inline const Foam::DimensionedField& -Foam::chemistryModel::RR +Foam::StandardChemistryModel::RR ( const label i ) const @@ -102,9 +103,9 @@ Foam::chemistryModel::RR return RR_[i]; } -template +template Foam::DimensionedField& -Foam::chemistryModel::RR +Foam::StandardChemistryModel::RR ( const label i ) diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C index 9ce777ae0c..b275f735e7 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.C @@ -30,18 +30,21 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::TDACChemistryModel::TDACChemistryModel +template +Foam::TDACChemistryModel::TDACChemistryModel ( - const fvMesh& mesh, - const word& phaseName + ReactionThermo& thermo ) : - chemistryModel(mesh, phaseName), + StandardChemistryModel(thermo), variableTimeStep_ ( - mesh.time().controlDict().lookupOrDefault("adjustTimeStep", false) - || fv::localEulerDdt::enabled(mesh) + this->mesh().time().controlDict().lookupOrDefault + ( + "adjustTimeStep", + false + ) + || fv::localEulerDdt::enabled(this->mesh()) ), timeSteps_(0), NsDAC_(this->nSpecie_), @@ -54,13 +57,13 @@ Foam::TDACChemistryModel::TDACChemistryModel ( IOobject ( - IOobject::groupName("TabulationResults", phaseName), + thermo.phasePropertyName("TabulationResults"), this->time().timeName(), this->mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), - mesh, + this->mesh(), dimensionedScalar(dimless, Zero) ) { @@ -78,7 +81,7 @@ Foam::TDACChemistryModel::TDACChemistryModel specieComp_[i] = specComp[this->Y()[i].member()]; } - mechRed_ = chemistryReductionMethod::New + mechRed_ = chemistryReductionMethod::New ( *this, *this @@ -93,8 +96,8 @@ Foam::TDACChemistryModel::TDACChemistryModel IOobject header ( this->Y()[i].name(), - mesh.time().timeName(), - mesh, + this->mesh().time().timeName(), + this->mesh(), IOobject::NO_READ ); @@ -108,7 +111,7 @@ Foam::TDACChemistryModel::TDACChemistryModel } } - tabulation_ = chemistryTabulationMethod::New + tabulation_ = chemistryTabulationMethod::New ( *this, *this @@ -136,15 +139,15 @@ Foam::TDACChemistryModel::TDACChemistryModel // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::TDACChemistryModel::~TDACChemistryModel() +template +Foam::TDACChemistryModel::~TDACChemistryModel() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::TDACChemistryModel::omega +template +void Foam::TDACChemistryModel::omega ( const scalarField& c, // Contains all species even when mechRed is active const scalar T, @@ -197,8 +200,8 @@ void Foam::TDACChemistryModel::omega } -template -Foam::scalar Foam::TDACChemistryModel::omega +template +Foam::scalar Foam::TDACChemistryModel::omega ( const Reaction& R, const scalarField& c, // Contains all species even when mechRed is active @@ -306,8 +309,8 @@ Foam::scalar Foam::TDACChemistryModel::omega } -template -void Foam::TDACChemistryModel::derivatives +template +void Foam::TDACChemistryModel::derivatives ( const scalar time, const scalarField& c, @@ -390,8 +393,8 @@ void Foam::TDACChemistryModel::derivatives } -template -void Foam::TDACChemistryModel::jacobian +template +void Foam::TDACChemistryModel::jacobian ( const scalar t, const scalarField& c, @@ -575,8 +578,8 @@ void Foam::TDACChemistryModel::jacobian } -template -void Foam::TDACChemistryModel::jacobian +template +void Foam::TDACChemistryModel::jacobian ( const scalar t, const scalarField& c, @@ -594,9 +597,9 @@ void Foam::TDACChemistryModel::jacobian } -template +template template -Foam::scalar Foam::TDACChemistryModel::solve +Foam::scalar Foam::TDACChemistryModel::solve ( const DeltaTType& deltaT ) @@ -625,7 +628,7 @@ Foam::scalar Foam::TDACChemistryModel::solve scalar nActiveSpecies = 0; scalar nAvg = 0; - CompType::correct(); + BasicChemistryModel::correct(); scalar deltaTMin = GREAT; @@ -880,8 +883,8 @@ Foam::scalar Foam::TDACChemistryModel::solve } -template -Foam::scalar Foam::TDACChemistryModel::solve +template +Foam::scalar Foam::TDACChemistryModel::solve ( const scalar deltaT ) @@ -895,8 +898,8 @@ Foam::scalar Foam::TDACChemistryModel::solve } -template -Foam::scalar Foam::TDACChemistryModel::solve +template +Foam::scalar Foam::TDACChemistryModel::solve ( const scalarField& deltaT ) @@ -905,8 +908,9 @@ Foam::scalar Foam::TDACChemistryModel::solve } -template -void Foam::TDACChemistryModel::setTabulationResultsAdd +template +void Foam::TDACChemistryModel:: +setTabulationResultsAdd ( const label celli ) @@ -915,18 +919,16 @@ void Foam::TDACChemistryModel::setTabulationResultsAdd } -template -void Foam::TDACChemistryModel::setTabulationResultsGrow -( - const label celli -) +template +void Foam::TDACChemistryModel:: +setTabulationResultsGrow(const label celli) { tabulationResults_[celli] = 1.0; } -template -void Foam::TDACChemistryModel:: +template +void Foam::TDACChemistryModel:: setTabulationResultsRetrieve ( const label celli diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H index ac8c6a6228..b9ce0cb475 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/TDACChemistryModel/TDACChemistryModel.H @@ -25,7 +25,7 @@ Class Foam::TDACChemistryModel Description - Extends chemistryModel by adding the TDAC method. + Extends StandardChemistryModel by adding the TDAC method. References: \verbatim @@ -64,7 +64,7 @@ SourceFiles #ifndef TDACChemistryModel_H #define TDACChemistryModel_H -#include "chemistryModel.H" +#include "StandardChemistryModel.H" #include "chemistryReductionMethod.H" #include "chemistryTabulationMethod.H" #include "OFstream.H" @@ -78,10 +78,10 @@ namespace Foam Class TDACChemistryModel Declaration \*---------------------------------------------------------------------------*/ -template +template class TDACChemistryModel : - public chemistryModel + public StandardChemistryModel { // Private member data @@ -97,10 +97,12 @@ class TDACChemistryModel List> specieComp_; Field