1
SUBROUTINE cxsd_e(d_f1,d_i0,d_t1,d_t2,d_v2,k_f1_offset,k_i0_offset
2
&,k_t1_offset,k_t2_offset,k_v2_offset,ipg)
3
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
4
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
5
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
6
C i0 ( )_tf + = 1 * Sum ( p5 h6 ) * t ( p5 h6 )_t * i1 ( h6 p5 )_f
7
C i1 ( h6 p5 )_f + = 1 * f ( h6 p5 )_f
8
C i1 ( h6 p5 )_vt + = 1/2 * Sum ( h4 p3 ) * t ( p3 h4 )_t * v ( h4 h6 p3 p5 )_v
9
C i0 ( )_vt + = 1/4 * Sum ( h3 h4 p1 p2 ) * t ( p1 p2 h3 h4 )_t * v ( h3 h4 p1 p2 )_v
12
#include "mafdecls.fh"
16
#include "tce_mrcc.fh"
31
CHARACTER*255 filename
33
CALL OFFSET_cxsd_e_1_1(l_i1_offset,k_i1_offset,size_i1)
34
CALL TCE_FILENAME('cxsd_e_1_1_i1',filename)
35
CALL pgCREATEFILE(filename,d_i1,size_i1,ipg)
36
CALL cxsd_e_1_1(d_f1,k_f1_offset,d_i1,k_i1_offset)
37
CALL cxsd_e_1_2(d_t1,k_t1_offset,d_v2,k_v2_offset,d_i1,k_i1_offset
39
c CALL RECONCILEFILE(d_i1,size_i1)
40
call ga_pgroup_sync(ipg)
41
CALL cxsd_e_1(d_t1,k_t1_offset,d_i1,k_i1_offset,d_i0,k_i0_offset)
43
IF (.not.MA_POP_STACK(l_i1_offset)) CALL ERRQUIT('cxsd_e',-1,MA_ER
45
CALL cxsd_e_2(d_t2,k_t2_offset,d_v2,k_v2_offset,d_i0,k_i0_offset)
48
SUBROUTINE cxsd_e_1(d_a,k_a_offset,d_b,k_b_offset,d_c,k_c_offset)
49
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
50
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
51
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
52
C i0 ( )_tf + = 1 * Sum ( p5 h6 ) * t ( p5 h6 )_t * i1 ( h6 p5 )_f
55
#include "mafdecls.fh"
59
#include "tce_mrcc.fh"
95
nprocs=GA_pgroup_NNODES(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
97
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
98
IF (nex.eq.count) THEN
99
IF (0 .eq. ieor(irrep_t,irrep_f)) THEN
101
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c_sort,k_c_sort)) CALL
102
& ERRQUIT('cxsd_e_1',0,MA_ERR)
103
CALL DFILL(dimc,0.0d0,dbl_mb(k_c_sort),1)
104
DO p5b = noab+1,noab+nvab
106
IF (int_mb(k_spin+p5b-1) .eq. int_mb(k_spin+h6b-1)) THEN
107
IF (ieor(int_mb(k_sym+p5b-1),int_mb(k_sym+h6b-1)) .eq. irrep_t) TH
109
CALL TCE_RESTRICTED_2(p5b,h6b,p5b_1,h6b_1)
110
CALL TCE_RESTRICTED_2(h6b,p5b,h6b_2,p5b_2)
111
dim_common = int_mb(k_range+p5b-1) * int_mb(k_range+h6b-1)
113
dima = dim_common * dima_sort
115
dimb = dim_common * dimb_sort
116
IF ((dima .gt. 0) .and. (dimb .gt. 0)) THEN
117
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a_sort,k_a_sort)) CALL
118
& ERRQUIT('cxsd_e_1',1,MA_ERR)
119
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a,k_a)) CALL ERRQUIT('
122
ckbn @did : localize t1amp
123
CALL GET_HASH_BLOCK_MA(dbl_mb(d_a),dbl_mb(k_a),dima,
124
+ int_mb(k_a_offset),(h6b_1 - 1 + noab * (p5b_1 - noab - 1)))
126
CALL GET_HASH_BLOCK(d_a,dbl_mb(k_a),dima,int_mb(k_a_offset),(h6b_1
127
& - 1 + noab * (p5b_1 - noab - 1)))
129
CALL TCE_SORT_2(dbl_mb(k_a),dbl_mb(k_a_sort),int_mb(k_range+p5b-1)
130
&,int_mb(k_range+h6b-1),2,1,1.0d0)
131
IF (.not.MA_POP_STACK(l_a)) CALL ERRQUIT('cxsd_e_1',3,MA_ERR)
132
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b_sort,k_b_sort)) CALL
133
& ERRQUIT('cxsd_e_1',4,MA_ERR)
134
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b,k_b)) CALL ERRQUIT('
136
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p5b_2
137
& - noab - 1 + nvab * (h6b_2 - 1)))
138
CALL TCE_SORT_2(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h6b-1)
139
&,int_mb(k_range+p5b-1),1,2,1.0d0)
140
IF (.not.MA_POP_STACK(l_b)) CALL ERRQUIT('cxsd_e_1',6,MA_ERR)
141
CALL DGEMM('T','N',dima_sort,dimb_sort,dim_common,1.0d0,dbl_mb(k_a
142
&_sort),dim_common,dbl_mb(k_b_sort),dim_common,1.0d0,dbl_mb(k_c_sor
144
IF (.not.MA_POP_STACK(l_b_sort)) CALL ERRQUIT('cxsd_e_1',7,MA_ERR)
145
IF (.not.MA_POP_STACK(l_a_sort)) CALL ERRQUIT('cxsd_e_1',8,MA_ERR)
151
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c,k_c)) CALL ERRQUIT('
153
CALL TCE_SORT_0(dbl_mb(k_c_sort),dbl_mb(k_c),1.0d0)
154
CALL ADD_HASH_BLOCK(d_c,dbl_mb(k_c),dimc,int_mb(k_c_offset),0)
155
IF (.not.MA_POP_STACK(l_c)) CALL ERRQUIT('cxsd_e_1',10,MA_ERR)
156
IF (.not.MA_POP_STACK(l_c_sort)) CALL ERRQUIT('cxsd_e_1',11,MA_ERR
159
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
162
nex=NXTASKsub(-nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
163
call GA_Pgroup_SYNC(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
166
SUBROUTINE cxsd_e_1_1(d_a,k_a_offset,d_c,k_c_offset)
167
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
168
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
169
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
170
C i1 ( h6 p5 )_f + = 1 * f ( h6 p5 )_f
173
#include "mafdecls.fh"
175
#include "errquit.fh"
177
#include "tce_mrcc.fh"
201
nprocs=GA_pgroup_NNODES(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
203
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
205
DO p5b = noab+1,noab+nvab
206
IF (nex.eq.count) THEN
207
IF ((.not.restricted).or.(int_mb(k_spin+h6b-1)+int_mb(k_spin+p5b-1
209
IF (int_mb(k_spin+h6b-1) .eq. int_mb(k_spin+p5b-1)) THEN
210
IF (ieor(int_mb(k_sym+h6b-1),int_mb(k_sym+p5b-1)) .eq. irrep_f) TH
212
dimc = int_mb(k_range+h6b-1) * int_mb(k_range+p5b-1)
213
CALL TCE_RESTRICTED_2(h6b,p5b,h6b_1,p5b_1)
215
dima_sort = int_mb(k_range+h6b-1) * int_mb(k_range+p5b-1)
216
dima = dim_common * dima_sort
217
IF (dima .gt. 0) THEN
218
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a_sort,k_a_sort)) CALL
219
& ERRQUIT('cxsd_e_1_1',0,MA_ERR)
220
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a,k_a)) CALL ERRQUIT('
221
&cxsd_e_1_1',1,MA_ERR)
222
#ifdef MRCC_LOCAL_FOCK
223
ckbn @did : localize fock
224
CALL GET_HASH_BLOCK_MA(dbl_mb(d_a),dbl_mb(k_a),dima,
225
+ int_mb(k_a_offset), (p5b_1 - 1 + (noab+nvab) * (h6b_1 - 1)))
227
CALL GET_HASH_BLOCK(d_a,dbl_mb(k_a),dima,int_mb(k_a_offset),(p5b_1
228
& - 1 + (noab+nvab) * (h6b_1 - 1)))
230
CALL TCE_SORT_2(dbl_mb(k_a),dbl_mb(k_a_sort),int_mb(k_range+h6b-1)
231
&,int_mb(k_range+p5b-1),2,1,1.0d0)
232
IF (.not.MA_POP_STACK(l_a)) CALL ERRQUIT('cxsd_e_1_1',2,MA_ERR)
233
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c,k_c)) CALL ERRQUIT('
234
&cxsd_e_1_1',3,MA_ERR)
235
CALL TCE_SORT_2(dbl_mb(k_a_sort),dbl_mb(k_c),int_mb(k_range+p5b-1)
236
&,int_mb(k_range+h6b-1),2,1,1.0d0)
237
CALL ADD_HASH_BLOCK(d_c,dbl_mb(k_c),dimc,int_mb(k_c_offset),(p5b -
238
& noab - 1 + nvab * (h6b - 1)))
239
IF (.not.MA_POP_STACK(l_c)) CALL ERRQUIT('cxsd_e_1_1',4,MA_ERR)
240
IF (.not.MA_POP_STACK(l_a_sort)) CALL ERRQUIT('cxsd_e_1_1',5,MA_ER
246
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
251
nex=NXTASKsub(-nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
252
call GA_Pgroup_SYNC(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
255
SUBROUTINE OFFSET_cxsd_e_1_1(l_a_offset,k_a_offset,size)
256
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
257
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
258
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
262
#include "mafdecls.fh"
264
#include "errquit.fh"
266
#include "tce_mrcc.fh"
276
DO p5b = noab+1,noab+nvab
277
IF (int_mb(k_spin+h6b-1) .eq. int_mb(k_spin+p5b-1)) THEN
278
IF (ieor(int_mb(k_sym+h6b-1),int_mb(k_sym+p5b-1)) .eq. irrep_f) TH
280
IF ((.not.restricted).or.(int_mb(k_spin+h6b-1)+int_mb(k_spin+p5b-1
288
IF (.not.MA_PUSH_GET(mt_int,2*length+1,'noname',l_a_offset,k_a_off
289
&set)) CALL ERRQUIT('cxsd_e_1_1',0,MA_ERR)
290
int_mb(k_a_offset) = length
294
DO p5b = noab+1,noab+nvab
295
IF (int_mb(k_spin+h6b-1) .eq. int_mb(k_spin+p5b-1)) THEN
296
IF (ieor(int_mb(k_sym+h6b-1),int_mb(k_sym+p5b-1)) .eq. irrep_f) TH
298
IF ((.not.restricted).or.(int_mb(k_spin+h6b-1)+int_mb(k_spin+p5b-1
301
int_mb(k_a_offset+addr) = p5b - noab - 1 + nvab * (h6b - 1)
302
int_mb(k_a_offset+length+addr) = size
303
size = size + int_mb(k_range+h6b-1) * int_mb(k_range+p5b-1)
311
SUBROUTINE cxsd_e_1_2(d_a,k_a_offset,d_b,k_b_offset,d_c,k_c_offset
313
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
314
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
315
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
316
C i1 ( h6 p5 )_vt + = 1/2 * Sum ( h4 p3 ) * t ( p3 h4 )_t * v ( h4 h6 p3 p5 )_v
319
#include "mafdecls.fh"
321
#include "errquit.fh"
323
#include "tce_mrcc.fh"
363
nprocs=GA_pgroup_NNODES(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
365
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
367
DO p5b = noab+1,noab+nvab
368
IF (nex.eq.count) THEN
369
IF ((.not.restricted).or.(int_mb(k_spin+h6b-1)+int_mb(k_spin+p5b-1
371
IF (int_mb(k_spin+h6b-1) .eq. int_mb(k_spin+p5b-1)) THEN
372
IF (ieor(int_mb(k_sym+h6b-1),int_mb(k_sym+p5b-1)) .eq. ieor(irrep_
374
dimc = int_mb(k_range+h6b-1) * int_mb(k_range+p5b-1)
375
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c_sort,k_c_sort)) CALL
376
& ERRQUIT('cxsd_e_1_2',0,MA_ERR)
377
CALL DFILL(dimc,0.0d0,dbl_mb(k_c_sort),1)
378
DO p3b = noab+1,noab+nvab
380
IF (int_mb(k_spin+p3b-1) .eq. int_mb(k_spin+h4b-1)) THEN
381
IF (ieor(int_mb(k_sym+p3b-1),int_mb(k_sym+h4b-1)) .eq. irrep_t) TH
383
CALL TCE_RESTRICTED_2(p3b,h4b,p3b_1,h4b_1)
384
CALL TCE_RESTRICTED_4(h6b,h4b,p5b,p3b,h6b_2,h4b_2,p5b_2,p3b_2)
385
dim_common = int_mb(k_range+p3b-1) * int_mb(k_range+h4b-1)
387
dima = dim_common * dima_sort
388
dimb_sort = int_mb(k_range+h6b-1) * int_mb(k_range+p5b-1)
389
dimb = dim_common * dimb_sort
390
IF ((dima .gt. 0) .and. (dimb .gt. 0)) THEN
391
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a_sort,k_a_sort)) CALL
392
& ERRQUIT('cxsd_e_1_2',1,MA_ERR)
393
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a,k_a)) CALL ERRQUIT('
394
&cxsd_e_1_2',2,MA_ERR)
396
ckbn @did : localize t1amp
397
CALL GET_HASH_BLOCK_MA(dbl_mb(d_a),dbl_mb(k_a),dima,
398
+ int_mb(k_a_offset),(h4b_1 - 1 + noab * (p3b_1 - noab - 1)))
400
CALL GET_HASH_BLOCK(d_a,dbl_mb(k_a),dima,int_mb(k_a_offset),(h4b_1
401
& - 1 + noab * (p3b_1 - noab - 1)))
403
CALL TCE_SORT_2(dbl_mb(k_a),dbl_mb(k_a_sort),int_mb(k_range+p3b-1)
404
&,int_mb(k_range+h4b-1),2,1,1.0d0)
405
IF (.not.MA_POP_STACK(l_a)) CALL ERRQUIT('cxsd_e_1_2',3,MA_ERR)
406
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b_sort,k_b_sort)) CALL
407
& ERRQUIT('cxsd_e_1_2',4,MA_ERR)
408
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b,k_b)) CALL ERRQUIT('
409
&cxsd_e_1_2',5,MA_ERR)
410
IF ((h4b .le. h6b) .and. (p3b .le. p5b)) THEN
412
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p5b_2
413
& - 1 + (noab+nvab) * (p3b_2 - 1 + (noab+nvab) * (h6b_2 - 1 + (noab
414
&+nvab) * (h4b_2 - 1)))))
416
CALL GET_HASH_BLOCK_I(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),
418
& - 1 + (noab+nvab) * (p3b_2 - 1 + (noab+nvab) * (h6b_2 - 1 + (noab
419
&+nvab) * (h4b_2 - 1)))),p5b_2,p3b_2,h6b_2,h4b_2)
421
CALL TCE_SORT_4(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
422
&,int_mb(k_range+h6b-1),int_mb(k_range+p3b-1),int_mb(k_range+p5b-1)
425
IF ((h4b .le. h6b) .and. (p5b .lt. p3b)) THEN
427
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p3b_2
428
& - 1 + (noab+nvab) * (p5b_2 - 1 + (noab+nvab) * (h6b_2 - 1 + (noab
429
&+nvab) * (h4b_2 - 1)))))
431
CALL GET_HASH_BLOCK_I(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),
433
& - 1 + (noab+nvab) * (p5b_2 - 1 + (noab+nvab) * (h6b_2 - 1 + (noab
434
&+nvab) * (h4b_2 - 1)))),p3b_2,p5b_2,h6b_2,h4b_2)
436
CALL TCE_SORT_4(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
437
&,int_mb(k_range+h6b-1),int_mb(k_range+p5b-1),int_mb(k_range+p3b-1)
440
IF ((h6b .lt. h4b) .and. (p3b .le. p5b)) THEN
442
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p5b_2
443
& - 1 + (noab+nvab) * (p3b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
444
&+nvab) * (h6b_2 - 1)))))
446
CALL GET_HASH_BLOCK_I(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),
448
& - 1 + (noab+nvab) * (p3b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
449
&+nvab) * (h6b_2 - 1)))),p5b_2,p3b_2,h4b_2,h6b_2)
451
CALL TCE_SORT_4(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h6b-1)
452
&,int_mb(k_range+h4b-1),int_mb(k_range+p3b-1),int_mb(k_range+p5b-1)
455
IF ((h6b .lt. h4b) .and. (p5b .lt. p3b)) THEN
457
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p3b_2
458
& - 1 + (noab+nvab) * (p5b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
459
&+nvab) * (h6b_2 - 1)))))
461
CALL GET_HASH_BLOCK_I(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),
463
& - 1 + (noab+nvab) * (p5b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
464
&+nvab) * (h6b_2 - 1)))),p3b_2,p5b_2,h4b_2,h6b_2)
466
CALL TCE_SORT_4(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h6b-1)
467
&,int_mb(k_range+h4b-1),int_mb(k_range+p5b-1),int_mb(k_range+p3b-1)
470
IF (.not.MA_POP_STACK(l_b)) CALL ERRQUIT('cxsd_e_1_2',6,MA_ERR)
471
CALL DGEMM('T','N',dima_sort,dimb_sort,dim_common,1.0d0,dbl_mb(k_a
472
&_sort),dim_common,dbl_mb(k_b_sort),dim_common,1.0d0,dbl_mb(k_c_sor
474
IF (.not.MA_POP_STACK(l_b_sort)) CALL ERRQUIT('cxsd_e_1_2',7,MA_ER
476
IF (.not.MA_POP_STACK(l_a_sort)) CALL ERRQUIT('cxsd_e_1_2',8,MA_ER
483
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c,k_c)) CALL ERRQUIT('
484
&cxsd_e_1_2',9,MA_ERR)
485
CALL TCE_SORT_2(dbl_mb(k_c_sort),dbl_mb(k_c),int_mb(k_range+p5b-1)
486
&,int_mb(k_range+h6b-1),2,1,1.0d0/2.0d0)
487
CALL ADD_HASH_BLOCK(d_c,dbl_mb(k_c),dimc,int_mb(k_c_offset),(p5b -
488
& noab - 1 + nvab * (h6b - 1)))
489
IF (.not.MA_POP_STACK(l_c)) CALL ERRQUIT('cxsd_e_1_2',10,MA_ERR)
490
IF (.not.MA_POP_STACK(l_c_sort)) CALL ERRQUIT('cxsd_e_1_2',11,MA_E
495
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
500
nex=NXTASKsub(-nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
501
call GA_Pgroup_SYNC(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
504
SUBROUTINE cxsd_e_2(d_a,k_a_offset,d_b,k_b_offset,d_c,k_c_offset)
505
C $Id: cxsd_e.F,v 1.6 2007/09/14 18:41:34 kowalski Exp $
506
C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
507
C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
508
C i0 ( )_vt + = 1/4 * Sum ( h3 h4 p1 p2 ) * t ( p1 p2 h3 h4 )_t * v ( h3 h4 p1 p2 )_v
511
#include "mafdecls.fh"
513
#include "errquit.fh"
515
#include "tce_mrcc.fh"
560
DOUBLE PRECISION FACTORIAL
563
nprocs=GA_pgroup_NNODES(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
565
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
566
IF (nex.eq.count) THEN
567
IF (0 .eq. ieor(irrep_v,irrep_t)) THEN
569
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c_sort,k_c_sort)) CALL
570
& ERRQUIT('cxsd_e_2',0,MA_ERR)
571
CALL DFILL(dimc,0.0d0,dbl_mb(k_c_sort),1)
572
DO p1b = noab+1,noab+nvab
573
DO p2b = p1b,noab+nvab
576
IF (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1) .eq. int_mb(k_spin+h
577
&3b-1)+int_mb(k_spin+h4b-1)) THEN
578
IF (ieor(int_mb(k_sym+p1b-1),ieor(int_mb(k_sym+p2b-1),ieor(int_mb(
579
&k_sym+h3b-1),int_mb(k_sym+h4b-1)))) .eq. irrep_t) THEN
580
CALL TCE_RESTRICTED_4(p1b,p2b,h3b,h4b,p1b_1,p2b_1,h3b_1,h4b_1)
581
CALL TCE_RESTRICTED_4(h3b,h4b,p1b,p2b,h3b_2,h4b_2,p1b_2,p2b_2)
582
dim_common = int_mb(k_range+p1b-1) * int_mb(k_range+p2b-1) * int_m
583
&b(k_range+h3b-1) * int_mb(k_range+h4b-1)
585
dima = dim_common * dima_sort
587
dimb = dim_common * dimb_sort
588
IF ((dima .gt. 0) .and. (dimb .gt. 0)) THEN
589
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a_sort,k_a_sort)) CALL
590
& ERRQUIT('cxsd_e_2',1,MA_ERR)
591
IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a,k_a)) CALL ERRQUIT('
593
CALL GET_HASH_BLOCK(d_a,dbl_mb(k_a),dima,int_mb(k_a_offset),(h4b_1
594
& - 1 + noab * (h3b_1 - 1 + noab * (p2b_1 - noab - 1 + nvab * (p1b_
596
CALL TCE_SORT_4(dbl_mb(k_a),dbl_mb(k_a_sort),int_mb(k_range+p1b-1)
597
&,int_mb(k_range+p2b-1),int_mb(k_range+h3b-1),int_mb(k_range+h4b-1)
599
IF (.not.MA_POP_STACK(l_a)) CALL ERRQUIT('cxsd_e_2',3,MA_ERR)
600
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b_sort,k_b_sort)) CALL
601
& ERRQUIT('cxsd_e_2',4,MA_ERR)
602
IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b,k_b)) CALL ERRQUIT('
605
CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p2b_2
606
& - 1 + (noab+nvab) * (p1b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
607
&+nvab) * (h3b_2 - 1)))))
609
CALL GET_HASH_BLOCK_I(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),
611
& - 1 + (noab+nvab) * (p1b_2 - 1 + (noab+nvab) * (h4b_2 - 1 + (noab
612
&+nvab) * (h3b_2 - 1)))),p2b_2,p1b_2,h4b_2,h3b_2)
614
CALL TCE_SORT_4(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h3b-1)
615
&,int_mb(k_range+h4b-1),int_mb(k_range+p1b-1),int_mb(k_range+p2b-1)
617
IF (.not.MA_POP_STACK(l_b)) CALL ERRQUIT('cxsd_e_2',6,MA_ERR)
621
IF (p1b .eq. p2b) THEN
622
nsuperp(isuperp) = nsuperp(isuperp) + 1
624
isuperp = isuperp + 1
629
IF (h3b .eq. h4b) THEN
630
nsubh(isubh) = nsubh(isubh) + 1
634
CALL DGEMM('T','N',dima_sort,dimb_sort,dim_common,4.0d0/FACTORIAL(
635
&nsuperp(1))/FACTORIAL(nsuperp(2))/FACTORIAL(nsubh(1))/FACTORIAL(ns
636
&ubh(2)),dbl_mb(k_a_sort),dim_common,dbl_mb(k_b_sort),dim_common,1.
637
&0d0,dbl_mb(k_c_sort),dima_sort)
638
IF (.not.MA_POP_STACK(l_b_sort)) CALL ERRQUIT('cxsd_e_2',7,MA_ERR)
639
IF (.not.MA_POP_STACK(l_a_sort)) CALL ERRQUIT('cxsd_e_2',8,MA_ERR)
647
IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c,k_c)) CALL ERRQUIT('
649
CALL TCE_SORT_0(dbl_mb(k_c_sort),dbl_mb(k_c),1.0d0/4.0d0)
650
CALL ADD_HASH_BLOCK(d_c,dbl_mb(k_c),dimc,int_mb(k_c_offset),0)
651
IF (.not.MA_POP_STACK(l_c)) CALL ERRQUIT('cxsd_e_2',10,MA_ERR)
652
IF (.not.MA_POP_STACK(l_c_sort)) CALL ERRQUIT('cxsd_e_2',11,MA_ERR
655
nex=NXTASKsub(nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
658
nex=NXTASKsub(-nprocs,1,int_mb(k_innodes+ga_nnodes()+ga_nodeid()))
659
call GA_Pgroup_SYNC(int_mb(k_innodes+ga_nnodes()+ga_nodeid()))