4
#include <libdpd/dpd.h>
9
void local_filter_T1(dpdfile2 *);
11
void L1_build(struct L_Params L_params) {
12
dpdfile2 newLIA, newLia, LIA, Lia;
13
dpdfile2 dIA, dia, Fme, FME;
14
dpdfile2 LFaet2, LFAEt2, LFmit2, LFMIt2;
15
dpdfile2 GMI, Gmi, Gae, XIA, Xia;
17
dpdbuf4 WMBEJ, Wmbej, WMbEj, WmBeJ;
18
dpdbuf4 WMBIJ, Wmbij, WMbIj, WmBiJ;
19
dpdbuf4 LIJAB, Lijab, LIjAb, LiJaB, L2;
20
dpdbuf4 WMNIE, Wmnie, WMnIe, WmNiE;
21
dpdbuf4 WAMEF, Wamef, WAmEf, WaMeF, W;
24
int Gim, Gi, Gm, Ga, Gam, nrows, ncols, A, a, am;
25
int Gei, ei, e, i, Gef, Ge, Gf, E, I, af, fa, f;
28
L_irr = L_params.irrep;
30
/* ground state inhomogeneous term is Fme */
31
if (L_params.ground) {
33
dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
34
dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
35
dpd_file2_close(&FME);
37
else if(params.ref == 1) {
38
dpd_file2_init(&Fme,CC_OEI, 0, 0, 1, "Fme");
39
dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
40
dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
41
dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
42
dpd_file2_close(&Fme);
43
dpd_file2_close(&FME);
45
else if(params.ref == 2) {
46
dpd_file2_init(&Fme,CC_OEI, 0, 2, 3, "Fme");
47
dpd_file2_init(&FME,CC_OEI, 0, 0, 1, "FME");
48
dpd_file2_copy(&Fme, CC_LAMBDA, "New Lia");
49
dpd_file2_copy(&FME, CC_LAMBDA, "New LIA");
50
dpd_file2_close(&Fme);
51
dpd_file2_close(&FME);
54
/* excited state - no inhomogenous term, first term is -energy*L*/
55
else if (!params.zeta) {
56
if (params.ref == 0 || params.ref == 1) {
57
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
58
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
59
dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
60
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
61
dpd_file2_axpy(&LIA, &newLIA, -1.0 * L_params.cceom_energy,0.0);
62
dpd_file2_axpy(&Lia, &newLia, -1.0 * L_params.cceom_energy,0.0);
63
dpd_file2_close(&LIA);
64
dpd_file2_close(&newLIA);
65
dpd_file2_close(&Lia);
66
dpd_file2_close(&newLia);
68
else if (params.ref == 2) {
69
/* do nothing - TDC did not change to increments for the UHF case */
72
/* solving zeta equations; inhomogeneous term is Xi */
74
if (params.ref == 0) {
75
dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
76
dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
77
dpd_file2_close(&XIA);
79
else if (params.ref == 1) {
80
dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
81
dpd_file2_init(&Xia, EOM_XI, 0, 0, 1, "Xia");
82
dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
83
dpd_file2_copy(&Xia, CC_LAMBDA, "New Lia");
84
dpd_file2_close(&XIA);
85
dpd_file2_close(&Xia);
87
else if(params.ref == 2) {
88
dpd_file2_init(&XIA, EOM_XI, 0, 0, 1, "XIA");
89
dpd_file2_init(&Xia, EOM_XI, 0, 2, 3, "Xia");
90
dpd_file2_copy(&XIA, CC_LAMBDA, "New LIA");
91
dpd_file2_copy(&Xia, CC_LAMBDA, "New Lia");
92
dpd_file2_close(&XIA);
93
dpd_file2_close(&Xia);
97
if(params.ref == 0 || params.ref == 1) {
98
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
99
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
101
else if(params.ref == 2) {
102
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
103
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
106
if(params.ref == 0) { /** RHF **/
107
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
109
/* L1 RHS += Lie*Fea */
110
dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAE");
111
dpd_contract222(&LIA,&LFAEt2,&newLIA, 0, 1, 1.0, 1.0);
112
dpd_file2_close(&LFAEt2);
114
/* L1 RHS += -Lma*Fim */
115
dpd_file2_init(&LFMIt2,CC_OEI, 0, 0, 0, "FMI");
116
dpd_contract222(&LFMIt2,&LIA,&newLIA, 0, 1, -1.0, 1.0);
117
dpd_file2_close(&LFMIt2);
119
/* L1 RHS += Lme*Wieam */
120
dpd_buf4_init(&W, CC_HBAR, 0, 10, 10, 10, 10, 0, "2 W(ME,jb) + W(Me,Jb)");
121
dpd_contract422(&W, &LIA, &newLIA, 0, 0, 1.0, 1.0);
124
dpd_file2_close(&LIA);
126
else if(params.ref == 1) { /** ROHF **/
128
/* L1 RHS += Lie*Fea */
129
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
130
dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
132
dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAE");
133
dpd_file2_init(&LFaet2, CC_OEI, 0, 1, 1, "Fae");
134
dpd_contract222(&Lia,&LFaet2,&newLia, 0, 1, 1.0, 1.0);
135
dpd_contract222(&LIA,&LFAEt2,&newLIA, 0, 1, 1.0, 1.0);
136
dpd_file2_close(&LFaet2);
137
dpd_file2_close(&LFAEt2);
139
/* L1 RHS += -Lma*Fim */
140
dpd_file2_init(&LFMIt2,CC_OEI, 0, 0, 0, "FMI");
141
dpd_file2_init(&LFmit2,CC_OEI, 0, 0, 0, "Fmi");
142
dpd_contract222(&LFmit2,&Lia,&newLia, 0, 1, -1.0, 1.0);
143
dpd_contract222(&LFMIt2,&LIA,&newLIA, 0, 1, -1.0, 1.0);
144
dpd_file2_close(&LFmit2);
145
dpd_file2_close(&LFMIt2);
147
/* L1 RHS += Lme*Wieam */
148
dpd_buf4_init(&WMBEJ, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMBEJ");
149
dpd_contract422(&WMBEJ, &LIA, &newLIA, 0, 0, 1.0, 1.0);
150
dpd_buf4_close(&WMBEJ);
152
dpd_buf4_init(&WMbEj, CC_HBAR, 0, 10, 10, 10, 10, 0, "WMbEj");
153
dpd_contract422(&WMbEj, &Lia, &newLIA, 0, 0, 1.0, 1.0);
154
dpd_buf4_close(&WMbEj);
156
dpd_buf4_init(&Wmbej, CC_HBAR, 0, 10, 10, 10, 10, 0, "Wmbej");
157
dpd_contract422(&Wmbej, &Lia, &newLia, 0, 0, 1.0, 1.0);
158
dpd_buf4_close(&Wmbej);
160
dpd_buf4_init(&WmBeJ, CC_HBAR, 0, 10, 10, 10, 10, 0, "WmBeJ");
161
dpd_contract422(&WmBeJ, &LIA, &newLia, 0, 0, 1.0, 1.0);
162
dpd_buf4_close(&WmBeJ);
164
dpd_file2_close(&LIA);
165
dpd_file2_close(&Lia);
167
else if(params.ref == 2) { /** UHF **/
169
/* L1 RHS += Lie*Fea */
170
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
171
dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 2, 3, "Lia");
173
dpd_file2_init(&LFAEt2, CC_OEI, 0, 1, 1, "FAEt");
174
dpd_file2_init(&LFaet2, CC_OEI, 0, 3, 3, "Faet");
175
dpd_contract222(&Lia,&LFaet2,&newLia, 0, 1, 1, 1);
176
dpd_contract222(&LIA,&LFAEt2,&newLIA, 0, 1, 1, 1);
177
dpd_file2_close(&LFaet2);
178
dpd_file2_close(&LFAEt2);
180
/* L1 RHS += -Lma*Fim */
181
dpd_file2_init(&LFMIt2,CC_OEI, 0, 0, 0, "FMIt");
182
dpd_file2_init(&LFmit2,CC_OEI, 0, 2, 2, "Fmit");
183
dpd_contract222(&LFmit2,&Lia,&newLia, 0, 1, -1, 1);
184
dpd_contract222(&LFMIt2,&LIA,&newLIA, 0, 1, -1, 1);
185
dpd_file2_close(&LFmit2);
186
dpd_file2_close(&LFMIt2);
188
/* L1 RHS += Lme*Wieam */
189
dpd_buf4_init(&WMBEJ, CC_HBAR, 0, 20, 20, 20, 20, 0, "WMBEJ");
190
dpd_contract422(&WMBEJ, &LIA, &newLIA, 0, 0, 1, 1);
191
dpd_buf4_close(&WMBEJ);
193
dpd_buf4_init(&WMbEj, CC_HBAR, 0, 20, 30, 20, 30, 0, "WMbEj");
194
dpd_contract422(&WMbEj, &Lia, &newLIA, 0, 0, 1, 1);
195
dpd_buf4_close(&WMbEj);
197
dpd_buf4_init(&Wmbej, CC_HBAR, 0, 30, 30, 30, 30, 0, "Wmbej");
198
dpd_contract422(&Wmbej, &Lia, &newLia, 0, 0, 1, 1);
199
dpd_buf4_close(&Wmbej);
201
dpd_buf4_init(&WmBeJ, CC_HBAR, 0, 30, 20, 30, 20, 0, "WmBeJ");
202
dpd_contract422(&WmBeJ, &LIA, &newLia, 0, 0, 1, 1);
203
dpd_buf4_close(&WmBeJ);
205
dpd_file2_close(&LIA);
206
dpd_file2_close(&Lia);
209
/* L1 RHS += 1/2 Limef*Wefam */
210
/* L(i,a) += [ 2 L(im,ef) - L(im,fe) ] * W(am,ef) */
211
/* Note: W(am,ef) is really Wabei (ei,ab) */
212
if(params.ref == 0) { /** RHF **/
214
dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAbEi (Ei,Ab)");
215
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
216
/* dpd_contract442(&L2, &W, &newLIA, 0, 0, 1.0, 1.0); */
217
dpd_file2_mat_init(&newLIA);
218
dpd_file2_mat_rd(&newLIA);
219
for(Gam=0; Gam < moinfo.nirreps; Gam++) {
220
Gef = Gam; /* W is totally symmetric */
222
dpd_buf4_mat_irrep_init(&L2, Gim);
223
dpd_buf4_mat_irrep_rd(&L2, Gim);
224
dpd_buf4_mat_irrep_shift13(&L2, Gim);
226
for(Gi=0; Gi < moinfo.nirreps; Gi++) {
229
W.matrix[Gam] = dpd_block_matrix(moinfo.occpi[Gm],W.params->coltot[Gam]);
231
nrows = moinfo.occpi[Gi];
232
ncols = moinfo.occpi[Gm] * W.params->coltot[Gam];
234
for(A=0; A < moinfo.virtpi[Ga]; A++) {
235
a = moinfo.vir_off[Ga] + A;
236
am = W.row_offset[Gam][a];
238
dpd_buf4_mat_irrep_rd_block(&W, Gam, am, moinfo.occpi[Gm]);
240
if(nrows && ncols && moinfo.virtpi[Ga])
241
C_DGEMV('n',nrows,ncols,1,L2.shift.matrix[Gim][Gi][0],ncols,W.matrix[Gam][0],1,
242
1, &(newLIA.matrix[Gi][0][A]), moinfo.virtpi[Ga]);
246
dpd_free_block(W.matrix[Gam], moinfo.occpi[Gm], W.params->coltot[Gam]);
248
dpd_buf4_mat_irrep_close(&L2, Gim);
250
dpd_file2_mat_wrt(&newLIA);
251
dpd_file2_mat_close(&newLIA);
256
else if(params.ref == 1) { /** ROHF **/
258
dpd_buf4_init(&W, CC_HBAR, 0, 11, 7, 11, 7, 0, "WEIAB");
259
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 7, 2, 7, 0, "LIJAB");
260
dpd_contract442(&L2, &W, &newLIA, 0, 0, 1.0, 1.0);
263
dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WEiAb");
264
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
265
dpd_contract442(&L2, &W, &newLIA, 0, 0, 1.0, 1.0);
269
dpd_buf4_init(&W, CC_HBAR, 0, 11, 7, 11, 7, 0, "Weiab");
270
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 7, 2, 7, 0, "Lijab");
271
dpd_contract442(&L2, &W, &newLia, 0, 0, 1.0, 1.0);
274
dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WeIaB");
275
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LiJaB");
276
dpd_contract442(&L2, &W, &newLia, 0, 0, 1.0, 1.0);
280
else if(params.ref == 2) {
282
dpd_buf4_init(&W, CC_HBAR, 0, 21, 7, 21, 7, 0, "WEIAB");
283
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 7, 2, 7, 0, "LIJAB");
284
dpd_contract442(&L2, &W, &newLIA, 0, 0, 1, 1);
287
dpd_buf4_init(&W, CC_HBAR, 0, 26, 28, 26, 28, 0, "WEiAb");
288
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 22, 28, 22, 28, 0, "LIjAb");
289
dpd_contract442(&L2, &W, &newLIA, 0, 0, 1, 1);
293
dpd_buf4_init(&W, CC_HBAR, 0, 31, 17, 31, 17, 0, "Weiab");
294
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 10, 17, 12, 17, 0, "Lijab");
295
dpd_contract442(&L2, &W, &newLia, 0, 0, 1, 1);
298
dpd_buf4_init(&W, CC_HBAR, 0, 25, 29, 25, 29, 0, "WeIaB");
299
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 23, 29, 23, 29, 0, "LiJaB");
300
dpd_contract442(&L2, &W, &newLia, 0, 0, 1, 1);
306
/* L1 RHS += -1/2 Lmnae*Wiemn */
307
if(params.ref == 0) {
308
dpd_buf4_init(&WMbIj, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
309
dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "2 LIjAb - LIjBa");
310
dpd_contract442(&WMbIj, &LIjAb, &newLIA, 0, 2, -1.0, 1.0);
311
dpd_buf4_close(&LIjAb);
312
dpd_buf4_close(&WMbIj);
314
else if(params.ref == 1) {
316
dpd_buf4_init(&WMBIJ, CC_HBAR, 0, 10, 2, 10, 2, 0, "WMBIJ");
317
dpd_buf4_init(&LIJAB, CC_LAMBDA, L_irr, 2, 5, 2, 7, 0, "LIJAB");
318
dpd_contract442(&WMBIJ, &LIJAB, &newLIA, 0, 2, -1.0, 1.0);
319
dpd_buf4_close(&LIJAB);
320
dpd_buf4_close(&WMBIJ);
322
dpd_buf4_init(&WMbIj, CC_HBAR, 0, 10, 0, 10, 0, 0, "WMbIj");
323
dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
324
dpd_contract442(&WMbIj, &LIjAb, &newLIA, 0, 2, -1.0, 1.0);
325
dpd_buf4_close(&LIjAb);
326
dpd_buf4_close(&WMbIj);
328
dpd_buf4_init(&Wmbij, CC_HBAR, 0, 10, 2, 10, 2, 0, "Wmbij");
329
dpd_buf4_init(&Lijab, CC_LAMBDA, L_irr, 2, 5, 2, 7, 0, "Lijab");
330
dpd_contract442(&Wmbij, &Lijab, &newLia, 0, 2, -1.0, 1.0);
331
dpd_buf4_close(&Lijab);
332
dpd_buf4_close(&Wmbij);
334
dpd_buf4_init(&WmBiJ, CC_HBAR, 0, 10, 0, 10, 0, 0, "WmBiJ");
335
dpd_buf4_init(&LiJaB, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LiJaB");
336
dpd_contract442(&WmBiJ, &LiJaB, &newLia, 0, 2, -1.0, 1.0);
337
dpd_buf4_close(&LiJaB);
338
dpd_buf4_close(&WmBiJ);
340
else if(params.ref == 2) {
342
dpd_buf4_init(&WMBIJ, CC_HBAR, 0, 20, 2, 20, 2, 0, "WMBIJ");
343
dpd_buf4_init(&LIJAB, CC_LAMBDA, L_irr, 2, 5, 2, 7, 0, "LIJAB");
344
dpd_contract442(&WMBIJ, &LIJAB, &newLIA, 0, 2, -1, 1);
345
dpd_buf4_close(&LIJAB);
346
dpd_buf4_close(&WMBIJ);
348
dpd_buf4_init(&WMbIj, CC_HBAR, 0, 24, 22, 24, 22, 0, "WMbIj");
349
dpd_buf4_init(&LIjAb, CC_LAMBDA, L_irr, 22, 28, 22, 28, 0, "LIjAb");
350
dpd_contract442(&WMbIj, &LIjAb, &newLIA, 0, 2, -1, 1);
351
dpd_buf4_close(&LIjAb);
352
dpd_buf4_close(&WMbIj);
354
dpd_buf4_init(&Wmbij, CC_HBAR, 0, 30, 12, 30, 12, 0, "Wmbij");
355
dpd_buf4_init(&Lijab, CC_LAMBDA, L_irr, 12, 15, 12, 17, 0, "Lijab");
356
dpd_contract442(&Wmbij, &Lijab, &newLia, 0, 2, -1, 1);
357
dpd_buf4_close(&Lijab);
358
dpd_buf4_close(&Wmbij);
360
dpd_buf4_init(&WmBiJ, CC_HBAR, 0, 27, 23, 27, 23, 0, "WmBiJ");
361
dpd_buf4_init(&LiJaB, CC_LAMBDA, L_irr, 23, 29, 23, 29, 0, "LiJaB");
362
dpd_contract442(&WmBiJ, &LiJaB, &newLia, 0, 2, -1, 1);
363
dpd_buf4_close(&LiJaB);
364
dpd_buf4_close(&WmBiJ);
368
/* L1 RHS += -Gef*Weifa */
369
if(params.ref == 0) {
371
/* dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE"); */
372
/* dpd_buf4_init(&WaMeF, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf 2(Am,Ef) - (Am,fE)"); */
373
/* dpd_dot13(&GAE,&WaMeF,&newLIA, 0, 0, -1.0, 1.0); */
374
/* dpd_buf4_close(&WaMeF); */
375
/* dpd_file2_close(&GAE); */
377
/* Above code replaced to remove disk-space and memory bottlenecks 7/26/05, -TDC */
378
dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
379
dpd_file2_mat_init(&GAE);
380
dpd_file2_mat_rd(&GAE);
381
dpd_file2_mat_init(&newLIA);
382
dpd_file2_mat_rd(&newLIA);
383
dpd_buf4_init(&W, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
384
for(Gei=0; Gei < moinfo.nirreps; Gei++) {
385
dpd_buf4_mat_irrep_row_init(&W, Gei);
386
X = init_array(W.params->coltot[Gei]);
387
for(ei=0; ei < W.params->rowtot[Gei]; ei++) {
388
dpd_buf4_mat_irrep_row_rd(&W, Gei, ei);
389
e = W.params->roworb[Gei][ei][0];
390
i = W.params->roworb[Gei][ei][1];
391
Ge = W.params->psym[e];
395
E = e - moinfo.vir_off[Ge];
396
I = i - moinfo.occ_off[Gi];
398
zero_arr(X,W.params->coltot[Gei]);
400
for(fa=0; fa < W.params->coltot[Gei]; fa++) {
401
f = W.params->colorb[Gei][fa][0];
402
a = W.params->colorb[Gei][fa][1];
403
af = W.params->colidx[a][f];
404
X[fa] = 2.0 * W.matrix[Gei][0][fa] - W.matrix[Gei][0][af];
407
nrows = moinfo.virtpi[Gf];
408
ncols = moinfo.virtpi[Ga];
410
C_DGEMV('t',nrows,ncols,-1,&X[W.col_offset[Gei][Gf]],ncols,
411
GAE.matrix[Ge][E],1,1,newLIA.matrix[Gi][I],1);
414
dpd_buf4_mat_irrep_row_close(&W, Gei);
418
dpd_file2_mat_wrt(&newLIA);
419
dpd_file2_mat_close(&newLIA);
420
dpd_file2_mat_close(&GAE);
421
dpd_file2_close(&GAE);
423
else if(params.ref == 1) {
425
dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
426
dpd_file2_init(&Gae, CC_LAMBDA, L_irr, 1, 1, "Gae");
428
dpd_buf4_init(&WAMEF, CC_HBAR, 0, 11, 5, 11, 7, 0, "WAMEF");
429
dpd_dot13(&GAE,&WAMEF,&newLIA, 0, 0, -1.0, 1.0);
430
dpd_buf4_close(&WAMEF);
432
dpd_buf4_init(&WaMeF, CC_HBAR, 0, 11, 5, 11, 5, 0, "WaMeF");
433
dpd_dot13(&Gae,&WaMeF,&newLIA, 0, 0, -1.0, 1.0);
434
dpd_buf4_close(&WaMeF);
436
dpd_buf4_init(&Wamef, CC_HBAR, 0, 11, 5, 11, 7, 0, "Wamef");
437
dpd_dot13(&Gae,&Wamef,&newLia, 0, 0, -1.0, 1.0);
438
dpd_buf4_close(&Wamef);
440
dpd_buf4_init(&WAmEf, CC_HBAR, 0, 11, 5, 11, 5, 0, "WAmEf");
441
dpd_dot13(&GAE,&WAmEf,&newLia, 0, 0, -1.0, 1.0);
442
dpd_buf4_close(&WAmEf);
445
dpd_buf4_init(&WAMEF, CC_HBAR, 0, 10, 5, 10, 7, 0, "WAMEF");
446
dpd_dot23(&GAE,&WAMEF,&newLIA, 0, 0, -1.0, 1.0);
447
dpd_buf4_close(&WAMEF);
448
dpd_buf4_init(&WaMeF, CC_HBAR, 0, 10, 5, 10, 5, 0, "WaMeF");
449
dpd_dot23(&Gae,&WaMeF,&newLIA, 0, 0, -1.0, 1.0);
450
dpd_buf4_close(&WaMeF);
451
dpd_buf4_init(&Wamef, CC_HBAR, 0, 10, 5, 10, 7, 0, "Wamef");
452
dpd_dot23(&Gae,&Wamef,&newLia, 0, 0, -1.0, 1.0);
453
dpd_buf4_close(&Wamef);
454
dpd_buf4_init(&WAmEf, CC_HBAR, 0, 10, 5, 10, 5, 0, "WAmEf");
455
dpd_dot23(&GAE,&WAmEf,&newLia, 0, 0, -1.0, 1.0);
456
dpd_buf4_close(&WAmEf);
459
dpd_file2_close(&Gae);
460
dpd_file2_close(&GAE);
462
else if(params.ref == 2) {
464
dpd_file2_init(&GAE, CC_LAMBDA, L_irr, 1, 1, "GAE");
465
dpd_file2_init(&Gae, CC_LAMBDA, L_irr, 3, 3, "Gae");
467
dpd_buf4_init(&W, CC_HBAR, 0, 21, 5, 21, 7, 0, "WAMEF");
468
dpd_dot13(&GAE,&W,&newLIA, 0, 0, -1, 1);
471
dpd_buf4_init(&W, CC_HBAR, 0, 25, 29, 25, 29, 0, "WaMeF");
472
dpd_dot13(&Gae,&W,&newLIA, 0, 0, -1, 1);
475
dpd_buf4_init(&W, CC_HBAR, 0, 31, 15, 31, 17, 0, "Wamef");
476
dpd_dot13(&Gae,&W,&newLia, 0, 0, -1, 1);
479
dpd_buf4_init(&W, CC_HBAR, 0, 26, 28, 26, 28, 0, "WAmEf");
480
dpd_dot13(&GAE,&W,&newLia, 0, 0, -1, 1);
483
dpd_file2_close(&Gae);
484
dpd_file2_close(&GAE);
488
/* L1 RHS += -Gmn*Wmina */
489
if(params.ref == 0) {
490
dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
492
dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "2WMnIe - WnMIe (Mn,eI)");
493
dpd_dot14(&GMI, &WmNiE, &newLIA, 0, 0, -1.0, 1.0);
494
dpd_buf4_close(&WmNiE);
496
dpd_file2_close(&GMI);
498
else if(params.ref == 1) {
500
dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
501
dpd_file2_init(&Gmi, CC_LAMBDA, L_irr, 0, 0, "Gmi");
503
dpd_buf4_init(&WMNIE, CC_HBAR, 0, 0, 11, 2, 11, 0, "WMNIE (M>N,EI)");
504
dpd_dot14(&GMI, &WMNIE, &newLIA, 0, 0, -1.0, 1.0);
505
dpd_buf4_close(&WMNIE);
507
dpd_buf4_init(&WmNiE, CC_HBAR, 0, 0, 11, 0, 11, 0, "WmNiE (mN,Ei)");
508
dpd_dot14(&Gmi, &WmNiE, &newLIA, 0, 0, -1.0, 1.0);
509
dpd_buf4_close(&WmNiE);
511
dpd_buf4_init(&Wmnie, CC_HBAR, 0, 0, 11, 2, 11, 0, "Wmnie (m>n,ei)");
512
dpd_dot14(&Gmi, &Wmnie, &newLia, 0, 0, -1.0, 1.0);
513
dpd_buf4_close(&Wmnie);
515
dpd_buf4_init(&WMnIe, CC_HBAR, 0, 0, 11, 0, 11, 0, "WMnIe (Mn,eI)");
516
dpd_dot14(&GMI, &WMnIe, &newLia, 0, 0, -1.0, 1.0);
517
dpd_buf4_close(&WMnIe);
519
dpd_file2_close(&Gmi);
520
dpd_file2_close(&GMI);
523
else if(params.ref == 2) {
525
dpd_file2_init(&GMI, CC_LAMBDA, L_irr, 0, 0, "GMI");
526
dpd_file2_init(&Gmi, CC_LAMBDA, L_irr, 2, 2, "Gmi");
528
dpd_buf4_init(&W, CC_HBAR, 0, 0, 21, 2, 21, 0, "WMNIE (M>N,EI)");
529
dpd_dot14(&GMI, &W, &newLIA, 0, 0, -1, 1);
532
dpd_buf4_init(&W, CC_HBAR, 0, 23, 26, 23, 26, 0, "WmNiE (mN,Ei)");
533
dpd_dot14(&Gmi, &W, &newLIA, 0, 0, -1, 1);
536
dpd_buf4_init(&W, CC_HBAR, 0, 10, 31, 12, 31, 0, "Wmnie (m>n,ei)");
537
dpd_dot14(&Gmi, &W, &newLia, 0, 0, -1, 1);
540
dpd_buf4_init(&W, CC_HBAR, 0, 22, 25, 22, 25, 0, "WMnIe (Mn,eI)");
541
dpd_dot14(&GMI, &W, &newLia, 0, 0, -1, 1);
544
dpd_file2_close(&Gmi);
545
dpd_file2_close(&GMI);
549
if(!strcmp(params.wfn, "CC3")) {
550
if(params.ref == 0) {
552
dpd_file2_init(&XLD, CC3_MISC, 0, 0, 1, "CC3 XLD");
553
dpd_buf4_init(&D, CC_DINTS, 0, 0, 5, 0, 5, 0, "D 2<ij|ab> - <ij|ba>");
554
dpd_dot24(&XLD, &D, &newLIA, 0, 0, 1, 1);
556
dpd_file2_close(&XLD);
558
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 2, 7, 0, "LIJAB");
559
dpd_buf4_init(&Z, CC3_MISC, 0, 10, 0, 10, 0, 0, "CC3 ZIFLN");
560
dpd_contract442(&Z, &L2, &newLIA, 0, 2, -0.5, 1);
564
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
565
dpd_buf4_init(&Z, CC3_MISC, 0, 10, 0, 10, 0, 0, "CC3 ZIfLn");
566
dpd_contract442(&Z, &L2, &newLIA, 0, 2, -1, 1);
570
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 2, 7, 0, "LIJAB");
571
dpd_buf4_init(&Z, CC3_MISC, 0, 11, 5, 11, 5, 0, "CC3 ZDFAN (AN,DF)");
572
dpd_contract442(&L2, &Z, &newLIA, 0, 0, 0.5, 1);
576
dpd_buf4_init(&L2, CC_LAMBDA, L_irr, 0, 5, 0, 5, 0, "LIjAb");
577
dpd_buf4_init(&Z, CC3_MISC, 0, 11, 5, 11, 5, 0, "CC3 ZDfAn (An,Df)");
578
dpd_contract442(&L2, &Z, &newLIA, 0, 0, 1.0, 1);
584
dpd_file2_close(&newLIA);
585
dpd_file2_close(&newLia);
588
if(params.ref == 0) { /** RHF **/
590
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
591
dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
592
dpd_file2_close(&newLIA);
594
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
595
if(params.local && local.filter_singles) local_filter_T1(&newLIA);
597
dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
598
dpd_file2_dirprd(&dIA, &newLIA);
599
dpd_file2_close(&dIA);
601
dpd_file2_close(&newLIA);
603
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
604
dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
605
dpd_file2_close(&LIA);
606
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
607
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
608
dpd_file2_axpy(&LIA, &newLIA, 1, 0);
609
dpd_file2_close(&LIA);
611
dpd_file2_copy(&newLIA, CC_LAMBDA, "New Lia"); /* spin-adaptation for RHF */
612
dpd_file2_close(&newLIA);
614
else if(params.ref == 1) { /** ROHF **/
616
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
617
dpd_file2_copy(&newLIA, CC_LAMBDA, "New LIA Increment");
618
dpd_file2_close(&newLIA);
620
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
621
dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
622
dpd_file2_dirprd(&dIA, &newLIA);
623
dpd_file2_close(&dIA);
624
dpd_file2_close(&newLIA);
626
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "LIA");
627
dpd_file2_copy(&LIA, CC_LAMBDA, "New LIA");
628
dpd_file2_close(&LIA);
629
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
630
dpd_file2_init(&LIA, CC_LAMBDA, L_irr, 0, 1, "New LIA Increment");
631
dpd_file2_axpy(&LIA, &newLIA, 1, 0);
632
dpd_file2_close(&LIA);
633
dpd_file2_close(&newLIA);
635
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
636
dpd_file2_copy(&newLia, CC_LAMBDA, "New Lia Increment");
637
dpd_file2_close(&newLia);
639
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
640
dpd_file2_init(&dia, CC_DENOM, L_irr, 0, 1, "dia");
641
dpd_file2_dirprd(&dia, &newLia);
642
dpd_file2_close(&dia);
643
dpd_file2_close(&newLia);
645
dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "Lia");
646
dpd_file2_copy(&Lia, CC_LAMBDA, "New Lia");
647
dpd_file2_close(&Lia);
648
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 0, 1, "New Lia");
649
dpd_file2_init(&Lia, CC_LAMBDA, L_irr, 0, 1, "New Lia Increment");
650
dpd_file2_axpy(&Lia, &newLia, 1, 0);
651
dpd_file2_close(&Lia);
652
dpd_file2_close(&newLia);
654
else if(params.ref == 2) {
656
dpd_file2_init(&newLIA, CC_LAMBDA, L_irr, 0, 1, "New LIA");
657
dpd_file2_init(&dIA, CC_DENOM, L_irr, 0, 1, "dIA");
658
dpd_file2_dirprd(&dIA, &newLIA);
659
dpd_file2_close(&dIA);
660
dpd_file2_close(&newLIA);
662
dpd_file2_init(&newLia, CC_LAMBDA, L_irr, 2, 3, "New Lia");
663
dpd_file2_init(&dia, CC_DENOM, L_irr, 2, 3, "dia");
664
dpd_file2_dirprd(&dia, &newLia);
665
dpd_file2_close(&dia);
666
dpd_file2_close(&newLia);
670
check_sum("after L1 build",L_irr);