Page 1 of 1

band resolved Eliashberg spectral function

Posted: Tue Apr 11, 2017 3:35 am
by jiachen
Dear All,

I am trying to obtain band resolved Eliashberg spectral function, as a part of an attempt to have multi-band isotropic Eliashberg equation. I located a part of code in eliashberg_setup.f90. I hope to know if I can get band resolved Eliashberg spectral function by fixing ibnd and jbnd in following code. Thank you very much for your help.

Code: Select all

     
DO ik = lower_bnd, upper_bnd
        [color=#FF0000]DO ibnd = 1, nbndfs[/color]
           IF ( abs( ekfs(ibnd,ik) - ef0 ) .lt. fsthick ) THEN
              DO iq = 1, nqfs(ik)
                 ! iq0 - index of q-point on the full q-mesh
                 iq0 = ixqfs(ik,iq)
                 [color=#FF0000]DO jbnd = 1, nbndfs[/color]
                    IF ( abs( ekfs(jbnd,ixkqf(ik,iq0)) - ef0 ) .lt. fsthick ) THEN
                       weight = wkfs(ik) * wqf(iq) * w0g(ibnd,ik) * w0g(jbnd,ixkqf(ik,iq0))
                       lambda_eph = 0.d0
                       DO imode = 1, nmodes
                          IF ( wf(imode,iq0) .gt. eps_acustic ) THEN
                             IF ( ismear .eq. 1 ) THEN
                                lambda_eph = lambda_eph + g2(ik,iq,ibnd,jbnd,imode) / wf(imode,iq0)
                             ENDIF
                             DO iwph = 1, nqstep
                                weightq  = w0gauss( ( wsph(iwph) - wf(imode,iq0) ) / sigma, 0 ) / sigma
                                a2f(iwph,ismear) = a2f(iwph,ismear) + weight * weightq * g2(ik,iq,ibnd,jbnd,imode)
                                IF ( ismear .eq. 1 ) THEN
                                   a2f_modeproj(imode,iwph) = a2f_modeproj(imode,iwph) +&
                                       weight * weightq * g2(ik,iq,ibnd,jbnd,imode)
                                ENDIF
                             ENDDO ! iwph
                          ENDIF ! wf
                       ENDDO ! imode
                       IF ( ismear .eq. 1 .AND. lambda_eph .gt. 0.d0 ) THEN
                          l_sum = l_sum + weight * lambda_eph
                          weight = wqf(iq) * w0g(jbnd,ixkqf(ik,iq0))
                          lambda_k(ik,ibnd) = lambda_k(ik,ibnd) + weight * lambda_eph
                          IF ( lambda_eph .gt. lambda_max(my_pool_id+1) ) THEN
                             lambda_max(my_pool_id+1) = lambda_eph
                          ENDIF
                       ENDIF
                    ENDIF ! ekq
                 ENDDO ! jbnd
              ENDDO ! iq
           ENDIF ! ekk
        ENDDO ! ibnd

Re: band resolved Eliashberg spectral function

Posted: Tue Apr 11, 2017 2:50 pm
by roxana
Hi,

Yes, you can do it in the loop you mentioned in eliashberg_setup.f90

As an example, you can also take a look at SUBROUTINE evaluate_a2fij in kernels_aniso_iaxis.f90 where a2fij(ik,iq,ibnd,jbnd,iwph) is computed.

Best,
Roxana

Re: band resolved Eliashberg spectral function

Posted: Tue Apr 11, 2017 3:56 pm
by jiachen
Thank you!