2
#include <libdpd/dpd.h>
6
void sort_ltd_uhf(struct TD_Params S)
8
int h, nirreps, nmo, nfzv, nfzc, nclsd, nopen;
9
int row, col, i, j, I, J, a, b, A, B, p, q;
10
int *aoccpi, *avirtpi, *aocc_off, *avir_off;
11
int *boccpi, *bvirtpi, *bocc_off, *bvir_off;
12
int *aocc_sym, *avir_sym;
13
int *bocc_sym, *bvir_sym;
14
int *qt_aocc, *qt_avir;
15
int *qt_bocc, *qt_bvir;
24
nirreps = moinfo.nirreps;
25
aoccpi = moinfo.aoccpi; avirtpi = moinfo.avirtpi;
26
boccpi = moinfo.boccpi; bvirtpi = moinfo.bvirtpi;
27
aocc_off = moinfo.aocc_off; avir_off = moinfo.avir_off;
28
bocc_off = moinfo.bocc_off; bvir_off = moinfo.bvir_off;
29
aocc_sym = moinfo.aocc_sym; avir_sym = moinfo.avir_sym;
30
qt_aocc = moinfo.qt_aocc; qt_avir = moinfo.qt_avir;
31
qt_bocc = moinfo.qt_bocc; qt_bvir = moinfo.qt_bvir;
33
moinfo.ltd_a = block_matrix(nmo,nmo);
34
moinfo.ltd_b = block_matrix(nmo,nmo);
36
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 0, "LTDIJ");
37
dpd_file2_mat_init(&D);
39
for(h=0; h < nirreps; h++) {
40
for(i=0; i < aoccpi[h]; i++) {
41
I = qt_aocc[aocc_off[h] + i];
42
for(j=0; j < aoccpi[h^S.irrep]; j++) {
43
J = qt_aocc[aocc_off[h^S.irrep] + j];
44
moinfo.ltd_a[I][J] += D.matrix[h][i][j];
48
dpd_file2_mat_close(&D);
51
dpd_file2_init(&D, CC_TMP, S.irrep, 1, 1, "LTDAB");
52
dpd_file2_mat_init(&D);
54
for(h=0; h < nirreps; h++) {
55
for(a=0; a < avirtpi[h]; a++) {
56
A = qt_avir[avir_off[h] + a];
57
for(b=0; b < avirtpi[h^S.irrep]; b++) {
58
B = qt_avir[avir_off[h^S.irrep] + b];
59
moinfo.ltd_a[A][B] += D.matrix[h][a][b];
63
dpd_file2_mat_close(&D);
66
/* Note that this component of the density is stored occ-vir */
67
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDAI");
68
dpd_file2_mat_init(&D);
70
for(h=0; h < nirreps; h++) {
71
for(i=0; i < aoccpi[h]; i++) {
72
I = qt_aocc[aocc_off[h] + i];
73
for(a=0; a < avirtpi[h^S.irrep]; a++) {
74
A = qt_avir[avir_off[h^S.irrep] + a];
75
moinfo.ltd_a[A][I] += D.matrix[h][i][a];
79
dpd_file2_mat_close(&D);
82
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDIA");
83
dpd_file2_mat_init(&D);
85
for(h=0; h < nirreps; h++) {
86
for(i=0; i < aoccpi[h]; i++) {
87
I = qt_aocc[aocc_off[h] + i];
88
for(a=0; a < avirtpi[h^S.irrep]; a++) {
89
A = qt_avir[avir_off[h^S.irrep] + a];
90
moinfo.ltd_a[I][A] += D.matrix[h][i][a];
94
dpd_file2_mat_close(&D);
97
dpd_file2_init(&D, CC_TMP, S.irrep, 2, 2, "LTDij");
98
dpd_file2_mat_init(&D);
100
for(h=0; h < nirreps; h++) {
101
for(i=0; i < boccpi[h]; i++) {
102
I = qt_bocc[bocc_off[h] + i];
103
for(j=0; j < boccpi[h^S.irrep]; j++) {
104
J = qt_bocc[bocc_off[h^S.irrep] + j];
105
moinfo.ltd_b[I][J] += D.matrix[h][i][j];
109
dpd_file2_mat_close(&D);
112
dpd_file2_init(&D, CC_TMP, S.irrep, 3, 3, "LTDab");
113
dpd_file2_mat_init(&D);
114
dpd_file2_mat_rd(&D);
115
for(h=0; h < nirreps; h++) {
116
for(a=0; a < bvirtpi[h]; a++) {
117
A = qt_bvir[bvir_off[h] + a];
118
for(b=0; b < bvirtpi[h^S.irrep]; b++) {
119
B = qt_bvir[bvir_off[h^S.irrep] + b];
120
moinfo.ltd_b[A][B] += D.matrix[h][a][b];
124
dpd_file2_mat_close(&D);
127
/* Note that this component of the density is stored occ-vir */
128
dpd_file2_init(&D, CC_TMP, S.irrep, 2, 3, "LTDai");
129
dpd_file2_mat_init(&D);
130
dpd_file2_mat_rd(&D);
131
for(h=0; h < nirreps; h++) {
132
for(i=0; i < boccpi[h]; i++) {
133
I = qt_bocc[bocc_off[h] + i];
134
for(a=0; a < bvirtpi[h^S.irrep]; a++) {
135
A = qt_bvir[bvir_off[h^S.irrep] + a];
136
moinfo.ltd_b[A][I] += D.matrix[h][i][a];
140
dpd_file2_mat_close(&D);
143
dpd_file2_init(&D, CC_TMP, S.irrep, 2, 3, "LTDia");
144
dpd_file2_mat_init(&D);
145
dpd_file2_mat_rd(&D);
146
for(h=0; h < nirreps; h++) {
147
for(i=0; i < boccpi[h]; i++) {
148
I = qt_bocc[bocc_off[h] + i];
149
for(a=0; a < bvirtpi[h^S.irrep]; a++) {
150
A = qt_bvir[bvir_off[h^S.irrep] + a];
151
moinfo.ltd_b[I][A] += D.matrix[h][i][a];
155
dpd_file2_mat_close(&D);
158
/*mat_print(moinfo.ltd_a,nmo,nmo,outfile);*/
159
/*mat_print(moinfo.ltd_b,nmo,nmo,outfile);*/