From 1db103cd87d5144b55ec25e8e792c920f18758d0 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Sat, 19 Nov 2016 16:30:00 -0500 Subject: [PATCH] Fix Phase.species_index when species name contains a colon --- interfaces/cython/cantera/test/test_convert.py | 1 + src/thermo/Phase.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/interfaces/cython/cantera/test/test_convert.py b/interfaces/cython/cantera/test/test_convert.py index c7b6834ef..dda512c90 100644 --- a/interfaces/cython/cantera/test/test_convert.py +++ b/interfaces/cython/cantera/test/test_convert.py @@ -145,6 +145,7 @@ class chemkinConverterTest(utilities.CanteraTest): self.assertEqual(gas.n_species, 7) self.assertEqual(gas.species_name(0), '(Parens)') self.assertEqual(gas.species_name(1), '@#$%^-2') + self.assertEqual(gas.species_index('co:lons'), 2) self.assertEqual(gas.species_name(3), '[xy2]*{.}') self.assertEqual(gas.species_name(4), 'plus+') self.assertEqual(gas.species_name(5), 'eq=uals') diff --git a/src/thermo/Phase.cpp b/src/thermo/Phase.cpp index 6513bcdcc..0c1e3a9b4 100644 --- a/src/thermo/Phase.cpp +++ b/src/thermo/Phase.cpp @@ -250,7 +250,8 @@ void Phase::getAtoms(size_t k, double* atomArray) const size_t Phase::speciesIndex(const std::string& nameStr) const { - if (nameStr.find(':') != npos) { + size_t loc = getValue(m_speciesIndices, ba::to_lower_copy(nameStr), npos); + if (loc == npos && nameStr.find(':') != npos) { std::string pn; std::string sn = ba::to_lower_copy(parseSpeciesName(nameStr, pn)); if (pn == "" || pn == m_name || pn == m_id) { @@ -259,7 +260,7 @@ size_t Phase::speciesIndex(const std::string& nameStr) const return npos; } } else { - return getValue(m_speciesIndices, ba::to_lower_copy(nameStr), npos); + return loc; } }