74
74
. is, isp, ispin, iu, iul, ix, j, jc, jl, nsd,
75
75
. last, lasta, lastop, maxloc, maxloc2, nc, nlocal,
76
76
. nphiloc, nvmaxl, iii(3)
77
integer, dimension(:), allocatable, save ::
78
integer, pointer :: ilc(:), ilocal(:), iorb(:)
82
82
. Vij1, Vij2, Vij3, Vij4, dxsp(3), phia(maxoa,nsp),
83
83
. r2cut(nsmax), r2sp, xr(3), Rdi(3), qRdi, cqRdi, sqRdi
84
real(dp), dimension(:), allocatable, save ::
85
. VClocal, VClocal1, VClocal2, VClocal3, VClocal4
86
real(dp), dimension(:,:), allocatable, save ::
88
real(dp), dimension(:,:,:), allocatable, save ::
85
real(dp), pointer :: VClocal(:), VClocal1(:),
86
& VClocal2(:), VClocal3(:), VClocal4(:)
88
real(dp), pointer :: Clocal(:,:), Vlocal(:,:)
89
real(dp), pointer :: VlocalSp(:,:,:)
91
91
C Start time counter
92
92
call timer('vmatsp',1)
103
103
C If spiral, the diagonal elements of Vlocal do not change
106
C Allocate local memory
108
call memory('A','I',no,'vmatsp')
109
allocate(ilc(maxloc2))
110
call memory('A','I',maxloc2,'vmatsp')
111
allocate(iorb(0:maxloc))
112
call memory('A','I',maxloc+1,'vmatsp')
106
! Allocate local memory
108
call re_alloc( ilocal, 1, no, name='ilocal', routine='vmatsp' )
111
call re_alloc( ilc, 1, maxloc2, name='ilc', routine='vmatsp' )
114
call re_alloc( iorb, 0, maxloc, name='iorb', routine='vmatsp' )
113
116
ijl = (maxloc+1)*(maxloc+2)/2
114
allocate(Vlocal(ijl,nsd))
115
call memory('A','D',ijl*nsd,'vmatsp')
116
allocate(VlocalSp(0:maxloc,0:maxloc,nsd))
117
call memory('A','D',(maxloc+1)*(maxloc+1)*nsd,'vmatsp')
118
allocate(Clocal(nsp,maxloc2))
119
call memory('A','D',nsp*maxloc2,'vmatsp')
120
allocate(VClocal(nsp))
121
call memory('A','D',nsp,'vmatsp')
122
allocate(VClocal1(nsp))
123
call memory('A','D',nsp,'vmatsp')
124
allocate(VClocal2(nsp))
125
call memory('A','D',nsp,'vmatsp')
126
allocate(VClocal3(nsp))
127
call memory('A','D',nsp,'vmatsp')
128
allocate(VClocal4(nsp))
129
call memory('A','D',nsp,'vmatsp')
119
call re_alloc( Vlocal, 1, ijl, 1, nsd, name='Vlocal',
123
call re_alloc( VlocalSp, 0, maxloc, 0, maxloc, 1, nsd,
125
& routine = 'vmatsp' )
128
call re_alloc( Clocal, 1, nsp, 1, maxloc2, name='Clocal',
132
call re_alloc( VClocal, 1, nsp, name='VClocal', routine='vmatsp' )
135
call re_alloc( VClocal1, 1, nsp, name='VClocal1',
136
& routine = 'vmatsp' )
139
call re_alloc( VClocal2, 1, nsp, name='VClocal2',
140
& routine = 'vmatsp' )
143
call re_alloc( VClocal3, 1, nsp, name='VClocal3',
144
& routine = 'vmatsp' )
147
call re_alloc( VClocal4, 1, nsp, name='VClocal4',
148
& routine = 'vmatsp' )
131
150
if (Parallel_Flag) then
132
151
if (nrowsDscfL.gt.0) then
468
call memory('D','D',size(Vlocal),'vmatsp')
470
call memory('D','D',size(VlocalSp),'vmatsp')
472
call memory('D','I',size(iorb),'vmatsp')
474
call memory('D','I',size(ilocal),'vmatsp')
476
call memory('D','I',size(ilc),'vmatsp')
478
call memory('D','D',size(Clocal),'vmatsp')
480
call memory('D','D',size(VClocal),'vmatsp')
482
call memory('D','D',size(VClocal1),'vmatsp')
484
call memory('D','D',size(VClocal2),'vmatsp')
486
call memory('D','D',size(VClocal3),'vmatsp')
488
call memory('D','D',size(VClocal4),'vmatsp')
488
call de_alloc( Vlocal, name='Vlocal' )
489
call de_alloc( VlocalSp, name='VlocalSp' )
490
call de_alloc( iorb, name='iorb' )
491
call de_alloc( ilocal, name='ilocal' )
492
call de_alloc( ilc, name='ilc' )
493
call de_alloc( Clocal, name='Clocal' )
494
call de_alloc( VClocal, name='VClocal' )
495
call de_alloc( VClocal1, name='VClocal1' )
496
call de_alloc( VClocal2, name='VClocal2' )
497
call de_alloc( VClocal3, name='VClocal3' )
498
call de_alloc( VClocal4, name='VClocal4' )
491
500
if (Parallel_Flag) then
492
501
C Redistribute Hamiltonian from mesh to orbital based distribution
493
502
call matrixMtoO( nvmaxl, nvmax, numVs, listVsptr, nuo,
494
503
. nuotot, nspin, DscfL, Vs )
496
call memory('D','D',size(DscfL),'meshdscf')
505
call de_alloc( DscfL, name='DscfL' )
500
508
call timer('vmatsp',2)