19 string chString_quotes_original;
20 bool lgQuotesFound =
true;
21 if (p.
GetQuote(chString_quotes_original))
22 lgQuotesFound =
false;
26 fprintf(
ioQQQ,
"Need to provide species name to SPECIES command.\n"
27 "The previous SPECIES command has been renamed DATABASE -- did you mean to use that?\n");
54 long num = strtol(t.
value.c_str(),NULL,10);
80 long num = strtol(t.
value.c_str(),NULL,10);
87 fprintf(
ioQQQ,
"WARNING: This usage of the SPECIES command was not understood.\n"
88 "The previous SPECIES command has been renamed DATABASE -- did you mean to use that?\n");
96 fprintf(
ioQQQ,
"WARNING: This usage of the SPECIES command was not understood.\n"
97 "The previous SPECIES command has been renamed DATABASE -- did you mean to use that?\n");
109 strcpy( chLabelChemical, sp.
chLabel );
113 long nelem = 0, IonStg;
118 map<string,Properties >::iterator props =
123 props->second.setDone();
125 for(vector<pair<
string,
count_ptr<Option> > >::iterator prop=props->second.p.begin();
126 prop!=props->second.p.end();++prop)
128 if (prop->first ==
"LEVELS")
134 fprintf(
ioQQQ,
"Species '%s', %ld levels requested, only %ld available. Using all.\n",
135 chLabelChemical,prop->second->i,
144 else if (prop->second->opttype ==
Option::OPTION && prop->second->s ==
"ALL")
150 fprintf(
ioQQQ,
"Incorrect type for 'LEVELS' option to species\n"
151 "Expecting 'LEVELS <number>', 'LEVELS=<number>' or 'LEVELS=ALL'\n");
154 else if (prop->first ==
"LTE")
158 sp.
lgLTE = prop->second->l;
162 fprintf(
ioQQQ,
"Incorrect type for 'LTE' option to species\n");
165 else if (prop->first ==
"OFF")
171 fprintf(
ioQQQ,
"Option '%s' not understood for species '%s'\n",
172 prop->first.c_str(),sp.
chLabel);
180 for (map<string,Properties>::iterator props =
185 if (! props->second.isDone())
187 fprintf(
ioQQQ,
"\n\nWarning: SPECIES \"%s\" command has no effect since species not found.\n"
188 "Is species inactive or misspelt? Names of species are case-sensitive. Consult species list in docs/SpeciesLabels.txt.\n\n",
189 props->first.c_str());
196 map<string,Properties>::iterator props =
200 props->second.setDone();
202 for(vector<pair<
string,
count_ptr<Option> > >::iterator prop=props->second.p.begin();
203 prop!=props->second.p.end();++prop)
205 if (prop->first ==
"OFF")
209 fprintf(
ioQQQ,
"Incorrect type for 'OFF' option to species\n");
212 if (prop->second->l || prop->second->opttype !=
Option::BOOL)
t_mole_global mole_global
int GetQuote(string &chLabel)
bool speciesOff(const string &label)
void ParseSpecies(Parser &p)
void setProperties(species &sp)
void parsespect(char *chLabel, long &nelem, long &IonStg)
string makeChemical(long nelem, long ion)
#define DEBUG_ENTRY(funcname)
int fprintf(const Output &stream, const char *format,...)
map< string, Properties > speciesProperties