Finding phase spacesΒΆ

This step finds all the scattering events that evolve in the material and checks their feasibility. This is accomplished by reading the wave vectors of the electrons and phonons respectively (designated as k_pts and q_pts respectively). Electron-phonon and hole-phonon interactions are found by looking for differences in the bandstructure between the original k_pt and the k_pt after a phonon interaction (the addition of the respetive k and q vectors) and seeing if the resulting energy is less than some error range. Given below is a snippet of the routine used. The checking of the bandstructure is limtied to a band minimum and band maximum based on the location of the conduction and valence band and whether the particle is an electron or hole

 E_k = energy at the k_pt
 E_kq = energy at the (k+q)_pt
 Ef = energy to transition between the conduction and valence band
 Efsthick = energy window
 broadening_ep = error


for(int bnd_num=E_bnd_min;bnd_num<=E_bnd_max;bnd_num++)
   {
         double E_k = el[nk].E_k[bnd_num];
         for(int bnd_num_kq=E_bnd_min;bnd_num_kq<=E_bnd_max;bnd_num_kq++)
         {
             double E_kq = el[nkq].E_k[bnd_num_kq];
             if(fabs(E_k-Ef)<Efsthick && fabs(E_kq-Ef)<Efsthick)
             {
                 if(fabs(E_kq-E_k-hbar*omega_q1)<2.1*broadening_ep)
                 {
                     ph[nq1].mode_kindex[p1].push_back(nk);
                     ph[nq1].e_band_index[p1].push_back(bnd_num);
                     ph[nq1].e_band_index_kq[p1].push_back(bnd_num_kq);
                 }
             }
         }
    }

A similar routine is used for phonon-phonon interactions. These scattering events are written into an outfile to be used for computing phonon-phonon events. Specifically, the outfiles are denoted as

  • tot_ph_scat_events.txt
  • scat_events_binary

Furthermore, input files read in this phase are written as data output and used for in the next phase well.