47 #ifndef N_DEV_RateConstantCalculators_H
48 #define N_DEV_RateConstantCalculators_H
85 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec) = 0;
114 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
147 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
174 double C0,
double t0,
double x0);
179 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
204 double C0,
double t0,
double x0);
209 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
243 std::vector<Specie> &ConstantSpecies,
244 std::vector< std::pair<int,double> > &Reactants,
245 double C0,
double t0,
double x0);
250 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
274 std::vector<Specie> &ConstantSpecies,
275 std::vector< std::pair<int,double> > &Reactants,
276 double C0,
double t0,
double x0,
282 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
308 std::vector<Specie> &ConstantSpecies,
309 std::vector< std::pair<int,double> > &Reactants,
310 std::vector< std::pair<int,double> > &Products,
311 double bindingEnergy,
315 double siliconConcentration,
316 double C0,
double t0,
double x0);
321 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
359 std::vector<Specie> &ConstantSpecies,
360 std::vector< std::pair<int,double> > &Reactants,
361 std::vector< std::pair<int,double> > &Products,
363 double C0,
double t0,
double x0);
368 virtual double computeRateConstant(
double T,std::vector<double> &concs,std::vector<double> &constant_vec);
FDEmissionRateCalculator(double sigma, double Energy, double v, double C0, double t0, double x0)
Rate constant calculator for Electron or Hole emission reaction.
virtual bool isBulkMaterialSet()
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
virtual bool isBulkMaterialSet()
virtual void setBulkMaterial(std::string material)
virtual void setBulkMaterial(std::string material)
virtual bool isBulkMaterialSet()
virtual void setScaleFactors(double C0, double t0, double x0)=0
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
EmissionRateCalculator(double sigma, double v, double N, double Energy, double C0, double t0, double x0)
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
std::string myReactionName
virtual bool isBulkMaterialSet()
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual void setScaleFactors(double iC0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
Pure virtual class to augment a linear system.
virtual void setBulkMaterial(std::string material)
Rate constant calculator for Electron or Hole emission reaction.
std::string myReactionName
virtual double rateConstantScaleFactor()=0
return current scale factor for rate constant
virtual EmissionRateCalculator * Clone()
create a copy of this calculator
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
ComplexRateCalculator(std::vector< Specie > &VariableSpecies, std::vector< Specie > &ConstantSpecies, std::vector< std::pair< int, double > > &Reactants, double C0, double t0, double x0)
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
virtual CalcType calcType()
return the type of this calculator
double reaction_distance_factor
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
virtual ~RateCalculator()
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
std::string myReactionName
RateCalculator(RateCalculator &right)
virtual double computeRateConstant(double T)=0
return rate constant at given temperature
virtual BourgoinCorbettHoleRateCalculator * Clone()
create a copy of this calculator
double chargeNumberProduct
std::string myReactionName
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
std::string myReactionName
virtual ComplexRateCalculator * Clone()
create a copy of this calculator
virtual CalcType calcType()
return the type of this calculator
virtual bool isBulkMaterialSet()
virtual SimpleRateCalculator * Clone()
create a copy of this calculator
double chargeNumberProduct
ComplexMultiplierRateCalculator(std::vector< Specie > &VariableSpecies, std::vector< Specie > &ConstantSpecies, std::vector< std::pair< int, double > > &Reactants, double C0, double t0, double x0, double multiplier)
virtual double computeRateConstant(double T)
return rate constant at given temperature
SimpleRateCalculator(double k, double C0, double t0, double x0)
virtual CalcType calcType()
return the type of this calculator
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual ComplexMultiplierRateCalculator * Clone()
create a copy of this calculator
Rate constant calculator for a irreversible two-species complexing reaction.
virtual bool isBulkMaterialSet()
virtual void setBulkMaterial(std::string material)
virtual CalcType calcType()
return the type of this calculator
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
virtual CalcType calcType()
return the type of this calculator
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
double reaction_distance_factor
std::string myReactionName
double reaction_distance_factor
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
virtual bool isBulkMaterialSet()
virtual void setBulkMaterial(std::string material)
virtual bool isBulkMaterialSet()
CaptureRateCalculator(double sigma, double v, double C0, double t0, double x0)
double chargeNumberProduct
virtual bool isBulkMaterialSet()=0
DecomplexRateCalculator(std::vector< Specie > &VariableSpecies, std::vector< Specie > &ConstantSpecies, std::vector< std::pair< int, double > > &Reactants, std::vector< std::pair< int, double > > &Products, double bindingEnergy, double degenAB, double degenA, double degenB, double siliconConcentration, double C0, double t0, double x0)
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
virtual void setBulkMaterial(std::string material)
virtual FDEmissionRateCalculator * Clone()
create a copy of this calculator
virtual RateCalculator * Clone()=0
create a copy of this calculator
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual void setBulkMaterial(std::string material)
virtual CalcType calcType()
return the type of this calculator
virtual CalcType calcType()
return the type of this calculator
virtual double computeRateConstant(double T)
return rate constant at given temperature
virtual void setBulkMaterial(std::string material)
Class for trivial, constant rate constant (independent of temperature)
virtual void setBulkMaterial(std::string material)=0
Abstract interface class for "rate calculator" strategy pattern.
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
BourgoinCorbettHoleRateCalculator(std::vector< Specie > &VariableSpecies, std::vector< Specie > &ConstantSpecies, std::vector< std::pair< int, double > > &Reactants, std::vector< std::pair< int, double > > &Products, double sigma, double C0, double t0, double x0)
virtual double computeRateConstant(double T)
return rate constant at given temperature
double reaction_distance_factor
std::string myReactionName
Rate constant calculator for Electron or Hole capture reaction.
std::string myReactionName
virtual DecomplexRateCalculator * Clone()
create a copy of this calculator
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
virtual CalcType calcType()=0
return the type of this calculator
virtual double rateConstantScaleFactor()
return current scale factor for rate constant
virtual void setScaleFactors(double C0, double t0, double x0)
set concentration, time, and space scale factors (space scale factor is currently unused by any calcu...
virtual CaptureRateCalculator * Clone()
create a copy of this calculator
virtual CalcType calcType()
return the type of this calculator