45 #ifndef N_DEV_ReactionNetwork_H
46 #define N_DEV_ReactionNetwork_H
48 #include <N_UTL_Misc.h>
49 #include <N_UTL_fwd.h>
58 #include <N_ERH_ErrorMgr.h>
86 void addReactant(
const std::string &name,
const std::string &reactant,
double stoich);
87 void addProduct(
const std::string &name,
const std::string &reactant,
double stoich);
91 void setCaptureCalc(
const std::string &name,
double sigma,
double v);
92 void setEmissionCalc(
const std::string &name,
double sigma,
double v,
double N,
double E);
99 double gammaAB,
double gammaA,
double gammaB,
double concSi);
114 void setSpecies(std::vector<Specie> &theSpeciesVect);
116 void setConstants(std::vector<Specie> &theConstantsVect);
121 void addSourceTerm(
const std::string &speciesName,
const std::string &expressionStr);
122 void addSourceTerm(
const std::string &speciesName,Util::Expression *expression);
135 std::vector<double> &ddt);
136 void getJac(std::vector<double> &concs, std::vector<double> &
constants,
137 std::vector<std::vector<double> >&jac);
139 std::vector<double> &concs, std::vector<double> &
constants,
140 std::vector<double> &dFdConst);
143 std::vector<int> &captureVect, std::vector<int> &emissionVect);
145 std::vector<int> &captureVect, std::vector<int> &emissionVect,
146 std::vector<double>&dratedc);
149 std::vector<int> &captureVect, std::vector<int> &emissionVect,
150 std::vector<double>&dratedc);
153 std::vector<int> &captureVect,
double &concentration);
155 std::vector<int> &captureVect,
double &concentration,
156 std::vector<double> &lifetimes);
160 std::vector<double> &lifetimes);
162 std::vector<double> &lifetimes);
168 std::vector<double>&dratedc);
170 std::vector<double>&dratedc);
173 std::vector<double>&dratedConst);
175 std::vector<double>&dratedConst);
187 void setName(
const std::string &name);
189 void output(std::ostream & os)
const;
322 std::map<std::string,int>::iterator n_i;
396 std::string msg=
"ReactionNetwork::getReactantNum: invalid species name specified: ";
398 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL, msg);
415 std::map<std::string,int>::iterator n_i;
462 inline std::pair<std::string,double>
478 std::map<std::string,int>::iterator n_i;
518 std::ostringstream ost;
519 ost <<
" Attempt to access non-existant reaction " << name << std::endl;
520 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL, ost.str());
635 double bindingEnergy,
643 bindingEnergy,gammaAB,gammaA,
661 for (i=0;i<
species.size();++i)
663 os <<
"species["<<i<<
"] = " <<
species[i].getName() << std::endl;
676 os <<
"Electron Capture Reactions: " << std::endl;
685 os <<
"Hole Capture Reactions: " << std::endl;
694 os <<
"Electron Emission Reactions: " << std::endl;
703 os <<
"Hole Emission Reactions: " << std::endl;
724 os <<
"Reaction Network: " << std::endl;
748 std::vector<double> &constant_vec)
763 std::vector<double> &constant_vec)
770 eConc = constant_vec[-(concNum+1)];
772 eConc = concs[concNum];
788 std::vector<double> &constant_vec,
789 std::vector<double> &lifetimes)
796 eConc = constant_vec[-(concNum+1)];
798 eConc = concs[concNum];
815 std::vector<double> &constant_vec,
816 std::vector<double> &dRatedC)
832 std::vector<double> &constant_vec,
833 std::vector<double> &dRatedConst)
855 std::vector<double> &constant_vec)
871 std::vector<double> &constant_vec)
878 hConc = constant_vec[-(concNum+1)];
880 hConc = concs[concNum];
895 std::vector<double> &constant_vec,
896 std::vector<double> &lifetimes)
903 hConc = constant_vec[-(concNum+1)];
905 hConc = concs[concNum];
922 std::vector<double> &constant_vec,
923 std::vector<double> &dRatedC)
939 std::vector<double> &constant_vec,
940 std::vector<double> &dRatedConst)
954 (
const std::string & name,
const double temp)
956 int num = getSpeciesNum(name);
962 D = species[num].getDiffusionCoefficient(temp);
975 (
int specie,
const double temp)
982 D = species[specie].getDiffusionCoefficient(temp);
995 (
const std::string & name)
997 int num = getSpeciesNum(name);
1003 z = species[num].getChargeState();
1023 z = species[specie].getChargeState();