~ubuntu-branches/ubuntu/precise/psicode/precise

« back to all changes in this revision

Viewing changes to src/bin/cints/Tools/read_scf_occ_evec.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 read_scf_occ_evec.cc
 
2
    \ingroup CINTS
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <cstdlib>
 
7
#include <cmath>
 
8
#include <libciomr/libciomr.h>
 
9
#include <libpsio/psio.h>
 
10
#include <libint/libint.h>
 
11
 
 
12
#include "defines.h"
 
13
#define EXTERN
 
14
#include "global.h"
 
15
 
 
16
namespace psi { namespace CINTS {
 
17
 
 
18
void read_scf_occ_evec(void)
 
19
 
20
    int i, j, k, l, jj, ij;
 
21
    int nstri;
 
22
    int nstria,nstrib;
 
23
    int num_so,num_ao,num_mo,ndocc;
 
24
    int aocc,bocc;
 
25
    int bas_off;
 
26
    int shell_start,shell_end,shell_type;
 
27
    double **SO_cmat, **SO_cmato;
 
28
    double **Cocc_un;
 
29
    
 
30
    /* Read All information necessary to do DFT procedure with Eigenvector */
 
31
    
 
32
    psio_open(IOUnits.itapDSCF, PSIO_OPEN_OLD);
 
33
    
 
34
    psio_read_entry(IOUnits.itapDSCF, "Number of MOs", 
 
35
                    (char *) &(MOInfo.num_mo), sizeof(int));
 
36
    if(UserOptions.reftype == uhf){
 
37
        psio_read_entry(IOUnits.itapDSCF, "Number of Alpha DOCC", 
 
38
                    (char *) &(MOInfo.alpha_occ),sizeof(int));
 
39
        psio_read_entry(IOUnits.itapDSCF, "Number of Beta DOCC", 
 
40
                    (char *) &(MOInfo.beta_occ),sizeof(int));
 
41
    }
 
42
    else{
 
43
        psio_read_entry(IOUnits.itapDSCF, "Number of DOCC", 
 
44
                        (char *) &(MOInfo.ndocc),sizeof(int));
 
45
    }
 
46
    
 
47
/*-------------------
 
48
  Variables needed
 
49
  -------------------*/
 
50
    
 
51
    num_ao = BasisSet.num_ao;
 
52
    num_so = Symmetry.num_so;
 
53
    num_mo = MOInfo.num_mo;
 
54
    ndocc = MOInfo.ndocc;
 
55
    nstri = num_mo*ndocc;
 
56
    aocc = MOInfo.alpha_occ;
 
57
    bocc = MOInfo.beta_occ;
 
58
    nstria = num_mo*aocc;
 
59
    nstrib = num_mo*bocc;
 
60
    
 
61
    
 
62
    if (UserOptions.reftype == uhf){
 
63
          SO_cmat = block_matrix(num_so,aocc);
 
64
          SO_cmato = block_matrix(num_so,bocc);
 
65
   
 
66
          psio_read_entry(IOUnits.itapDSCF, "Alpha Occupied SCF Eigenvector", 
 
67
                      (char *) &(SO_cmat[0][0]), sizeof(double)*nstria);
 
68
          psio_read_entry(IOUnits.itapDSCF, "Beta Occupied SCF Eigenvector", 
 
69
                          (char *) &(SO_cmato[0][0]), sizeof(double)*nstrib);
 
70
      }
 
71
      else {
 
72
          SO_cmat = block_matrix(num_so,ndocc);
 
73
          psio_read_entry(IOUnits.itapDSCF, "Occupied SCF Eigenvector", 
 
74
                          (char *) &(SO_cmat[0][0]), sizeof(double)*nstri);
 
75
      }
 
76
      psio_close(IOUnits.itapDSCF, 1);
 
77
      
 
78
  
 
79
   /*----------------------
 
80
    transform to AO basis
 
81
    ----------------------*/
 
82
      /*fprintf(outfile,"\nUSOTAO matrix");
 
83
        print_mat(Symmetry.usotao,num_so,num_ao,outfile);
 
84
        fprintf(outfile,"\nSO Cmat");
 
85
        print_mat(SO_cmat,num_so,num_mo,outfile);
 
86
      */
 
87
      if(UserOptions.reftype == uhf){
 
88
          Cocca = block_matrix(num_ao,aocc);
 
89
          mmult(Symmetry.usotao,1,SO_cmat,0,Cocca,0,num_ao,num_so,aocc,0);
 
90
          free_block(SO_cmat);
 
91
          Coccb = block_matrix(num_ao,bocc);
 
92
          mmult(Symmetry.usotao,1,SO_cmato,0,Coccb,0,num_ao,num_so,bocc,0);
 
93
          free_block(SO_cmato);
 
94
      }
 
95
      else{
 
96
          Cocc = block_matrix(num_ao,ndocc);
 
97
          mmult(Symmetry.usotao,1,SO_cmat,0,Cocc,0,num_ao,num_so,ndocc,0);
 
98
          free_block(SO_cmat);
 
99
      }
 
100
      
 
101
      /*--------------------------
 
102
        Remove after done testing
 
103
        --------------------------*/   
 
104
      
 
105
      /*  fprintf(outfile,"\nCocca");
 
106
      print_mat(Cocca,num_ao,aocc,outfile);
 
107
      fprintf(outfile,"\nCoccb");
 
108
      print_mat(Coccb,num_ao,bocc,outfile);*/
 
109
      
 
110
      return;
 
111
}
 
112
 
 
113
 
 
114
};};