3
\brief Enter brief description of file here
7
#include <libciomr/libciomr.h>
9
#include <libiwl/iwl.h>
16
namespace psi { namespace response {
20
int stat, nao, noei_ao, nso, nmo;
22
double *scratch, **TMP, **X;
23
double **MUX, **MUY, **MUZ; /* MO-basis dipole integrals */
28
noei_ao = moinfo.noei_ao;
30
/**** Transform the dipole integrals to the MO basis ****/
32
MUX = block_matrix(nmo,nmo);
33
MUY = block_matrix(nmo,nmo);
34
MUZ = block_matrix(nmo,nmo);
36
TMP = block_matrix(nao, nao);
37
X = block_matrix(nao, nao);
38
scratch = init_array(noei_ao);
40
stat = iwl_rdone(PSIF_OEI, PSIF_AO_MX, scratch, noei_ao, 0, 0, outfile);
41
for(i=0,ij=0; i < nao; i++)
42
for(j=0; j <= i; j++, ij++) {
43
TMP[i][j] = TMP[j][i] = scratch[ij];
46
C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
48
C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
51
C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
53
C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
56
zero_arr(scratch,noei_ao);
58
stat = iwl_rdone(PSIF_OEI, PSIF_AO_MY, scratch, noei_ao, 0, 0, outfile);
59
for(i=0,ij=0; i < nao; i++)
60
for(j=0; j <= i; j++, ij++) {
61
TMP[i][j] = TMP[j][i] = scratch[ij];
64
C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
66
C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
69
C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
71
C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
74
zero_arr(scratch,noei_ao);
76
stat = iwl_rdone(PSIF_OEI, PSIF_AO_MZ, scratch, noei_ao, 0, 0, outfile);
77
for(i=0,ij=0; i < nao; i++)
78
for(j=0; j <= i; j++, ij++) {
79
TMP[i][j] = TMP[j][i] = scratch[ij];
82
C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
84
C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
87
C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
89
C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
101
fprintf(outfile, "MO-Basis MuX Integrals:\n");
102
mat_print(moinfo.MUX, nmo, nmo, outfile);
103
fprintf(outfile, "MO-Basis MuY Integrals:\n");
104
mat_print(moinfo.MUY, nmo, nmo, outfile);
105
fprintf(outfile, "MO-Basis MuZ Integrals:\n");
106
mat_print(moinfo.MUZ, nmo, nmo, outfile);
111
}} // namespace psi::response