Skip to content

Commit

Permalink
Use full string (minus white space) when matching element names/symbols
Browse files Browse the repository at this point in the history
Also make check for element names case-insensitive.
  • Loading branch information
speth committed Jan 20, 2016
1 parent 58b9665 commit 76f63b8
Showing 1 changed file with 20 additions and 23 deletions.
43 changes: 20 additions & 23 deletions src/thermo/Elements.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,33 +164,31 @@ static struct isotopeWeightData isotopeWeightTable[] = {
double LookupWtElements(const std::string& ename)
{
warn_deprecated("LookupWtElements",
"Use getElementWeight instead. To be removed after Cantera 2.3");
"Use getElementWeight instead. To be removed after Cantera 2.3");
return getElementWeight(ename);
}

double getElementWeight(const std::string& ename)
{
int numElements = numElementsDefined();
int numIsotopes = numIsotopesDefined();
string sym = ename.substr(0,2);
string symbol = stripws(ename);
string name = lowercase(stripws(ename));
for (int i = 0; i < numElements; i++) {
if (sym == atomicWeightTable[i].symbol) {
if (symbol == atomicWeightTable[i].symbol) {
return atomicWeightTable[i].atomicWeight;
}
else if (ename == atomicWeightTable[i].fullName) {
} else if (name == atomicWeightTable[i].fullName) {
return atomicWeightTable[i].atomicWeight;
}
}
for (int i = 0; i < numIsotopes; i++) {
if (sym == isotopeWeightTable[i].symbol) {
if (symbol == isotopeWeightTable[i].symbol) {
return isotopeWeightTable[i].atomicWeight;
}
else if (ename == isotopeWeightTable[i].fullName) {
} else if (name == isotopeWeightTable[i].fullName) {
return isotopeWeightTable[i].atomicWeight;
}
}
throw CanteraError("getElementWeight", "element not found: " + ename);
return -1.0;
}

double getElementWeight(int atomicNumber)
Expand All @@ -206,13 +204,14 @@ string getElementSymbol(const std::string& ename)
{
int numElements = numElementsDefined();
int numIsotopes = numIsotopesDefined();
string name = lowercase(stripws(ename));
for (int i = 0; i < numElements; i++) {
if (ename == atomicWeightTable[i].fullName) {
if (name == atomicWeightTable[i].fullName) {
return atomicWeightTable[i].symbol;
}
}
for (int i = 0; i < numIsotopes; i++) {
if (ename == isotopeWeightTable[i].fullName) {
if (name == isotopeWeightTable[i].fullName) {
return isotopeWeightTable[i].symbol;
}
}
Expand All @@ -233,14 +232,14 @@ string getElementName(const std::string& ename)
{
int numElements = numElementsDefined();
int numIsotopes = numIsotopesDefined();
string sym = ename.substr(0,2);
string symbol = stripws(ename);
for (int i = 0; i < numElements; i++) {
if (sym == atomicWeightTable[i].symbol) {
if (symbol == atomicWeightTable[i].symbol) {
return atomicWeightTable[i].fullName;
}
}
for (int i = 0; i < numIsotopes; i++) {
if (sym == isotopeWeightTable[i].symbol) {
if (symbol == isotopeWeightTable[i].symbol) {
return isotopeWeightTable[i].fullName;
}
}
Expand All @@ -252,7 +251,7 @@ string getElementName(int atomicNumber)
int num = numElementsDefined();
if (atomicNumber > num || atomicNumber < 1) {
throw IndexError("getElementName", "atomicWeightTable", atomicNumber,
num);
num);
}
return atomicWeightTable[atomicNumber - 1].fullName;
}
Expand All @@ -261,25 +260,23 @@ int getAtomicNumber(const std::string& ename)
{
int numElements = numElementsDefined();
int numIsotopes = numIsotopesDefined();
string sym = ename.substr(0,2);
string symbol = stripws(ename);
string name = lowercase(stripws(ename));
for (int i = 0; i < numElements; i++) {
if (sym == atomicWeightTable[i].symbol) {
if (symbol == atomicWeightTable[i].symbol) {
return i+1;
}
else if (ename == atomicWeightTable[i].fullName) {
} else if (name == atomicWeightTable[i].fullName) {
return i+1;
}
}
for (int i = 0; i < numIsotopes; i++) {
if (sym == isotopeWeightTable[i].symbol) {
if (symbol == isotopeWeightTable[i].symbol) {
return isotopeWeightTable[i].atomicNumber;
}
else if (ename == isotopeWeightTable[i].fullName) {
} else if (name == isotopeWeightTable[i].fullName) {
return isotopeWeightTable[i].atomicNumber;
}
}
throw CanteraError("getAtomicNumber", "element not found: " + ename);
return -1.0;
}

int numElementsDefined()
Expand Down

0 comments on commit 76f63b8

Please sign in to comment.