1
/*! \file read_scf_occ_evec.cc
3
\brief Enter brief description of file here
8
#include <libciomr/libciomr.h>
9
#include <libpsio/psio.h>
10
#include <libint/libint.h>
16
namespace psi { namespace CINTS {
18
void read_scf_occ_evec(void)
20
int i, j, k, l, jj, ij;
23
int num_so,num_ao,num_mo,ndocc;
26
int shell_start,shell_end,shell_type;
27
double **SO_cmat, **SO_cmato;
30
/* Read All information necessary to do DFT procedure with Eigenvector */
32
psio_open(IOUnits.itapDSCF, PSIO_OPEN_OLD);
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));
43
psio_read_entry(IOUnits.itapDSCF, "Number of DOCC",
44
(char *) &(MOInfo.ndocc),sizeof(int));
51
num_ao = BasisSet.num_ao;
52
num_so = Symmetry.num_so;
53
num_mo = MOInfo.num_mo;
56
aocc = MOInfo.alpha_occ;
57
bocc = MOInfo.beta_occ;
62
if (UserOptions.reftype == uhf){
63
SO_cmat = block_matrix(num_so,aocc);
64
SO_cmato = block_matrix(num_so,bocc);
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);
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);
76
psio_close(IOUnits.itapDSCF, 1);
79
/*----------------------
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);
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);
91
Coccb = block_matrix(num_ao,bocc);
92
mmult(Symmetry.usotao,1,SO_cmato,0,Coccb,0,num_ao,num_so,bocc,0);
96
Cocc = block_matrix(num_ao,ndocc);
97
mmult(Symmetry.usotao,1,SO_cmat,0,Cocc,0,num_ao,num_so,ndocc,0);
101
/*--------------------------
102
Remove after done testing
103
--------------------------*/
105
/* fprintf(outfile,"\nCocca");
106
print_mat(Cocca,num_ao,aocc,outfile);
107
fprintf(outfile,"\nCoccb");
108
print_mat(Coccb,num_ao,bocc,outfile);*/