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_wann_orbcomp
8 : !*************************************************************************
9 : ! Compute matrix elements of the first 16 angular momentum projectors
10 : ! within the MT-spheres. This is done separately for each atom type.
11 : !
12 : ! These are:
13 : ! 1: |s><s|
14 : ! 2: |p_x><p_x|
15 : ! 3: |p_y><p_y|
16 : ! 4: |p_z><p_z|
17 : ! 5: |d_xy><d_xy|
18 : ! 6: |d_yz><d_yz|
19 : ! 7: |d_zx><d_zx|
20 : ! 8: |d_x2-y2><d_x2-y2|
21 : ! 9: |d_z2><dz2|
22 : ! 10: |f><f|
23 : ! 11: |f><f|
24 : ! 12: |f><f|
25 : ! 13: |f><f|
26 : ! 14: |f><f|
27 : ! 15: |f><f|
28 : ! 16: |f><f|
29 : !
30 : ! Based on code in orb_comp by Yury Koroteev
31 : !
32 : ! Frank Freimuth
33 : !***********************************************************************
34 : CONTAINS
35 0 : SUBROUTINE wann_orbcomp(atoms,usdus,jspin,&
36 0 : acof,bcof,ccof,&
37 : num_orbs,&
38 0 : orbs,&
39 : l_oc_f,&
40 0 : mmn)
41 : USE m_types
42 : IMPLICIT NONE
43 : ! .. scalar arguments ..
44 : TYPE(t_atoms),INTENT(in) :: atoms
45 : TYPE(t_usdus),INTENT(IN) :: usdus
46 : INTEGER,INTENT(IN) :: jspin
47 : ! .. array arguments ..
48 : COMPLEX, INTENT (in) :: ccof(-atoms%llod:,:,:,:) !ccof(-llod:llod,noccbd,nlod,natd)
49 : COMPLEX, INTENT (in) :: acof(:,0:,:)!acof(noccbd,0:lmd,natd)
50 : COMPLEX, INTENT (in) :: bcof(:,0:,:)!bcof(noccbd,0:lmd,natd)
51 : COMPLEX, INTENT (inout) :: mmn(:,:,:,:)!mmn(16,noccbd,noccbd,ntype)
52 :
53 : INTEGER, INTENT (in) :: num_orbs
54 : INTEGER, INTENT (in) :: orbs(:)
55 : LOGICAL, INTENT (in) :: l_oc_f
56 :
57 : ! ..Local Scalars
58 :
59 0 : COMPLEX ca00(SIZE(acof,1))
60 0 : COMPLEX ca01(SIZE(acof,1))
61 0 : COMPLEX ca02(SIZE(acof,1))
62 0 : COMPLEX ca03(SIZE(acof,1))
63 0 : COMPLEX ca04(SIZE(acof,1))
64 0 : COMPLEX ca05(SIZE(acof,1))
65 0 : COMPLEX ca06(SIZE(acof,1))
66 0 : COMPLEX ca07(SIZE(acof,1))
67 0 : COMPLEX ca08(SIZE(acof,1))
68 0 : COMPLEX ca09(SIZE(acof,1))
69 0 : COMPLEX ca10(SIZE(acof,1))
70 0 : COMPLEX ca11(SIZE(acof,1))
71 0 : COMPLEX ca12(SIZE(acof,1))
72 0 : COMPLEX ca13(SIZE(acof,1))
73 0 : COMPLEX ca14(SIZE(acof,1))
74 0 : COMPLEX ca15(SIZE(acof,1))
75 :
76 0 : COMPLEX cb00(SIZE(acof,1))
77 0 : COMPLEX cb01(SIZE(acof,1))
78 0 : COMPLEX cb02(SIZE(acof,1))
79 0 : COMPLEX cb03(SIZE(acof,1))
80 0 : COMPLEX cb04(SIZE(acof,1))
81 0 : COMPLEX cb05(SIZE(acof,1))
82 0 : COMPLEX cb06(SIZE(acof,1))
83 0 : COMPLEX cb07(SIZE(acof,1))
84 0 : COMPLEX cb08(SIZE(acof,1))
85 0 : COMPLEX cb09(SIZE(acof,1))
86 0 : COMPLEX cb10(SIZE(acof,1))
87 0 : COMPLEX cb11(SIZE(acof,1))
88 0 : COMPLEX cb12(SIZE(acof,1))
89 0 : COMPLEX cb13(SIZE(acof,1))
90 0 : COMPLEX cb14(SIZE(acof,1))
91 0 : COMPLEX cb15(SIZE(acof,1))
92 :
93 0 : COMPLEX cc00(SIZE(acof,1))
94 0 : COMPLEX cc01(SIZE(acof,1))
95 0 : COMPLEX cc02(SIZE(acof,1))
96 0 : COMPLEX cc03(SIZE(acof,1))
97 0 : COMPLEX cc04(SIZE(acof,1))
98 0 : COMPLEX cc05(SIZE(acof,1))
99 0 : COMPLEX cc06(SIZE(acof,1))
100 0 : COMPLEX cc07(SIZE(acof,1))
101 0 : COMPLEX cc08(SIZE(acof,1))
102 0 : COMPLEX cc09(SIZE(acof,1))
103 0 : COMPLEX cc10(SIZE(acof,1))
104 0 : COMPLEX cc11(SIZE(acof,1))
105 0 : COMPLEX cc12(SIZE(acof,1))
106 0 : COMPLEX cc13(SIZE(acof,1))
107 0 : COMPLEX cc14(SIZE(acof,1))
108 0 : COMPLEX cc15(SIZE(acof,1))
109 :
110 :
111 : INTEGER :: lo,orbi,rep
112 : REAL :: ddn0,ddn1,ddn2,ddn3
113 : INTEGER :: mt,ityp,n,m,mt1,l
114 : REAL :: h,g,c3,c5
115 : LOGICAL :: l_doit
116 : ! ..
117 : ! ..
118 : !
119 : DATA h/0.50/ g/0.0625/
120 : !****************************************************
121 0 : c5 = SQRT(5.0)
122 0 : c3 = SQRT(3.0)
123 : !
124 0 : mt=0
125 0 : DO ityp = 1,atoms%ntype
126 0 : DO rep=1,atoms%neq(ityp)
127 0 : mt=mt+1
128 :
129 0 : l_doit=.FALSE.
130 0 : DO l=1,num_orbs
131 0 : IF(orbs(l)==mt)THEN
132 0 : l_doit=.TRUE.
133 0 : orbi=l
134 : ENDIF
135 : ENDDO
136 0 : IF(.NOT.l_doit)CYCLE
137 :
138 0 : ddn0 = usdus%ddn(0,ityp,jspin)
139 0 : ddn1 = usdus%ddn(1,ityp,jspin)
140 0 : ddn2 = usdus%ddn(2,ityp,jspin)
141 0 : ddn3 = usdus%ddn(3,ityp,jspin)
142 0 : DO n=1,SIZE(acof,1)
143 : !
144 : !acof
145 : ! s-states
146 0 : ca00(n)=acof(n,0,mt)
147 : ! p-states
148 0 : ca01(n) = acof(n,1,mt) - acof(n,3,mt)
149 0 : ca02(n) = acof(n,1,mt) + acof(n,3,mt)
150 0 : ca03(n) = acof(n,2,mt)
151 : ! d-states
152 0 : ca04(n) = acof(n,4,mt) - acof(n,8,mt)
153 0 : ca05(n) = acof(n,5,mt) + acof(n,7,mt)
154 0 : ca06(n) = acof(n,5,mt) - acof(n,7,mt)
155 0 : ca07(n) = acof(n,4,mt) + acof(n,8,mt)
156 0 : ca08(n) = acof(n,6,mt)
157 : !
158 : ! f-states: a cubic set (cub)
159 : !
160 : ca09(n) = ( acof(n,9,mt) - acof(n,15,mt) )*c5 -&
161 0 : ( acof(n,11,mt) - acof(n,13,mt) )*c3
162 : ca10(n) = ( acof(n,9,mt) + acof(n,15,mt) )*c5 +&
163 0 : ( acof(n,11,mt) + acof(n,13,mt) )*c3
164 0 : ca11(n) = acof(n,12,mt)
165 : ca12(n) = ( acof(n,9,mt) + acof(n,15,mt) )*c3 -&
166 0 : ( acof(n,11,mt) + acof(n,13,mt) )*c5
167 0 : ca13(n) = acof(n,10,mt) + acof(n,14,mt)
168 : ca14(n) = ( acof(n,9,mt) - acof(n,15,mt) )*c3 +&
169 0 : ( acof(n,11,mt) - acof(n,13,mt) )*c5
170 0 : ca15(n) = acof(n,10,mt) - acof(n,14,mt)
171 :
172 : !
173 : !bcof
174 : ! s-states
175 0 : cb00(n) = bcof(n,0,mt)
176 : ! p-states
177 0 : cb01(n) = bcof(n,1,mt) - bcof(n,3,mt)
178 0 : cb02(n) = bcof(n,1,mt) + bcof(n,3,mt)
179 0 : cb03(n) = bcof(n,2,mt)
180 : ! d-states
181 0 : cb04(n) = bcof(n,4,mt) - bcof(n,8,mt)
182 0 : cb05(n) = bcof(n,5,mt) + bcof(n,7,mt)
183 0 : cb06(n) = bcof(n,5,mt) - bcof(n,7,mt)
184 0 : cb07(n) = bcof(n,4,mt) + bcof(n,8,mt)
185 0 : cb08(n) = bcof(n,6,mt)
186 : !
187 : ! f-states: a cubic set (cub)
188 : !
189 : cb09(n) = ( bcof(n,9,mt) - bcof(n,15,mt) )*c5 -&
190 0 : ( bcof(n,11,mt) - bcof(n,13,mt) )*c3
191 : cb10(n) = ( bcof(n,9,mt) + bcof(n,15,mt) )*c5 +&
192 0 : ( bcof(n,11,mt) + bcof(n,13,mt) )*c3
193 0 : cb11(n) = bcof(n,12,mt)
194 : cb12(n) = ( bcof(n,9,mt) + bcof(n,15,mt) )*c3 -&
195 0 : ( bcof(n,11,mt) + bcof(n,13,mt) )*c5
196 0 : cb13(n) = bcof(n,10,mt) + bcof(n,14,mt)
197 : cb14(n) = ( bcof(n,9,mt) - bcof(n,15,mt) )*c3 +&
198 0 : ( bcof(n,11,mt) - bcof(n,13,mt) )*c5
199 0 : cb15(n) = bcof(n,10,mt) - bcof(n,14,mt)
200 : ENDDO !n
201 :
202 0 : DO n=1,SIZE(acof,1)
203 0 : DO m=1,SIZE(acof,1)
204 : ! s
205 : mmn(1,orbi,m,n) = ca00(n)*CONJG(ca00(m)) &
206 0 : + cb00(n)*CONJG(cb00(m))*ddn0
207 : ! p
208 : mmn(2,orbi,m,n) = ( ca01(n)*CONJG(ca01(m)) &
209 0 : + cb01(n)*CONJG(cb01(m))*ddn1 )*h
210 : mmn(3,orbi,m,n) = ( ca02(n)*CONJG(ca02(m)) &
211 0 : + cb02(n)*CONJG(cb02(m))*ddn1 )*h
212 : mmn(4,orbi,m,n) = ca03(n)*CONJG(ca03(m)) &
213 0 : + cb03(n)*CONJG(cb03(m))*ddn1
214 : ! d
215 : mmn(5,orbi,m,n) = ( ca04(n)*CONJG(ca04(m)) &
216 0 : + cb04(n)*CONJG(cb04(m))*ddn2 )*h
217 : mmn(6,orbi,m,n) = ( ca05(n)*CONJG(ca05(m)) &
218 0 : + cb05(n)*CONJG(cb05(m))*ddn2 )*h
219 : mmn(7,orbi,m,n) = ( ca06(n)*CONJG(ca06(m)) &
220 0 : + cb06(n)*CONJG(cb06(m))*ddn2 )*h
221 : mmn(8,orbi,m,n) = ( ca07(n)*CONJG(ca07(m)) &
222 0 : + cb07(n)*CONJG(cb07(m))*ddn2 )*h
223 : mmn(9,orbi,m,n) = ca08(n)*CONJG(ca08(m)) &
224 0 : + cb08(n)*CONJG(cb08(m))*ddn2
225 : ! f: a cubic set
226 0 : IF(l_oc_f)THEN
227 : mmn(10,orbi,m,n) = ( ca09(n)*CONJG(ca09(m)) &
228 0 : + cb09(n)*CONJG(cb09(m))*ddn3 )*g
229 : mmn(11,orbi,m,n) = ( ca10(n)*CONJG(ca10(m)) &
230 0 : + cb10(n)*CONJG(cb10(m))*ddn3 )*g
231 : mmn(12,orbi,m,n) = ca11(n)*CONJG(ca11(m)) &
232 0 : + cb11(n)*CONJG(cb11(m))*ddn3
233 : mmn(13,orbi,m,n) = ( ca12(n)*CONJG(ca12(m)) &
234 0 : + cb12(n)*CONJG(cb12(m))*ddn3 )*g
235 : mmn(14,orbi,m,n) = ( ca13(n)*CONJG(ca13(m)) &
236 0 : + cb13(n)*CONJG(cb13(m))*ddn3 )*h
237 : mmn(15,orbi,m,n) = ( ca14(n)*CONJG(ca14(m)) &
238 0 : + cb14(n)*CONJG(cb14(m))*ddn3 )*g
239 : mmn(16,orbi,m,n) = ( ca15(n)*CONJG(ca15(m)) &
240 0 : + cb15(n)*CONJG(cb15(m))*ddn3 )*h
241 : ENDIF !l_oc_f
242 : ENDDO !m
243 : ENDDO !n
244 :
245 : !--------------------------------------------------------------------
246 : !ccof ( contributions from local orbitals )
247 : !
248 0 : lo_loop:DO lo = 1,atoms%nlo(ityp)
249 0 : l = atoms%llo(lo,ityp)
250 : !lo-s
251 0 : IF ( l.EQ.0 ) THEN
252 0 : DO n=1,SIZE(acof,1)
253 0 : cc00(n) = ccof(0,n,lo,mt)
254 : ENDDO
255 : !
256 0 : DO n=1,SIZE(acof,1)
257 0 : DO m=1,SIZE(acof,1)
258 : mmn(1,orbi,m,n)=mmn(1,orbi,m,n)+&
259 : ( ca00(n)*CONJG(cc00(m)) + &
260 : cc00(n)*CONJG(ca00(m)) )*usdus%uulon(lo,ityp,jspin) + &
261 : ( cb00(n)*CONJG(cc00(m)) + &
262 : cc00(n)*CONJG(cb00(m)) )*usdus%dulon(lo,ityp,jspin) +&
263 0 : cc00(n)*CONJG(cc00(m))*usdus%uloulopn(lo,lo,ityp,jspin)
264 : ENDDO !m
265 : ENDDO !n
266 0 : CYCLE lo_loop
267 : ENDIF
268 : !lo-p
269 0 : IF ( l.EQ.1 ) THEN
270 0 : DO n=1,SIZE(acof,1)
271 0 : cc01(n) = ccof(-1,n,lo,mt) - ccof(1,n,lo,mt)
272 0 : cc02(n) = ccof(-1,n,lo,mt) + ccof(1,n,lo,mt)
273 0 : cc03(n) = ccof( 0,n,lo,mt)
274 : ENDDO
275 0 : DO n=1,SIZE(acof,1)
276 0 : DO m=1,SIZE(acof,1)
277 : mmn(2,orbi,m,n) = mmn(2,orbi,m,n) +&
278 : ( ( ca01(n)*CONJG(cc01(m)) + &
279 : cc01(n)*CONJG(ca01(m)) )*usdus%uulon(lo,ityp,jspin) +&
280 : ( cb01(n)*CONJG(cc01(m)) + &
281 : cc01(n)*CONJG(cb01(m)) )*usdus%dulon(lo,ityp,jspin) +&
282 0 : cc01(n)*CONJG(cc01(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
283 :
284 : mmn(3,orbi,m,n) = mmn(3,orbi,m,n) +&
285 : ( ( ca02(n)*CONJG(cc02(m)) + &
286 : cc02(n)*CONJG(ca02(m)) )*usdus%uulon(lo,ityp,jspin) +&
287 : ( cb02(n)*CONJG(cc02(m)) + &
288 : cc02(n)*CONJG(cb02(m)) )*usdus%dulon(lo,ityp,jspin) +&
289 0 : cc02(n)*CONJG(cc02(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
290 :
291 : mmn(4,orbi,m,n) = mmn(4,orbi,m,n) +&
292 : ( ca03(n)*CONJG(cc03(m)) + &
293 : cc03(n)*CONJG(ca03(m)) )*usdus%uulon(lo,ityp,jspin) +&
294 : ( cb03(n)*CONJG(cc03(m)) + &
295 : cc03(n)*CONJG(cb03(m)) )*usdus%dulon(lo,ityp,jspin) +&
296 0 : cc03(n)*CONJG(cc03(m))*usdus%uloulopn(lo,lo,ityp,jspin)
297 :
298 :
299 : ENDDO !m
300 : ENDDO !n
301 0 : CYCLE lo_loop
302 : ENDIF
303 : !lo-d
304 0 : IF ( l.EQ.2 ) THEN
305 0 : DO n=1,SIZE(acof,1)
306 0 : cc04(n) = ccof(-2,n,lo,mt) - ccof(2,n,lo,mt)
307 0 : cc05(n) = ccof(-1,n,lo,mt) + ccof(1,n,lo,mt)
308 0 : cc06(n) = ccof(-1,n,lo,mt) - ccof(1,n,lo,mt)
309 0 : cc07(n) = ccof(-2,n,lo,mt) + ccof(2,n,lo,mt)
310 0 : cc08(n) = ccof( 0,n,lo,mt)
311 : ENDDO !n
312 : !
313 0 : DO n=1,SIZE(acof,1)
314 0 : DO m=1,SIZE(acof,1)
315 : mmn(5,orbi,m,n) = mmn(5,orbi,m,n) +&
316 : (( ca04(n)*CONJG(cc04(m)) + &
317 : cc04(n)*CONJG(ca04(m)) )*usdus%uulon(lo,ityp,jspin) +&
318 : ( cb04(n)*CONJG(cc04(m)) + &
319 : cc04(n)*CONJG(cb04(m)) )*usdus%dulon(lo,ityp,jspin) +&
320 0 : cc04(n)*CONJG(cc04(m))*usdus%uloulopn(lo,lo,ityp,jspin))*h
321 : mmn(6,orbi,m,n) = mmn(6,orbi,m,n) +&
322 : (( ca05(n)*CONJG(cc05(m)) + &
323 : cc05(n)*CONJG(ca05(m)) )*usdus%uulon(lo,ityp,jspin) +&
324 : ( cb05(n)*CONJG(cc05(m)) + &
325 : cc05(n)*CONJG(cb05(m)) )*usdus%dulon(lo,ityp,jspin) +&
326 0 : cc05(n)*CONJG(cc05(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
327 : mmn(7,orbi,m,n) = mmn(7,orbi,m,n) +&
328 : (( ca06(n)*CONJG(cc06(m)) + &
329 : cc06(n)*CONJG(ca06(m)) )*usdus%uulon(lo,ityp,jspin) +&
330 : ( cb06(n)*CONJG(cc06(m)) + &
331 : cc06(n)*CONJG(cb06(m)) )*usdus%dulon(lo,ityp,jspin) +&
332 0 : cc06(n)*CONJG(cc06(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
333 : mmn(8,orbi,m,n) = mmn(8,orbi,m,n) +&
334 : (( ca07(n)*CONJG(cc07(m)) + &
335 : cc07(n)*CONJG(ca07(m)) )*usdus%uulon(lo,ityp,jspin) +&
336 : ( cb07(n)*CONJG(cc07(m)) + &
337 : cc07(n)*CONJG(cb07(m)) )*usdus%dulon(lo,ityp,jspin) +&
338 0 : cc07(n)*CONJG(cc07(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
339 : mmn(9,orbi,m,n) = mmn(9,orbi,m,n) +&
340 : ( ca08(n)*CONJG(cc08(m)) + &
341 : cc08(n)*CONJG(ca08(m)) )*usdus%uulon(lo,ityp,jspin) +&
342 : ( cb08(n)*CONJG(cc08(m)) + &
343 : cc08(n)*CONJG(cb08(m)) )*usdus%dulon(lo,ityp,jspin) +&
344 0 : cc08(n)*CONJG(cc08(m))*usdus%uloulopn(lo,lo,ityp,jspin)
345 : ENDDO !m
346 : ENDDO !n
347 0 : CYCLE lo_loop
348 : ENDIF
349 : !lo-f
350 0 : IF ( l.EQ.3 .AND. l_oc_f) THEN
351 : !
352 : ! a cubic set (cub)
353 : !
354 0 : DO n=1,SIZE(acof,1)
355 : cc09(n) = ( ccof(-3,n,lo,mt) - ccof(3,n,lo,mt) )*c5 -&
356 0 : ( ccof(-1,n,lo,mt) - ccof(1,n,lo,mt) )*c3
357 : cc10(n) = ( ccof(-3,n,lo,mt) + ccof(3,n,lo,mt) )*c5 +&
358 0 : ( ccof(-1,n,lo,mt) + ccof(1,n,lo,mt) )*c3
359 0 : cc11(n) = ccof( 0,n,lo,mt)
360 : cc12(n) = ( ccof(-3,n,lo,mt) + ccof(3,n,lo,mt) )*c3 -&
361 0 : ( ccof(-1,n,lo,mt) + ccof(1,n,lo,mt) )*c5
362 0 : cc13(n) = ccof(-2,n,lo,mt) + ccof(2,n,lo,mt)
363 : cc14(n) = ( ccof(-3,n,lo,mt) - ccof(3,n,lo,mt) )*c3 +&
364 0 : ( ccof(-1,n,lo,mt) - ccof(1,n,lo,mt) )*c5
365 0 : cc15(n) = ccof(-2,n,lo,mt) - ccof(2,n,lo,mt)
366 : ENDDO !n
367 0 : DO n=1,SIZE(acof,1)
368 0 : DO m=1,SIZE(acof,1)
369 : mmn(10,orbi,m,n) = mmn(10,orbi,m,n) +&
370 : (( ca09(n)*CONJG(cc09(m)) + &
371 : cc09(n)*CONJG(ca09(m)) )*usdus%uulon(lo,ityp,jspin) +&
372 : ( cb09(n)*CONJG(cc09(m)) + &
373 : cc09(n)*CONJG(cb09(m)) )*usdus%dulon(lo,ityp,jspin) +&
374 0 : cc09(n)*CONJG(cc09(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*g
375 : mmn(11,orbi,m,n) = mmn(11,orbi,m,n) +&
376 : (( ca10(n)*CONJG(cc10(m)) + &
377 : cc10(n)*CONJG(ca10(m)) )*usdus%uulon(lo,ityp,jspin) +&
378 : ( cb10(n)*CONJG(cc10(m)) + &
379 : cc10(n)*CONJG(cb10(m)) )*usdus%dulon(lo,ityp,jspin) +&
380 0 : cc10(n)*CONJG(cc10(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*g
381 : mmn(12,orbi,m,n) = mmn(12,orbi,m,n) +&
382 : ( ca11(n)*CONJG(cc11(m)) + &
383 : cc11(n)*CONJG(ca11(m)) )*usdus%uulon(lo,ityp,jspin) +&
384 : ( cb11(n)*CONJG(cc11(m)) + &
385 : cc11(n)*CONJG(cb11(m)) )*usdus%dulon(lo,ityp,jspin) +&
386 0 : cc11(n)*CONJG(cc11(m))*usdus%uloulopn(lo,lo,ityp,jspin)
387 : mmn(13,orbi,m,n) = mmn(13,orbi,m,n) +&
388 : (( ca12(n)*CONJG(cc12(m)) + &
389 : cc12(n)*CONJG(ca12(m)) )*usdus%uulon(lo,ityp,jspin) +&
390 : ( cb12(n)*CONJG(cc12(m)) + &
391 : cc12(n)*CONJG(cb12(m)) )*usdus%dulon(lo,ityp,jspin) +&
392 0 : cc12(n)*CONJG(cc12(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*g
393 : mmn(14,orbi,m,n) = mmn(14,orbi,m,n) +&
394 : (( ca13(n)*CONJG(cc13(m)) + &
395 : cc13(n)*CONJG(ca13(m)) )*usdus%uulon(lo,ityp,jspin) +&
396 : ( cb13(n)*CONJG(cc13(m)) + &
397 : cc13(n)*CONJG(cb13(m)) )*usdus%dulon(lo,ityp,jspin) +&
398 0 : cc13(n)*CONJG(cc13(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
399 : mmn(15,orbi,m,n) = mmn(15,orbi,m,n) +&
400 : (( ca14(n)*CONJG(cc14(m)) + &
401 : cc14(n)*CONJG(ca14(m)) )*usdus%uulon(lo,ityp,jspin) +&
402 : ( cb14(n)*CONJG(cc14(m)) + &
403 : cc14(n)*CONJG(cb14(m)) )*usdus%dulon(lo,ityp,jspin) +&
404 0 : cc14(n)*CONJG(cc14(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*g
405 : mmn(16,orbi,m,n) = mmn(16,orbi,m,n) +&
406 : (( ca15(n)*CONJG(cc15(m)) + &
407 : cc15(n)*CONJG(ca15(m)) )*usdus%uulon(lo,ityp,jspin) +&
408 : ( cb15(n)*CONJG(cc15(m)) + &
409 : cc15(n)*CONJG(cb15(m)) )*usdus%dulon(lo,ityp,jspin) +&
410 0 : cc15(n)*CONJG(cc15(m))*usdus%uloulopn(lo,lo,ityp,jspin) )*h
411 : ENDDO !m
412 : ENDDO !n
413 : ENDIF
414 : ENDDO lo_loop
415 :
416 :
417 : ENDDO !rep
418 :
419 : ENDDO ! types (ityp)
420 :
421 0 : END SUBROUTINE wann_orbcomp
422 : END MODULE m_wann_orbcomp
|