diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H index cee98e2429..b84d655a0d 100644 --- a/applications/solvers/combustion/fireFoam/YEEqn.H +++ b/applications/solvers/combustion/fireFoam/YEEqn.H @@ -12,12 +12,11 @@ tmp> mvConvection radiation->correct(); combustion->correct(); dQ = combustion->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -44,10 +43,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/combustion/fireFoam/createFieldRefs.H b/applications/solvers/combustion/fireFoam/createFieldRefs.H index b11e3bc4c2..6df6f9df2f 100644 --- a/applications/solvers/combustion/fireFoam/createFieldRefs.H +++ b/applications/solvers/combustion/fireFoam/createFieldRefs.H @@ -1,3 +1,4 @@ const volScalarField& psi = thermo.psi(); const volScalarField& T = thermo.T(); filmModelType& surfaceFilm = tsurfaceFilm(); +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H index 5dac3903f2..30e7d30377 100644 --- a/applications/solvers/combustion/fireFoam/createFields.H +++ b/applications/solvers/combustion/fireFoam/createFields.H @@ -19,6 +19,13 @@ basicMultiComponentMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); +if (!composition.species().found(inertSpecie)) +{ + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); +} Info<< "Creating field rho\n" << endl; volScalarField rho diff --git a/applications/solvers/combustion/reactingFoam/YEqn.H b/applications/solvers/combustion/reactingFoam/YEqn.H index 8cb5664d5a..246f7119ab 100644 --- a/applications/solvers/combustion/reactingFoam/YEqn.H +++ b/applications/solvers/combustion/reactingFoam/YEqn.H @@ -12,12 +12,11 @@ tmp> mvConvection { reaction->correct(); dQ = reaction->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -42,10 +41,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/combustion/reactingFoam/createFieldRefs.H b/applications/solvers/combustion/reactingFoam/createFieldRefs.H index 6e1184a1fa..fdc479bc23 100644 --- a/applications/solvers/combustion/reactingFoam/createFieldRefs.H +++ b/applications/solvers/combustion/reactingFoam/createFieldRefs.H @@ -1,2 +1,3 @@ const volScalarField& psi = thermo.psi(); const volScalarField& T = thermo.T(); +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H index da22c1ae56..bebae9978c 100644 --- a/applications/solvers/combustion/reactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/createFields.H @@ -11,7 +11,14 @@ thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); -word inertSpecie(thermo.lookup("inertSpecie")); +const word inertSpecie(thermo.lookup("inertSpecie")); +if (!composition.species().found(inertSpecie)) +{ + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); +} volScalarField rho ( diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H index 6e1184a1fa..fdc479bc23 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H @@ -1,2 +1,3 @@ const volScalarField& psi = thermo.psi(); const volScalarField& T = thermo.T(); +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H index 1d3d21f916..02e1e65b5c 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H @@ -11,7 +11,14 @@ thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); -word inertSpecie(thermo.lookup("inertSpecie")); +const word inertSpecie(thermo.lookup("inertSpecie")); +if (!composition.species().found(inertSpecie)) +{ + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); +} volScalarField rho ( diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H index 6e1184a1fa..fdc479bc23 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H @@ -1,2 +1,3 @@ const volScalarField& psi = thermo.psi(); const volScalarField& T = thermo.T(); +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H index 5d016de018..c5d3bf6a67 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H @@ -11,7 +11,14 @@ thermo.validate(args.executable(), "h", "e"); basicMultiComponentMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); -word inertSpecie(thermo.lookup("inertSpecie")); +const word inertSpecie(thermo.lookup("inertSpecie")); +if (!composition.species().found(inertSpecie)) +{ + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); +} volScalarField rho ( diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index 671e316c54..52e44e2c47 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -13,12 +13,11 @@ tmp> mvConvection { combustion->correct(); dQ = combustion->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -44,10 +43,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C index 489765e663..809571a35f 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C +++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C @@ -55,6 +55,7 @@ int main(int argc, char *argv[]) #include "createTimeControls.H" #include "createRDeltaT.H" #include "createFields.H" + #include "createFieldRefs.H" #include "createFvOptions.H" #include "initContinuityErrs.H" diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFieldRefs.H b/applications/solvers/lagrangian/coalChemistryFoam/createFieldRefs.H new file mode 100644 index 0000000000..4748421aa4 --- /dev/null +++ b/applications/solvers/lagrangian/coalChemistryFoam/createFieldRefs.H @@ -0,0 +1 @@ +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H index ee25bffaae..33313ca070 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H @@ -16,13 +16,12 @@ basicSpecieMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); - -if (!composition.contains(inertSpecie)) +if (!composition.species().found(inertSpecie)) { - FatalErrorInFunction - << "Specified inert specie '" << inertSpecie << "' not found in " - << "species list. Available species:" << composition.species() - << exit(FatalError); + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); } volScalarField& p = thermo.p(); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H index 93dacc3ba6..1fbb98445b 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -13,12 +13,11 @@ tmp> mvConvection { combustion->correct(); dQ = combustion->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -45,10 +44,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFieldRefs.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFieldRefs.H new file mode 100644 index 0000000000..4748421aa4 --- /dev/null +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFieldRefs.H @@ -0,0 +1 @@ +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H index a84f09ea48..313c82d0e2 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H @@ -14,6 +14,13 @@ basicSpecieMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); +if (!composition.species().found(inertSpecie)) +{ + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); +} Info<< "Creating field rho\n" << endl; volScalarField rho diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C index 004d9a80a5..d4913e54c8 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C @@ -52,6 +52,7 @@ int main(int argc, char *argv[]) #include "createControl.H" #include "createTimeControls.H" #include "createFields.H" + #include "createFieldRefs.H" #include "createFvOptions.H" #include "compressibleCourantNo.H" #include "setInitialDeltaT.H" diff --git a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H index 25bdc12cdf..7259a1ca2a 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H @@ -12,12 +12,11 @@ tmp> mvConvection { combustion->correct(); dQ = combustion->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -43,10 +42,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFieldRefs.H b/applications/solvers/lagrangian/reactingParcelFoam/createFieldRefs.H index 5842906a6b..e7f76d8456 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/createFieldRefs.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/createFieldRefs.H @@ -1,2 +1,3 @@ const volScalarField& T = thermo.T(); const volScalarField& psi = thermo.psi(); +const label inertIndex(composition.species()[inertSpecie]); diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H index 32608bd964..c04c242f45 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H @@ -16,13 +16,12 @@ basicSpecieMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); - -if (!composition.contains(inertSpecie)) +if (!composition.species().found(inertSpecie)) { - FatalErrorInFunction - << "Specified inert specie '" << inertSpecie << "' not found in " - << "species list. Available species:" << composition.species() - << exit(FatalError); + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); } volScalarField& p = thermo.p(); diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H index 20d55a8d52..6498fd73f2 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/YEqn.H @@ -12,12 +12,11 @@ tmp> mvConvection { combustion->correct(); dQ = combustion->dQ(); - label inertIndex = -1; volScalarField Yt(0.0*Y[0]); forAll(Y, i) { - if (Y[i].name() != inertSpecie) + if (i != inertIndex) { volScalarField& Yi = Y[i]; @@ -42,10 +41,6 @@ tmp> mvConvection Yi.max(0.0); Yt += Yi; } - else - { - inertIndex = i; - } } Y[inertIndex] = scalar(1) - Yt; diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H index 03413049b4..16f297c995 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H @@ -16,13 +16,12 @@ basicSpecieMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); - -if (!composition.contains(inertSpecie)) +if (!composition.species().found(inertSpecie)) { - FatalErrorInFunction - << "Specified inert specie '" << inertSpecie << "' not found in " - << "species list. Available species:" << composition.species() - << exit(FatalError); + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); } volScalarField& p = thermo.p(); diff --git a/applications/solvers/lagrangian/sprayFoam/createFields.H b/applications/solvers/lagrangian/sprayFoam/createFields.H index 7a6156f3ad..91b7bc2b6d 100644 --- a/applications/solvers/lagrangian/sprayFoam/createFields.H +++ b/applications/solvers/lagrangian/sprayFoam/createFields.H @@ -16,13 +16,12 @@ basicSpecieMixture& composition = thermo.composition(); PtrList& Y = composition.Y(); const word inertSpecie(thermo.lookup("inertSpecie")); - -if (!composition.contains(inertSpecie)) +if (!composition.species().found(inertSpecie)) { - FatalErrorInFunction - << "Specified inert specie '" << inertSpecie << "' not found in " - << "species list. Available species:" << composition.species() - << exit(FatalError); + FatalIOErrorIn(args.executable().c_str(), thermo) + << "Inert specie " << inertSpecie << " not found in available species " + << composition.species() + << exit(FatalIOError); } volScalarField& p = thermo.p(); diff --git a/src/OpenFOAM/primitives/strings/lists/hashedWordList.H b/src/OpenFOAM/primitives/strings/lists/hashedWordList.H index 700f794908..cdeeeb00cc 100644 --- a/src/OpenFOAM/primitives/strings/lists/hashedWordList.H +++ b/src/OpenFOAM/primitives/strings/lists/hashedWordList.H @@ -103,6 +103,9 @@ public: //- Append an element at the end of the list void append(const word&); + //- Does the list contain the specified name + inline bool found(const word&) const; + //- Does the list contain the specified name inline bool contains(const word&) const; diff --git a/src/OpenFOAM/primitives/strings/lists/hashedWordListI.H b/src/OpenFOAM/primitives/strings/lists/hashedWordListI.H index dba7606b63..45a83ccd35 100644 --- a/src/OpenFOAM/primitives/strings/lists/hashedWordListI.H +++ b/src/OpenFOAM/primitives/strings/lists/hashedWordListI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,12 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +inline bool Foam::hashedWordList::found(const word& name) const +{ + return indices_.found(name); +} + + inline bool Foam::hashedWordList::contains(const word& name) const { return indices_.found(name);