diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H index cee98e242..b84d655a0 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 b11e3bc4c..6df6f9df2 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 5dac3903f..30e7d3037 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 8cb5664d5..246f7119a 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 6e1184a1f..fdc479bc2 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 da22c1ae5..bebae9978 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 6e1184a1f..fdc479bc2 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 1d3d21f91..02e1e65b5 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 6e1184a1f..fdc479bc2 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 5d016de01..c5d3bf6a6 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 671e316c5..52e44e2c4 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 489765e66..809571a35 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 000000000..4748421aa --- /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 ee25bffaa..33313ca07 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 93dacc3ba..1fbb98445 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 000000000..4748421aa --- /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 a84f09ea4..313c82d0e 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 004d9a80a..d4913e54c 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 25bdc12cd..7259a1ca2 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 5842906a6..e7f76d845 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 32608bd96..c04c242f4 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 20d55a8d5..6498fd73f 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 03413049b..16f297c99 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 7a6156f3a..91b7bc2b6 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 700f79490..cdeeeb00c 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 dba7606b6..45a83ccd3 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);