27 out <<
"Rate engine initialized:\n";
28 out <<
" Ratetype:" << rate_engine.
ratetype_ <<
"\n";
29 out <<
" Temperature T[k] = "
32 Eigen::Vector3d field =
34 out <<
" Electric field[V/nm](x,y,z) =" << field.x() <<
" " << field.y()
35 <<
" " << field.z() <<
" ||F|| " << field.norm() << std::endl;
50 if (std::abs(reorg12) < 1
e-12 || std::abs(reorg21) < 1
e-12) {
51 throw std::runtime_error(
52 "Reorganisation energy for a pair is extremely close to zero,\n"
53 " you probably forgot to import reorganisation energies into your "
57 double dG_Field = 0.0;
59 dG_Field = charge * pair.
R().dot(
field_);
61 double dG_Site = pair.
getdE12(carriertype);
62 double dG = dG_Site + dG_Field;
63 double J2 = pair.
getJeff2(carriertype);
69 throw std::runtime_error(
"Only marcus rates implemented.");
80 std::exp(-(deltaG - reorg) * (deltaG - reorg) /
double getJeff2(QMStateType state) const
double getReorg21(QMStateType state) const
const Eigen::Vector3d & R() const
double getLambdaO(QMStateType state) const
double getdE12(QMStateType state) const
double getReorg12(QMStateType state) const
double Marcusrate(double Jeff2, double deltaG, double reorg) const
PairRates Rate(const QMPair &pair, QMStateType carriertype) const
base class for all analysis tools