LCOV - code coverage report
Current view: top level - cdn_mt - rhonmt21.f90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 31 0.0 %
Date: 2019-09-08 04:53:50 Functions: 0 1 0.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------
       2             : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
       3             : ! This file is part of FLEUR and available as free software under the conditions
       4             : ! of the MIT license as expressed in the LICENSE file in more detail.
       5             : !--------------------------------------------------------------------------------
       6             : 
       7             : MODULE m_rhonmt21
       8             :   !     *************************************************************
       9             :   !     subroutine sets up the coefficients of the spin (up,down) 
      10             :   !     part of the non-spherical muffin-tin density. 
      11             :   !                                                 pk`00 ff`01 gb`02
      12             :   !     *************************************************************
      13             : CONTAINS
      14           0 :   SUBROUTINE rhonmt21(atoms,sphhar,we,ne,sym,eigVecCoeffs,uunmt21,udnmt21,dunmt21,ddnmt21)
      15             : 
      16             :     USE m_gaunt,ONLY:gaunt1
      17             :     USE m_types_setup
      18             :     USE m_types_cdnval
      19             : 
      20             :     IMPLICIT NONE
      21             : 
      22             :     TYPE(t_sym),          INTENT(IN)    :: sym
      23             :     TYPE(t_sphhar),       INTENT(IN)    :: sphhar
      24             :     TYPE(t_atoms),        INTENT(IN)    :: atoms
      25             :     TYPE(t_eigVecCoeffs), INTENT(IN)    :: eigVecCoeffs
      26             : 
      27             :     !     .. Scalar Arguments ..
      28             :     INTEGER,              INTENT(IN)    :: ne   
      29             : 
      30             :     !     .. Array Arguments ..
      31             :     REAL,                 INTENT(IN)    :: we(:)!(nobd)
      32             :     COMPLEX,              INTENT(INOUT) :: uunmt21((atoms%lmaxd+1)**2,sphhar%nlhd,atoms%ntype)
      33             :     COMPLEX,              INTENT(INOUT) :: udnmt21((atoms%lmaxd+1)**2,sphhar%nlhd,atoms%ntype)
      34             :     COMPLEX,              INTENT(INOUT) :: dunmt21((atoms%lmaxd+1)**2,sphhar%nlhd,atoms%ntype)
      35             :     COMPLEX,              INTENT(INOUT) :: ddnmt21((atoms%lmaxd+1)**2,sphhar%nlhd,atoms%ntype)
      36             : 
      37             :     !     .. Local Scalars ..
      38             :     COMPLEX coef, cconst, cil, coef1
      39             :     COMPLEX, PARAMETER :: mi = (0.0,-1.0)
      40             :     INTEGER jmem,l,lh,llp,lm,lmp,lp,lv,m, mp,mv,na,natom,nb,nn,ns,nt
      41             :     !     ..
      42             :     !
      43           0 :     DO ns=1,sym%nsymt
      44             :        natom= 0
      45           0 :        DO nn=1,atoms%ntype
      46           0 :           nt= natom
      47           0 :           DO na= 1,atoms%neq(nn)
      48           0 :              nt= nt+1
      49           0 :              IF (atoms%ntypsy(nt)==ns) THEN
      50             : 
      51           0 :                 DO lh = 1,sphhar%nlh(ns)
      52           0 :                    lv = sphhar%llh(lh,ns)
      53           0 :                    DO lp = 0,atoms%lmax(nn)
      54           0 :                       DO l = 0,atoms%lmax(nn)
      55             : 
      56           0 :                          IF ( MOD(lv+l+lp,2) == 0 ) THEN
      57           0 :                             cil = mi**(l-lp)
      58           0 :                             llp= lp*(atoms%lmax(nn)+1)+l+1
      59             : 
      60           0 :                             DO jmem = 1,sphhar%nmem(lh,ns)
      61           0 :                                mv = sphhar%mlh(jmem,lh,ns)
      62           0 :                                coef1 = cil * sphhar%clnu(jmem,lh,ns) 
      63           0 :                                DO mp = -lp,lp
      64           0 :                                   lmp = lp*(lp+1) + mp
      65           0 :                                   DO m = -l,l
      66           0 :                                      lm= l*(l+1) + m
      67           0 :                                      coef=  CONJG( coef1 *gaunt1(l,lv,lp,m,mv,mp,atoms%lmaxd) )
      68             : 
      69           0 :                                      IF (ABS(coef) >= 0 ) THEN
      70           0 :                                         DO nb = 1,ne
      71           0 :                                            cconst= we(nb) * coef
      72             :                                            uunmt21(llp,lh,nn) = uunmt21(llp,lh,nn)+ &
      73           0 :                                               cconst * eigVecCoeffs%acof(nb,lm,nt,1)*CONJG(eigVecCoeffs%acof(nb,lmp,nt,2))
      74             :                                            udnmt21(llp,lh,nn) = udnmt21(llp,lh,nn)+&
      75           0 :                                               cconst * eigVecCoeffs%bcof(nb,lm,nt,1)*CONJG(eigVecCoeffs%acof(nb,lmp,nt,2))
      76             :                                            dunmt21(llp,lh,nn) = dunmt21(llp,lh,nn)+&
      77           0 :                                               cconst * eigVecCoeffs%acof(nb,lm,nt,1)*CONJG(eigVecCoeffs%bcof(nb,lmp,nt,2))
      78             :                                            ddnmt21(llp,lh,nn) = ddnmt21(llp,lh,nn)+&
      79           0 :                                               cconst * eigVecCoeffs%bcof(nb,lm,nt,1)*CONJG(eigVecCoeffs%bcof(nb,lmp,nt,2))
      80             :                                         ENDDO ! nb
      81             :                                      ENDIF ! (coef >= 0)
      82             : 
      83             :                                   ENDDO ! mp
      84             :                                ENDDO ! m
      85             :                             ENDDO ! jmem
      86             : 
      87             :                          ENDIF ! ( MOD(lv+l+lp),2) == 0 )
      88             : 
      89             :                       ENDDO ! lp
      90             :                    ENDDO ! l
      91             :                 ENDDO ! lh
      92             : 
      93             :              ENDIF ! (atoms%ntypsy(nt)==ns)
      94             :           ENDDO ! na
      95           0 :           natom= natom + atoms%neq(nn)
      96             :        ENDDO ! nn
      97             : 
      98             :     ENDDO ! ns
      99             : 
     100           0 :     RETURN
     101             : 
     102             :   END SUBROUTINE rhonmt21
     103             : END MODULE m_rhonmt21

Generated by: LCOV version 1.13