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_radovlp
8 : CONTAINS
9 0 : SUBROUTINE rad_ovlp(atoms,usdus,input,hub1data,vr,epar, uun21,udn21,dun21,ddn21)
10 : !***********************************************************************
11 : ! calculates the overlap of the radial basis functions with different
12 : ! spin directions. These overlapp integrals are needed to calculate
13 : ! the contribution to the hamiltonian from the constant constraint
14 : ! B-field.
15 : !
16 : ! Philipp Kurz 2000-04
17 : !***********************************************************************
18 :
19 : USE m_int21
20 : USE m_radfun
21 : USE m_types
22 : IMPLICIT NONE
23 : TYPE(t_input),INTENT(IN) :: input
24 : TYPE(t_atoms),INTENT(IN) :: atoms
25 : TYPE(t_hub1data), INTENT(IN) :: hub1data
26 : TYPE(t_usdus),INTENT(INOUT):: usdus
27 :
28 : ! .. Array Arguments ..
29 : REAL, INTENT (IN):: epar(0:,:,:)!(0:atoms%lmaxd,atoms%ntype,input%jspins)
30 : REAL, INTENT (IN):: vr(:,0:,:,:)!(atoms%jmtd,0:sphhar%nlhd,atoms%ntype,input%jspins)
31 : REAL, INTENT (OUT):: uun21(0:,:),udn21(0:,:)!(0:atoms%lmaxd,atoms%ntype)
32 : REAL, INTENT (OUT):: dun21(0:,:),ddn21(0:,:)!(0:atoms%lmaxd,atoms%ntype)
33 : ! ..
34 : ! .. Local Scalars ..
35 : INTEGER itype,l,ispin,noded,nodeu,i
36 : REAL wronk
37 : LOGICAL l_hia
38 : ! ..
39 : ! .. Local Arrays ..
40 0 : REAL :: f(atoms%jmtd,2,0:atoms%lmaxd,input%jspins)
41 0 : REAL :: g(atoms%jmtd,2,0:atoms%lmaxd,input%jspins)
42 0 : REAL :: vrTmp(atoms%jmtd)
43 : ! ..
44 0 : DO itype = 1,atoms%ntype
45 0 : DO l = 0,atoms%lmax(itype)
46 0 : l_hia=.FALSE.
47 0 : DO i = atoms%n_u+1, atoms%n_u+atoms%n_hia
48 0 : IF(atoms%lda_u(i)%atomType.EQ.itype.AND.atoms%lda_u(i)%l.EQ.l) THEN
49 0 : l_hia=.TRUE.
50 : ENDIF
51 : ENDDO
52 0 : DO ispin = 1,input%jspins
53 :
54 : !In the case of a spin-polarized calculation with Hubbard 1 we want to treat
55 : !the correlated orbitals with a non-spin-polarized basis
56 0 : IF(l_hia.AND.input%jspins.EQ.2 .AND. hub1data%l_performSpinavg) THEN
57 0 : vrTmp = (vr(:,0,iType,1) + vr(:,0,iType,2))/2.0
58 : ELSE
59 0 : vrTmp = vr(:,0,iType,ispin)
60 : ENDIF
61 :
62 : CALL radfun(l,iType,ispin,epar(l,iType,ispin),vrTmp,atoms,&
63 0 : f(1,1,l,ispin),g(1,1,l,ispin),usdus,nodeu,noded,wronk)
64 :
65 : ENDDO
66 0 : CALL int_21(f,g,atoms,itype,l,uun21,udn21,dun21,ddn21)
67 : ENDDO
68 : ENDDO
69 :
70 0 : END SUBROUTINE rad_ovlp
71 : END module
72 :
|