00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _chemistry_qc_wfn_eht_h
00029 #define _chemistry_qc_wfn_eht_h
00030
00031 #ifdef __GNUC__
00032 #pragma interface
00033 #endif
00034
00035 #include <chemistry/qc/wfn/obwfn.h>
00036
00037 namespace sc {
00038
00039
00040
00041 class ExtendedHuckelWfn: public OneBodyWavefunction {
00042 private:
00043 int nirrep_;
00044 int *docc_;
00045 int *socc_;
00046 int total_charge_;
00047 int user_occ_;
00048
00049 void fill_occ(const RefDiagSCMatrix &evals,
00050 int ndocc, int *docc, int nsocc = 0, int *socc = 0);
00051
00052 void compute();
00053
00054 RefSymmSCMatrix h_eht_oso();
00055
00056 public:
00057 ExtendedHuckelWfn(StateIn&);
00058 ExtendedHuckelWfn(const Ref<KeyVal>&);
00059 ~ExtendedHuckelWfn();
00060
00061 void save_data_state(StateOut&);
00062
00063 double occupation(int irrep, int vectornum);
00064
00065 RefSCMatrix oso_eigenvectors();
00066 RefDiagSCMatrix eigenvalues();
00067 RefSymmSCMatrix density();
00068 int spin_polarized();
00069 int spin_unrestricted();
00070
00071 int value_implemented() const;
00072 };
00073
00074 }
00075
00076 #endif
00077
00078
00079
00080
00081