190
190
kxij = kpoint(1,ik) * xij(1,ind) +
191
191
. kpoint(2,ik) * xij(2,ind) +
192
192
. kpoint(3,ik) * xij(3,ind)
193
kphs = cdexp(dcmplx(0.0_dp, -1.0_dp)*kxij)
193
kphs = exp(cmplx(0.0_dp, -1.0_dp, dp) * kxij)
195
195
Saux(1,juo,1,iuo) = Saux(1,juo,1,iuo) + S(ind) * kphs
196
196
Saux(2,juo,2,iuo) = Saux(2,juo,2,iuo) + S(ind) * kphs
197
197
Haux(1,juo,1,iuo) = Haux(1,juo,1,iuo) +
198
. dcmplx(H(ind,1), H(ind,5)) * kphs
198
. cmplx(H(ind,1), H(ind,5),dp) * kphs
199
199
Haux(2,juo,2,iuo) = Haux(2,juo,2,iuo) +
200
. dcmplx(H(ind,2), H(ind,6)) * kphs
200
. cmplx(H(ind,2), H(ind,6),dp) * kphs
201
201
Haux(1,juo,2,iuo) = Haux(1,juo,2,iuo)
202
. + dcmplx(H(ind,3), - H(ind,4)) * kphs
202
. + cmplx(H(ind,3), - H(ind,4),dp) * kphs
203
203
Haux(2,juo,1,iuo) = Haux(2,juo,1,iuo)
204
. + dcmplx(H(ind,7), + H(ind,8)) * kphs
204
. + cmplx(H(ind,7), + H(ind,8),dp) * kphs
262
262
kxij = kpoint(1,ik) * xij(1,ind) +
263
263
. kpoint(2,ik) * xij(2,ind) +
264
264
. kpoint(3,ik) * xij(3,ind)
265
kphs = cdexp(dcmplx(0.0_dp, -1.0_dp)*kxij)
265
kphs = exp(cmplx(0.0_dp, -1.0_dp, dp) * kxij)
267
267
Saux(1,juo,1,iuo) = Saux(1,juo,1,iuo) + S(ind) * kphs
268
268
Saux(2,juo,2,iuo) = Saux(2,juo,2,iuo) + S(ind) * kphs
269
269
Haux(1,juo,1,iuo) = Haux(1,juo,1,iuo) +
270
. dcmplx(H(ind,1), H(ind,5)) * kphs
270
. cmplx(H(ind,1), H(ind,5),dp) * kphs
271
271
Haux(2,juo,2,iuo) = Haux(2,juo,2,iuo) +
272
. dcmplx(H(ind,2), H(ind,6)) * kphs
272
. cmplx(H(ind,2), H(ind,6),dp) * kphs
273
273
Haux(1,juo,2,iuo) = Haux(1,juo,2,iuo)
274
. + dcmplx(H(ind,3), - H(ind,4)) * kphs
274
. + cmplx(H(ind,3), - H(ind,4),dp) * kphs
275
275
Haux(2,juo,1,iuo) = Haux(2,juo,1,iuo)
276
. + dcmplx(H(ind,7), + H(ind,8)) * kphs
276
. + cmplx(H(ind,7), + H(ind,8),dp) * kphs
286
286
call die('Terminating due to failed diagonalisation')
287
287
elseif (ierror.lt.0) then
288
288
! Repeat diagonalisation with increased memory to handle clustering
289
Saux = dcmplx(0.0_dp,0.0_dp)
290
Haux = dcmplx(0.0_dp,0.0_dp)
289
Saux = cmplx(0.0_dp,0.0_dp,dp)
290
Haux = cmplx(0.0_dp,0.0_dp,dp)
292
292
do j = 1,numh(iuo)
293
293
ind = listhptr(iuo) + j
296
296
kxij = kpoint(1,ik) * xij(1,ind) +
297
297
. kpoint(2,ik) * xij(2,ind) +
298
298
. kpoint(3,ik) * xij(3,ind)
299
kphs = cdexp(dcmplx(0.0_dp, -1.0_dp)*kxij)
299
kphs = exp(cmplx(0.0_dp, -1.0_dp, dp) * kxij)
301
301
Saux(1,juo,1,iuo) = Saux(1,juo,1,iuo) + S(ind) * kphs
302
302
Saux(2,juo,2,iuo) = Saux(2,juo,2,iuo) + S(ind) * kphs
303
303
Haux(1,juo,1,iuo) = Haux(1,juo,1,iuo) +
304
. dcmplx(H(ind,1), H(ind,5)) * kphs
304
. cmplx(H(ind,1), H(ind,5),dp) * kphs
305
305
Haux(2,juo,2,iuo) = Haux(2,juo,2,iuo) +
306
. dcmplx(H(ind,2), H(ind,6)) * kphs
306
. cmplx(H(ind,2), H(ind,6),dp) * kphs
307
307
Haux(1,juo,2,iuo) = Haux(1,juo,2,iuo)
308
. + dcmplx(H(ind,3), - H(ind,4)) * kphs
308
. + cmplx(H(ind,3), - H(ind,4),dp) * kphs
309
309
Haux(2,juo,1,iuo) = Haux(2,juo,1,iuo)
310
. + dcmplx(H(ind,7), + H(ind,8)) * kphs
310
. + cmplx(H(ind,7), + H(ind,8),dp) * kphs
313
313
call cdiag(Haux,Saux,2*nuotot,2*nuo,2*nuotot,caux,psi,
336
336
! D_{i,j}(1,2) = 0.5 ( D_{i,j}(1,2) + D_{i,j}(2,1)^* )
337
337
! can not be enforced here.
339
Dk = dcmplx(0.0_dp,0.0_dp)
340
Ek = dcmplx(0.0_dp,0.0_dp)
339
Dk = cmplx(0.0_dp,0.0_dp,dp)
340
Ek = cmplx(0.0_dp,0.0_dp,dp)
365
365
do juo = 1,nuotot
367
367
!------- 1,1 -----------------------------------------------------------
368
cicj = caux(1,iio) * dconjg(caux(1,juo))
368
cicj = caux(1,iio) * conjg(caux(1,juo))
369
369
Dk(1,juo,1,iuo) = Dk(1,juo,1,iuo) + qe * cicj
370
370
Ek(1,juo,1,iuo) = Ek(1,juo,1,iuo) + ee * cicj
371
371
!------- 2,2 -----------------------------------------------------------
372
cicj = caux(2,iio) * dconjg(caux(2,juo))
372
cicj = caux(2,iio) * conjg(caux(2,juo))
373
373
Dk(2,juo,2,iuo) = Dk(2,juo,2,iuo) + qe * cicj
374
374
Ek(2,juo,2,iuo) = Ek(2,juo,2,iuo) + ee * cicj
375
375
!------- 1,2 -----------------------------------------------------------
376
cicj = caux(1,iio) * dconjg(caux(2,juo))
376
cicj = caux(1,iio) * conjg(caux(2,juo))
377
377
Dk(1,juo,2,iuo) = Dk(1,juo,2,iuo) + qe * cicj
378
378
Ek(1,juo,2,iuo) = Ek(1,juo,2,iuo) + ee * cicj
379
379
!------- 2,1 -----------------------------------------------------------
380
cicj = caux(2,iio) * dconjg(caux(1,juo))
380
cicj = caux(2,iio) * conjg(caux(1,juo))
381
381
Dk(2,juo,1,iuo) = Dk(2,juo,1,iuo) + qe * cicj
382
382
Ek(2,juo,1,iuo) = Ek(2,juo,1,iuo) + ee * cicj
398
398
kxij = kpoint(1,ik) * xij(1,ind) +
399
399
. kpoint(2,ik) * xij(2,ind) +
400
400
. kpoint(3,ik) * xij(3,ind)
401
kphs = cdexp(dcmplx(0.0_dp,-1.0_dp)*kxij)
401
kphs = exp(cmplx(0.0_dp,-1.0_dp,dp) * kxij)
403
403
D11 = Dk(1,juo,1,iuo) * kphs
404
404
D22 = Dk(2,juo,2,iuo) * kphs
405
405
D12 = Dk(1,juo,2,iuo) * kphs
406
406
D21 = Dk(2,juo,1,iuo) * kphs
408
Dnew(ind,1) = Dnew(ind,1) + dreal(D11)
409
Dnew(ind,2) = Dnew(ind,2) + dreal(D22)
410
Dnew(ind,3) = Dnew(ind,3) + dreal(D12)
411
Dnew(ind,4) = Dnew(ind,4) - dimag(D12)
412
Dnew(ind,5) = Dnew(ind,5) + dimag(D11)
413
Dnew(ind,6) = Dnew(ind,6) + dimag(D22)
414
Dnew(ind,7) = Dnew(ind,7) + dreal(D21)
415
Dnew(ind,8) = Dnew(ind,8) + dimag(D21)
408
Dnew(ind,1) = Dnew(ind,1) + real(D11,dp)
409
Dnew(ind,2) = Dnew(ind,2) + real(D22,dp)
410
Dnew(ind,3) = Dnew(ind,3) + real(D12,dp)
411
Dnew(ind,4) = Dnew(ind,4) - aimag(D12)
412
Dnew(ind,5) = Dnew(ind,5) + aimag(D11)
413
Dnew(ind,6) = Dnew(ind,6) + aimag(D22)
414
Dnew(ind,7) = Dnew(ind,7) + real(D21,dp)
415
Dnew(ind,8) = Dnew(ind,8) + aimag(D21)
418
418
D11 = Ek(1,juo,1,iuo) * kphs
420
420
D12 = Ek(1,juo,2,iuo) * kphs
421
421
D21 = Ek(2,juo,1,iuo) * kphs
423
Enew(ind,1) = Enew(ind,1) + dreal(D11)
424
Enew(ind,2) = Enew(ind,2) + dreal(D22)
425
Enew(ind,3) = Enew(ind,3) + dreal(D12)
426
Enew(ind,4) = Enew(ind,4) - dimag(D12)
423
Enew(ind,1) = Enew(ind,1) + real(D11,dp)
424
Enew(ind,2) = Enew(ind,2) + real(D22,dp)
425
Enew(ind,3) = Enew(ind,3) + real(D12,dp)
426
Enew(ind,4) = Enew(ind,4) - aimag(D12)