32
35
dpdbuf4 F_anti, F, E_anti, E, D_anti, D;
33
36
dpdbuf4 tautIJAB, tautijab, tautIjAb, taut;
35
if(params.ref == 0 || params.ref == 1) { /** RHF or ROHF **/
37
int Gma, Gm, Ga, Gf, Ge, ma, M, A, fe, ef, f, nrows, ncols;
43
dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");
44
dpd_file2_copy(&fIA, CC_OEI, "FME");
45
dpd_file2_close(&fIA);
47
dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
48
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
49
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
50
dpd_dot13(&tIA, &D, &FME, 0, 0, 1.0, 1.0);
51
dpd_file2_close(&tIA);
53
dpd_file2_close(&FME);
56
dpd_file2_init(&fAB, CC_OEI, 0, 1, 1, "fAB");
57
dpd_file2_copy(&fAB, CC_OEI, "FAE");
58
dpd_file2_close(&fAB);
60
dpd_file2_init(&FAE, CC_OEI, 0, 1, 1, "FAE");
63
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0,"F 2<ia|bc> - <ia|cb>");
64
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
65
dpd_dot13(&tIA, &F, &FAE, 0, 0, 1.0, 1.0);
66
dpd_file2_close(&tIA);
70
dpd_file2_mat_init(&FAE);
71
dpd_file2_mat_rd(&FAE);
72
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
73
dpd_file2_mat_init(&tIA);
74
dpd_file2_mat_rd(&tIA);
75
dpd_buf4_init(&F, CC_FINTS, 0, 10, 5, 10, 5, 0,"F <ia|bc>");
76
for(Gma=0; Gma < moinfo.nirreps; Gma++) {
77
dpd_buf4_mat_irrep_row_init(&F, Gma);
78
X = init_array(F.params->coltot[Gma]);
80
for(ma=0; ma < F.params->rowtot[Gma]; ma++) {
81
dpd_buf4_mat_irrep_row_rd(&F, Gma, ma);
82
m = F.params->roworb[Gma][ma][0];
83
a = F.params->roworb[Gma][ma][1];
84
Gm = F.params->psym[m];
85
Ga = Ge = Gm ^ Gma; /* Fae is totally symmetric */
86
Gf = Gm; /* T1 is totally symmetric */
87
M = m - F.params->poff[Gm];
88
A = a - F.params->qoff[Ga];
90
zero_arr(X, F.params->coltot[Gma]);
92
/* build spin-adapted F-integrals for current ma */
93
for(fe=0; fe < F.params->coltot[Gma]; fe++) {
94
f = F.params->colorb[Gma][fe][0];
95
e = F.params->colorb[Gma][fe][1];
96
ef = F.params->colidx[e][f];
97
X[fe] = 2.0 * F.matrix[Gma][0][fe] - F.matrix[Gma][0][ef];
100
nrows = moinfo.virtpi[Gf];
101
ncols = moinfo.virtpi[Ge];
103
C_DGEMV('t',nrows,ncols,1.0,&X[F.col_offset[Gma][Gf]],ncols,
104
tIA.matrix[Gm][M],1,1.0,
105
FAE.matrix[Ga][A],1);
109
dpd_buf4_mat_irrep_row_close(&F, Gma);
112
dpd_file2_mat_close(&tIA);
113
dpd_file2_close(&tIA);
114
dpd_file2_mat_wrt(&FAE);
115
dpd_file2_mat_close(&FAE);
117
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
118
dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tautIjAb");
119
dpd_contract442(&tautIjAb, &D, &FAE, 3, 3, -1, 1);
121
dpd_buf4_close(&tautIjAb);
123
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
124
dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
125
dpd_contract222(&tIA, &FME, &FAE, 1, 1, -0.5, 1);
126
dpd_file2_close(&tIA);
127
dpd_file2_close(&FME);
129
dpd_file2_copy(&FAE, CC_OEI, "FAEt");
130
dpd_file2_close(&FAE);
132
dpd_file2_init(&fIJ, CC_OEI, 0, 0, 0, "fIJ");
133
dpd_file2_copy(&fIJ, CC_OEI, "FMI");
134
dpd_file2_close(&fIJ);
136
dpd_file2_init(&FMI, CC_OEI, 0, 0, 0, "FMI");
138
dpd_buf4_init(&E, CC_EINTS, 0, 11, 0, 11, 0, 0, "E 2<ai|jk> - <ai|kj>");
139
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
140
dpd_dot13(&tIA, &E, &FMI, 1, 1, 1.0, 1.0);
141
dpd_file2_close(&tIA);
144
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
145
dpd_buf4_init(&tautIjAb, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tautIjAb");
146
dpd_contract442(&D, &tautIjAb, &FMI, 0, 0, 1, 1);
147
dpd_buf4_close(&tautIjAb);
150
dpd_file2_init(&tIA, CC_OEI, 0, 0, 1, "tIA");
151
dpd_file2_init(&FME, CC_OEI, 0, 0, 1, "FME");
152
dpd_contract222(&FME, &tIA, &FMI, 0, 0, 0.5, 1);
153
dpd_file2_close(&FME);
154
dpd_file2_close(&tIA);
156
dpd_file2_copy(&FMI, CC_OEI, "FMIt");
157
dpd_file2_close(&FMI);
159
dpd_file2_init(&FAEt, CC_OEI, 0, 1, 1, "FAEt");
160
dpd_file2_mat_init(&FAEt);
161
dpd_file2_mat_rd(&FAEt);
163
for(h=0; h < moinfo.nirreps; h++)
164
for(a=0; a < FAEt.params->rowtot[h]; a++)
165
FAEt.matrix[h][a][a] = 0.0;
167
dpd_file2_mat_wrt(&FAEt);
168
dpd_file2_mat_close(&FAEt);
169
dpd_file2_close(&FAEt);
171
dpd_file2_init(&FMIt, CC_OEI, 0, 0, 0, "FMIt");
172
dpd_file2_mat_init(&FMIt);
173
dpd_file2_mat_rd(&FMIt);
175
for(h=0; h < moinfo.nirreps; h++)
176
for(a=0; a < FMIt.params->rowtot[h]; a++)
177
FMIt.matrix[h][a][a] = 0.0;
179
dpd_file2_mat_wrt(&FMIt);
180
dpd_file2_mat_close(&FMIt);
181
dpd_file2_close(&FMIt);
184
else if(params.ref == 1) { /** ROHF **/
38
187
dpd_file2_init(&fIA, CC_OEI, 0, 0, 1, "fIA");