1
* $Id: memoha.f 19696 2010-10-29 16:53:42Z d3y133 $
2
c====================================================================
4
c there is the new subroutine memo5 (memory handling for pairs)
6
c====================================================================
7
c Memory handling subroutines for 2-electron integrals program
9
c====================================================================
10
subroutine memo1_int(namount,iaddress)
11
common /cpu/ intsize,iacc,icache,memreal
14
if(intsize.ne.1) needed=namount/intsize+1
15
call getmem(needed,iaddress)
18
c====================================================================
19
subroutine memo2(nbloks)
20
common /cpu/ intsize,iacc,icache,memreal
21
common /memor2/ nqrtd, nibld,nkbld, nijbd,nijed, nklbd,nkled
24
if(intsize.ne.1) ndim=ndim/intsize+1
26
call getmem(ndim,nqrtd) ! for nqrt array
27
call getmem(ndim,nibld) ! for nibl array
28
call getmem(ndim,nkbld) ! for nkbl array
29
call getmem(ndim,nijbd) ! for nijb array
30
call getmem(ndim,nijed) ! for nije array
31
call getmem(ndim,nklbd) ! for nklb array
32
call getmem(ndim,nkled) ! for nkle array
36
c====================================================================
37
subroutine memo3(maxqrt)
38
common /cpu/ intsize,iacc,icache,memreal
39
common /memor3/ nblok1d
40
common /memors/ nsym,ijshp,isymm
42
c--------------------------------------------------
44
if(intsize.ne.1) ndim=ndim/intsize+1
46
call getmem(ndim,nblok1d) ! for nblok1(2,*)
47
call getmem(maxqrt,isymm) ! for isymm(*)
48
c--------------------------------------------------
49
c call memo1_int(maxqrt*2, nblok1d) ! for nblok1(2*maxqrt)
50
c call memo1_int(maxqrt , nsymm ) ! for symm(maxqrt)
51
c--------------------------------------------------
54
subroutine memo4a(bl, nbls, l11,l12,mem2,igmcnt)
55
double precision bl(*)
59
common /runtype/ scftype,where
61
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
63
* lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX,
64
* NQI,NQJ,NQK,NQL,NSIJ,NSKL,
65
* NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg
67
common /logic1/ ndege(1)
68
common /logic2/ len(1)
69
common /logic3/ lensm(1)
70
common /logic4/ nfu(1)
72
COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4)
73
common /memor4/ iwt0,iwt1,iwt2,ibuf,ibuf2,
74
* ibfij1,ibfij2,ibfkl1,ibfkl2,
75
* ibf2l1,ibf2l2,ibf2l3,ibf2l4,ibfij3,ibfkl3,
77
* ix2l1,ix2l2,ix2l3,ix2l4,ix3l1,ix3l2,ix3l3,ix3l4,
78
* ixij,iyij,izij, iwij,ivij,iuij,isij
80
common /memor4a/ ibf3l1,ibf3l2,ibf3l3,ibf3l4
82
c dimensions for assembling :
83
common /dimasse/ lqij,lqkl,lqmx,lij3,lkl3,l3l,lsss
84
c dimensions for a.m.shifting :
87
C************************************************************
88
cxxx DATA LENSM/1,4,10,20,35,56,84,120,165,220,286,364,455,560,680/
89
C******* UP TO: S P D F G H I J K L M N O P Q *******
90
C LENSM(NSIJ)=TOTAL NUMBER OF FUNCTIONS UP TO GIVEN NSIJ
91
C************************************************************
92
c---------------------------------------------------------------------
93
c dimensions for assembling :
94
c buf2(nbls,lnij,lnkl), bfij1(nbls,lqij,lnkl), bfkl1(nbls,lnij,lqkl)
95
c bfij2(nbls,lqij,lnkl), bfkl2(nbls,lnij,lqkl)
96
c bfij3(nbls,lij3,lnkl), bfkl3(nbls,lnij,lkl3)
98
c bf2l1(nbls,lqij,lqkl), bf2l2(nbls,lqij,lqkl)
99
c bf2l3(nbls,lqij,lqkl), bf2l4(nbls,lqij,lqkl)
101
c bf3l1(nbls,l3l ,lqmx), bf3l2(nbls,l3l ,lqmx)
102
c bf3l3(nbls,lqmx,l3l ), bf3l4(nbls,lqmx,l3l )
104
c ssss(nbls,lsss,lsss)
105
c---------------------------------------------------------------------
113
if(where.eq.'shif' .or. where.eq.'forc') then
116
if(lshellt.gt.1) then
120
if(lshellt.gt.2) l3l =4
121
if(lshellt.gt.3) lsss=4
123
lqmx=max( lqij,lqkl )
125
c---------------------------------------------------------------------
126
c l11,l12,mem2 are not used for mmax.le.2 (psss)
131
c---------------------------------------------------------------------
133
c* initiate all addresses :
164
C******************************************************
165
c Memory for "assemble"
167
c ------------------------------------------
170
ngcijkl=(ngci+1)*(ngcj+1)*(ngck+1)*(ngcl+1)
173
ccccc if(where.ne.'shif' .and. where.ne.'forc') then
174
if(where.eq.'buff') then
175
call getmem_zero(bl,nblsg*lnijkl,ibuf) ! for buf(nbls,lnijkl) ZERO
176
call getmem_zero(bl,nblsg*mem0,ibuf2) ! for buf2(nbls,lnij,lnkl) ZERO
178
if(where.eq.'shif') then
179
c - for nmr derivatives -
180
call getmem(7*nblsg*lnijkl,ibuf) ! for buf(nbls,lnijkl)
181
ixxx=nblsg*mem0 + 6*nblsg*nfu(nsij)*nfu(nskl)
182
call getmem(ixxx ,ibuf2) ! for buf2(nbls,lnij,lnkl)
184
if(where.eq.'forc') then
185
c memory allocated for ibuf will be used twice : first for
186
c assembling (instead of buf2) and then for final derivatives.
187
c For ibuf allocate maximum of :
188
iyyy=nblsg*max(9*lnijkl,4*mem0)
190
ixxx= 10*nblsg*nfu(nsij)*nfu(nskl)
191
c instead of ixxx=4*nblsg*mem0 + 10*nblsg*nfu(nsij)*nfu(nskl)
193
c 4*nblsg*mem0 is probably ALWAYS greater than 9*nblsg*lnijkl
195
c 4 comes from : ordinary contraction
196
c + rescaled contrac. with 2*expA
197
c + rescaled contrac. with 2*expB
198
c + rescaled contrac. with 2*expC
199
c 10 comes from 9 different derivatives with respect to
200
c Ax,y,z , Bx,y,z and Cx,y,z (center positions)
201
c plus 1 location for ordinary integrals.
203
call getmem(iyyy ,ibuf ) ! for buf (nbls,lnijkl)
204
call getmem(ixxx ,ibuf2) ! for buf2(nbls,lnij,lnkl)
207
if(where.eq.'hess') then
208
iyyy=nblsg*max(54*lnijkl,10*mem0)
209
ixxx=55*nblsg*nfu(nsij)*nfu(nskl)
211
c 10 comes from : ordinary contraction
212
c + rescaled contrac. with 2*expA
213
c + rescaled contrac. with 2*expB
214
c + rescaled contrac. with 2*expC
215
c + rescaled contrac. with 2*expA*2expB
216
c + rescaled contrac. with 2*expA*2expC
217
c + rescaled contrac. with 2*expB*2expC
218
c + rescaled contrac. with (2*expA)**2
219
c + rescaled contrac. with (2*expB)**2
220
c + rescaled contrac. with (2*expC)**2
221
c 54 comes from : 9 first derivatives
222
c +45 second derivatives
224
c 55 comes from : 1 ordinary integrals
225
c 9 first derivatives
226
c +45 second derivatives
228
call getmem(iyyy ,ibuf ) ! for buf (nbls,lnijkl)
229
call getmem(ixxx ,ibuf2) ! for buf2(nbls,lnij,lnkl)
233
c count calls of getmem :
235
change igmcnt=2 ! to save ibuf
240
IF(LSHELLT.GT.0) THEN
241
c for ordinary integrals:
243
mbfkl12=lnij*nfu(nqkl+1)*nbls
244
mbfij12=nfu(nqij+1)*lnkl*nbls
246
if(where.eq.'shif') then
247
mbfkl12=lnij*nfu(nqkl1+1)*nbls + 6*nfu(nsij)*nfu(nqkl+1)*nbls
248
mbfij12=nfu(nqij1+1)*lnkl*nbls + 6*nfu(nqij+1)*nfu(nskl)*nbls
250
if(where.eq.'forc') then
251
mbfkl12=4*lnij*nfu(nqkl1+1)*nbls
252
* +10*nfu(nsij)*nfu(nqkl+1)*nbls
253
mbfij12=4*nfu(nqij1+1)*lnkl*nbls
254
* +10*nfu(nqij+1)*nfu(nskl)*nbls
257
if(lshellt.gt.1) then
258
call getmem_zero(bl,mbfij12,ibfij1) ! for bfij1 ZERO
259
call getmem_zero(bl,mbfij12,ibfij2) ! for bfij2 ZERO
260
call getmem_zero(bl,mbfkl12,ibfkl1) ! for bfkl1 ZERO
261
call getmem_zero(bl,mbfkl12,ibfkl2) ! for bfkl2 ZERO
264
call getmem_zero(bl,mbfij12,ibfij1) ! for bfij1 ZERO
266
call getmem_zero(bl,mbfkl12,ibfkl1) ! for bfkl1 ZERO
271
IF( LSHELLT.GT.1 ) THEN
273
mbf2l=nfu(nqij+1)*nfu(nqkl+1)*nbls
277
if(where.eq.'shif') then
278
mbf2l=nfu(nqij1+1)*nfu(nqkl1+1)*nbls
279
* +6*nfu(nqij +1)*nfu(nqkl +1)*nbls
281
mbfkl3=lnij*4*nbls + 6*nfu(nsij)*nbls
282
mbfij3=4*lnkl*nbls + 6*nfu(nskl)*nbls
284
if(where.eq.'forc') then
285
mbf2l=4*nfu(nqij1+1)*nfu(nqkl1+1)*nbls
286
* +10*nfu(nqij +1)*nfu(nqkl +1)*nbls
288
mbfkl3=4*(lnij*4*nbls) + 10*nfu(nsij)*nbls
289
mbfij3=4*(4*lnkl*nbls) + 10*nfu(nskl)*nbls
292
if(lshellt.gt.2) then
293
call getmem_zero(bl,mbf2l,ibf2l1) ! for bf2l1 ZERO
294
call getmem_zero(bl,mbf2l,ibf2l2) ! for bf2l2 ZERO
295
call getmem_zero(bl,mbf2l,ibf2l3) ! for bf2l3 ZERO
296
call getmem_zero(bl,mbf2l,ibf2l4) ! for bf2l4 ZERO
299
call getmem_zero(bl,mbf2l,ibf2l1) ! for bf2l1 ZERO
301
call getmem_zero(bl,mbf2l,ibf2l3) ! for bf2l3 ZERO
306
call getmem_zero(bl,mbfij3,ibfij3) ! for bfij3 ZERO
307
call getmem_zero(bl,mbfkl3,ibfkl3) ! for bfkl3 ZERO
310
IF( LSHELLT.GT.2 ) THEN
312
mbf3l0=max( nfu(nqij +1),nfu(nqkl +1) )
314
if(where.eq.'shif') then
315
mbf3l1=max( nfu(nqij1+1),nfu(nqkl1+1) )
316
mbf3l0=max( nfu(nqij +1),nfu(nqkl +1) )
317
mbf3l=4*mbf3l1*nbls + 6*mbf3l0*nbls
319
if(where.eq.'forc') then
320
mbf3l1=max( nfu(nqij1+1),nfu(nqkl1+1) )
321
mbf3l0=max( nfu(nqij +1),nfu(nqkl +1) )
322
mbf3l=4*(4*mbf3l1*nbls) + 10*mbf3l0*nbls
325
if(lshellt.gt.3) then
326
call getmem(mbf3l,ibf3l1) ! for bf3l1
327
call getmem(mbf3l,ibf3l2) ! for bf3l2
328
call getmem(mbf3l,ibf3l3) ! for bf3l3
329
call getmem(mbf3l,ibf3l4) ! for bf3l4
332
call getmem(mbf3l,ibf3l1) ! for bf3l1
334
call getmem(mbf3l,ibf3l3) ! for bf3l3
339
IF( LSHELLT.GT.3 ) then
342
if(where.eq.'shif') then
343
i4s =16*nbls + 6*nbls
345
if(where.eq.'forc') then
346
i4s =4*16*nbls + 10*nbls
349
call getmem_zero(bl,i4s ,issss) ! for ssss ZERO
357
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
358
c Memory handling for Obara-Saika-Tracy method
360
c 0) for target classes WT0 or XT0(nbls,lnij,lnkl)
362
c 1) for recursive formulas in Obara-Saika:
364
c WT1 or XT1( mmax, nbls, lensm(mmax) )
366
c 2) for recursive formulas in Tracy :
367
c WT2(nbls,mem2) where mem2 is a sum of all matrices
368
c from xt1(lensm(mmax),1) to xt1(lensm(nsij),lensm(nskl))
370
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
384
c98 if(nsij.ge.nskl) then
386
do 10 ijstep=mmax,nsij,-1
396
do 11 klstep=mmax,nskl,-1
405
mem2=max(mem2_1,mem2_2)
407
ccc write(6,*)' memoha: mem2_1,mem2_2,mem2=',mem2_1,mem2_2,mem2
409
call getmem_zero(bl,nbls*mem0,iwt0) ! for wt0(nbls,lnij,lnkl) ZERO
410
call getmem_zero(bl,nbls*mem1,iwt1) ! for wt1(l11,nbls,l12) ZERO
411
call getmem_zero(bl,nbls*mem2,iwt2) ! for wt2(nbls,mem2) ZERO
419
subroutine memo4b(bl,nbls,igmcnt)
420
double precision bl(*)
424
common /runtype/ scftype,where
427
* lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX,
428
* NQI,NQJ,NQK,NQL,NSIJ,NSKL,
429
* NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg
431
common /logic4/ nfu(1)
433
COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4)
434
common /memor4/ iwt0,iwt1,iwt2,ibuf,ibuf2,
435
* ibfij1,ibfij2,ibfkl1,ibfkl2,
436
* ibf2l1,ibf2l2,ibf2l3,ibf2l4,ibfij3,ibfkl3,
438
* ix2l1,ix2l2,ix2l3,ix2l4,ix3l1,ix3l2,ix3l3,ix3l4,
439
* ixij,iyij,izij, iwij,ivij,iuij,isij
441
C************************************************************
443
c* initiate all addresses :
462
c------------------------------------------------
463
c Memory for "shifts"
468
mwvus=max(lnij,lnkl)*max(nfu(nqj+1),nfu(nql+1))
469
mxij=nfu(nqi+1)*nfu(nqij+1)*lnkl
474
if(where.eq.'shif') then
478
if(where.eq.'forc') then
482
if(where.eq.'hess') then
488
call getmem(mwij,iwij) ! for wij
489
call getmem_zero(bl,mxij,ixij) ! for xij ZERO
491
c count calls of getmem :
495
IF(LSHELLT.GT.0) THEN
501
myz=nfu(nqi+1)*nfu(nqj+1)*nfu(nqkl+1)
505
if(where.eq.'shif') then
509
if(where.eq.'forc') then
514
call getmem(mvus,ivij) ! for vij
515
call getmem(myz ,iyij) ! for yij
519
IF( LSHELLT.GT.1 ) THEN
520
mbf2l=nfu(nqij+1)*nfu(nqkl+1) *nbls
521
if(where.eq.'shif') then
524
if(where.eq.'forc') then
528
c* for x2l1-4, uij and sij:
530
call getmem(mvus,iuij) ! for uij
531
call getmem(mvus,isij) ! for sij
532
call getmem(myz ,izij) ! for zij
535
if(lshellt.gt.2) then
536
call getmem(mbf2l,ix2l1) ! for x2l1
537
call getmem(mbf2l,ix2l2) ! for x2l2
538
call getmem(mbf2l,ix2l3) ! for x2l3
539
call getmem(mbf2l,ix2l4) ! for x2l4
542
call getmem(mbf2l,ix2l1) ! for x2l1
543
ix2l2=ix2l1 ! for x2l2
544
ix2l3=ix2l1 ! for x2l3
545
ix2l4=ix2l1 ! for x2l4
549
IF( LSHELLT.GT.2 ) THEN
552
if(where.eq.'shif') mnbls=6*nbls
553
if(where.eq.'forc') mnbls=10*nbls
555
if(lshellt.gt.3) then
556
call getmem(mnbls*nfu(nqkl+1), ix3l1) ! for x3l1
557
call getmem(mnbls*nfu(nqkl+1), ix3l2) ! for x3l2
558
call getmem(mnbls*nfu(nqij+1), ix3l3) ! for x3l3
559
call getmem(mnbls*nfu(nqij+1), ix3l4) ! for x3l4
562
call getmem(mnbls*nfu(nqkl+1), ix3l1) ! for x3l1
564
call getmem(mnbls*nfu(nqij+1), ix3l3) ! for x3l3
576
c================================================================
577
subroutine memo5a_2(npij,mmax1)
578
c------------------------------------------
579
c Memory handling for left-hand pairs:
581
c 1: for individual shells (2 quantities)
582
c cis,cjs - contr coef. dimensions are (lci), (lcj)
584
c 2: for : xab(ijpar,3) and xp, xpn, xpp all (ijpar,3,lcij)
586
c 3: for : apb, rapb, factij, (lcij)
587
c ceofij and sij all (ijpar,lcij)
589
c 4. for : txab(ijpar,3,lcij)
591
c Total number of calls of Getmem is 11 or 12 (if gen.con.)
592
c OR 13 or 14 if where='forc'
593
c------------------------------------------
594
c for gradient derivatives:
597
common /runtype/ scftype,where
599
common /cpu/ intsize,iacc,icache,memreal
600
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
601
common /memor5x/ ieab,iecd
602
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
603
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
604
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
605
common /memor5c/ itxab,itxcd,iabcd,ihabcd
606
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
607
* icfg,jcfg,kcfg,lcfg, igcij,igckl
608
c------------------------------------------
610
c------------------------------------------
611
c reserve memory for left-hand pairs IJ :
616
call getmem(lci,icis) ! for cis(lci) 1
617
call getmem(lcj,icjs) ! for cjs(lcj) 2
618
call getmem(ijpar*3,ixab) ! for xab(ijpar,3) 3
623
ckw Do not change this order
624
call getmem(ndij3,ixp) ! for xp(ijpar,3,lcij) 4
625
call getmem(ndij3,ixpn) ! for xpn(ijpar,3,lcij) 5
626
call getmem(ndij3,ixpp) ! for xpp(ijpar,3,lcij) 6
629
call getmem(lcij,ifij) ! for factij(lcij) 7
630
call getmem(ndij,icij) ! for coefij(ijpar,lcij) 8
631
call getmem(ndij,ieab) ! for eab(ijpar,lcij) 9
632
call getmem(ndij3,itxab) ! for txab(ijpar,3,lcij) 10
635
call getmem(ndijm,iabnia) ! for abnia(mmax-1,lcij) 11
637
c------------------------------------------
638
c for general contraction on IJ-pairs
644
ngcd=ngci1*ngcj1*ngck1*ngcl1
650
ndijg=lcij*ngci1*ngcj1
651
call getmem(ndijg,igcij) ! 12
656
if(where.eq.'forc' .or. where.eq.'hess') then
657
call getmem(ndi,iaa) ! for aa(ijpar,lci) 13
658
call getmem(ndj,ibb) ! for bb(ijpar,lcj) 14
660
c------------------------------------------
662
c================================================================
663
subroutine memo5b_2(npkl,mmax1)
664
common /cpu/ intsize,iacc,icache,memreal
665
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
666
c------------------------------------------
667
c Memory handling for right-hand pairs:
668
c------------------------------------------
669
c for gradient derivatives:
672
common /runtype/ scftype,where
674
common /memor5x/ ieab,iecd
675
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
676
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
677
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
678
common /memor5c/ itxab,itxcd,iabcd,ihabcd
679
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
680
* icfg,jcfg,kcfg,lcfg, igcij,igckl
681
c------------------------------------------
683
c------------------------------------------
684
c reserve memory for right-hand pairs KL :
689
call getmem(lck,icks) ! for cks(lck) 1
690
call getmem(lcl,icls) ! for cls(lcl) 2
691
call getmem(klpar*3,ixcd) ! for xcd(klpar,3) 3
696
ckw Do not change this order
697
call getmem(ndkl3,ixq) ! for xq(klpar,3,lckl) 4
698
call getmem(ndkl3,ixqn) ! for xqn(klpar,3,lckl) 5
699
call getmem(ndkl3,ixqq) ! for xqq(klpar,3,lckl) 6
702
call getmem(ndkl,ifkl) ! for factkl(klapr,lckl) 7
703
call getmem(ndkl,ickl) ! for coefkl(klapr,lckl) 8
704
call getmem(ndkl,iecd) ! for ecd(klapr,lckl) 9
705
call getmem(ndkl3,itxcd) ! for txcd(klpar,3,lckl) 10
708
call getmem(ndklm,icdnia) ! for cdnia(mmax-1,lckl) 11
709
c------------------------------------------
710
c for general contraction on KL-pairs
716
ngcd=ngci1*ngcj1*ngck1*ngcl1
720
ndklg=lckl*ngck1*ngcl1
721
call getmem(ndklg,igckl) ! 12
723
c------------------------------------------
725
if(where.eq.'forc' .or. where.eq.'hess') then
726
call getmem(ndk,icc) ! for cc(klpar,lck) 13
728
c------------------------------------------
730
c================================================================
731
subroutine memo5c_2(nbls,mmax1,npij,npkl,nfumax)
732
common /cpu/ intsize,iacc,icache,memreal
733
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
734
c------------------------------------------
737
c 3: and quartets precalculations (12 quantities)
738
c (for whole block of contracted quartets and
739
c one primitive quartet )
741
c Total number of calls of Getmem is 21 or 23 (if gen.cont)
742
c------------------------------------------
743
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
744
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
745
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
746
common /memor5b/ irppq,
747
* irho,irr1,irys,irhoapb,irhocpd,iconst,ixwp,ixwq,ip1234,
749
common /memor5c/ itxab,itxcd,iabcd,ihabcd
750
common /memor5d/ iabnix,icdnix,ixpnx,ixqnx,ihabcdx
751
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
752
* icfg,jcfg,kcfg,lcfg, igcij,igckl
753
common /memor5f/ indxp
754
c------------------------------------------
755
c reserve memory for quartets ijkl
756
c------------------------------------------
758
if(intsize.ne.1) nblsi=nbls/intsize+1
759
c------------------------------------------
760
call getmem(nblsi,indxp) ! 1
761
call getmem(nblsi,idx1) ! for indxij 2
762
call getmem(nblsi,idx2) ! for indxkj 3
763
call getmem(nblsi,indx) ! for index 4
765
call getmem(1 ,irppq) ! for rppq(1 ) 5
766
call getmem(nbls,irr1) ! for rr1(nbls) 6
768
call getmem(1 ,irhoapb) ! for rhoapb(1 ) 7
769
call getmem(1 ,irhocpd) ! for rhocpd(1 ) 8
772
call getmem(nbls3,ixpnx) ! 9
773
call getmem(nbls3,ixwp) ! for xwp(nbls,3) 10
774
call getmem(nbls3,ixqnx) ! 11
775
call getmem(nbls3,ixwq) ! for xwq(nbls,3) 12
776
call getmem(nbls3,ip1234) ! for p1234(nbls,3) 13
777
call getmem(1 ,iabcd) ! for abcd(1 ) 14
778
call getmem(nbls,iconst) ! for const(nbls) 15
779
call getmem(nbls,irys) ! for rys(nbls) 16
781
nfha=3*nfumax*max(lcij,lckl)
782
call getmem(nfha,ihabcd) ! 17
783
c------------------------------------------
784
c for general contraction
790
ngcd=ngci1*ngcj1*ngck1*ngcl1
792
c------------------------------------------
793
c for both gen.contr. and segmented basis sets
794
c because of the common Destiny
796
call getmem(ngcd,icfg) ! 18
797
call getmem(ngcd,jcfg) ! 19
798
call getmem(ngcd,kcfg) ! 20
799
call getmem(ngcd,lcfg) ! 21
801
c------------------------------------------
802
c for general contraction
808
call getmem(nbls,indgc) ! 22
809
call getmem(nbls*ngcd,igcoef) ! 23
812
c------------------------------------------
814
c====================================================================
815
subroutine memo6(npij,npkl)
816
common /memor6/ ixyab,ixycd
819
c Memory handling for NMR derivatives
820
c reserve memory for pair quantities :
822
c ( Xa*Yb - Ya*Xb ) = xyab(ijpar,3) - contributes to Z deriv.
823
c (-Xa*Zb + Za*Xb ) = xyab(ijpar,2) - contributes to Y deriv.
824
c ( Ya*Zb + Za*Yb ) = xyab(ijpar,1) - contributes to X deriv.
826
c ( Xc*Yd - Yc*Xd ) = xycd(klpar,3) - contributes to Z deriv.
827
c (-Xc*Zd + Zc*Xd ) = xycd(klpar,2) - contributes to Y deriv.
828
c ( Yc*Zd + Zc*Yd ) = xycd(klpar,1) - contributes to X deriv.
835
call getmem(npij3,ixyab)
836
call getmem(npkl3,ixycd)
839
c================================================================
840
c used when iroute=1 (old) :
842
subroutine memo5a_1(npij,mmax1)
843
common /cpu/ intsize,iacc,icache,memreal
844
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
845
c------------------------------------------
846
c Memory handling for left-hand pairs:
848
c 1: for individual shells (4 quantities)
849
c ( aa, bb - exponents ) and ( cis,cjs - contr coef.)
850
c dimensions are (ijpar,lcij)
852
c 2: for : xab(ijpar,3) and xp, xpn, xpp all (ijpar,3,lcij)
854
c 3: for : apb, rapb, factij, ceofij and sij all (ijpar,lcij)
856
c 4. for : txab(ijpar,3,lcij)
858
c Total number of calls of Getmem is 13 or 15 (if gen.con.)
859
c------------------------------------------
860
common /memor5x/ ieab,iecd
861
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
862
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
863
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
865
common /memor5c/ itxab,itxcd,iabcd,ihabcd
866
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
867
* icfg,jcfg,kcfg,lcfg, igcij,igckl
869
c------------------------------------------
871
c------------------------------------------
872
c reserve memory for left-hand pairs IJ :
877
call getmem(ndi,iaa) ! for aa(ijpar,lci) 1
878
call getmem(ndj,ibb) ! for bb(ijpar,lcj) 2
879
call getmem(ndi,icis) ! for cis(ijpar,lci) 3
880
call getmem(ndj,icjs) ! for cjs(ijpar,lcj) 4
881
call getmem(ijpar*3,ixab) ! for xab(ijpar,3) 5
886
ckw Do not change this order
887
call getmem(ndij3,ixp) ! for xp(ijpar,3,lcij) 6
888
call getmem(ndij3,ixpn) ! for xpn(ijpar,3,lcij) 7
889
call getmem(ndij3,ixpp) ! for xpp(ijpar,3,lcij) 8
892
c call getmem(ndij,iapb) ! for apb(ijpar,lcij)
893
c call getmem(ndij,i1apb) ! for rapb(ijpar,lcij)
894
call getmem(ndij,ifij) ! for factij(ijpar,lcij) 9
895
call getmem(ndij,icij) ! for coefij(ijpar,lcij) 10
896
call getmem(ndij,ieab) ! for eab(ijpar,lcij)
898
call getmem(ndij3,itxab) ! for txab(ijpar,3,lcij) 11
901
call getmem(ndijm,iabnia) ! for abnia(ijpar,mmax-1,lcij) 12
903
c------------------------------------------
904
c for general contraction on IJ-pairs
910
ngcd=ngci1*ngcj1*ngck1*ngcl1
920
call getmem(ndig,igci) ! 13
921
call getmem(ndjg,igcj) ! 14
924
c------------------------------------------
926
c================================================================
927
subroutine memo5b_1(npkl,mmax1)
928
common /cpu/ intsize,iacc,icache,memreal
929
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
930
c------------------------------------------
931
c Memory handling for right-hand pairs:
933
c 1: for individual shells (4 quantities)
934
c ( cc, dd - exponents ) and ( cks,cls - contr coef.)
935
c dimensions are (klpar,lcij)
937
c 2: for : xcd(ijpar,3) and xq, xqn, xqq all (klpar,3,lckl)
939
c 3: for : cpd, rcpd, factkl, coefkl and skl all (klpar,lckl)
941
c 4. for : txcd(klpar,3,lckl)
943
c Total number of calls of Getmem is 13 or 15 (if gen.con.)
944
c------------------------------------------
945
common /memor5x/ ieab,iecd
946
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
947
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
948
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
950
common /memor5c/ itxab,itxcd,iabcd,ihabcd
951
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
952
* icfg,jcfg,kcfg,lcfg, igcij,igckl
954
c------------------------------------------
956
c------------------------------------------
957
c reserve memory for right-hand pairs KL :
962
call getmem(ndk,icc) ! for cc(klpar,lck) 1
963
call getmem(ndl,idd) ! for dd(klpar,lcl) 2
964
call getmem(ndk,icks) ! for cks(klpar,lck) 3
965
call getmem(ndl,icls) ! for cls(klpar,lcl) 4
966
call getmem(klpar*3,ixcd) ! for xcd(klpar,3) 5
971
ckw Do not change this order
972
call getmem(ndkl3,ixq) ! for xq(klpar,3,lckl) 6
973
call getmem(ndkl3,ixqn) ! for xqn(klpar,3,lckl) 7
974
call getmem(ndkl3,ixqq) ! for xqq(klpar,3,lckl) 8
977
c call getmem(ndkl,icpd) ! for cpd(klapr,lckl)
978
c call getmem(ndkl,i1cpd) ! for rcpd(klapr,lckl)
979
call getmem(ndkl,ifkl) ! for factkl(klapr,lckl) 9
980
call getmem(ndkl,ickl) ! for coefkl(klapr,lckl) 10
981
call getmem(ndkl,iecd) ! for ecd(klapr,lckl)
983
call getmem(ndkl3,itxcd) ! for txcd(klpar,3,lckl) 11
986
call getmem(ndklm,icdnia) ! for cdnia(klpar,mmax-1,lckl) 12
988
c------------------------------------------
989
c for general contraction on KL-pairs
995
ngcd=ngci1*ngcj1*ngck1*ngcl1
1005
call getmem(ndkg,igck) ! 13
1006
call getmem(ndlg,igcl) ! 14
1008
c------------------------------------------
1010
c================================================================
1011
subroutine memo5c_1(bl,nbls,mmax1,npij,npkl,nfha,nfumax)
1012
double precision bl(*)
1013
common /cpu/ intsize,iacc,icache,memreal
1014
common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl
1015
c------------------------------------------
1018
c 3: and quartets precalculations (12 quantities)
1019
c (for whole block of contracted quartets and
1020
c one primitive quartet )
1022
c Total number of calls of Getmem is 24 or 26 (if gen.cont)
1023
c------------------------------------------
1024
common /memor5a/ iaa,ibb,icc,idd,icis,icjs,icks,icls,
1025
* ixab,ixp,ixpn,ixpp,iabnia,iapb,i1apb,ifij,icij,isab,
1026
* ixcd,ixq,ixqn,ixqq,icdnia,icpd,i1cpd,ifkl,ickl,iscd
1028
common /memor5b/ irppq,
1029
* irho,irr1,irys,irhoapb,irhocpd,iconst,ixwp,ixwq,ip1234,
1032
common /memor5c/ itxab,itxcd,iabcd,ihabcd
1033
common /memor5d/ iabnix,icdnix,ixpnx,ixqnx,ihabcdx
1034
common /memor5e/ igci,igcj,igck,igcl,indgc,igcoef,
1035
* icfg,jcfg,kcfg,lcfg, igcij,igckl
1037
common /memor5f/ indxp
1038
c------------------------------------------
1039
c reserve memory for quartets ijkl
1040
c------------------------------------------
1042
if(intsize.ne.1) nblsi=nbls/intsize+1
1043
c------------------------------------------
1044
call getmem(nblsi,indxp) ! 3
1045
c------------------------------------------
1047
call getmem(nblsi,idx1) ! for indxij 4
1048
call getmem(nblsi,idx2) ! for indxkj 5
1049
call getmem(nblsi,indx) ! for index 6
1051
call getmem(nbls,irppq) ! for rppq(nbls) 7
1052
cNOT call getmem(nbls,irho) ! for rho(nbls) 8
1053
call getmem(nbls,irr1) ! for rr1(nbls) 9
1056
call getmem(nbls,irhoapb) ! for rhoapb(nbls) 10
1057
call getmem(nbls,irhocpd) ! for rhocpd(nbls) 11
1060
call getmem(nbmx,iabnix) ! 12
1061
call getmem(nbmx,icdnix) ! 13
1064
call getmem(nbls3,ixpnx) ! 14
1065
call getmem(nbls3,ixwp) ! for xwp(nbls,3) 15
1066
call getmem(nbls3,ixqnx) ! 16
1067
call getmem(nbls3,ixwq) ! for xwq(nbls,3) 17
1068
call getmem(nbls3,ip1234) ! for p1234(nbls,3) 18
1069
call getmem(nbls,iabcd) ! for abcd(nbls) 19
1070
call getmem(nbls,iconst) ! for const(nbls) 20
1071
call getmem(nbls,irys) ! for rys(nbls) 21
1073
call getmem(nfha*3,ihabcd) ! 22
1074
call getmem_zero(bl,nbls3*nfumax,ihabcdx) ! 23 ZERO
1076
c------------------------------------------
1077
c for general contraction
1083
ngcd=ngci1*ngcj1*ngck1*ngcl1
1085
c------------------------------------------
1086
c for both gen.contr. and segmented basis sets
1087
c because of the common Destiny
1089
call getmem(ngcd,icfg) ! 24
1090
call getmem(ngcd,jcfg) ! 25
1091
call getmem(ngcd,kcfg) ! 26
1092
call getmem(ngcd,lcfg) ! 27
1094
c------------------------------------------
1095
c for general contraction
1101
call getmem(nbls,indgc) ! 32
1102
call getmem(nbls*ngcd,igcoef) ! 33
1105
c------------------------------------------
1107
c====================================================================