13 #define SMALLABUND 1e-24 35 typedef map<int, count_ptr<chem_atom> >::iterator
isotopes_i;
57 if( lgMeanAbundance() )
59 else if( el->
Z==1 && A==2 )
68 return ( str + el->
label );
75 if ( el->
Z < b.
el->
Z )
77 else if ( el->
Z > b.
el->
Z )
134 typedef map<const count_ptr<chem_atom>, int,
150 for (nAtomsMap::const_iterator el = nAtom.begin();
151 el != nAtom.end(); ++el)
159 if (nAtom.size() == 1 && nAtom.begin()->second == 1)
173 for( nAtomsMap::reverse_iterator it=nAtom.rbegin(); it!=nAtom.rend(); ++it )
175 if (0 != it->second )
177 return it->first.get_ptr();
185 nAtomsMap::const_reverse_iterator it1, it2;
187 for( it1 = nAtom.rbegin(), it2 = mol2.
nAtom.rbegin();
188 it1 != nAtom.rend() && it2 != mol2.
nAtom.rend(); ++it1, ++it2 )
190 if( *(it1->first) > *(it2->first) )
192 else if( *(it1->first) < *(it2->first) )
194 else if( it1->second > it2->second)
196 else if( it1->second < it2->second)
200 if( it1 != nAtom.rend() && it2 == mol2.
nAtom.rend() )
202 else if( it1 == nAtom.rend() && it2 != mol2.
nAtom.rend() )
205 ASSERT( it1 == nAtom.rend() && it2 == mol2.
nAtom.rend() );
208 return ( label.compare(mol2.
label) );
215 typedef molecule::nAtomsMap::reverse_iterator
nAtoms_ri;
216 typedef molecule::nAtomsMap::const_reverse_iterator
nAtoms_cri;
271 void make_species(
void);
319 static void sort(MoleculeList::iterator
start,
320 MoleculeList::iterator end);
372 void set_location(
long nelem,
long ion,
double *
dense );
373 void set_isotope_abundances(
void );
374 double sink_rate_tot(
const char chSpecies[])
const;
375 double sink_rate_tot(
const molecule*
const sp)
const;
377 double sink_rate(
const molecule*
const sp,
const char buf[])
const;
378 double source_rate_tot(
const char chSpecies[])
const;
379 double source_rate_tot(
const molecule*
const sp)
const;
382 double dissoc_rate(
const char chSpecies[])
const;
383 double chem_heat(
void)
const;
384 double findrk(
const char buf[])
const;
385 double findrate(
const char buf[])
const;
409 extern void mole_punch(FILE *punit,
const char speciesname[],
const char args[],
bool lgHeader,
bool lgData,
double depth);
433 vector< int >& numAtoms,
436 string embellishments,
437 vector<string>& newLabels );
441 bool &lgExcit,
int &charge,
bool &lgGas_Phase );
map< int, count_ptr< chem_atom > > isotopes
vector< double > reaction_rks
void mole_create_react(void)
void mole_punch(FILE *punit, const char speciesname[], const char args[], bool lgHeader, bool lgData, double depth)
chem_atom * heavyAtom(void)
vector< bool > lgTreatIsotopes
realnum total_molecules(void)
molecule::nAtomsMap::const_reverse_iterator nAtoms_cri
void total_molecule_deut(realnum &total)
bool isMonatomic(void) const
void mole_make_list(void)
map< int, count_ptr< chem_atom > >::iterator isotopes_i
molezone * findspecieslocal(const char buf[])
vector< count_ptr< molecule > > MoleculeList
int compare(const chem_atom &b) const
void mole_cmp_num_in_out_reactions(void)
bool operator<=(const chem_atom &a, const chem_atom &b)
vector< double > old_reaction_rks
void mole_print_species_reactions(molecule *speciesToPrint)
bool operator==(const chem_atom &a, const chem_atom &b)
molecule * findspecies(const char buf[])
molecule::nAtomsMap::reverse_iterator nAtoms_ri
chem_element & operator=(const chem_element &)
bool parse_species_label(const char label[], ChemAtomList &atomsLeftToRight, vector< int > &numAtoms, string &embellishments)
realnum *** xMoleChTrRate
valarray< class molezone > species
void mole_rk_bigchange(void)
void create_isotopologues_one(ChemAtomList &atoms, vector< int > &numAtoms, string atom_old, string atom_new, string embellishments, vector< string > &newLabels)
realnum total_molecules_gasphase(void)
t_mole_global mole_global
bool lgMeanAbundance(void) const
bool operator>=(const chem_atom &a, const chem_atom &b)
void mole_update_sources(void)
bool operator<(const chem_atom &a, const chem_atom &b)
STATIC void start(long, realnum[], realnum[], long, long[], realnum *, int *)
int compare(const molecule &mol2) const
bool lgGrain_mole_deplete
bool lgDifferByExcitation(const molecule &mol1, const molecule &mol2)
void mole_update_species_cache(void)
ChemAtomList unresolved_atom_list
bool operator()(const count_ptr< chem_atom > &a, const count_ptr< chem_atom > &b) const
mole_reaction * mole_findrate_s(const char buf[])
bool operator>(const chem_atom &a, const chem_atom &b)
void mole_make_groups(void)
chem_element * null_element
void total_molecule_elems(realnum total[LIMELM])
map< const count_ptr< chem_atom >, int, element_pointer_value_less > nAtomsMap
chem_element(int Z, const char *label)
vector< count_ptr< chem_atom > > ChemAtomList
bool operator!=(const chem_atom &a, const chem_atom &b)
molecule::nAtomsMap::iterator nAtoms_i