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 #ifdef __GNUG__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _chemistry_qc_mbptr12_mp2r12energy_h
00033 #define _chemistry_qc_mbptr12_mp2r12energy_h
00034
00035 #include <util/ref/ref.h>
00036 #include <chemistry/qc/mbptr12/linearr12.h>
00037 #include <chemistry/qc/mbptr12/vxb_eval.h>
00038
00039 namespace sc {
00040
00043 class MP2R12Energy : virtual public SavableState {
00044
00045 Ref<R12IntEval> r12eval_;
00046 LinearR12::StandardApproximation stdapprox_;
00047 int debug_;
00048 bool evaluated_;
00049
00050 RefSCVector er12_aa_, er12_ab_, emp2r12_aa_, emp2r12_ab_;
00051
00052 double emp2tot_aa_() const;
00053 double emp2tot_ab_() const;
00054 double er12tot_aa_();
00055 double er12tot_ab_();
00056
00057 public:
00058
00059 MP2R12Energy(StateIn&);
00060 MP2R12Energy(Ref<R12IntEval>& r12eval, LinearR12::StandardApproximation stdapp, int debug);
00061 ~MP2R12Energy();
00062
00063 void save_data_state(StateOut&);
00064 void obsolete();
00065 void print(std::ostream&o=ExEnv::out0()) const;
00066 void print_pair_energies(bool spinadapted, std::ostream&so=ExEnv::out0());
00067
00068 Ref<R12IntEval> r12eval() const;
00069 LinearR12::StandardApproximation stdapp() const;
00070 void set_debug(int debug);
00071 int get_debug() const;
00072
00073 RefSCDimension dim_aa() const;
00074 RefSCDimension dim_ab() const;
00075 RefSCDimension dim_s() const;
00076 RefSCDimension dim_t() const;
00077
00078 void compute();
00079
00080 RefSCVector emp2_aa() const;
00081 RefSCVector emp2_ab() const;
00082 RefSCVector er12_aa() const;
00083 RefSCVector er12_ab() const;
00084 RefSCVector emp2r12_aa() const;
00085 RefSCVector emp2r12_ab() const;
00086
00088 double energy();
00089 };
00090
00091 }
00092
00093 #endif
00094
00095
00096
00097
00098
00099
00100