71 <<
TimeStamp() <<
" Dipole Moment excited state 1 " << state1_dipole[0]
72 <<
"\t" << state1_dipole[1] <<
"\t" << state1_dipole[2] << flush;
78 <<
TimeStamp() <<
" Dipole Moment excited state 2 " << state2_dipole[0]
79 <<
"\t" << state2_dipole[1] <<
"\t" << state2_dipole[2] << flush;
84 <<
TimeStamp() <<
" Transition Dipole Moment " << transition_dip[0]
85 <<
"\t" << transition_dip[1] <<
"\t" << transition_dip[2] << flush;
88 double abs_transition_dip = transition_dip.norm();
89 double dipole_diff_norm = (state1_dipole - state2_dipole).norm();
90 double coupling = (abs_transition_dip * (
E2_ -
E1_)) /
91 std::sqrt(std::pow(dipole_diff_norm, 2) +
92 4.0 * std::pow(abs_transition_dip, 2));
95 Eigen::Vector3d CT_direction =
96 (state1_dipole - state2_dipole) / (state1_dipole - state2_dipole).norm();
97 double proj_transition_dip = transition_dip.dot(CT_direction);
98 double coupling_proj = (std::abs(proj_transition_dip) * (
E2_ -
E1_)) /
99 std::sqrt(std::pow(dipole_diff_norm, 2) +
100 4.0 * std::pow(proj_transition_dip, 2));
102 return std::pair<double, double>(coupling, coupling_proj);