LCOV - code coverage report
Current view: top level - io - loddop.f90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 0 78 0.0 %
Date: 2024-04-19 04:21:58 Functions: 0 1 0.0 %

          Line data    Source code
       1             :       MODULE m_loddop
       2             :       USE m_juDFT
       3             :       CONTAINS
       4           0 :         SUBROUTINE loddop(stars,vacuum,atoms,sphhar,input,sym,nu,&
       5           0 :                           it,fr,fpw,fvac)
       6             :           !     ***********************************************************
       7             :           !     reload formatted density or potential   c.l.fu
       8             :           !     ***********************************************************
       9             : 
      10             :           USE m_types
      11             :           USE m_constants
      12             : 
      13             :           IMPLICIT NONE
      14             : 
      15             :           !     .. Scalar Arguments ..
      16             :           TYPE(t_stars),INTENT(IN)  :: stars
      17             :           TYPE(t_vacuum),INTENT(IN) :: vacuum
      18             :           TYPE(t_atoms),INTENT(IN)  :: atoms
      19             :           TYPE(t_sphhar),INTENT(IN) :: sphhar
      20             :           TYPE(t_input),INTENT(IN)  :: input
      21             :           TYPE(t_sym),INTENT(IN)    :: sym
      22             : 
      23             :           INTEGER, INTENT (IN) :: nu  
      24             :           INTEGER, INTENT (OUT):: it
      25             :           !     ..
      26             :           !     .. Array Arguments ..
      27             :           COMPLEX, INTENT (OUT):: fpw(:,:),fvac(:,:,:,:)!(stars%ng3,input%jspins),fzxy(vacuum%nmzxyd,stars%ng2-1,2,input%jspins)
      28             :           REAL,    INTENT (OUT):: fr(:,0:,:,:)!(atoms%jmtd,0:sphhar%nlhd,atoms%ntype,input%jspins)
      29             :           CHARACTER(len=8) :: dop,iop,name(10)
      30             :           !     ..
      31             :           !     .. Local Scalars ..
      32             :           REAL delzn,dxn,rmtn,z1n,dummy
      33             :           INTEGER i,ivac,ivdummy,j,jrin,jsp,jspdum,k,lh,lhdummy,n,ndum,nlhn,&
      34             :                &        nmzn,nmzxyn,nn,nq2n,nq3n,ntydum,n_diff,na
      35             :           CHARACTER(len=2) namaux
      36             :           !     ..
      37             :           !     .. Local Arrays ..
      38           0 :           REAL, ALLOCATABLE :: fpwr(:,:),fvacr(:,:,:,:)
      39             : 
      40             :           CHARACTER(len=8) space(10)
      41             :           !     ..
      42             :           !     .. Intrinsic Functions ..
      43             :           INTRINSIC cmplx
      44             :           !     ..
      45             :           !     .. Data statements ..
      46             :           DATA space/10*'        '/
      47             :           !     ..
      48             : 
      49           0 :           fr = 0 ; fpw = 0 ; fvac = 0
      50             : 
      51           0 :           IF (sym%invs) ALLOCATE ( fpwr(stars%ng3,SIZE(fpw,2)) )
      52           0 :           IF (sym%invs2) ALLOCATE ( fvacr(vacuum%nmzd,stars%ng2,2,SIZE(fvac,4)) )
      53             : 
      54           0 :           name = space
      55           0 :           READ (nu,END=200,ERR=200) name
      56             :           !      WRITE (*,FMT=8000) name
      57             :           ! 8000 FORMAT (' loddop title:',10a8)
      58           0 :           READ (nu,END=200,ERR=200) iop,dop,it
      59           0 :           DO  jsp = 1,input%jspins
      60           0 :              READ (nu,END=200,ERR=200) jspdum
      61           0 :              READ (nu,END=200,ERR=200) nn
      62           0 :              IF (nn/=atoms%ntype) CALL juDFT_error("Number of atom groups in Fleur input file and in the charge density file don't match.",calledby="loddop" )
      63             : 
      64           0 :              DO n = 1,nn
      65           0 :                 na = atoms%firstAtom(n)
      66           0 :                 READ (nu,END=200,ERR=200) namaux,ndum,jrin,rmtn,dxn
      67           0 :                 READ (nu,END=200,ERR=200) ntydum,nlhn
      68             :                 !+gu
      69           0 :                 IF ( nlhn.GT.sphhar%nlh(sym%ntypsy(na)) ) THEN
      70           0 :                    WRITE (*,*) 'nlh (',nlhn,') set to (',sphhar%nlh(sym%ntypsy(na)),')'
      71           0 :                    n_diff = nlhn - sphhar%nlh(sym%ntypsy(na))
      72           0 :                    nlhn = sphhar%nlh(sym%ntypsy(na))
      73             :                 ELSE
      74             :                    n_diff = 0 
      75             :                 ENDIF
      76             :                 !-gu
      77           0 :                 DO  lh = 0,nlhn
      78           0 :                    READ (nu,END=200,ERR=200) lhdummy
      79           0 :                    READ (nu,END=200,ERR=200) (fr(i,lh,n,jsp),i=1,jrin)
      80             :                 ENDDO
      81           0 :                 IF (nlhn.LT.sphhar%nlh(sym%ntypsy(na))) THEN
      82           0 :                    DO lh = nlhn + 1,sphhar%nlh(sym%ntypsy(na))
      83           0 :                       DO i = 1,atoms%jri(n)
      84           0 :                          fr(i,lh,n,jsp) = 0.
      85             :                       ENDDO
      86             :                    ENDDO
      87             :                 ELSE
      88           0 :                    DO lh = 1, n_diff
      89           0 :                       READ (nu,END=200,ERR=200) lhdummy
      90           0 :                       READ (nu,END=200,ERR=200) dummy
      91             :                    ENDDO
      92             :                 ENDIF
      93             :              ENDDO
      94           0 :              IF (jsp<=SIZE(fpw,2)) THEN
      95           0 :                 READ (nu,END=200,ERR=200) nq3n
      96             :                 !+gu
      97           0 :                 IF (nq3n.GT.stars%ng3) THEN
      98           0 :                    WRITE (*,*) 'nq3n (',nq3n,') reduced to nq3 (',stars%ng3,')'
      99           0 :                    nq3n = stars%ng3
     100             :                 ENDIF
     101             :                 !-gu
     102           0 :                 IF (sym%invs) THEN
     103           0 :                    READ (nu,END=200,ERR=200) (fpwr(k,jsp),k=1,nq3n)
     104           0 :                    fpw(:nq3n,jsp) = CMPLX(fpwr(:nq3n,jsp),0.)
     105             :                    
     106             :                 ELSE
     107           0 :                    READ (nu,END=200,ERR=200) (fpw(k,jsp),k=1,nq3n)
     108             :                 END IF
     109           0 :                 IF (nq3n.LT.stars%ng3) THEN
     110           0 :                    fpw(nq3n+1:,jsp) = (0.,0.)
     111             :                 END IF
     112             :              ENDIF
     113           0 :              IF (input%film) THEN
     114           0 :                 IF (jsp<=SIZE(fvac,4)) THEN
     115           0 :                    DO  ivac = 1,vacuum%nvac
     116           0 :                       READ (nu,END=200,ERR=200) ivdummy
     117           0 :                       READ (nu,END=200,ERR=200) nmzn,z1n,delzn
     118           0 :                       READ (nu,END=200,ERR=200) (fvac(i,1,ivac,jsp),i=1,nmzn)
     119           0 :                       IF (vacuum%nvac.EQ.1) THEN
     120           0 :                          DO i=1,nmzn
     121           0 :                             fvac(i,1,2,jsp)=fvac(i,1,1,jsp)
     122             :                          ENDDO
     123             :                       ENDIF
     124           0 :                       IF (jsp<=SIZE(fvac,4)) THEN
     125           0 :                          READ (nu,END=200,ERR=200) nq2n,nmzxyn
     126             :                          !+gu
     127           0 :                          IF (nq2n.GT.stars%ng2) THEN
     128           0 :                             WRITE (*,*) 'nq2n (',nq2n,') reduced to nq2 (',stars%ng2,')'
     129           0 :                             n_diff = nq2n - stars%ng2
     130           0 :                             nq2n = stars%ng2
     131             :                          ELSE
     132             :                             n_diff = 0
     133             :                          ENDIF
     134             :                          !-gu
     135             :                          !IF (sym%invs2) THEN
     136             :                          !   READ (nu,END=200,ERR=200) (fvacr(j,1,ivac,jsp),j=1,nmzn)
     137             :                          !   fvac(:nmzn,1,ivac,jsp) = CMPLX(fvacr(:nmzn,1,ivac,jsp),0.)
     138             :                          !ELSE
     139             :                          !   READ (nu,END=200,ERR=200) (fvac(j,1,ivac,jsp),j=1,nmzn)
     140             :                          !END IF
     141           0 :                          DO  k = 2,nq2n
     142           0 :                             IF (sym%invs2) THEN
     143           0 :                                READ (nu,END=200,ERR=200) (fvacr(j,k,ivac,jsp),j=1,nmzxyn)
     144           0 :                                fvac(:nmzxyn,k,ivac,jsp) = CMPLX(fvacr(:nmzxyn,k,ivac,jsp),0.)
     145             :                             ELSE
     146           0 :                                READ (nu,END=200,ERR=200) (fvac(j,k,ivac,jsp),j=1,nmzxyn)
     147             :                             END IF
     148           0 :                             IF (vacuum%nvac.EQ.1) THEN
     149           0 :                                IF (sym%invs) THEN
     150           0 :                                   DO j = 1,nmzxyn
     151           0 :                                      fvac(j,k,2,jsp) = CONJG(fvac(j,k,1,jsp))
     152             :                                   ENDDO
     153             :                                ELSE
     154           0 :                                   DO j = 1,nmzxyn
     155           0 :                                      fvac(j,k,2,jsp) = fvac(j,k,1,jsp)
     156             :                                   ENDDO
     157             :                                ENDIF
     158             :                             ENDIF
     159             :                          ENDDO
     160             :                          !+gu
     161           0 :                          DO k = 1,n_diff
     162           0 :                             READ (nu,END=200,ERR=200) dummy
     163             :                          ENDDO
     164             :                          !-gu
     165             :                          !IF (nq2n.LT.stars%ng2) THEN
     166             :                          !   fzxy(:nmzxyn,nq2n:,ivac,jsp) = (0.,0.)
     167             :                          !END IF
     168           0 :                          IF (nq2n+1.LT.stars%ng2) THEN ! TODO: AN, TB - Is this correct???
     169           0 :                             fvac(:nmzn,nq2n+1:,ivac,jsp) = (0.,0.)
     170             :                          END IF
     171             :                       ENDIF
     172             :                    ENDDO
     173             :                 END IF
     174             :              ENDIF
     175             :           ENDDO
     176             :           !
     177           0 :           IF (sym%invs) DEALLOCATE (fpwr)
     178           0 :           IF (sym%invs2) DEALLOCATE ( fvacr )
     179           0 :           RETURN
     180             : 
     181           0 : 200       WRITE (oUnit,*) 'error reading dop nr.',nu
     182           0 :           IF (nu /= 98)  CALL juDFT_error("error reading d/p-file!",calledby="loddop")
     183             : 
     184           0 :         END SUBROUTINE loddop
     185             :       END MODULE m_loddop

Generated by: LCOV version 1.14