[QE-users] dielectric function from turbo_lanczos
Michal Krompiec
michal.krompiec at gmail.com
Wed Apr 22 12:29:10 CEST 2020
Dear Iurii,
Thank you. The patch to turbo_spectrum didn't work for me (it does
compile but the results don't look good).
But I obtained really nice results with turbo_eels, thanks for recommending it!
Best regards,
Michal
On Tue, 21 Apr 2020 at 14:10, Timrov Iurii <iurii.timrov at epfl.ch> wrote:
>
> Dear Michal,
>
>
> > Unfortunately, the commented-out code from
> > tddpft_calculate_spectrum.f90 doesn't compile, and my knowledge of
> > Fortran is not nearly good enough to fix this:
> > tddfpt_calculate_spectrum.f90(469): error #6366: The shapes of the
> > array expressions do not conform. [EPS]
> eps(ip,ip2) = (1.d0,0.d0)-(32.d0*pi/omega)*green(ip,ip2)
>
>
> Since it is commented out, there are some mistakes there. If you want you can try the fix:
>
>
> DO ip=1,n_ipol
>
> DO ip2=1,n_ipol
>
> !
>
> eps(ip,ip2) = (1.d0,0.d0) - (32.d0*pi/volume) * green(ip,ip2)
>
> !
>
> WRITE(17,'(5x,"chi_",i1,"_",i1,"=",2x,3(e21.15,2x))') &
>
> ip2, ip, start, dble(green(ip,ip2)), aimag(green(ip,ip2))
>
>
> write(*,'(5x,"eps_",i1,"_",i1,"=",2x,3(e21.15,2x))') &
>
> ip2, ip, rytoev*omeg, dble(eps), aimag(eps)
>
> !
>
> ENDDO
>
> ENDDO
>
>
> But I haven't tested whether this gives the correct result.
>
>
> > I will go for the turbo_eels route, then. What value of q is low
> > enough (to approximate q->0), in your experience? If it needs to be
> > determined by a convergence test, what is a good starting point?
>
>
> No need to perform the convergence test w.r.t q. Just try this (should be ok):
>
>
> &lr_control
>
> itermax = 2000, <- this has to be checked
>
> q1 = 0.001,
>
> q2 = 0.000,
>
> q3 = 0.000
>
> /
>
>
> Regards,
>
> Iurii
>
>
> --
> Dr. Iurii Timrov
> Postdoctoral Researcher
> STI - IMX - THEOS and NCCR - MARVEL
> Swiss Federal Institute of Technology Lausanne (EPFL)
> CH-1015 Lausanne, Switzerland
> +41 21 69 34 881
> http://people.epfl.ch/265334
> ________________________________
> From: users <users-bounces at lists.quantum-espresso.org> on behalf of Michal Krompiec <michal.krompiec at gmail.com>
> Sent: Tuesday, April 21, 2020 2:43:19 PM
> To: Quantum ESPRESSO users Forum
> Subject: Re: [QE-users] dielectric function from turbo_lanczos
>
> Dear Iurii,
> Unfortunately, the commented-out code from
> tddpft_calculate_spectrum.f90 doesn't compile, and my knowledge of
> Fortran is not nearly good enough to fix this:
> tddfpt_calculate_spectrum.f90(469): error #6366: The shapes of the
> array expressions do not conform. [EPS]
> eps(ip,ip2) = (1.d0,0.d0)-(32.d0*pi/omega)*green(ip,ip2)
>
> I will go for the turbo_eels route, then. What value of q is low
> enough (to approximate q->0), in your experience? If it needs to be
> determined by a convergence test, what is a good starting point?
>
> Best,
>
> Michal
>
>
> On Tue, 21 Apr 2020 at 13:20, Timrov Iurii <iurii.timrov at epfl.ch> wrote:
> >
> > Dear Michal,
> >
> >
> > > But I noticed that eps is calculated for the EELS spectrum (line 555)
> > > and Re(eps) and Im(eps) are printed to the output file. Would it make
> > > sense to use this for the calculation of the refractive index?
> >
> >
> > I think yes. But use turboEELS code in this case.
> >
> >
> > Please note that the susceptibility \chi in the turbo_lanczos code and \chi in turbo_eels code are not the same thing. In the former case \chi is proportional to \epsilon, while in the latter case \chi is proportional to \epsilon^-1.
> >
> >
> > So if you use the turboEELS (turbo_eels) code with q->0, you will obtain \chi from which you will obtain \epsilon^-1. Then the code also computes \epsilon from \epsilon^-1.
> >
> >
> > Greetings,
> >
> > Iurii
> >
> >
> > --
> > Dr. Iurii Timrov
> > Postdoctoral Researcher
> > STI - IMX - THEOS and NCCR - MARVEL
> > Swiss Federal Institute of Technology Lausanne (EPFL)
> > CH-1015 Lausanne, Switzerland
> > +41 21 69 34 881
> > http://people.epfl.ch/265334
> > ________________________________
> > From: users <users-bounces at lists.quantum-espresso.org> on behalf of Michal Krompiec <michal.krompiec at gmail.com>
> > Sent: Tuesday, April 21, 2020 12:57:39 PM
> > To: Quantum ESPRESSO users Forum
> > Subject: Re: [QE-users] dielectric function from turbo_lanczos
> >
> > Dear Iurii,
> > Thanks, I will try that.
> > But I noticed that eps is calculated for the EELS spectrum (line 555)
> > and Re(eps) and Im(eps) are printed to the output file. Would it make
> > sense to use this for the calculation of the refractive index?
> >
> > Best,
> >
> > Michal
> >
> > On Tue, 21 Apr 2020 at 10:43, Timrov Iurii <iurii.timrov at epfl.ch> wrote:
> > >
> > > Dear Michal,
> > >
> > >
> > > > Now, how do I convert the complex susceptibility chi (from the output of turbo_lanczos) to epsilon? I know that in principle epsilon = 1 + chi, but then the results don’t make sense. Am I missing some unit conversion or something else?
> > > > Moreover, turbo_lanczos is complaining it hasn’t got enough information to compute S - what could be the cause of this?
> > >
> > >
> > > S is the oscillator strength. Some useful information is written in the output file of the turbo_spectrum calculation (for finite systems):
> > >
> > >
> > > chi_i_j: dipole polarizability tensor in units of e^2*a_0^2/energy
> > >
> > > S: oscillator strength in units of 1/energy
> > >
> > > S(\hbar \omega) = 2m/( 3 \pi e^2 \hbar) \omega sum_j chi_j_j
> > >
> > > S(\hbar \omega) satisfies the f-sum rule: \int_0^\infty dE S(E) = N_el
> > >
> > >
> > > In your case you are interested in epsilon for periodic systems, so you may look in the code TDDFPT/tools/tddfpt_calculate_spectrum.f90. E.g. on lines 463-475 it is written:
> > >
> > >
> > > DO ip=1,n_ipol
> > >
> > > DO ip2=1,n_ipol
> > >
> > > !
> > >
> > > !eps(ip,ip2) = (1.d0,0.d0)-(32.d0*pi/omega)*green(ip,ip2)
> > >
> > > !
> > >
> > > WRITE(17,'(5x,"chi_",i1,"_",i1,"=",2x,3(e21.15,2x))') &
> > >
> > > ip2, ip, start, dble(green(ip,ip2)), aimag(green(ip,ip2))
> > >
> > >
> > > ! write(*,'(5x,"eps_",i1,"_",i1,"=",2x,3(e21.15,2x))') &
> > >
> > > ! ip2, ip, ry*omeg, dble(eps), aimag(eps)
> > >
> > > !
> > >
> > > ENDDO
> > >
> > > ENDDO
> > >
> > >
> > > What you need is "eps", but it is commented out. So just uncomment it here and check in other places in this program and see what you obtain. Since this is commented out, one has to be careful and check if the result is correct. I do not know where the factor 32 comes from (one has to think). It was not me who coded this. You may also check the literature how the dielectric matrix is obtained from the susceptibility matrix (i.e. what are the prefactors).
> > >
> > >
> > > HTH
> > >
> > >
> > > Iurii
> > >
> > >
> > > --
> > > Dr. Iurii Timrov
> > > Postdoctoral Researcher
> > > STI - IMX - THEOS and NCCR - MARVEL
> > > Swiss Federal Institute of Technology Lausanne (EPFL)
> > > CH-1015 Lausanne, Switzerland
> > > +41 21 69 34 881
> > > http://people.epfl.ch/265334
> > > ________________________________
> > > From: users <users-bounces at lists.quantum-espresso.org> on behalf of Michal Krompiec <michal.krompiec at gmail.com>
> > > Sent: Monday, April 20, 2020 10:27:29 PM
> > > To: Quantum Espresso users Forum
> > > Subject: [QE-users] dielectric function from turbo_lanczos
> > >
> > > Hello,
> > > I'm trying to compare refractive index spectra calculated with epsilon.x and TDDFpT with the turbo_lanczos code. My system is a periodic supercell, I am using PBEsol functional, Gamma-only sampling and norm-conserving PPs.
> > >
> > > From the output of epsilon.x, I calculate refractive index n as follows:
> > > n = np.sqrt(np.sqrt(np.square(eps_real_iso)+np.square(eps_imag_iso)+eps_real_iso))
> > > # eps_real_iso and eps_imag_iso are averages of the spatial components of real and imaginary epsilon
> > >
> > > Now, how do I convert the complex susceptibility chi (from the output of turbo_lanczos) to epsilon? I know that in principle epsilon = 1 + chi, but then the results don’t make sense. Am I missing some unit conversion or something else?
> > > Moreover, turbo_lanczos is complaining it hasn’t got enough information to compute S - what could be the cause of this?
> > >
> > > Thanks,
> > > Michal Krompiec
> > > Merck KGaA
> > >
> > > _______________________________________________
> > > Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> > > users mailing list users at lists.quantum-espresso.org
> > > https://lists.quantum-espresso.org/mailman/listinfo/users
> > _______________________________________________
> > Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> > users mailing list users at lists.quantum-espresso.org
> > https://lists.quantum-espresso.org/mailman/listinfo/users
> > _______________________________________________
> > Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> > users mailing list users at lists.quantum-espresso.org
> > https://lists.quantum-espresso.org/mailman/listinfo/users
> _______________________________________________
> Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> users mailing list users at lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/users
> _______________________________________________
> Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> users mailing list users at lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/users
More information about the users
mailing list