LCOV - code coverage report
Current view: top level - init/old_inp - setup.f90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 30 52 57.7 %
Date: 2019-09-08 04:53:50 Functions: 1 1 100.0 %

          Line data    Source code
       1             :       MODULE m_setup
       2             :       USE m_juDFT
       3             :       CONTAINS
       4          28 :         SUBROUTINE setup(mpi,atoms,kpts,DIMENSION,sphhar,&
       5             :                   obsolete,sym,stars,oneD, input,noco,vacuum,cell,xcpot, sliceplot,enpara,l_opti)
       6             :           !
       7             :           !----------------------------------------
       8             :           ! this routine is called by: fleur.F
       9             :           !
      10             :           ! setup --+
      11             :           !         +-- spg2set
      12             :           !         +-- local_sym -+- ptsym
      13             :           !         |              +- lhcal -+- gaussp
      14             :           !         |                        +- gtest
      15             :           !         |                        +- ylm4
      16             :           !         +-- strgn1 -+- boxdim
      17             :           !         |           +- sort
      18             :           !         |           +- dset
      19             :           !         |           +- spgrot
      20             :           !         |           +- unor2or
      21             :           !         +-- mapatom -+- dotset
      22             :           !         |            +- dotirl
      23             :           !         +-- inpeig -- gkptwgt
      24             :           !         +-- gaunt2 -- grule
      25             :           !         +-- prp_qfft -+- boxdim
      26             :           !         |             +- ifft235
      27             :           !         +-- prp_xcfft -+- boxdim
      28             :           !         |              +- ifft235
      29             :           !         +-- stepf
      30             :           !         +-- convn
      31             :           !         +-- efield
      32             :           !----------------------------------------
      33             : 
      34             :           !
      35             :           USE m_types
      36             :           USE m_localsym
      37             :           USE m_rwsymfile
      38             :           USE m_spg2set
      39             :           USE m_dwigner
      40             :           USE m_strgn
      41             :           USE m_stepf
      42             :           USE m_cdn_io
      43             :           USE m_mapatom
      44             :           USE m_convn
      45             :           USE m_prpqfft
      46             :           USE m_prpxcfft
      47             :           USE m_inpeig
      48             :           USE m_efield
      49             :           USE m_ylm
      50             :           !-odim
      51             :           USE m_od_mapatom
      52             :           USE m_od_chisym
      53             :           USE m_od_strgn1
      54             :           !+odim
      55             :           IMPLICIT NONE
      56             :           !     ..
      57             :           !     .. Scalars Arguments ..
      58             :           TYPE(t_mpi),INTENT(IN)         :: mpi
      59             :           TYPE(t_atoms),INTENT(INOUT)    :: atoms
      60             :           TYPE(t_kpts),INTENT(INOUT)     :: kpts
      61             :           TYPE(t_dimension),INTENT(INOUT):: DIMENSION
      62             :           TYPE(t_sphhar),INTENT(INOUT)   :: sphhar
      63             :           TYPE(t_obsolete),INTENT(INOUT) :: obsolete
      64             :           TYPE(t_sym),INTENT(INOUT)      :: sym
      65             :           TYPE(t_stars),INTENT(INOUT)    :: stars
      66             :           TYPE(t_oneD),INTENT(INOUT)     :: oneD
      67             :           TYPE(t_input),INTENT(INOUT)    :: input
      68             :           TYPE(t_noco),INTENT(INOUT)     :: noco
      69             :           TYPE(t_vacuum),INTENT(INOUT)   :: vacuum
      70             :           TYPE(t_cell),INTENT(INOUT)     :: cell
      71             :           CLASS(t_xcpot),INTENT(INOUT)   :: xcpot
      72             :           TYPE(t_sliceplot),INTENT(INOUT):: sliceplot
      73             :           TYPE(t_enpara),INTENT(INOUT)   :: enpara
      74             :           LOGICAL, INTENT (IN) :: l_opti  
      75             :           !     ..
      76             :           !     .. Local Scalars ..
      77             :           REAL       :: rkmaxx
      78             :           INTEGER    :: ntp1,ii,i,j,n1,n2,na,np1,n
      79          28 :           INTEGER, ALLOCATABLE :: lmx1(:), nq1(:), nlhtp1(:)
      80             :           !
      81          28 :         IF ( mpi%irank == 0 ) THEN
      82          14 :           IF (sym%namgrp.EQ.'any ') THEN
      83           7 :              CALL rw_symfile('R',94,'sym.out',sym%nop,cell%bmat, sym%mrot,sym%tau,sym%nop,sym%nop2,sym%symor)
      84             :           ELSE
      85           7 :              CALL spg2set(sym%nop,sym%zrfs,sym%invs,sym%namgrp,cell%latnam, sym%mrot,sym%tau,sym%nop2,sym%symor)
      86             :           ENDIF
      87          14 :           IF (input%film.AND..NOT.sym%symor) CALL juDFT_warn("Films&Symor",hint&
      88           0 :                &     ="Films should be symmorphic",calledby ='setup')
      89          14 :           CALL ylmnorm_init(atoms%lmaxd)
      90          14 :           IF (.NOT.oneD%odd%d1) THEN
      91             :              CALL local_sym(&
      92             :                   atoms%lmaxd,atoms%lmax,sym%nop,sym%mrot,sym%tau,&
      93             :                   atoms%nat,atoms%ntype,atoms%neq,cell%amat,cell%bmat,atoms%taual,&
      94             :                   sphhar%nlhd,sphhar%memd,sphhar%ntypsd,.FALSE.,&
      95          14 :                   atoms%nlhtyp,atoms%ntypsy,sphhar%nlh,sphhar%llh,sphhar%nmem,sphhar%mlh,sphhar%clnu)
      96          14 :              sym%nsymt = sphhar%ntypsd
      97             : 
      98          14 :              oneD%mrot1(:,:,:) = sym%mrot(:,:,:)
      99          14 :              oneD%tau1(:,:) = sym%tau(:,:)
     100             :           ELSEIF (oneD%odd%d1) THEN
     101           0 :              CALL od_chisym(oneD%odd,oneD%mrot1,oneD%tau1,sym%zrfs,sym%invs,sym%invs2,cell%amat)
     102           0 :              ntp1 = atoms%nat
     103           0 :              ALLOCATE (nq1(ntp1),lmx1(ntp1),nlhtp1(ntp1))
     104           0 :              ii = 1
     105           0 :              DO i = 1,atoms%ntype
     106           0 :                 DO j = 1,atoms%neq(i)
     107           0 :                    nq1(ii) = 1
     108           0 :                    lmx1(ii) = atoms%lmax(i)
     109           0 :                    ii = ii + 1
     110             :                 END DO
     111             :              END DO
     112             :              CALL local_sym(&
     113             :                   atoms%lmaxd,lmx1,sym%nop,sym%mrot,sym%tau,&
     114             :                   atoms%nat,ntp1,nq1,cell%amat,cell%bmat,atoms%taual,&
     115             :                   sphhar%nlhd,sphhar%memd,sphhar%ntypsd,.FALSE.,&
     116           0 :                   nlhtp1,atoms%ntypsy,sphhar%nlh,sphhar%llh,sphhar%nmem,sphhar%mlh,sphhar%clnu)
     117             : 
     118           0 :              sym%nsymt = sphhar%ntypsd
     119           0 :              ii = 1
     120           0 :              DO i = 1,atoms%ntype
     121           0 :                 atoms%nlhtyp(i) = nlhtp1(ii)
     122           0 :                 ii = ii + atoms%neq(i)
     123             :              END DO
     124           0 :              DEALLOCATE (lmx1,nlhtp1)
     125             :           END IF
     126             :           !+odim
     127          14 :           IF (atoms%n_u.GT.0) THEN
     128           0 :              CALL d_wigner(sym%nop,sym%mrot,cell%bmat,3, sym%d_wgn)
     129             :           ENDIF
     130             :           !
     131             :           !+odim
     132          14 :           IF (.NOT.oneD%odd%d1) THEN
     133          14 :              CALL mapatom(sym,atoms, cell,input, noco)
     134          14 :              oneD%ngopr1(1:atoms%nat) = atoms%ngopr(1:atoms%nat)
     135             :              !        DEALLOCATE ( nq1 )
     136             :           ELSE
     137             :              !-odim
     138           0 :              CALL juDFT_error("The oneD version is broken here. Compare call to mapatom with old version")
     139           0 :              CALL mapatom(sym,atoms, cell,input, noco)
     140           0 :              CALL od_mapatom(oneD,atoms,sym,cell)
     141             :           END IF
     142             : 
     143             :           ! Store structure data
     144             : 
     145          14 :           CALL storeStructureIfNew(input,stars, atoms, cell, vacuum, oneD, sym,mpi,sphhar,noco)
     146             : 
     147             :           !+odim
     148          14 :           IF (input%film.OR.(sym%namgrp.NE.'any ')) THEN
     149           8 :              CALL strgn1(stars,sym,atoms, vacuum,sphhar, input,cell,xcpot)
     150             :              !-odim
     151           8 :              IF (oneD%odd%d1) THEN
     152           0 :                 CALL od_strgn1(xcpot,cell,sym,oneD)
     153             :              END IF
     154             :              !+odim
     155             :           ELSE
     156           6 :              CALL strgn2(stars,sym,atoms, vacuum,sphhar, input,cell,xcpot)
     157             :           ENDIF
     158             :           !
     159             :           !IF (.NOT.l_opti) THEN
     160          14 :              CALL inpeig(atoms,cell,input,oneD%odd%d1,kpts,enpara)
     161             :           !ENDIF
     162             :           !
     163             :           !-----> prepare dimensions for charge density fft-box in pwden.f
     164             :           !
     165          14 :           CALL  prp_qfft(stars, cell,noco, input)
     166             : 
     167             :           !
     168             :           !-----> prepare dimensions for xc fft-box in visxc(g).f
     169             :           !
     170             :           
     171             :          
     172          14 :           CALL  prp_xcfft(stars,input, cell, xcpot)
     173             :           !
     174             :         ENDIF ! (mpi%irank == 0)
     175          28 :           CALL stepf(sym,stars,atoms,oneD, input,cell, vacuum,mpi)
     176          28 :           IF (.NOT.sliceplot%iplot) THEN
     177          28 :              IF ( mpi%irank == 0 ) THEN
     178          14 :                 CALL convn(DIMENSION,atoms,stars)
     179             : 
     180             :                 !--->    set up electric field parameters (if needed) 
     181             :                 ! CALL e_field(atoms, DIMENSION, stars, sym, vacuum, cell, input,field)
     182             :              ENDIF
     183             :           ENDIF
     184             : 
     185          28 :         END SUBROUTINE setup
     186             :       END MODULE m_setup

Generated by: LCOV version 1.13