~ubuntu-branches/ubuntu/quantal/psicode/quantal

« back to all changes in this revision

Viewing changes to src/bin/response/trans_mu.cc

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck, Michael Banck, Daniel Leidert
  • Date: 2009-02-23 00:12:02 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090223001202-rutldoy3dimfpesc
Tags: 3.4.0-1
* New upstream release.

[ Michael Banck ]
* debian/patches/01_DESTDIR.dpatch: Refreshed.
* debian/patches/02_FHS.dpatch: Removed, applied upstream.
* debian/patches/03_debian_docdir: Likewise.
* debian/patches/04_man.dpatch: Likewise.
* debian/patches/06_466828_fix_gcc_43_ftbfs.dpatch: Likewise.
* debian/patches/07_464867_move_executables: Fixed and refreshed.
* debian/patches/00list: Adjusted.
* debian/control: Improved description.
* debian/patches-held: Removed.
* debian/rules (install/psi3): Do not ship the ruby bindings for now.

[ Daniel Leidert ]
* debian/rules: Fix txtdir via DEB_MAKE_INSTALL_TARGET.
* debian/patches/01_DESTDIR.dpatch: Refreshed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*! \file
 
2
    \ingroup RESPONSE
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <cstdlib>
 
7
#include <libciomr/libciomr.h>
 
8
#include <libqt/qt.h>
 
9
#include <libiwl/iwl.h>
 
10
#include "MOInfo.h"
 
11
#include "Params.h"
 
12
#define EXTERN
 
13
#include <psifiles.h>
 
14
#include "globals.h"
 
15
 
 
16
namespace psi { namespace response {
 
17
 
 
18
void trans_mu(void)
 
19
{
 
20
  int stat, nao, noei_ao, nso, nmo;
 
21
  int i, j, ij;
 
22
  double *scratch, **TMP, **X;
 
23
  double **MUX, **MUY, **MUZ;  /* MO-basis dipole integrals */
 
24
 
 
25
  nao = moinfo.nao;
 
26
  nso = moinfo.nso;
 
27
  nmo = moinfo.nmo;
 
28
  noei_ao = moinfo.noei_ao;
 
29
 
 
30
  /**** Transform the dipole integrals to the MO basis ****/
 
31
 
 
32
  MUX = block_matrix(nmo,nmo);
 
33
  MUY = block_matrix(nmo,nmo);
 
34
  MUZ = block_matrix(nmo,nmo);
 
35
 
 
36
  TMP = block_matrix(nao, nao);
 
37
  X = block_matrix(nao, nao);
 
38
  scratch = init_array(noei_ao);
 
39
 
 
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];
 
44
    }
 
45
 
 
46
  C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
 
47
          0,&(X[0][0]),nao);
 
48
  C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
 
49
          0,&(TMP[0][0]),nao);
 
50
 
 
51
  C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
 
52
          0,&(X[0][0]),nao);
 
53
  C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
 
54
          0,&(MUX[0][0]),nmo);
 
55
 
 
56
  zero_arr(scratch,noei_ao);
 
57
 
 
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];
 
62
    }
 
63
 
 
64
  C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
 
65
          0,&(X[0][0]),nao);
 
66
  C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
 
67
          0,&(TMP[0][0]),nao);
 
68
 
 
69
  C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
 
70
          0,&(X[0][0]),nao);
 
71
  C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
 
72
          0,&(MUY[0][0]),nmo);
 
73
 
 
74
  zero_arr(scratch,noei_ao);
 
75
 
 
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];
 
80
    }
 
81
 
 
82
  C_DGEMM('n','t',nao,nso,nao,1,&(TMP[0][0]),nao,&(moinfo.usotao[0][0]),nao,
 
83
          0,&(X[0][0]),nao);
 
84
  C_DGEMM('n','n',nso,nso,nao,1,&(moinfo.usotao[0][0]),nao,&(X[0][0]),nao,
 
85
          0,&(TMP[0][0]),nao);
 
86
 
 
87
  C_DGEMM('n','n',nso,nmo,nso,1,&(TMP[0][0]),nao,&(moinfo.scf[0][0]),nmo,
 
88
          0,&(X[0][0]),nao);
 
89
  C_DGEMM('t','n',nmo,nmo,nso,1,&(moinfo.scf[0][0]),nmo,&(X[0][0]),nao,
 
90
          0,&(MUZ[0][0]),nmo);
 
91
 
 
92
  free_block(TMP);
 
93
  free_block(X);
 
94
  free(scratch);
 
95
 
 
96
  moinfo.MUX = MUX;
 
97
  moinfo.MUY = MUY;
 
98
  moinfo.MUZ = MUZ;
 
99
 
 
100
  /*
 
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);
 
107
  */
 
108
 
 
109
}
 
110
 
 
111
}} // namespace psi::response