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
00050 void fill_occ(const RefDiagSCMatrix &evals,
00051 int nelectron, int *docc, int *socc);
00052
00053 void compute();
00054
00055 RefSymmSCMatrix h_eht_oso();
00056
00057 public:
00058 ExtendedHuckelWfn(StateIn&);
00059 ExtendedHuckelWfn(const Ref<KeyVal>&);
00060 ~ExtendedHuckelWfn();
00061
00062 void save_data_state(StateOut&);
00063
00064 double occupation(int irrep, int vectornum);
00065
00066 RefSCMatrix oso_eigenvectors();
00067 RefDiagSCMatrix eigenvalues();
00068 RefSymmSCMatrix density();
00069 int spin_polarized();
00070 int spin_unrestricted();
00071
00072 int value_implemented() const;
00073 };
00074
00075 }
00076
00077 #endif
00078
00079
00080
00081
00082