3
\brief Enter brief description of file here
7
#include <libpsio/psio.h>
8
#include <libciomr/libciomr.h>
9
#include <libdpd/dpd.h>
15
namespace psi { namespace ccsort {
18
** fock(): Build the alpha and beta Fock matrices from the
19
** one-electron integrals/frozen-core operator and active two-electron
23
** Modified to include UHF references, TDC, June 2001.
27
** (1) This routine isn't absolutely necessary for RHF and UHF
28
** references, as one could simply read the Fock eigenvalues from
29
** PSIF_CHKPT and be happy with that. However, this code is useful as a
30
** partial check of the integral transformation and sorting routines.
32
** (2) An alternative but currently unused algorithm may be found in
41
if(params.ref == 2) fock_uhf();
48
int i, j, I, J, Gi, Gj, IM, JM, MI, MJ;
49
int a, b, A, B, Ga, Gb, AM, BM, MA, MB;
51
int *aoccpi, *boccpi, *aocc_off, *bocc_off;
52
int *avirtpi, *bvirtpi, *avir_off, *bvir_off;
53
dpdfile2 fIJ, fij, fAB, fab, fIA, fia;
54
dpdfile2 hIJ, hij, hAB, hab, hIA, hia;
55
dpdbuf4 A_AA, A_BB, A_AB, C_AA, C_BB, C_AB, E_AA, E_BB, E_AB;
57
nirreps = moinfo.nirreps;
58
aoccpi = moinfo.aoccpi;
59
boccpi = moinfo.boccpi;
60
avirtpi = moinfo.avirtpi;
61
bvirtpi = moinfo.bvirtpi;
62
aocc_off = moinfo.aocc_off;
63
bocc_off = moinfo.bocc_off;
64
avir_off = moinfo.avir_off;
65
bvir_off = moinfo.bvir_off;
67
dpd_file2_init(&hIJ, CC_OEI, 0, 0, 0, "h(I,J)");
68
dpd_file2_init(&hij, CC_OEI, 0, 2, 2, "h(i,j)");
69
dpd_file2_init(&hAB, CC_OEI, 0, 1, 1, "h(A,B)");
70
dpd_file2_init(&hab, CC_OEI, 0, 3, 3, "h(a,b)");
71
dpd_file2_init(&hIA, CC_OEI, 0, 0, 1, "h(I,A)");
72
dpd_file2_init(&hia, CC_OEI, 0, 2, 3, "h(i,a)");
74
dpd_file2_mat_init(&hIJ);
75
dpd_file2_mat_init(&hij);
76
dpd_file2_mat_init(&hAB);
77
dpd_file2_mat_init(&hab);
78
dpd_file2_mat_init(&hIA);
79
dpd_file2_mat_init(&hia);
81
dpd_file2_mat_rd(&hIJ);
82
dpd_file2_mat_rd(&hij);
83
dpd_file2_mat_rd(&hAB);
84
dpd_file2_mat_rd(&hab);
85
dpd_file2_mat_rd(&hIA);
86
dpd_file2_mat_rd(&hia);
88
dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
89
dpd_file2_init(&fij, CC_OEI, 0, 2, 2, "fij");
91
dpd_file2_mat_init(&fIJ);
92
dpd_file2_mat_init(&fij);
94
for(h=0; h < nirreps; h++) {
96
for(i=0; i < aoccpi[h]; i++)
97
for(j=0; j < aoccpi[h]; j++)
98
fIJ.matrix[h][i][j] = hIJ.matrix[h][i][j];
100
for(i=0; i < boccpi[h]; i++)
101
for(j=0; j < boccpi[h]; j++)
102
fij.matrix[h][i][j] = hij.matrix[h][i][j];
105
dpd_buf4_init(&A_AA, CC_AINTS, 0, 0, 0, 0, 0, 1, "A <IJ|KL>");
106
dpd_buf4_init(&A_AB, CC_AINTS, 0, 22, 22, 22, 22, 0, "A <Ij|Kl>");
107
for(h=0; h < nirreps; h++) {
108
dpd_buf4_mat_irrep_init(&A_AA, h);
109
dpd_buf4_mat_irrep_rd(&A_AA, h);
110
dpd_buf4_mat_irrep_init(&A_AB, h);
111
dpd_buf4_mat_irrep_rd(&A_AB, h);
112
for(Gi=0; Gi < nirreps; Gi++) {
114
for(i=0; i < aoccpi[Gi]; i++) {
115
I = aocc_off[Gi] + i;
116
for(j=0; j < aoccpi[Gj]; j++) {
117
J = aocc_off[Gj] + j;
118
for(m=0; m < aoccpi[Gm]; m++) {
119
M = aocc_off[Gm] + m;
120
IM = A_AA.params->rowidx[I][M];
121
JM = A_AA.params->colidx[J][M];
122
fIJ.matrix[Gi][i][j] += A_AA.matrix[h][IM][JM];
124
for(m=0; m < boccpi[Gm]; m++) {
125
M = bocc_off[Gm] + m;
126
IM = A_AB.params->rowidx[I][M];
127
JM = A_AB.params->colidx[J][M];
128
fIJ.matrix[Gi][i][j] += A_AB.matrix[h][IM][JM];
133
dpd_buf4_mat_irrep_close(&A_AA, h);
134
dpd_buf4_mat_irrep_close(&A_AB, h);
136
dpd_buf4_close(&A_AA);
137
dpd_buf4_close(&A_AB);
139
dpd_buf4_init(&A_BB, CC_AINTS, 0, 10, 10, 10, 10, 1, "A <ij|kl>");
140
dpd_buf4_init(&A_AB, CC_AINTS, 0, 22, 22, 22, 22, 0, "A <Ij|Kl>");
141
for(h=0; h < nirreps; h++) {
142
dpd_buf4_mat_irrep_init(&A_BB, h);
143
dpd_buf4_mat_irrep_rd(&A_BB, h);
144
dpd_buf4_mat_irrep_init(&A_AB, h);
145
dpd_buf4_mat_irrep_rd(&A_AB, h);
146
for(Gi=0; Gi < nirreps; Gi++) {
148
for(i=0; i < boccpi[Gi]; i++) {
149
I = bocc_off[Gi] + i;
150
for(j=0; j < boccpi[Gj]; j++) {
151
J = bocc_off[Gj] + j;
152
for(m=0; m < boccpi[Gm]; m++) {
153
M = bocc_off[Gm] + m;
154
IM = A_BB.params->rowidx[I][M];
155
JM = A_BB.params->colidx[J][M];
156
fij.matrix[Gi][i][j] += A_BB.matrix[h][IM][JM];
158
for(m=0; m < aoccpi[Gm]; m++) {
159
M = aocc_off[Gm] + m;
160
MI = A_AB.params->rowidx[M][I];
161
MJ = A_AB.params->colidx[M][J];
162
fij.matrix[Gi][i][j] += A_AB.matrix[h][MI][MJ];
167
dpd_buf4_mat_irrep_close(&A_BB, h);
168
dpd_buf4_mat_irrep_close(&A_AB, h);
170
dpd_buf4_close(&A_BB);
171
dpd_buf4_close(&A_AB);
173
dpd_file2_mat_wrt(&fIJ);
174
dpd_file2_mat_wrt(&fij);
176
dpd_file2_close(&fIJ);
177
dpd_file2_close(&fij);
179
dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
180
dpd_file2_init(&fab, CC_OEI, 0, 3, 3, "fab");
182
dpd_file2_mat_init(&fAB);
183
dpd_file2_mat_init(&fab);
185
for(h=0; h < nirreps; h++) {
187
for(a=0; a < avirtpi[h]; a++)
188
for(b=0; b < avirtpi[h]; b++)
189
fAB.matrix[h][a][b] = hAB.matrix[h][a][b];
191
for(a=0; a < bvirtpi[h]; a++)
192
for(b=0; b < bvirtpi[h]; b++)
193
fab.matrix[h][a][b] = hab.matrix[h][a][b];
196
dpd_buf4_init(&C_AA, CC_CINTS, 0, 20, 20, 20, 20, 0, "C <IA||JB>");
197
dpd_buf4_init(&C_AB, CC_CINTS, 0, 26, 26, 26, 26, 0, "C <Ai|Bj>");
198
for(h=0; h < nirreps; h++) {
199
dpd_buf4_mat_irrep_init(&C_AA, h);
200
dpd_buf4_mat_irrep_rd(&C_AA, h);
201
dpd_buf4_mat_irrep_init(&C_AB, h);
202
dpd_buf4_mat_irrep_rd(&C_AB, h);
203
for(Ga=0; Ga < nirreps; Ga++) {
205
for(a=0; a < avirtpi[Ga]; a++) {
206
A = avir_off[Ga] + a;
207
for(b=0; b < avirtpi[Gb]; b++) {
208
B = avir_off[Gb] + b;
209
for(m=0; m < aoccpi[Gm]; m++) {
210
M = aocc_off[Gm] + m;
211
MA = C_AA.params->rowidx[M][A];
212
MB = C_AA.params->colidx[M][B];
213
fAB.matrix[Ga][a][b] += C_AA.matrix[h][MA][MB];
215
for(m=0; m < boccpi[Gm]; m++) {
216
M = bocc_off[Gm] + m;
217
AM = C_AB.params->rowidx[A][M];
218
BM = C_AB.params->colidx[B][M];
219
fAB.matrix[Ga][a][b] += C_AB.matrix[h][AM][BM];
224
dpd_buf4_mat_irrep_close(&C_AA, h);
225
dpd_buf4_mat_irrep_close(&C_AB, h);
227
dpd_buf4_close(&C_AA);
228
dpd_buf4_close(&C_AB);
230
dpd_buf4_init(&C_BB, CC_CINTS, 0, 30, 30, 30, 30, 0, "C <ia||jb>");
231
dpd_buf4_init(&C_AB, CC_CINTS, 0, 24, 24, 24, 24, 0, "C <Ia|Jb>");
232
for(h=0; h < nirreps; h++) {
233
dpd_buf4_mat_irrep_init(&C_BB, h);
234
dpd_buf4_mat_irrep_rd(&C_BB, h);
235
dpd_buf4_mat_irrep_init(&C_AB, h);
236
dpd_buf4_mat_irrep_rd(&C_AB, h);
237
for(Ga=0; Ga < nirreps; Ga++) {
239
for(a=0; a < bvirtpi[Ga]; a++) {
240
A = bvir_off[Ga] + a;
241
for(b=0; b < bvirtpi[Gb]; b++) {
242
B = bvir_off[Gb] + b;
243
for(m=0; m < boccpi[Gm]; m++) {
244
M = bocc_off[Gm] + m;
245
MA = C_BB.params->rowidx[M][A];
246
MB = C_BB.params->colidx[M][B];
247
fab.matrix[Ga][a][b] += C_BB.matrix[h][MA][MB];
249
for(m=0; m < aoccpi[Gm]; m++) {
250
M = aocc_off[Gm] + m;
251
MA = C_AB.params->rowidx[M][A];
252
MB = C_AB.params->colidx[M][B];
253
fab.matrix[Ga][a][b] += C_AB.matrix[h][MA][MB];
258
dpd_buf4_mat_irrep_close(&C_BB, h);
259
dpd_buf4_mat_irrep_close(&C_AB, h);
261
dpd_buf4_close(&C_BB);
262
dpd_buf4_close(&C_AB);
264
dpd_file2_mat_wrt(&fAB);
265
dpd_file2_mat_wrt(&fab);
267
dpd_file2_close(&fAB);
268
dpd_file2_close(&fab);
270
/* Prepare the alpha and beta occ-vir Fock matrix files */
271
dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
272
dpd_file2_init(&fia, CC_OEI, 0, 2, 3, "fia");
273
dpd_file2_mat_init(&fIA);
274
dpd_file2_mat_init(&fia);
276
/* One-electron (frozen-core) contributions */
277
for(h=0; h < nirreps; h++) {
279
for(i=0; i < aoccpi[h]; i++)
280
for(a=0; a < avirtpi[h]; a++)
281
fIA.matrix[h][i][a] = hIA.matrix[h][i][a];
283
for(i=0; i < boccpi[h]; i++)
284
for(a=0; a < bvirtpi[h]; a++)
285
fia.matrix[h][i][a] = hia.matrix[h][i][a];
288
/* Two-electron contributions */
290
/* Prepare the E integral buffers */
291
dpd_buf4_init(&E_AA, CC_EINTS, 0, 21, 0, 21, 0, 1, "E <AI|JK>");
292
dpd_buf4_init(&E_AB, CC_EINTS, 0, 26, 22, 26, 22, 0, "E <Ai|Jk>");
294
for(h=0; h < nirreps; h++) {
296
dpd_buf4_mat_irrep_init(&E_AA, h);
297
dpd_buf4_mat_irrep_init(&E_AB, h);
298
dpd_buf4_mat_irrep_rd(&E_AA, h);
299
dpd_buf4_mat_irrep_rd(&E_AB, h);
301
/* Loop over irreps of the target */
302
for(Gi=0; Gi < nirreps; Gi++) {
305
/* Loop over orbitals of the target */
306
for(i=0; i < aoccpi[Gi]; i++) {
307
I = aocc_off[Gi] + i;
308
for(a=0; a < avirtpi[Ga]; a++) {
309
A = avir_off[Ga] + a;
311
for(m=0; m < aoccpi[Gm]; m++) {
312
M = aocc_off[Gm] + m;
314
AM = E_AA.params->rowidx[A][M];
315
IM = E_AA.params->colidx[I][M];
317
fIA.matrix[Gi][i][a] += E_AA.matrix[h][AM][IM];
323
/* Loop over orbitals of the target */
324
for(i=0; i < aoccpi[Gi]; i++) {
325
I = aocc_off[Gi] + i;
326
for(a=0; a < avirtpi[Ga]; a++) {
327
A = avir_off[Ga] + a;
329
for(m=0; m < boccpi[Gm]; m++) {
330
M = bocc_off[Gm] + m;
332
AM = E_AB.params->rowidx[A][M];
333
IM = E_AB.params->colidx[I][M];
335
fIA.matrix[Gi][i][a] += E_AB.matrix[h][AM][IM];
343
dpd_buf4_mat_irrep_close(&E_AA, h);
344
dpd_buf4_mat_irrep_close(&E_AB, h);
347
dpd_buf4_close(&E_AA);
348
dpd_buf4_close(&E_AB);
350
dpd_buf4_init(&E_BB, CC_EINTS, 0, 31, 10, 31, 10, 1, "E <ai|jk>");
351
dpd_buf4_init(&E_AB, CC_EINTS, 0, 22, 24, 22, 24, 0, "E <Ij|Ka>");
353
for(h=0; h < nirreps; h++) {
355
dpd_buf4_mat_irrep_init(&E_BB, h);
356
dpd_buf4_mat_irrep_init(&E_AB, h);
357
dpd_buf4_mat_irrep_rd(&E_BB, h);
358
dpd_buf4_mat_irrep_rd(&E_AB, h);
360
/* Loop over irreps of the target */
361
for(Gi=0; Gi < nirreps; Gi++) {
364
/* Loop over orbitals of the target */
365
for(i=0; i < boccpi[Gi]; i++) {
366
I = bocc_off[Gi] + i;
367
for(a=0; a < bvirtpi[Ga]; a++) {
368
A = bvir_off[Ga] + a;
370
for(m=0; m < boccpi[Gm]; m++) {
371
M = bocc_off[Gm] + m;
373
AM = E_BB.params->rowidx[A][M];
374
IM = E_BB.params->colidx[I][M];
376
fia.matrix[Gi][i][a] += E_BB.matrix[h][AM][IM];
382
/* Loop over orbitals of the target */
383
for(i=0; i < boccpi[Gi]; i++) {
384
I = bocc_off[Gi] + i;
385
for(a=0; a < bvirtpi[Ga]; a++) {
386
A = bvir_off[Ga] + a;
388
for(m=0; m < aoccpi[Gm]; m++) {
389
M = aocc_off[Gm] + m;
391
MI = E_AB.params->rowidx[M][I];
392
MA = E_AB.params->colidx[M][A];
394
fia.matrix[Gi][i][a] += E_AB.matrix[h][MI][MA];
401
dpd_buf4_mat_irrep_close(&E_BB, h);
402
dpd_buf4_mat_irrep_close(&E_AB, h);
406
/* Close the E integral buffers */
407
dpd_buf4_close(&E_BB);
408
dpd_buf4_close(&E_AB);
410
/* Close the alpha and beta occ-vir Fock matrix files */
411
dpd_file2_mat_wrt(&fIA);
412
dpd_file2_mat_wrt(&fia);
413
dpd_file2_mat_close(&fIA);
414
dpd_file2_mat_close(&fia);
415
dpd_file2_close(&fIA);
416
dpd_file2_close(&fia);
418
dpd_file2_mat_close(&hIJ);
419
dpd_file2_mat_close(&hij);
420
dpd_file2_mat_close(&hAB);
421
dpd_file2_mat_close(&hab);
422
dpd_file2_mat_close(&hIA);
423
dpd_file2_mat_close(&hia);
425
dpd_file2_close(&hIJ);
426
dpd_file2_close(&hij);
427
dpd_file2_close(&hAB);
428
dpd_file2_close(&hab);
429
dpd_file2_close(&hIA);
430
dpd_file2_close(&hia);
435
int h, Gi, Gj, Ga, Gb, Gm;
438
int IM, JM, MA, MB, AM;
441
int *occ_off, *vir_off;
442
int *occ_sym, *vir_sym;
444
dpdfile2 fIJ, fij, fAB, fab, fIA, fia, Hoo, Hvv, Hov;
445
dpdbuf4 AInts_anti, AInts, CInts, CInts_anti, EInts_anti, EInts;
447
nirreps = moinfo.nirreps;
448
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
449
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
450
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
451
openpi = moinfo.openpi;
453
dpd_file2_init(&Hoo, CC_OEI, 0, 0, 0, "h(i,j)");
454
dpd_file2_init(&Hvv, CC_OEI, 0, 1, 1, "h(a,b)");
455
dpd_file2_init(&Hov, CC_OEI, 0, 0, 1, "h(i,a)");
456
dpd_file2_mat_init(&Hoo);
457
dpd_file2_mat_init(&Hvv);
458
dpd_file2_mat_init(&Hov);
459
dpd_file2_mat_rd(&Hoo);
460
dpd_file2_mat_rd(&Hvv);
461
dpd_file2_mat_rd(&Hov);
463
/* Prepare the alpha and beta occ-occ Fock matrix files */
464
dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
465
dpd_file2_init(&fij, CC_OEI, 0, 0, 0, "fij");
466
dpd_file2_mat_init(&fIJ);
467
dpd_file2_mat_init(&fij);
469
/* One-electron (frozen-core) contributions */
470
for(h=0; h < nirreps; h++) {
472
for(i=0; i < occpi[h]; i++)
473
for(j=0; j < occpi[h]; j++)
474
fIJ.matrix[h][i][j] = Hoo.matrix[h][i][j];
476
for(i=0; i < (occpi[h]-openpi[h]); i++)
477
for(j=0; j < (occpi[h]-openpi[h]); j++)
478
fij.matrix[h][i][j] = Hoo.matrix[h][i][j];
481
/* Two-electron contributions */
483
/* Prepare the A integral buffers */
484
dpd_buf4_init(&AInts_anti, CC_AINTS, 0, 0, 0, 0, 0, 1, "A <ij|kl>");
485
dpd_buf4_init(&AInts, CC_AINTS, 0, 0, 0, 0, 0, 0, "A <ij|kl>");
487
for(h=0; h < nirreps; h++) {
489
dpd_buf4_mat_irrep_init(&AInts_anti, h);
490
dpd_buf4_mat_irrep_rd(&AInts_anti, h);
492
/* Loop over irreps of the target */
493
for(Gi=0; Gi < nirreps; Gi++) {
496
/* Loop over the orbitals of the target */
497
for(i=0; i < occpi[Gi]; i++) {
499
for(j=0; j < occpi[Gj]; j++) {
501
for(m=0; m < occpi[Gm]; m++) {
504
IM = AInts_anti.params->rowidx[I][M];
505
JM = AInts_anti.params->colidx[J][M];
507
fIJ.matrix[Gi][i][j] += AInts_anti.matrix[h][IM][JM];
513
/* Loop over the orbitals of the target */
514
for(i=0; i < (occpi[Gi] - openpi[Gi]); i++) {
516
for(j=0; j < (occpi[Gj] - openpi[Gj]); j++) {
518
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
521
IM = AInts_anti.params->rowidx[I][M];
522
JM = AInts_anti.params->colidx[J][M];
524
fij.matrix[Gi][i][j] += AInts_anti.matrix[h][IM][JM];
532
dpd_buf4_mat_irrep_close(&AInts_anti, h);
534
dpd_buf4_mat_irrep_init(&AInts, h);
535
dpd_buf4_mat_irrep_rd(&AInts, h);
537
/* Loop over irreps of the target */
538
for(Gi=0; Gi < nirreps; Gi++) {
541
/* Loop over the orbitals of the target */
542
for(i=0; i < occpi[Gi]; i++) {
544
for(j=0; j < occpi[Gj]; j++) {
546
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
549
IM = AInts.params->rowidx[I][M];
550
JM = AInts.params->colidx[J][M];
552
fIJ.matrix[Gi][i][j] += AInts.matrix[h][IM][JM];
558
/* Loop over the orbitals of the target */
559
for(i=0; i < (occpi[Gi] - openpi[Gi]); i++) {
561
for(j=0; j < (occpi[Gj] - openpi[Gj]); j++) {
563
for(m=0; m < occpi[Gm]; m++) {
566
IM = AInts.params->rowidx[I][M];
567
JM = AInts.params->colidx[J][M];
569
fij.matrix[Gi][i][j] += AInts.matrix[h][IM][JM];
577
dpd_buf4_mat_irrep_close(&AInts, h);
581
/* Close the A Integral buffers */
582
dpd_buf4_close(&AInts_anti);
583
dpd_buf4_close(&AInts);
585
/* Close the alpha and beta occ-occ Fock matrix files */
586
dpd_file2_mat_wrt(&fIJ);
587
dpd_file2_mat_wrt(&fij);
588
dpd_file2_mat_close(&fIJ);
589
dpd_file2_mat_close(&fij);
590
dpd_file2_close(&fIJ);
591
dpd_file2_close(&fij);
593
/* Prepare the alpha and beta vir-vir Fock matrix files */
594
dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
595
dpd_file2_init(&fab, CC_OEI, 0, 1, 1, "fab");
596
dpd_file2_mat_init(&fAB);
597
dpd_file2_mat_init(&fab);
599
/* One-electron (frozen-core) contributions */
600
for(h=0; h < nirreps; h++) {
602
for(a=0; a < (virtpi[h] - openpi[h]); a++)
603
for(b=0; b < (virtpi[h] - openpi[h]); b++)
604
fAB.matrix[h][a][b] = Hvv.matrix[h][a][b];
606
for(a=0; a < virtpi[h]; a++)
607
for(b=0; b < virtpi[h]; b++)
608
fab.matrix[h][a][b] = Hvv.matrix[h][a][b];
611
/* Two-electron contributions */
613
/* Prepare the C integral buffers */
614
dpd_buf4_init(&CInts_anti, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia||jb>");
615
dpd_buf4_init(&CInts, CC_CINTS, 0, 10, 10, 10, 10, 0, "C <ia|jb>");
617
for(h=0; h < nirreps; h++) {
619
dpd_buf4_mat_irrep_init(&CInts_anti, h);
620
dpd_buf4_mat_irrep_rd(&CInts_anti, h);
622
/* Loop over irreps of the target */
623
for(Ga=0; Ga < nirreps; Ga++) {
626
/* Loop over orbitals of the target */
627
for(a=0; a < (virtpi[Ga] - openpi[Ga]); a++) {
629
for(b=0; b < (virtpi[Gb] - openpi[Gb]); b++) {
632
for(m=0; m < occpi[Gm]; m++) {
635
MA = CInts_anti.params->rowidx[M][A];
636
MB = CInts_anti.params->colidx[M][B];
638
fAB.matrix[Ga][a][b] += CInts_anti.matrix[h][MA][MB];
644
/* Loop over orbitals of the target */
645
for(a=0; a < virtpi[Ga]; a++) {
647
for(b=0; b < virtpi[Gb]; b++) {
650
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
653
MA = CInts_anti.params->rowidx[M][A];
654
MB = CInts_anti.params->colidx[M][B];
656
fab.matrix[Ga][a][b] += CInts_anti.matrix[h][MA][MB];
662
dpd_buf4_mat_irrep_close(&CInts_anti, h);
664
dpd_buf4_mat_irrep_init(&CInts, h);
665
dpd_buf4_mat_irrep_rd(&CInts, h);
667
/* Loop over irreps of the target */
668
for(Ga=0; Ga < nirreps; Ga++) {
671
/* Loop over orbitals of the target */
672
for(a=0; a < (virtpi[Ga] - openpi[Ga]); a++) {
674
for(b=0; b < (virtpi[Gb] - openpi[Gb]); b++) {
677
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
680
MA = CInts.params->rowidx[M][A];
681
MB = CInts.params->colidx[M][B];
683
fAB.matrix[Ga][a][b] += CInts.matrix[h][MA][MB];
689
/* Loop over orbitals of the target */
690
for(a=0; a < virtpi[Ga]; a++) {
692
for(b=0; b < virtpi[Gb]; b++) {
695
for(m=0; m < occpi[Gm]; m++) {
698
MA = CInts.params->rowidx[M][A];
699
MB = CInts.params->colidx[M][B];
701
fab.matrix[Ga][a][b] += CInts.matrix[h][MA][MB];
707
dpd_buf4_mat_irrep_close(&CInts, h);
710
/* Close the C integral buffers */
711
dpd_buf4_close(&CInts_anti);
712
dpd_buf4_close(&CInts);
714
/* Close the alpha and beta vir-vir Fock matrix files */
715
dpd_file2_mat_wrt(&fAB);
716
dpd_file2_mat_wrt(&fab);
717
dpd_file2_mat_close(&fAB);
718
dpd_file2_mat_close(&fab);
719
dpd_file2_close(&fAB);
720
dpd_file2_close(&fab);
722
/* Prepare the alpha and beta occ-vir Fock matrix files */
723
dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
724
dpd_file2_init(&fia, CC_OEI, 0, 0, 1, "fia");
725
dpd_file2_mat_init(&fIA);
726
dpd_file2_mat_init(&fia);
728
/* One-electron (frozen-core) contributions */
729
for(h=0; h < nirreps; h++) {
731
for(i=0; i < occpi[h]; i++)
732
for(a=0; a < (virtpi[h] - openpi[h]); a++)
733
fIA.matrix[h][i][a] = Hov.matrix[h][i][a];
735
for(i=0; i < (occpi[h] - openpi[h]); i++)
736
for(a=0; a < virtpi[h]; a++)
737
fia.matrix[h][i][a] = Hov.matrix[h][i][a];
740
/* Two-electron contributions */
742
/* Prepare the E integral buffers */
743
dpd_buf4_init(&EInts_anti, CC_EINTS, 0, 11, 0, 11, 0, 1, "E <ai|jk>");
744
dpd_buf4_init(&EInts, CC_EINTS, 0, 11, 0, 11, 0, 0, "E <ai|jk>");
746
for(h=0; h < nirreps; h++) {
748
dpd_buf4_mat_irrep_init(&EInts_anti, h);
749
dpd_buf4_mat_irrep_rd(&EInts_anti, h);
751
/* Loop over irreps of the target */
752
for(Gi=0; Gi < nirreps; Gi++) {
755
/* Loop over orbitals of the target */
756
for(i=0; i < occpi[Gi]; i++) {
758
for(a=0; a < (virtpi[Ga] - openpi[Ga]); a++) {
761
for(m=0; m < occpi[Gm]; m++) {
764
AM = EInts_anti.params->rowidx[A][M];
765
IM = EInts_anti.params->colidx[I][M];
767
fIA.matrix[Gi][i][a] += EInts_anti.matrix[h][AM][IM];
773
/* Loop over orbitals of the target */
774
for(i=0; i < (occpi[Gi] - openpi[Gi]); i++) {
776
for(a=0; a < virtpi[Ga]; a++) {
779
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
782
AM = EInts_anti.params->rowidx[A][M];
783
IM = EInts_anti.params->colidx[I][M];
785
fia.matrix[Gi][i][a] += EInts_anti.matrix[h][AM][IM];
792
dpd_buf4_mat_irrep_close(&EInts_anti, h);
794
dpd_buf4_mat_irrep_init(&EInts, h);
795
dpd_buf4_mat_irrep_rd(&EInts, h);
797
/* Loop over irreps of the target */
798
for(Gi=0; Gi < nirreps; Gi++) {
801
/* Loop over orbitals of the target */
802
for(i=0; i < occpi[Gi]; i++) {
804
for(a=0; a < (virtpi[Ga] - openpi[Ga]); a++) {
807
for(m=0; m < (occpi[Gm] - openpi[Gm]); m++) {
810
AM = EInts.params->rowidx[A][M];
811
IM = EInts.params->colidx[I][M];
813
fIA.matrix[Gi][i][a] += EInts.matrix[h][AM][IM];
819
/* Loop over orbitals of the target */
820
for(i=0; i < (occpi[Gi] - openpi[Gi]); i++) {
822
for(a=0; a < virtpi[Ga]; a++) {
825
for(m=0; m < occpi[Gm]; m++) {
828
AM = EInts.params->rowidx[A][M];
829
IM = EInts.params->colidx[I][M];
831
fia.matrix[Gi][i][a] += EInts.matrix[h][AM][IM];
838
dpd_buf4_mat_irrep_close(&EInts, h);
842
/* Close the E integral buffers */
843
dpd_buf4_close(&EInts_anti);
844
dpd_buf4_close(&EInts);
846
/* Close the alpha and beta occ-vir Fock matrix files */
847
dpd_file2_mat_wrt(&fIA);
848
dpd_file2_mat_wrt(&fia);
849
dpd_file2_mat_close(&fIA);
850
dpd_file2_mat_close(&fia);
851
dpd_file2_close(&fIA);
852
dpd_file2_close(&fia);
854
dpd_file2_mat_close(&Hoo);
855
dpd_file2_mat_close(&Hvv);
856
dpd_file2_mat_close(&Hov);
857
dpd_file2_close(&Hoo);
858
dpd_file2_close(&Hvv);
859
dpd_file2_close(&Hov);
863
}} // namespace psi::ccsort