1!
2! Copyright (C) 2001-2020 Quantum ESPRESSO group
3! This file is distributed under the terms of the
4! GNU General Public License. See the file `License'
5! in the root directory of the present distribution,
6! or http://www.gnu.org/copyleft/gpl.txt .
7!
8!-----------------------------------------------------------------------
9FUNCTION hubbard_occ( psd )
10  !-----------------------------------------------------------------------
11  !! This routine is a table (far from being complete) for the total number
12  !! of localized electrons in transition metals or rare earths (PPs usually
13  !! are built on non physical configurations).
14  !
15  USE kinds, ONLY: DP
16  !
17  IMPLICIT NONE
18  !
19  CHARACTER(LEN=2), INTENT(IN) :: psd
20  REAL(DP)                     :: hubbard_occ
21  !
22  SELECT CASE( TRIM(ADJUSTL(psd)) )
23     !
24     ! TRANSITION METALS
25     !
26     CASE( 'Ti', 'Zr', 'Hf' )
27        hubbard_occ = 2.d0
28        !
29     CASE( 'V', 'Nb', 'Ta' )
30        hubbard_occ = 3.d0
31     !
32     CASE( 'Cr', 'Mo', 'W' )
33        hubbard_occ = 5.d0
34     !
35     CASE( 'Mn', 'Tc', 'Re' )
36        hubbard_occ = 5.d0
37     !
38     CASE( 'Fe', 'Ru', 'Os' )
39        hubbard_occ = 6.d0
40     !
41     CASE( 'Co', 'Rh', 'Ir' )
42        hubbard_occ = 7.d0
43     !
44     CASE( 'Ni', 'Pd', 'Pt' )
45        hubbard_occ = 8.d0
46     !
47     CASE( 'Cu', 'Ag', 'Au' )
48        hubbard_occ = 10.d0
49     !
50     CASE( 'Zn', 'Cd', 'Hg' )
51        hubbard_occ = 10.d0
52     !
53     ! RARE EARTHS
54     !
55     CASE( 'Ce', 'Th' )
56        hubbard_occ = 2.d0
57     !
58     CASE( 'Pr', 'Pa' )
59        hubbard_occ = 3.d0
60     !
61     CASE( 'Nd', 'U'  )
62        hubbard_occ = 4.d0
63     !
64     CASE( 'Pm', 'Np' )
65        hubbard_occ = 5.d0
66     !
67     CASE( 'Sm', 'Pu' )
68        hubbard_occ = 6.d0
69     !
70     CASE( 'Eu', 'Am' )
71        hubbard_occ = 6.d0
72     !
73     CASE( 'Gd', 'Cm' )
74        hubbard_occ = 7.d0
75     !
76     CASE( 'Tb', 'Bk' )
77        hubbard_occ = 8.d0
78     !
79     CASE( 'Dy', 'Cf' )
80        hubbard_occ = 9.d0
81     !
82     CASE( 'Ho', 'Es' )
83        hubbard_occ =10.d0
84     !
85     CASE( 'Er', 'Fm' )
86        hubbard_occ =11.d0
87     !
88     CASE( 'Tm', 'Md' )
89        hubbard_occ =12.d0
90     !
91     CASE( 'Yb', 'No' )
92        hubbard_occ =13.d0
93     !
94     CASE( 'Lu', 'Lr' )
95        hubbard_occ =14.d0
96     !
97     ! OTHER ELEMENTS
98     !
99     CASE( 'C'  )
100        hubbard_occ = 2.d0
101     !
102     CASE( 'N', 'As' )
103        hubbard_occ = 3.d0
104     !
105     CASE( 'O'  )
106        hubbard_occ = 4.d0
107     !
108     CASE( 'H'  )
109        hubbard_occ = 1.d0
110     !
111     CASE( 'Ga', 'In'  )
112        hubbard_occ = 10.d0
113     !
114     !
115     ! NOT INSERTED
116     !
117     CASE DEFAULT
118        hubbard_occ = 0.d0
119        call errore ('hubbard_occ', 'pseudopotential not yet inserted', 1)
120     !
121  END SELECT
122  !
123  RETURN
124  !
125END FUNCTION hubbard_occ
126!-----------------------------------------------------------------------
127
128!-----------------------------------------------------------------------
129FUNCTION hubbard_occ_back ( psd )
130  !-----------------------------------------------------------------------
131  !
132  ! This routine is a table (far from being complete) for the total number
133  ! of localized electrons in transition metals or rare earths in the
134  ! background channel (PPs usually are built on non physical configurations)
135  !
136  USE kinds, ONLY: DP
137  !
138  IMPLICIT NONE
139  !
140  CHARACTER(LEN=2), INTENT(IN) :: psd
141  REAL(DP)                     :: hubbard_occ_back
142  !
143  SELECT CASE( TRIM(ADJUSTL(psd)) )
144     !
145     ! TRANSITION METALS
146     !
147     CASE('Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Ta', 'Ir', 'Sc', 'La', 'Lu')
148        hubbard_occ_back = 2.d0
149        !
150     CASE( 'Zn' , 'Se' )
151        hubbard_occ_back = 0.01d0
152     !
153     ! OTHER ELEMENTS
154     !
155     CASE( 'C', 'O', 'Si', 'Ga', 'As', 'Al','N', 'P', 'Ar' )
156        hubbard_occ_back = 2.d0
157     !
158     CASE( 'H', 'Li'  )
159        hubbard_occ_back = 0.d0
160     !
161     ! NOT INSERTED
162     !
163     CASE DEFAULT
164        hubbard_occ_back = 0.d0
165        call errore ('hubbard_occ_back', 'pseudopotential not yet inserted', 1)
166     !
167  END SELECT
168  !
169  RETURN
170  !
171END FUNCTION hubbard_occ_back
172!-----------------------------------------------------------------------
173