LCOV - code coverage report
Current view: top level - main - optional.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 36 44 81.8 %
Date: 2019-09-08 04:53:50 Functions: 1 1 100.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             : MODULE m_optional
       7             :   USE m_juDFT
       8             : CONTAINS
       9          76 :   SUBROUTINE OPTIONAL(mpi, atoms,sphhar,vacuum,DIMENSION,&
      10             :        stars,input,sym, cell, sliceplot,obsolete, xcpot, noco, oneD)
      11             :     !
      12             :     !----------------------------------------
      13             :     ! this routine is called by: fleur.F90
      14             :     !
      15             :     ! optional --+-- plot -+- loddop
      16             :     !            |         +- outcdn -+- cotra0
      17             :     !            |                    +- cotra1
      18             :     !            |                    +- starf2 -- spgrot
      19             :     !            |                    +- starf3
      20             :     !            |                    +- ylm3
      21             :     !            +-- stden -+- atom2 -+- setcor
      22             :     !            |          |         +- stpot1
      23             :     !            |          |         +- differ -+- inwint
      24             :     !            |          |         |          +- outint
      25             :     !            |          |         +- vxcall (-> see vgen.F) or:
      26             :     !            |          |         +- potl0 -+- grdchlh
      27             :     !            |          |         |         +- mkgl0
      28             :     !            |          |         |         +- vxcallg (-> see vgen.F)
      29             :     !            |          |         +- intgr1
      30             :     !            |          +- cdnovlp -+- spgrot
      31             :     !            |          |           +- rcerf --wofz
      32             :     !            |          |           +- diflgr
      33             :     !            |          |           +- qpw_to_nmt -+- phasy1 -+- spgrot
      34             :     !            |          |                          |          +- ylm3
      35             :     !            |          |                          +- sphbes
      36             :     !            |          +- qfix -- cdntot -+- intgr3
      37             :     !            |          |                  +- qsf
      38             :     !            |          |                  +- pwint -- spgrot
      39             :     !            |          +- wrtdop
      40             :     !            |          +- points -- qranf
      41             :     !            |          +- sphpts -- qranf
      42             :     !            |          +- checkdop -+- starf3
      43             :     !            |                       +- cotra0
      44             :     !            |                       +- starf2 -- spgrot
      45             :     !            |                       +- fitchk
      46             :     !            |                       +- cotra1
      47             :     !            |                       +- ylm3
      48             :     !            +-- cdnsp -+- readDensity
      49             :     !            |          +- writeDensity
      50             :     !            |          +- intgr3
      51             :     !            +-- flipcdn -+- readDensity
      52             :     !            |            +- writeDensity
      53             :     !            +-- f2u -- wrtdop
      54             :     !            +-- u2f -- loddop
      55             :     !            +-- bmt -+- readDensity
      56             :     !                     +- wrtdop
      57             :     !----------------------------------------
      58             :     USE m_bmt
      59             :     USE m_plotdop
      60             :     USE m_stden
      61             :     USE m_cdnsp
      62             :     USE m_flipcdn
      63             :     USE m_cdn_io
      64             :     USE m_types
      65             :     USE m_pldngen
      66             :    
      67             :     IMPLICIT NONE
      68             :     !     ..
      69             :     !     .. Scalar Arguments ..
      70             : 
      71             :     TYPE(t_mpi),INTENT(IN)      :: mpi
      72             :     TYPE(t_atoms),INTENT(IN)    :: atoms
      73             :     TYPE(t_dimension),INTENT(IN):: DIMENSION
      74             :     TYPE(t_sphhar),INTENT(IN)   :: sphhar
      75             :     TYPE(t_obsolete),INTENT(IN) :: obsolete
      76             :     TYPE(t_sym),INTENT(IN)      :: sym
      77             :     TYPE(t_stars),INTENT(IN)    :: stars
      78             :     TYPE(t_oneD),INTENT(IN)     :: oneD
      79             :     TYPE(t_input),INTENT(INOUT) :: input
      80             :     TYPE(t_noco),INTENT(IN)     :: noco
      81             :     TYPE(t_vacuum),INTENT(IN)   :: vacuum
      82             :     TYPE(t_cell),INTENT(IN)     :: cell
      83             :     CLASS(t_xcpot),INTENT(IN)   :: xcpot
      84             :     TYPE(t_sliceplot),INTENT(IN):: sliceplot
      85             :     !     ..
      86             :     !     .. Local Scalars ..
      87             :     INTEGER :: it, archiveType
      88             :     CHARACTER*10 :: cdnfname
      89             :     LOGICAL :: strho
      90             : #ifdef CPP_MPI
      91             :     include 'mpif.h'
      92             :     INTEGER :: ierr(2)
      93             : #endif
      94             :     !     ..
      95          76 :     it = 1
      96             : 
      97          76 :     IF (sliceplot%iplot .AND. (mpi%irank==0) ) THEN
      98           2 :        IF (noco%l_noco) THEN
      99             :           CALL pldngen(mpi,sym,stars,atoms,sphhar,vacuum,&
     100           0 :                cell,input,noco,oneD,sliceplot)
     101             :        ENDIF
     102             :     ENDIF
     103             : 
     104             :        
     105          76 :     IF (mpi%irank == 0) THEN
     106          38 :        IF (sliceplot%plpot) input%score = .FALSE.
     107          38 :        IF (sliceplot%iplot) THEN
     108           2 :           CALL timestart("Plotting")
     109           2 :           IF (input%strho) CALL juDFT_error("strho = T and iplot=T",calledby = "optional")
     110             :           CALL plotdop(oneD,dimension,stars,vacuum,sphhar,atoms,&
     111           2 :                        input,sym,cell,sliceplot,noco)
     112           2 :           CALL timestop("Plotting")
     113             :        END IF
     114             :     ENDIF ! mpi%irank == 0
     115             :     !
     116             :     !     --->generate starting charge density
     117             :     !
     118          76 :     strho=input%strho
     119          76 :     IF (.NOT.(strho.OR.sliceplot%iplot)) THEN
     120          66 :        archiveType = CDN_ARCHIVE_TYPE_CDN1_const
     121          66 :        IF (noco%l_noco) THEN
     122          14 :           archiveType = CDN_ARCHIVE_TYPE_NOCO_const
     123             :        END IF
     124          66 :        IF (mpi%irank == 0) THEN
     125          33 :           strho = .NOT.isDensityFilePresent(archiveType)
     126             :        END IF
     127             : #ifdef CPP_MPI
     128          66 :        CALL MPI_BCAST(strho,1,MPI_LOGICAL,0,mpi%mpi_comm,ierr)
     129             : #endif
     130             :     ENDIF
     131          76 :     IF (strho) THEN
     132          56 :        strho=input%total 
     133          56 :        input%total = .FALSE.
     134             :        !
     135          56 :        CALL timestart("generation of start-density")
     136             :        CALL stden(mpi,sphhar,stars,atoms,sym,DIMENSION,vacuum,&
     137          56 :                   input,cell,xcpot,obsolete,noco,oneD)
     138             :        !
     139          56 :        input%total=strho
     140          56 :        CALL timestop("generation of start-density")
     141             :     END IF
     142          76 :     IF (mpi%irank == 0) THEN
     143             :        !
     144             :        !     --->generate spin polarized charge density
     145             :        !
     146          38 :        IF (input%swsp) THEN
     147           0 :           CALL timestart("optional: spin polarized density")
     148           0 :           CALL cdnsp(atoms,input,vacuum,sphhar,stars,sym,noco,oneD,cell,dimension)
     149             :           !
     150           0 :           CALL timestop("optional: spin polarized density")
     151             :        END IF
     152             :        !
     153             :        !     --->flip magnetic moments
     154             :        !
     155          38 :        IF (input%lflip) THEN
     156             : 
     157           0 :           CALL timestart('optional: flip magnetic moments')
     158           0 :           CALL flipcdn(atoms,input,vacuum,sphhar,stars,sym,noco,oneD,cell)
     159             :           !
     160           0 :           CALL timestop('optional: flip magnetic moments')
     161             :        END IF
     162             : 
     163             :  
     164             :  
     165          38 :        IF (input%l_bmt) THEN
     166           0 :           CALL bmt(stars,input,noco,atoms,sphhar,vacuum,cell,sym,oneD)
     167             :        ENDIF
     168             : 
     169             :     ENDIF ! mpi%irank == 0
     170             : 
     171          76 :     IF (sliceplot%iplot)      CALL juDFT_end("density plot o.k.",mpi%irank)
     172          72 :     IF (input%strho)          CALL juDFT_end("starting density generated",mpi%irank)
     173          66 :     IF (input%swsp)           CALL juDFT_end("spin polarised density generated",mpi%irank)
     174          66 :     IF (input%lflip)          CALL juDFT_end("magnetic moments flipped",mpi%irank)
     175          66 :     IF (input%l_bmt)          CALL juDFT_end('"cdnbmt" written',mpi%irank)
     176             :     
     177          66 :   END SUBROUTINE OPTIONAL
     178             : END MODULE m_optional

Generated by: LCOV version 1.13