00001
00011 #ifndef HAMULTIPOLE_H
00012 #define HAMULTIPOLE_H
00013
00014 #include "halinalg.h"
00015 #include "hastl.h"
00016 #include "halocorb.h"
00017
00018 class HaQCMod;
00019
00020
00021 class HaOperT
00023 {
00024 public:
00025 HaOperT();
00026 ~HaOperT();
00027
00028 int FillMat(GauBasisSet* pbset,HaMat_double& t_mat);
00029
00030 };
00031
00032 class HaOperV
00034 {
00035 public:
00036 HaOperV();
00037 ~HaOperV();
00038
00039 int FillMat(GauBasisSet* pbset,HaMat_double& t_mat);
00040 };
00041
00042
00043 class HaOper1e
00045 {
00046 public:
00047 HaOper1e();
00048 HaOper1e(HaQCMod & qc_mod);
00049
00050 virtual ~HaOper1e();
00051
00052 virtual bool Recalc();
00053 virtual bool FillMat(HaMat_double & fmat, const int ic=1) const;
00054 virtual bool FillMatActv(HaMat_double & fmat, const int ic=1) const;
00055 virtual bool FillMatActvSM1(HaMat_double & fmat, const int ic=1) const;
00056
00057
00058 virtual bool PreMult_SM1();
00059 virtual bool Print_info(ostream & sout,const int level) const;
00060 virtual bool SetCurrComp(const int icomp);
00061 virtual bool SetFromMat(const HaMat_double & fmat, const int ic);
00062 virtual bool SetNumComp(const int NumComp);
00063 virtual operator HaMat_double();
00064
00065 virtual void SetDebugLevel(int new_debug_level);
00066
00067 protected:
00068 HaQCMod* ptr_qc_mod;
00069 vector<HaMat_double> data;
00070 int icomp;
00071
00072 int debug_level;
00073 };
00074
00075
00076 class HaOperR : public HaOper1e
00078 {
00079 public:
00080
00081 HaOperR(HaQCMod & qc_mod);
00082 virtual ~HaOperR(void);
00083
00084 virtual bool Recalc();
00085
00086 bool Print_info(ostream & sout,const int level) const;
00087
00088 protected:
00089
00090 };
00091
00092 class HaOperRDelt : public HaOper1e
00094 {
00095 public:
00096
00097 HaOperRDelt(HaQCMod & qc_mod);
00098 virtual ~HaOperRDelt(void);
00099
00100 virtual bool Recalc();
00101 virtual bool Print_info(ostream & sout,const int level) const;
00102
00103 bool RecalcFromHr();
00104 bool RecalcFromHr2();
00105 bool RecalcLondon();
00106 bool LondonDaltonCalc();
00107
00108
00109 void SetLondonAO(){ i_lond=1; }
00110 protected:
00111 int i_lond;
00112
00113 };
00114
00115
00116 class HaOperGrad : public HaOper1e
00118 {
00119 public:
00120 HaOperGrad(HaQCMod & qc_mod);
00121 virtual ~HaOperGrad(void);
00122
00123 virtual bool Recalc();
00124 virtual bool Print_info(ostream & sout,const int level) const;
00125
00126 protected:
00127
00128 };
00129
00130 class HaOperKinEner : public HaOper1e
00132 {
00133 public:
00134 HaOperKinEner(HaQCMod & qc_mod);
00135 virtual ~HaOperKinEner();
00136
00137 virtual bool Recalc();
00138 virtual bool Print_info(ostream & sout,const int level=1) const;
00139
00140 protected:
00141
00142 };
00143
00144
00145
00146 #endif