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