1
1
subroutine tce_jacobi_x2(d_r2,k_r2_offset)
3
c $Id: tce_jacobi_x2.F,v 1.1 2008-09-30 18:35:47 jhammond Exp $
13
#include "tce_main.fh"
14
#include "tce_diis.fh"
38
nodezero = (ga_nodeid().eq.0)
39
noloadbalance = ((ioalg.eq.4).or.
40
1 ((ioalg.eq.6).and.(.not.fileisga(d_r2))))
43
cc next = nxtval(nprocs)
44
next = NXTASK(nprocs, 1)
45
do p1b = noab+1,noab+nvab
46
do p2b = p1b,noab+nvab
49
if (noloadbalance.or.(next.eq.count)) then
50
if (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)
51
1 .eq. int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1)) then
52
if ((.not.restricted).or.
53
1 (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)+
54
2 int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1).ne.8)) then
55
if (ieor(int_mb(k_sym+p1b-1),ieor(int_mb(k_sym+p2b-1),
56
1 ieor(int_mb(k_sym+h3b-1),int_mb(k_sym+h4b-1))))
58
size = int_mb(k_range+p1b-1) * int_mb(k_range+p2b-1)
59
1 * int_mb(k_range+h3b-1) * int_mb(k_range+h4b-1)
60
if (.not.ma_push_get(mt_dbl,size,'r2',l_r2,k_r2))
61
1 call errquit('tce_jacobi_x2: MA problem',0,MA_ERR)
62
call get_hash_block(d_r2,dbl_mb(k_r2),size,
63
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
64
2 *noab+h3b-1)*noab+h4b-1))
66
do p1 = 1,int_mb(k_range+p1b-1)
67
do p2 = 1,int_mb(k_range+p2b-1)
68
do h3 = 1,int_mb(k_range+h3b-1)
69
do h4 = 1,int_mb(k_range+h4b-1)
71
dbl_mb(k_r2+i-1) = dbl_mb(k_r2+i-1)
72
1 / (-dbl_mb(k_evl_sorted+int_mb(k_offset+p1b-1)+p1-1)
73
2 -dbl_mb(k_evl_sorted+int_mb(k_offset+p2b-1)+p2-1)
74
3 +dbl_mb(k_evl_sorted+int_mb(k_offset+h3b-1)+h3-1)
75
4 +dbl_mb(k_evl_sorted+int_mb(k_offset+h4b-1)+h4-1))
80
call put_hash_block(d_r2,dbl_mb(k_r2),size,
81
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
82
2 *noab+h3b-1)*noab+h4b-1))
83
if (.not.ma_pop_stack(l_r2))
84
1 call errquit('tce_jacobi_x2: MA problem',1,MA_ERR)
88
cc next = nxtval(nprocs)
89
next = NXTASK(nprocs, 1)
96
cc next = nxtval(-nprocs)
97
next = NXTASK(-nprocs, 1)
3
c $Id: tce_jacobi_x2.F 21255 2011-10-20 18:40:40Z kowalski $
13
#include "tce_main.fh"
14
#include "tce_diis.fh"
38
nodezero = (ga_nodeid().eq.0)
39
noloadbalance = ((ioalg.eq.4).or.
40
1 ((ioalg.eq.6).and.(.not.fileisga(d_r2))))
43
cc next = nxtval(nprocs)
44
next = NXTASK(nprocs, 1)
45
do p1b = noab+1,noab+nvab
46
do p2b = p1b,noab+nvab
49
if (noloadbalance.or.(next.eq.count)) then
50
if (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)
51
1 .eq. int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1)) then
52
if ((.not.restricted).or.
53
1 (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)+
54
2 int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1).ne.8)) then
55
if (ieor(int_mb(k_sym+p1b-1),ieor(int_mb(k_sym+p2b-1),
56
1 ieor(int_mb(k_sym+h3b-1),int_mb(k_sym+h4b-1))))
58
size = int_mb(k_range+p1b-1) * int_mb(k_range+p2b-1)
59
1 * int_mb(k_range+h3b-1) * int_mb(k_range+h4b-1)
60
if (.not.ma_push_get(mt_dbl,size,'r2',l_r2,k_r2))
61
1 call errquit('tce_jacobi_x2: MA problem',0,MA_ERR)
62
call get_hash_block(d_r2,dbl_mb(k_r2),size,
63
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
64
2 *noab+h3b-1)*noab+h4b-1))
66
do p1 = 1,int_mb(k_range+p1b-1)
67
do p2 = 1,int_mb(k_range+p2b-1)
68
do h3 = 1,int_mb(k_range+h3b-1)
69
do h4 = 1,int_mb(k_range+h4b-1)
71
dbl_mb(k_r2+i-1) = dbl_mb(k_r2+i-1)
72
1 / (-dbl_mb(k_evl_sorted+int_mb(k_offset+p1b-1)+p1-1)
73
2 -dbl_mb(k_evl_sorted+int_mb(k_offset+p2b-1)+p2-1)
74
3 +dbl_mb(k_evl_sorted+int_mb(k_offset+h3b-1)+h3-1)
75
4 +dbl_mb(k_evl_sorted+int_mb(k_offset+h4b-1)+h4-1))
80
call put_hash_block(d_r2,dbl_mb(k_r2),size,
81
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
82
2 *noab+h3b-1)*noab+h4b-1))
83
if (.not.ma_pop_stack(l_r2))
84
1 call errquit('tce_jacobi_x2: MA problem',1,MA_ERR)
88
cc next = nxtval(nprocs)
89
next = NXTASK(nprocs, 1)
96
cc next = nxtval(-nprocs)
97
next = NXTASK(-nprocs, 1)
104
subroutine tce_jacobi_x2a(d_r2,k_r2_offset,omega)
106
c $Id: tce_jacobi_x2.F 21255 2011-10-20 18:40:40Z kowalski $
110
#include "mafdecls.fh"
114
#include "errquit.fh"
116
#include "tce_main.fh"
117
#include "tce_diis.fh"
131
LOGICAL is_active_1,is_active_2,is_active_3,is_active_4
135
double precision omega
141
logical noloadbalance
143
nodezero = (ga_nodeid().eq.0)
144
noloadbalance = ((ioalg.eq.4).or.
145
1 ((ioalg.eq.6).and.(.not.fileisga(d_r2))))
148
cc next = nxtval(nprocs)
149
next = NXTASK(nprocs, 1)
150
do p1b = noab+1,noab+nvab
151
do p2b = p1b,noab+nvab
154
if (noloadbalance.or.(next.eq.count)) then
155
IF(is_active_4(p1b,p2b,h3b,h4b)) THEN
156
if (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)
157
1 .eq. int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1)) then
158
if ((.not.restricted).or.
159
1 (int_mb(k_spin+p1b-1)+int_mb(k_spin+p2b-1)+
160
2 int_mb(k_spin+h3b-1)+int_mb(k_spin+h4b-1).ne.8)) then
161
if (ieor(int_mb(k_sym+p1b-1),ieor(int_mb(k_sym+p2b-1),
162
1 ieor(int_mb(k_sym+h3b-1),int_mb(k_sym+h4b-1))))
164
size = int_mb(k_range+p1b-1) * int_mb(k_range+p2b-1)
165
1 * int_mb(k_range+h3b-1) * int_mb(k_range+h4b-1)
166
if (.not.ma_push_get(mt_dbl,size,'r2',l_r2,k_r2))
167
1 call errquit('tce_jacobi_x2: MA problem',0,MA_ERR)
168
call get_hash_block(d_r2,dbl_mb(k_r2),size,
169
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
170
2 *noab+h3b-1)*noab+h4b-1))
172
do p1 = 1,int_mb(k_range+p1b-1)
173
do p2 = 1,int_mb(k_range+p2b-1)
174
do h3 = 1,int_mb(k_range+h3b-1)
175
do h4 = 1,int_mb(k_range+h4b-1)
177
dbl_mb(k_r2+i-1) = dbl_mb(k_r2+i-1)
178
1 / (-dbl_mb(k_evl_sorted+int_mb(k_offset+p1b-1)+p1-1)
179
2 -dbl_mb(k_evl_sorted+int_mb(k_offset+p2b-1)+p2-1)
180
3 +dbl_mb(k_evl_sorted+int_mb(k_offset+h3b-1)+h3-1)
181
4 +dbl_mb(k_evl_sorted+int_mb(k_offset+h4b-1)+h4-1))
186
call put_hash_block(d_r2,dbl_mb(k_r2),size,
187
1 int_mb(k_r2_offset),((((p1b-noab-1)*nvab+p2b-noab-1)
188
2 *noab+h3b-1)*noab+h4b-1))
189
if (.not.ma_pop_stack(l_r2))
190
1 call errquit('tce_jacobi_x2: MA problem',1,MA_ERR)
195
cc next = nxtval(nprocs)
196
next = NXTASK(nprocs, 1)
203
cc next = nxtval(-nprocs)
204
next = NXTASK(-nprocs, 1)