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);
102 double sigma,
double hopDistance);
115 std::vector<double> &concs,
116 std::vector<double> &constant_vec);
118 std::vector<double> &concs,
119 std::vector<double> &constant_vec);
123 void setSpecies(std::vector<Specie> &theSpeciesVect);
125 void setConstants(std::vector<Specie> &theConstantsVect);
130 void addSourceTerm(
const std::string &speciesName,
const std::string &expressionStr);
131 void addSourceTerm(
const std::string &speciesName,Util::Expression *expression);
144 std::vector<double> &ddt);
145 void getJac(std::vector<double> &concs, std::vector<double> &
constants,
146 std::vector<std::vector<double> >&jac);
148 std::vector<double> &concs, std::vector<double> &
constants,
149 std::vector<double> &dFdConst);
152 std::vector<int> &captureVect, std::vector<int> &emissionVect);
154 std::vector<int> &captureVect, std::vector<int> &emissionVect,
155 std::vector<double>&dratedc);
158 std::vector<int> &captureVect, std::vector<int> &emissionVect,
159 std::vector<double>&dratedc);
162 std::vector<int> &captureVect,
double &concentration);
164 std::vector<int> &captureVect,
double &concentration,
165 std::vector<double> &lifetimes);
169 std::vector<double> &lifetimes);
171 std::vector<double> &lifetimes);
177 std::vector<double>&dratedc);
179 std::vector<double>&dratedc);
182 std::vector<double>&dratedConst);
184 std::vector<double>&dratedConst);
196 void setName(
const std::string &name);
198 void output(std::ostream & os)
const;
203 std::vector<double> concs,
204 std::vector<double> carrierConcs);
334 std::map<std::string,int>::iterator n_i;
408 std::string msg=
"ReactionNetwork::getReactantNum: invalid species name specified: ";
410 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL, msg);
427 std::map<std::string,int>::iterator n_i;
474 inline std::pair<std::string,double>
490 std::map<std::string,int>::iterator n_i;
530 std::ostringstream ost;
531 ost <<
" Attempt to access non-existant reaction " << name << std::endl;
532 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL, ost.str());
651 double bindingEnergy,
659 bindingEnergy,gammaAB,gammaA,
694 for (i=0;i<
species.size();++i)
696 os <<
"species["<<i<<
"] = " <<
species[i].getName() << std::endl;
709 os <<
"Electron Capture Reactions: " << std::endl;
718 os <<
"Hole Capture Reactions: " << std::endl;
727 os <<
"Electron Emission Reactions: " << std::endl;
736 os <<
"Hole Emission Reactions: " << std::endl;
757 os <<
"Reaction Network: " << std::endl;
781 std::vector<double> &constant_vec)
796 std::vector<double> &constant_vec)
803 eConc = constant_vec[-(concNum+1)];
805 eConc = concs[concNum];
821 std::vector<double> &constant_vec,
822 std::vector<double> &lifetimes)
829 eConc = constant_vec[-(concNum+1)];
831 eConc = concs[concNum];
848 std::vector<double> &constant_vec,
849 std::vector<double> &dRatedC)
865 std::vector<double> &constant_vec,
866 std::vector<double> &dRatedConst)
888 std::vector<double> &constant_vec)
904 std::vector<double> &constant_vec)
911 hConc = constant_vec[-(concNum+1)];
913 hConc = concs[concNum];
928 std::vector<double> &constant_vec,
929 std::vector<double> &lifetimes)
936 hConc = constant_vec[-(concNum+1)];
938 hConc = concs[concNum];
955 std::vector<double> &constant_vec,
956 std::vector<double> &dRatedC)
972 std::vector<double> &constant_vec,
973 std::vector<double> &dRatedConst)
987 (
const std::string & name,
const double temp)
989 int num = getSpeciesNum(name);
995 D = species[num].getDiffusionCoefficient(temp);
1008 (
int specie,
const double temp)
1015 D = species[specie].getDiffusionCoefficient(temp);
1029 (
int specie,
const double temp,
1030 std::vector<double> concs,
1031 std::vector<double> carrierConcs)
1038 D = species[specie].getDiffusionCoefficient(temp, concs, carrierConcs);
1051 (
const std::string & name)
1053 int num = getSpeciesNum(name);
1059 z = species[num].getChargeState();
1079 z = species[specie].getChargeState();