2
#include <libdpd/dpd.h>
6
void sort_ltd_rohf(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 *occpi, *virtpi, *occ_off, *vir_off;
11
int *occ_sym, *vir_sym, *openpi;
22
nirreps = moinfo.nirreps;
23
occpi = moinfo.occpi; virtpi = moinfo.virtpi;
24
occ_off = moinfo.occ_off; vir_off = moinfo.vir_off;
25
occ_sym = moinfo.occ_sym; vir_sym = moinfo.vir_sym;
26
openpi = moinfo.openpi;
27
qt_occ = moinfo.qt_occ; qt_vir = moinfo.qt_vir;
29
moinfo.ltd = block_matrix(nmo, nmo);
31
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 0, "LTDIJ");
32
dpd_file2_mat_init(&D);
34
for(h=0; h < nirreps; h++) {
35
for(i=0; i < occpi[h]; i++) {
36
I = qt_occ[occ_off[h] + i];
37
for(j=0; j < occpi[h^S.irrep]; j++) {
38
J = qt_occ[occ_off[h^S.irrep] + j];
39
moinfo.ltd[I][J] += D.matrix[h][i][j];
43
dpd_file2_mat_close(&D);
46
dpd_file2_init(&D, CC_TMP, S.irrep, 1, 1, "LTDAB");
47
dpd_file2_mat_init(&D);
49
for(h=0; h < nirreps; h++) {
50
for(a=0; a < (virtpi[h] - openpi[h]); a++) {
51
A = qt_vir[vir_off[h] + a];
52
for(b=0; b < (virtpi[h^S.irrep] - openpi[h^S.irrep]); b++) {
53
B = qt_vir[vir_off[h^S.irrep] + b];
54
moinfo.ltd[A][B] += D.matrix[h][a][b];
58
dpd_file2_mat_close(&D);
61
/* Note that this component of the density is stored occ-vir */
62
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDAI");
63
dpd_file2_mat_init(&D);
65
for(h=0; h < nirreps; h++) {
66
for(i=0; i < occpi[h]; i++) {
67
I = qt_occ[occ_off[h] + i];
68
for(a=0; a < (virtpi[h^S.irrep] - openpi[h^S.irrep]); a++) {
69
A = qt_vir[vir_off[h^S.irrep] + a];
70
moinfo.ltd[A][I] += D.matrix[h][i][a];
74
dpd_file2_mat_close(&D);
77
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDIA");
78
dpd_file2_mat_init(&D);
80
for(h=0; h < nirreps; h++) {
81
for(i=0; i < occpi[h]; i++) {
82
I = qt_occ[occ_off[h] + i];
83
for(a=0; a < (virtpi[h^S.irrep] - openpi[h^S.irrep]); a++) {
84
A = qt_vir[vir_off[h^S.irrep] + a];
85
moinfo.ltd[I][A] += D.matrix[h][i][a];
89
dpd_file2_mat_close(&D);
92
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 0, "LTDij");
93
dpd_file2_mat_init(&D);
95
for(h=0; h < nirreps; h++) {
96
for(i=0; i < (occpi[h] - openpi[h]); i++) {
97
I = qt_occ[occ_off[h] + i];
98
for(j=0; j < (occpi[h^S.irrep] - openpi[h^S.irrep]); j++) {
99
J = qt_occ[occ_off[h^S.irrep] + j];
100
moinfo.ltd[I][J] += D.matrix[h][i][j];
104
dpd_file2_mat_close(&D);
107
dpd_file2_init(&D, CC_TMP, S.irrep, 1, 1, "LTDab");
108
dpd_file2_mat_init(&D);
109
dpd_file2_mat_rd(&D);
110
for(h=0; h < nirreps; h++) {
111
for(a=0; a < virtpi[h]; a++) {
112
A = qt_vir[vir_off[h] + a];
113
for(b=0; b < virtpi[h^S.irrep]; b++) {
114
B = qt_vir[vir_off[h^S.irrep] + b];
115
moinfo.ltd[A][B] += D.matrix[h][a][b];
119
dpd_file2_mat_close(&D);
122
/* Note that this component of the density is stored occ-vir */
123
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDai");
124
dpd_file2_mat_init(&D);
125
dpd_file2_mat_rd(&D);
126
for(h=0; h < nirreps; h++) {
127
for(i=0; i < (occpi[h] - openpi[h]); i++) {
128
I = qt_occ[occ_off[h] + i];
129
for(a=0; a < virtpi[h^S.irrep]; a++) {
130
A = qt_vir[vir_off[h^S.irrep] + a];
131
moinfo.ltd[A][I] += D.matrix[h][i][a];
135
dpd_file2_mat_close(&D);
138
dpd_file2_init(&D, CC_TMP, S.irrep, 0, 1, "LTDia");
139
dpd_file2_mat_init(&D);
140
dpd_file2_mat_rd(&D);
141
for(h=0; h < nirreps; h++) {
142
for(i=0; i < (occpi[h] - openpi[h]); i++) {
143
I = qt_occ[occ_off[h] + i];
144
for(a=0; a < virtpi[h^S.irrep]; a++) {
145
A = qt_vir[vir_off[h^S.irrep] + a];
146
moinfo.ltd[I][A] += D.matrix[h][i][a];
150
dpd_file2_mat_close(&D);
153
/*mat_print(moinfo.ltd,nmo,nmo,outfile);*/