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