2
#include <libdpd/dpd.h>
6
void ltdensity_rohf(struct TD_Params S);
7
void ltdensity_uhf(struct TD_Params S);
8
void ltdensity_intermediates(struct TD_Params S);
9
void sort_ltd_rohf(struct TD_Params S);
10
void sort_ltd_uhf(struct TD_Params S);
12
void ltdensity_rohf(struct TD_Params S)
14
dpdfile2 DAI, Dai, DIA, Dia, DIJ, DAB, Dij, Dab, TIA, Tia;
15
dpdfile2 LIA, Lia, RIA, Ria, Int, XIJ, Xij, R1;
16
dpdbuf4 T2, L2, R2, I2;
17
dpdfile2 D, T1, L1, Z;
20
dpd_file2_init(&D, CC_TMP, 0, 0, 0, "LTDIJ");
21
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
22
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
23
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
26
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
27
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
28
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
31
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
32
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
33
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
38
dpd_file2_init(&D, CC_TMP, 0, 0, 0, "LTDij");
39
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tijab");
40
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "Lijab");
41
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
44
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
45
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
46
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
49
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
50
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
51
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
56
dpd_file2_init(&D, CC_TMP, 0, 1, 1, "LTDAB");
57
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
58
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
59
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
62
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
63
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
64
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
67
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
68
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
69
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
74
dpd_file2_init(&D, CC_TMP, 0, 1, 1, "LTDab");
75
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "Lijab");
76
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
77
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
80
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
81
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
82
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
85
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
86
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
87
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
94
dpd_file2_init(&R1, CC_GR, S.irrep, 0, 1, "RIA");
95
dpd_file2_copy(&R1, CC_TMP, "LTDIA");
99
dpd_file2_init(&D, CC_TMP, 0, 0, 1, "LTDIA");
100
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
101
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
102
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
103
dpd_file2_close(&L1);
105
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
106
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
107
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
108
dpd_file2_close(&L1);
110
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
111
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
112
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
113
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
114
dpd_file2_close(&L1);
115
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
116
dpd_file2_close(&T1);
119
/* D(I,A) << L2(MN,EF) T2(IN,EF) T(M,A) + L2(Mn,Ef) T2(In,Ef) T(M,A) */
121
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
122
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
123
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
124
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
127
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
128
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
129
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
132
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
133
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
135
dpd_file2_close(&T1);
137
/* T2(MN,AF) L2(MN,EF) T(I,E) + T2(Mn,Af) L2(Mn,Ef) T(I,E) */
139
dpd_file2_init(&Z, CC_TMP0, 0, 1, 1, "Z(A,E)");
140
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
141
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
142
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
145
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
146
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
147
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
150
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
151
dpd_contract222(&T1, &Z, &D, 0, 0, -1.0, 1.0);
152
dpd_file2_close(&T1);
158
dpd_file2_init(&R1, CC_GR, S.irrep, 0, 1, "Ria");
159
dpd_file2_copy(&R1, CC_TMP, "LTDia");
160
dpd_file2_close(&R1);
163
dpd_file2_init(&D, CC_TMP, 0, 0, 1, "LTDia");
164
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tijab");
165
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
166
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
167
dpd_file2_close(&L1);
169
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
170
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
171
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
172
dpd_file2_close(&L1);
174
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
175
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
176
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(i,m)");
177
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
178
dpd_file2_close(&L1);
179
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
180
dpd_file2_close(&T1);
182
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(i,m)");
183
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "Lijab");
184
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tijab");
185
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
188
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
189
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
190
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
193
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
194
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
196
dpd_file2_close(&T1);
197
dpd_file2_init(&Z, CC_TMP0, 0, 1, 1, "Z(a,e)");
198
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tijab");
199
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "Lijab");
200
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
203
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
204
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
205
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
208
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tia");
209
dpd_contract222(&T1, &Z, &D, 0, 0, -1.0, 1.0);
210
dpd_file2_close(&T1);
214
/* Note that these blocks are still stored occ/vir */
215
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
216
dpd_file2_copy(&L1, CC_TMP, "LTDAI");
217
dpd_file2_close(&L1);
219
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
220
dpd_file2_copy(&L1, CC_TMP, "LTDai");
221
dpd_file2_close(&L1);
223
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
224
dpd_file2_scm(&L1, (1/S.R0));
225
dpd_file2_close(&L1);
226
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "Lia");
227
dpd_file2_scm(&L1, (1/S.R0));
228
dpd_file2_close(&L1);
229
dpd_buf4_init(&L2, CC_GLG, 0, 2, 7, 2, 7, 0, "LIJAB");
230
dpd_buf4_scm(&L2, (1/S.R0));
232
dpd_buf4_init(&L2, CC_GLG, 0, 2, 7, 2, 7, 0, "Lijab");
233
dpd_buf4_scm(&L2, (1/S.R0));
235
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LIjAb");
236
dpd_buf4_scm(&L2, (1/S.R0));
238
dpd_buf4_init(&L2, CC_GLG, 0, 0, 5, 0, 5, 0, "LiJaB");
239
dpd_buf4_scm(&L2, (1/S.R0));
243
ltdensity_intermediates(S);
245
dpd_file2_init(&TIA, CC_OEI, 0, 0, 1, "tIA");
246
dpd_file2_init(&Tia, CC_OEI, 0, 0, 1, "tia");
247
dpd_file2_init(&RIA, CC_GR, S.irrep, 0, 1, "RIA");
248
dpd_file2_init(&Ria, CC_GR, S.irrep, 0, 1, "Ria");
249
dpd_file2_init(&LIA, CC_GLG, 0, 0, 1, "LIA");
250
dpd_file2_init(&Lia, CC_GLG, 0, 0, 1, "Lia");
252
/* D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f] */
254
dpd_file2_init(&DIJ, CC_TMP, S.irrep, 0, 0, "LTDIJ");
255
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_OO");
256
dpd_file2_axpy(&Int, &DIJ, -1.0, 1);
257
dpd_file2_close(&Int);
259
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
260
dpd_contract222(&TIA, &Int, &DIJ, 0, 0, -1.0, 1.0);
261
dpd_file2_close(&Int);
262
dpd_file2_close(&DIJ);
264
dpd_file2_init(&Dij, CC_TMP, S.irrep, 0, 0, "LTDij");
265
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_oo");
266
dpd_file2_axpy(&Int, &Dij, -1.0, 1);
267
dpd_file2_close(&Int);
269
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
270
dpd_contract222(&Tia, &Int, &Dij, 0, 0, -1.0, 1.0);
271
dpd_file2_close(&Int);
272
dpd_file2_close(&Dij);
274
/* D[a][b] = +LR_vv[a][b] + L2R1_ov[n][a] * t1[n][b] */
276
dpd_file2_init(&DAB, CC_TMP, S.irrep, 1, 1, "LTDAB");
277
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_VV");
278
dpd_file2_axpy(&Int, &DAB, 1.0, 0);
279
dpd_file2_close(&Int);
281
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
282
dpd_contract222(&Int, &TIA, &DAB, 1, 1, 1.0, 1.0);
283
dpd_file2_close(&Int);
284
dpd_file2_close(&DAB);
286
dpd_file2_init(&Dab, CC_TMP, S.irrep, 1, 1, "LTDab");
287
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_vv");
288
dpd_file2_axpy(&Int, &Dab, 1.0, 0);
289
dpd_file2_close(&Int);
291
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
292
dpd_contract222(&Int, &Tia, &Dab, 1, 1, 1.0, 1.0);
293
dpd_file2_close(&Int);
294
dpd_file2_close(&Dab);
296
/* D[a][i] = +L2R1_ov[i][a] */
298
dpd_file2_init(&DAI, CC_TMP, S.irrep, 0, 1, "LTDAI");
299
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
300
dpd_file2_axpy(&Int, &DAI, 1.0, 0);
301
dpd_file2_close(&Int);
302
dpd_file2_close(&DAI);
304
dpd_file2_init(&Dai, CC_TMP, S.irrep, 0, 1, "LTDai");
305
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
306
dpd_file2_axpy(&Int, &Dai, 1.0, 0);
307
dpd_file2_close(&Int);
308
dpd_file2_close(&Dai);
310
dpd_file2_init(&DIA, CC_TMP, S.irrep, 0, 1, "LTDIA");
311
dpd_file2_init(&Dia, CC_TMP, S.irrep, 0, 1, "LTDia");
313
/* D[i][a] = L1R2_ov[i][a] */
315
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L1R2_OV");
316
dpd_file2_axpy(&Int, &DIA, 1.0, 0);
317
dpd_file2_close(&Int);
319
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L1R2_ov");
320
dpd_file2_axpy(&Int, &Dia, 1.0, 0);
321
dpd_file2_close(&Int);
323
/* - LR_OO[M][I] * t1[M][A] */
325
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_OO");
326
dpd_contract222(&Int, &TIA, &DIA, 1, 1, -1.0, 1.0);
327
dpd_file2_close(&Int);
329
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_oo");
330
dpd_contract222(&Int, &Tia, &Dia, 1, 1, -1.0, 1.0);
331
dpd_file2_close(&Int);
333
/* - t1[I][E] * LR_vv[E][A] */
335
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_VV");
336
dpd_contract222(&TIA, &Int, &DIA, 0, 1, -1.0, 1.0);
337
dpd_file2_close(&Int);
339
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_vv");
340
dpd_contract222(&Tia, &Int, &Dia, 0, 1, -1.0, 1.0);
341
dpd_file2_close(&Int);
343
/* - LT2_OO[M][I] * r1[M][A] */
345
dpd_file2_init(&Int, EOM_TMP, 0, 0, 0, "LT2_OO");
346
dpd_contract222(&Int, &RIA, &DIA, 1, 1, -1.0, 1.0);
347
dpd_file2_close(&Int);
349
dpd_file2_init(&Int, EOM_TMP, 0, 0, 0, "LT2_oo");
350
dpd_contract222(&Int, &Ria, &Dia, 1, 1, -1.0, 1.0);
351
dpd_file2_close(&Int);
353
/* - r1[I][E] * LT2_VV[E][A] */
355
dpd_file2_init(&Int, EOM_TMP, 0, 1, 1, "LT2_VV");
356
dpd_contract222(&RIA, &Int, &DIA, 0, 1, -1.0, 1.0);
357
dpd_file2_close(&Int);
359
dpd_file2_init(&Int, EOM_TMP, 0, 1, 1, "LT2_vv");
360
dpd_contract222(&Ria, &Int, &Dia, 0, 1, -1.0, 1.0);
361
dpd_file2_close(&Int);
363
/* + L2R1_ov[M][E] * t2[i][m][a][e] */
365
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
366
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
367
dpd_dot24(&Int, &T2, &DIA, 0, 0, 1.0, 1.0);
368
dpd_file2_close(&Int);
371
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tIjAb");
372
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
373
dpd_dot24(&Int, &T2, &DIA, 0, 0, 1.0, 1.0);
374
dpd_file2_close(&Int);
377
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tijab");
378
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
379
dpd_dot24(&Int, &T2, &Dia, 0, 0, 1.0, 1.0);
380
dpd_file2_close(&Int);
383
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 0, 5, 0, "tiJaB");
384
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
385
dpd_dot24(&Int, &T2, &Dia, 0, 0, 1.0, 1.0);
386
dpd_file2_close(&Int);
389
/* - (t1[i][e] * L2R1_ov[M][E]) * t1[m][a] */
391
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
392
dpd_file2_init(&XIJ, EOM_TMP, S.irrep, 0, 0, "XIJ");
393
dpd_contract222(&TIA, &Int, &XIJ, 0, 0, 1.0, 0.0);
394
dpd_file2_close(&Int);
396
dpd_file2_init(&XIJ, EOM_TMP, S.irrep, 0, 0, "XIJ");
397
dpd_contract222(&XIJ, &TIA, &DIA, 0, 1, -1.0, 1.0);
398
dpd_file2_close(&XIJ);
400
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_ov");
401
dpd_file2_init(&Xij, EOM_TMP, S.irrep, 0, 0, "Xij");
402
dpd_contract222(&Tia, &Int, &Xij, 0, 0, 1.0, 0.0);
403
dpd_file2_close(&Int);
405
dpd_file2_init(&Xij, EOM_TMP, S.irrep, 0, 0, "Xij");
406
dpd_contract222(&Xij, &Tia, &Dia, 0, 1, -1.0, 1.0);
407
dpd_file2_close(&Xij);
409
dpd_file2_close(&DIA);
410
dpd_file2_close(&Dia);
412
dpd_file2_close(&TIA);
413
dpd_file2_close(&Tia);
414
dpd_file2_close(&RIA);
415
dpd_file2_close(&Ria);
416
dpd_file2_close(&LIA);
417
dpd_file2_close(&Lia);
422
void ltdensity_uhf(struct TD_Params S)
424
dpdfile2 DAI, Dai, DIA, Dia, DIJ, DAB, Dij, Dab, TIA, Tia;
425
dpdfile2 LIA, Lia, RIA, Ria, Int, XIJ, Xij, R1;
426
dpdbuf4 T2, L2, R2, I2;
427
dpdfile2 D, T1, L1, Z;
429
if(S.irrep == 0 ) { /* Symmetric Transition */
431
dpd_file2_init(&D, CC_TMP, 0, 0, 0, "LTDIJ");
432
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
433
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
434
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
437
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
438
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
439
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
442
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
443
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
444
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
445
dpd_file2_close(&L1);
446
dpd_file2_close(&T1);
449
dpd_file2_init(&D, CC_TMP, 0, 2, 2, "LTDij");
450
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
451
dpd_buf4_init(&L2, CC_GLG, 0, 10, 17, 12, 17, 0, "Lijab");
452
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 0.0);
455
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
456
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
457
dpd_contract442(&T2, &L2, &D, 0, 0, -1.0, 1.0);
460
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
461
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
462
dpd_contract222(&T1, &L1, &D, 0, 0, -1.0, 1.0);
463
dpd_file2_close(&L1);
464
dpd_file2_close(&T1);
467
dpd_file2_init(&D, CC_TMP, 0, 1, 1, "LTDAB");
468
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
469
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
470
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
473
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
474
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
475
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
478
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
479
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
480
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
481
dpd_file2_close(&L1);
482
dpd_file2_close(&T1);
485
dpd_file2_init(&D, CC_TMP, 0, 3, 3, "LTDab");
486
dpd_buf4_init(&L2, CC_GLG, 0, 12, 15, 12, 17, 0, "Lijab");
487
dpd_buf4_init(&T2, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
488
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 0.0);
491
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
492
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
493
dpd_contract442(&L2, &T2, &D, 3, 3, 1.0, 1.0);
496
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
497
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
498
dpd_contract222(&L1, &T1, &D, 1, 1, 1.0, 1.0);
499
dpd_file2_close(&L1);
500
dpd_file2_close(&T1);
506
dpd_file2_init(&R1, CC_GR, S.irrep, 0, 1, "RIA");
507
dpd_file2_copy(&R1, CC_TMP, "LTDIA");
508
dpd_file2_close(&R1);
510
if(S.irrep == 0) { // Symmetric Transitions
512
dpd_file2_init(&D, CC_TMP, 0, 0, 1, "LTDIA");
513
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
514
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
515
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
516
dpd_file2_close(&L1);
518
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
519
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
520
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
521
dpd_file2_close(&L1);
523
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
524
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
525
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
526
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
527
dpd_file2_close(&L1);
528
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
529
dpd_file2_close(&T1);
532
/* D(I,A) << L2(MN,EF) T2(IN,EF) T(M,A) + L2(Mn,Ef) T2(In,Ef) T(M,A) */
534
dpd_file2_init(&Z, CC_TMP0, 0, 0, 0, "Z(I,M)");
535
dpd_buf4_init(&L2, CC_GLG, 0, 0, 7, 2, 7, 0, "LIJAB");
536
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 7, 2, 7, 0, "tIJAB");
537
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
540
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
541
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
542
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
545
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
546
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
548
dpd_file2_close(&T1);
549
/* T2(MN,AF) L2(MN,EF) T(I,E) + T2(Mn,Af) L2(Mn,Ef) T(I,E) */
550
dpd_file2_init(&Z, CC_TMP0, 0, 1, 1, "Z(A,E)");
551
dpd_buf4_init(&T2, CC_TAMPS, 0, 2, 5, 2, 7, 0, "tIJAB");
552
dpd_buf4_init(&L2, CC_GLG, 0, 2, 5, 2, 7, 0, "LIJAB");
553
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
556
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
557
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
558
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
561
dpd_file2_init(&T1, CC_OEI, 0, 0, 1, "tIA");
562
dpd_contract222(&T1, &Z, &D, 0, 0, -1.0, 1.0);
563
dpd_file2_close(&T1);
570
dpd_file2_init(&R1, CC_GR, S.irrep, 2, 3, "Ria");
571
dpd_file2_copy(&R1, CC_TMP, "LTDia");
572
dpd_file2_close(&R1);
574
if(S.irrep == 0) { /* Symmetric Transitions */
576
dpd_file2_init(&D, CC_TMP, 0, 2, 3, "LTDia");
577
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 15, 12, 17, 0, "tijab");
578
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
579
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
580
dpd_file2_close(&L1);
582
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
583
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
584
dpd_dot24(&L1, &T2, &D, 0, 0, 1.0, 1.0);
585
dpd_file2_close(&L1);
587
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
588
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
589
dpd_file2_init(&Z, CC_TMP0, 0, 2, 2, "Z(i,m)");
590
dpd_contract222(&T1, &L1, &Z, 0, 0, 1.0, 0.0);
591
dpd_file2_close(&L1);
592
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
593
dpd_file2_close(&T1);
595
dpd_file2_init(&Z, CC_TMP0, 0, 2, 2, "Z(i,m)");
596
dpd_buf4_init(&L2, CC_GLG, 0, 10, 17, 12, 17, 0, "Lijab");
597
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 17, 12, 17, 0, "tijab");
598
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 0.0);
601
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
602
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
603
dpd_contract442(&T2, &L2, &Z, 0, 0, 1.0, 1.0);
606
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
607
dpd_contract222(&Z, &T1, &D, 0, 1, -1.0, 1.0);
609
dpd_file2_close(&T1);
610
dpd_file2_init(&Z, CC_TMP0, 0, 3, 3, "Z(a,e)");
611
dpd_buf4_init(&T2, CC_TAMPS, 0, 12, 15, 12, 17, 0, "tijab");
612
dpd_buf4_init(&L2, CC_GLG, 0, 12, 15, 12, 17, 0, "Lijab");
613
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 0.0);
616
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
617
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
618
dpd_contract442(&T2, &L2, &Z, 2, 2, 1.0, 1.0);
621
dpd_file2_init(&T1, CC_OEI, 0, 2, 3, "tia");
622
dpd_contract222(&T1, &Z, &D, 0, 0, -1.0, 1.0);
623
dpd_file2_close(&T1);
627
/* Note that these blocks are still stored occ/vir */
628
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
629
dpd_file2_copy(&L1, CC_TMP, "LTDAI");
630
dpd_file2_close(&L1);
632
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
633
dpd_file2_copy(&L1, CC_TMP, "LTDai");
634
dpd_file2_close(&L1);
636
dpd_file2_init(&L1, CC_GLG, 0, 0, 1, "LIA");
637
dpd_file2_scm(&L1, (1/S.R0));
638
dpd_file2_close(&L1);
639
dpd_file2_init(&L1, CC_GLG, 0, 2, 3, "Lia");
640
dpd_file2_scm(&L1, (1/S.R0));
641
dpd_file2_close(&L1);
642
dpd_buf4_init(&L2, CC_GLG, 0, 2, 7, 2, 7, 0, "LIJAB");
643
dpd_buf4_scm(&L2, (1/S.R0));
645
dpd_buf4_init(&L2, CC_GLG, 0, 10, 17, 12, 17, 0, "Lijab");
646
dpd_buf4_scm(&L2, (1/S.R0));
648
dpd_buf4_init(&L2, CC_GLG, 0, 22, 28, 22, 28, 0, "LIjAb");
649
dpd_buf4_scm(&L2, (1/S.R0));
651
dpd_buf4_init(&L2, CC_GLG, 0, 23, 29, 23, 29, 0, "LiJaB");
652
dpd_buf4_scm(&L2, (1/S.R0));
656
ltdensity_intermediates(S);
658
dpd_file2_init(&TIA, CC_OEI, 0, 0, 1, "tIA");
659
dpd_file2_init(&Tia, CC_OEI, 0, 2, 3, "tia");
660
dpd_file2_init(&RIA, CC_GR, S.irrep, 0, 1, "RIA");
661
dpd_file2_init(&Ria, CC_GR, S.irrep, 2, 3, "Ria");
662
dpd_file2_init(&LIA, CC_GL, S.irrep, 0, 1, "LIA");
663
dpd_file2_init(&Lia, CC_GL, S.irrep, 2, 3, "Lia");
665
/* D[i][j] = -LR_oo[j][i] - t1[i][f] * L2R1_ov[j][f] */
667
dpd_file2_init(&DIJ, CC_TMP, S.irrep, 0, 0, "LTDIJ");
668
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_OO");
669
dpd_file2_axpy(&Int, &DIJ, -1.0, 1);
670
dpd_file2_close(&Int);
672
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
673
dpd_contract222(&TIA, &Int, &DIJ, 0, 0, -1.0, 1.0);
674
dpd_file2_close(&Int);
675
dpd_file2_close(&DIJ);
677
dpd_file2_init(&Dij, CC_TMP, S.irrep, 2, 2, "LTDij");
678
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 2, "LR_oo");
679
dpd_file2_axpy(&Int, &Dij, -1.0, 1);
680
dpd_file2_close(&Int);
682
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
683
dpd_contract222(&Tia, &Int, &Dij, 0, 0, -1.0, 1.0);
684
dpd_file2_close(&Int);
685
dpd_file2_close(&Dij);
687
/* D[a][b] = +LR_vv[a][b] + L2R1_ov[n][a] * t1[n][b] */
689
dpd_file2_init(&DAB, CC_TMP, S.irrep, 1, 1, "LTDAB");
690
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_VV");
691
dpd_file2_axpy(&Int, &DAB, 1.0, 0);
692
dpd_file2_close(&Int);
694
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
695
dpd_contract222(&Int, &TIA, &DAB, 1, 1, 1.0, 1.0);
696
dpd_file2_close(&Int);
697
dpd_file2_close(&DAB);
699
dpd_file2_init(&Dab, CC_TMP, S.irrep, 3, 3, "LTDab");
700
dpd_file2_init(&Int, EOM_TMP, S.irrep, 3, 3, "LR_vv");
701
dpd_file2_axpy(&Int, &Dab, 1.0, 0);
702
dpd_file2_close(&Int);
704
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
705
dpd_contract222(&Int, &Tia, &Dab, 1, 1, 1.0, 1.0);
706
dpd_file2_close(&Int);
707
dpd_file2_close(&Dab);
709
/* D[a][i] = +L2R1_ov[i][a] */
711
dpd_file2_init(&DAI, CC_TMP, S.irrep, 0, 1, "LTDAI");
712
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
713
dpd_file2_axpy(&Int, &DAI, 1.0, 0);
714
dpd_file2_close(&Int);
715
dpd_file2_close(&DAI);
717
dpd_file2_init(&Dai, CC_TMP, S.irrep, 2, 3, "LTDai");
718
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
719
dpd_file2_axpy(&Int, &Dai, 1.0, 0);
720
dpd_file2_close(&Int);
721
dpd_file2_close(&Dai);
723
dpd_file2_init(&DIA, CC_TMP, S.irrep, 0, 1, "LTDIA");
725
dpd_file2_init(&Dia, CC_TMP, S.irrep, 2, 3, "LTDia");
727
/* D[i][a] = L1R2_ov[i][a] */
729
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L1R2_OV");
730
dpd_file2_axpy(&Int, &DIA, 1.0, 0);
731
dpd_file2_close(&Int);
733
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L1R2_ov");
734
dpd_file2_axpy(&Int, &Dia, 1.0, 0);
735
dpd_file2_close(&Int);
737
/* - LR_OO[M][I] * t1[M][A] */
739
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 0, "LR_OO");
740
dpd_contract222(&Int, &TIA, &DIA, 1, 1, -1.0, 1.0);
741
dpd_file2_close(&Int);
743
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 2, "LR_oo");
744
dpd_contract222(&Int, &Tia, &Dia, 1, 1, -1.0, 1.0);
745
dpd_file2_close(&Int);
747
/* - t1[I][E] * LR_vv[E][A] */
749
dpd_file2_init(&Int, EOM_TMP, S.irrep, 1, 1, "LR_VV");
750
dpd_contract222(&TIA, &Int, &DIA, 0, 1, -1.0, 1.0);
751
dpd_file2_close(&Int);
753
dpd_file2_init(&Int, EOM_TMP, S.irrep, 3, 3, "LR_vv");
754
dpd_contract222(&Tia, &Int, &Dia, 0, 1, -1.0, 1.0);
755
dpd_file2_close(&Int);
757
/* - LT2_OO[M][I] * r1[M][A] */
759
dpd_file2_init(&Int, EOM_TMP, 0, 0, 0, "LT2_OO");
760
dpd_contract222(&Int, &RIA, &DIA, 1, 1, -1.0, 1.0);
761
dpd_file2_close(&Int);
763
dpd_file2_init(&Int, EOM_TMP, 0, 2, 2, "LT2_oo");
764
dpd_contract222(&Int, &Ria, &Dia, 1, 1, -1.0, 1.0);
765
dpd_file2_close(&Int);
767
/* - r1[I][E] * LT2_vv[E][A] */
769
dpd_file2_init(&Int, EOM_TMP, 0, 1, 1, "LT2_VV");
770
dpd_contract222(&RIA, &Int, &DIA, 0, 1, -1.0, 1.0);
771
dpd_file2_close(&Int);
773
dpd_file2_init(&Int, EOM_TMP, 0, 3, 3, "LT2_vv");
774
dpd_contract222(&Ria, &Int, &Dia, 0, 1, -1.0, 1.0);
775
dpd_file2_close(&Int);
777
/* + L2R1_ov[M][E] * t2[i][m][a][e] */
779
dpd_buf4_init(&T2, CC_TAMPS, 0, 0, 5, 2, 7, 0, "tIJAB");
780
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
781
dpd_dot24(&Int, &T2, &DIA, 0, 0, 1.0, 1.0);
782
dpd_file2_close(&Int);
785
dpd_buf4_init(&T2, CC_TAMPS, 0, 22, 28, 22, 28, 0, "tIjAb");
786
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
787
dpd_dot24(&Int, &T2, &DIA, 0, 0, 1.0, 1.0);
788
dpd_file2_close(&Int);
791
dpd_buf4_init(&T2, CC_TAMPS, 0, 10, 15, 12, 17, 0, "tijab");
792
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
793
dpd_dot24(&Int, &T2, &Dia, 0, 0, 1.0, 1.0);
794
dpd_file2_close(&Int);
797
dpd_buf4_init(&T2, CC_TAMPS, 0, 23, 29, 23, 29, 0, "tiJaB");
798
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
799
dpd_dot24(&Int, &T2, &Dia, 0, 0, 1.0, 1.0);
800
dpd_file2_close(&Int);
803
/* - (t1[i][e] * L2R1_ov[M][E]) * t1[m][a] */
805
dpd_file2_init(&Int, EOM_TMP, S.irrep, 0, 1, "L2R1_OV");
806
dpd_file2_init(&XIJ, EOM_TMP, S.irrep, 0, 0, "XIJ");
807
dpd_contract222(&TIA, &Int, &XIJ, 0, 0, 1.0, 0.0);
808
dpd_file2_close(&Int);
810
dpd_file2_init(&XIJ, EOM_TMP, S.irrep, 0, 0, "XIJ");
811
dpd_contract222(&XIJ, &TIA, &DIA, 0, 1, -1.0, 1.0);
812
dpd_file2_close(&XIJ);
814
dpd_file2_init(&Int, EOM_TMP, S.irrep, 2, 3, "L2R1_ov");
815
dpd_file2_init(&Xij, EOM_TMP, S.irrep, 2, 2, "Xij");
816
dpd_contract222(&Tia, &Int, &Xij, 0, 0, 1.0, 0.0);
817
dpd_file2_close(&Int);
819
dpd_file2_init(&Xij, EOM_TMP, S.irrep, 2, 2, "Xij");
820
dpd_contract222(&Xij, &Tia, &Dia, 0, 1, -1.0, 1.0);
821
dpd_file2_close(&Xij);
823
dpd_file2_close(&DIA);
824
dpd_file2_close(&Dia);
826
dpd_file2_close(&TIA);
827
dpd_file2_close(&Tia);
828
dpd_file2_close(&RIA);
829
dpd_file2_close(&Ria);
830
dpd_file2_close(&LIA);
831
dpd_file2_close(&Lia);