287
287
c ----- TEST: for testing Coulomb and Exchange contrib --- START
288
288
if (switch_gshift_analysis) then
289
if(.not.ga_create(MT_DBL,ntot,3,'RHS',-1,-1,g_rhs_Coul))
289
if(.not.ga_create(MT_DBL,ntot,3,'rhs_Coul',-1,-1,g_rhs_Coul))
290
290
& call errquit('hnd_gshift: ga_create failed g_rhsJ',0,GA_ERR)
291
291
call ga_zero(g_rhs_Coul)
292
if(.not.ga_create(MT_DBL,ntot,3,'RHS',-1,-1,g_rhs_Exch))
292
if(.not.ga_create(MT_DBL,ntot,3,'rhs_Exch',-1,-1,g_rhs_Exch))
293
293
& call errquit('hnd_gshift: ga_create failed g_rhsK',0,GA_ERR)
294
294
call ga_zero(g_rhs_Exch)
295
if(.not.ga_create(MT_DBL,ntot,3,'RHS',-1,-1,g_rhs_noJK))
295
if(.not.ga_create(MT_DBL,ntot,3,'rhs_noJK',-1,-1,g_rhs_noJK))
296
296
& call errquit('hnd_gshift: ga_create failed g_rhsnJK',0,GA_ERR)
297
297
call ga_zero(g_rhs_noJK)
298
if(.not.ga_create(MT_DBL,ntot,3,'RHS',-1,-1,g_rhs_eSji))
298
if(.not.ga_create(MT_DBL,ntot,3,'rhs_eSji',-1,-1,g_rhs_eSji))
299
299
& call errquit('hnd_gshift: ga_create failed g_rhseSji',0,GA_ERR)
300
300
call ga_zero(g_rhs_eSji)
301
if(.not.ga_create(MT_DBL,ntot,3,'RHS',-1,-1,g_rhs_1e))
301
if(.not.ga_create(MT_DBL,ntot,3,'rhs_1e',-1,-1,g_rhs_1e))
302
302
& call errquit('hnd_gshift: ga_create failed g_rhs1e',0,GA_ERR)
303
303
call ga_zero(g_rhs_1e)
3692
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_d1_oo)) call
3756
if (.not.nga_create(MT_DBL,3,ahi,'d1oo matrix',alo,g_d1_oo)) call
3693
3757
& errquit('g_d1_oo: nga_create failed g_d1_oo',0,GA_ERR)
3694
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_p1_oo)) call
3758
if (.not.nga_create(MT_DBL,3,ahi,'p1oo matrix',alo,g_p1_oo)) call
3695
3759
& errquit('g_p1_oo: nga_create failed g_p1_oo',0,GA_ERR)
3696
3760
call ga_zero(g_p1_oo)
3697
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_d1_ov)) call
3761
if (.not.nga_create(MT_DBL,3,ahi,'d1ov matrix',alo,g_d1_ov)) call
3698
3762
& errquit('g_d1_ov: nga_create failed g_d1_ov',0,GA_ERR)
3700
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3764
if (.not.nga_create(MT_DBL,3,ahi,'d1ov_Coul matrix',
3701
3765
& alo,g_d1_ov_Coul)) call
3702
3766
& errquit('g_d1_ovJ: nga_create failed g_d1_ovJ',0,GA_ERR)
3703
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3767
if (.not.nga_create(MT_DBL,3,ahi,'d1ov_Exch matrix',
3704
3768
& alo,g_d1_ov_Exch)) call
3705
3769
& errquit('g_d1_ovK: nga_create failed g_d1_ovK',0,GA_ERR)
3706
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3770
if (.not.nga_create(MT_DBL,3,ahi,'d1ov_noJK matrix',
3707
3771
& alo,g_d1_ov_noJK)) call
3708
3772
& errquit('g_d1_ovnJK: nga_create failed g_d1_ovnJK',
3710
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3774
if (.not.nga_create(MT_DBL,3,ahi,'d1ov_1e matrix',
3711
3775
& alo,g_d1_ov_1e)) call
3712
3776
& errquit('g_d1_ovnJK: nga_create failed g_d1_ov1e',
3714
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3778
if (.not.nga_create(MT_DBL,3,ahi,'d1ov_eSji matrix',
3715
3779
& alo,g_d1_ov_eSji)) call
3716
3780
& errquit('g_d1_ovnJK: nga_create failed g_d1_oveSji',
3719
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_p1_ov)) call
3783
if (.not.nga_create(MT_DBL,3,ahi,'p1ov matrix',alo,g_p1_ov)) call
3720
3784
& errquit('g_p1_ov: nga_create failed g_p1_ov',0,GA_ERR)
3721
3785
call ga_zero(g_p1_ov)
3723
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3787
if (.not.nga_create(MT_DBL,3,ahi,'p1ov_Coul matrix',
3724
3788
& alo,g_p1_ov_Coul)) call
3725
3789
& errquit('g_p1_ovJ: nga_create failed g_p1_ovJ',0,GA_ERR)
3726
3790
call ga_zero(g_p1_ov_Coul)
3727
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3791
if (.not.nga_create(MT_DBL,3,ahi,'p1ov_Exch matrix',
3728
3792
& alo,g_p1_ov_Exch)) call
3729
3793
& errquit('g_p1_ovK: nga_create failed g_p1_ovK',0,GA_ERR)
3730
3794
call ga_zero(g_p1_ov_Exch)
3731
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3795
if (.not.nga_create(MT_DBL,3,ahi,'p1ov_noJK matrix',
3732
3796
& alo,g_p1_ov_noJK)) call
3733
3797
& errquit('g_p1_ovnJK: nga_create failed g_p1_ovnJK',
3735
3799
call ga_zero(g_p1_ov_noJK)
3736
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3800
if (.not.nga_create(MT_DBL,3,ahi,'p1ov_1e matrix',
3737
3801
& alo,g_p1_ov_1e)) call
3738
3802
& errquit('g_p1_ov1e: nga_create failed g_p1_ov1e',
3740
3804
call ga_zero(g_p1_ov_1e)
3741
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
3805
if (.not.nga_create(MT_DBL,3,ahi,'p1ov_eSji matrix',
3742
3806
& alo,g_p1_ov_eSji)) call
3743
3807
& errquit('g_p1_oveSji: nga_create failed g_p1_oveSji',
3745
3809
call ga_zero(g_p1_ov_eSji)
3746
3810
c ------ For debugging ---- START
3747
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_p1)) call
3811
if (.not.nga_create(MT_DBL,3,ahi,'p1 matrix',alo,g_p1)) call
3748
3812
& errquit('g_p1: nga_create failed g_p1',0,GA_ERR)
3749
3813
call ga_zero(g_p1)
3750
3814
c ------ For debugging ---- END
4559
4646
call nga_scale_patch(g_s10_1,alo,ahi,-0.5d0)
4560
4647
call nga_copy_patch('n',g_s10_1,alo,ahi,
4649
c write(*,13) ispin,xyz,nmo,nbf,
4650
c & alo(1),ahi(1),alo(2),ahi(2),
4652
c 13 format('prelim-x: (ispin,xyz,nmo,nbf)=(',
4653
c & i3,',',i3,',',i3,',',i3,') ',
4654
c & 'alo-ahi=(',i3,',',i3,',',
4655
c & i3,',',i3,',',i3,',',i3,')')
4656
if (debug_prelim.eq.1) then
4657
if (ga_nodeid().eq.0)
4658
& write(*,*) ' ---gprelim: -- g_u(',ispin,') ----START'
4660
if (ga_nodeid().eq.0)
4661
& write(*,*) ' ---gprelim: -- g_u(',ispin,') ----END'
4563
4664
c We also need the occupied-occupied contribution of g_u contributing
4564
4665
c to the first order density matrix. As this block does not change
4588
4689
ahi(2) = nocc(ispin)
4692
c write(*,3) ispin,xyz,nmo,nbf,
4693
c & blo(1),bhi(1),blo(2),bhi(2),
4695
c & alo(1),ahi(1),alo(2),ahi(2),
4697
c & dlo(1),dhi(1),dlo(2),dhi(2),
4699
c 3 format('prelim-1: (ispin,xyz,nmo,nbf)=(',
4700
c & i3,',',i3,',',i3,',',i3,') ',
4701
c & 'blo-bhi=(',i3,',',i3,',',
4702
c & i3,',',i3,',',i3,',',i3,') ',
4703
c & 'alo-ahi=(',i3,',',i3,',',
4704
c & i3,',',i3,',',i3,',',i3,') ',
4705
c & 'dlo-dhi=(',i3,',',i3,',',
4706
c & i3,',',i3,',',i3,',',i3,')')
4590
4708
call nga_matmul_patch('n','n',1.0d0,0.0d0,
4591
4709
& vectors(ispin),blo,bhi,
4593
4711
& g_s10_1,dlo,dhi)
4712
if (debug_prelim.eq.1) then
4713
if (ga_nodeid().eq.0)
4714
& write(*,*) ' ---gprelim: -- g_u-1(',ispin,',',xyz,') ----START'
4715
call ga_print(g_s10_1)
4716
if (ga_nodeid().eq.0)
4717
& write(*,*) ' ---gprelim: -- g_u-1(',ispin,',',xyz,') ----END'
4719
ahi(1) = nocc(ispin)
4595
ahi(1) = nocc(ispin)
4596
4721
bhi(2) = nocc(ispin)
4597
4722
c Minus sign as we subtract it from the RHS as we do not include
4598
4723
c it in the LHS
4599
4724
disp=3*(ispin-1)
4600
4725
clo(1) = disp+xyz
4601
4726
chi(1) = disp+xyz
4728
c write(*,4) ispin,xyz,nmo,nbf,
4729
c & blo(1),bhi(1),blo(2),bhi(2),
4731
c & alo(1),ahi(1),alo(2),ahi(2),
4733
c & clo(1),chi(1),clo(2),chi(2),
4735
c 4 format('prelim-2: (ispin,xyz,nmo,nbf)=(',
4736
c & i3,',',i3,',',i3,',',i3,') ',
4737
c & 'blo-bhi=(',i3,',',i3,',',
4738
c & i3,',',i3,',',i3,',',i3,') ',
4739
c & 'alo-ahi=(',i3,',',i3,',',
4740
c & i3,',',i3,',',i3,',',i3,') ',
4741
c & 'clo-chi=(',i3,',',i3,',',
4742
c & i3,',',i3,',',i3,',',i3,')')
4602
4745
call nga_matmul_patch('n','t',-1.0d0,0.0d0,
4603
4746
& vectors(ispin),blo,bhi,
4604
4747
& g_s10_1,alo,ahi,
4605
4748
& g_d1,clo,chi)
4749
if (debug_prelim.eq.1) then
4750
if (ga_nodeid().eq.0)
4751
& write(*,*) ' ---gprelim: -- g_d1(',ispin,',',xyz,') ----START'
4753
if (ga_nodeid().eq.0)
4754
& write(*,*) ' ---gprelim: -- g_d1(',ispin,',',xyz,') ----END'
4606
4756
enddo ! end-loop-xyz
4607
4757
c ------------ back-up g_u --> g_rhs0 ---- START
4752
4903
call ga_zero(g_s10)
4754
4905
if (.not.(do_zora)) then ! do: HF or DFT (norel calc.)
4906
c call int_giao_1ega(basis,basis,g_s10_1,
4907
c & 'l10' ,pos(1),natoms,oskel)
4755
4908
call int_giao_1ega(basis,basis,g_s10_1,
4756
& 'l10' ,pos(1),natoms,oskel)
4909
& 'l10' ,pos,natoms,oskel)
4757
4910
NoKinetic=0 ! =0 DO-kinetic, =1 SKIP-kinetic
4911
c call int_giao_1ega(basis,basis,g_s10_1,
4912
c & 'tv10',pos(1),natoms,oskel)
4758
4913
call int_giao_1ega(basis,basis,g_s10_1,
4759
& 'tv10',pos(1),natoms,oskel)
4914
& 'tv10',pos,natoms,oskel)
4760
4915
else ! do: zora (relativistic calc.)
4761
4916
c ----------- Create scratch ga-arrays ------- END
4762
4917
NoKinetic=1 ! =0 DO-kinetic, =1 SKIP-kinetic
4918
c call int_giao_1ega(basis,basis,g_s10_1,
4919
c & 'tv10',pos(1),natoms,oskel)
4763
4920
call int_giao_1ega(basis,basis,g_s10_1,
4764
& 'tv10',pos(1),natoms,oskel)
4921
& 'tv10',pos,natoms,oskel)
4765
4922
call ga_add(1.0d0,g_s10_1,
4766
& 1.0d0, ga_Fji, ! update g_s10_1 with ga_Fji
4923
& 1.0d0,ga_Fji, ! update g_s10_1 with ga_Fji
4769
c ++++++++++++ COSMO-added-07-13-11+++++++++++++ START
4770
4927
c Get external and cosmo bq contribution
5226
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_d1_oo)) call
5384
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_d1_oo',
5385
& alo,g_d1_oo)) call
5227
5386
& errquit('g_d1_oo: nga_create failed g_d1_oo',0,GA_ERR)
5228
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_p1_oo)) call
5387
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_p1_oo',
5388
& alo,g_p1_oo)) call
5229
5389
& errquit('g_p1_oo: nga_create failed g_p1_oo',0,GA_ERR)
5230
5390
call ga_zero(g_p1_oo)
5231
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_d1_ov)) call
5391
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_d1_ov',
5392
& alo,g_d1_ov)) call
5232
5393
& errquit('g_d1_ov: nga_create failed g_d1_ov',0,GA_ERR)
5234
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
5395
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_d1_ov_Coul',
5235
5396
& alo,g_d1_ov_Coul)) call
5236
5397
& errquit('g_d1_ovJ: nga_create failed g_d1_ovJ',0,GA_ERR)
5237
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
5398
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_d1_ovJ',
5238
5399
& alo,g_d1_ov_Exch)) call
5239
5400
& errquit('g_d1_ovK: nga_create failed g_d1_ovK',0,GA_ERR)
5240
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
5401
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_d1_ovnoJK',
5241
5402
& alo,g_d1_ov_noJK)) call
5242
5403
& errquit('g_d1_ovnJK: nga_create failed g_d1_ovnJK',
5272
5433
& errquit('g_p1_ov1e: nga_create failed g_p1_ov1e',
5274
5435
call ga_zero(g_p1_ov_1e)
5275
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',
5436
if (.not.nga_create(MT_DBL,3,ahi,'P10_JK_AorB g_p1_ov_eSji',
5276
5437
& alo,g_p1_ov_eSji)) call
5277
5438
& errquit('g_p1_oveSji: nga_create failed g_p1_oveSji',
5279
5440
call ga_zero(g_p1_ov_eSji)
5280
5441
c ------ For debugging ---- START
5281
if (.not.nga_create(MT_DBL,3,ahi,'D10 matrix',alo,g_p1)) call
5282
& errquit('g_p1: nga_create failed g_p1',0,GA_ERR)
5442
c if (.not.nga_create(MT_DBL,3,ahi,
5443
c & 'P10_JK_AorB g_p1',alo,g_p1)) call
5444
c & errquit('g_p1: nga_create failed g_p1',0,GA_ERR)
5445
c call ga_zero(g_p1)
5284
5446
c ------ For debugging ---- END
5286
5448
c do ispin=1,npol