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_vxbevalinfo_h
00033
#define _chemistry_qc_mbptr12_vxbevalinfo_h
00034
00035
#include <util/ref/ref.h>
00036
#include <math/scmat/abstract.h>
00037
#include <util/group/memory.h>
00038
#include <chemistry/molecule/energy.h>
00039
#include <chemistry/qc/scf/scf.h>
00040
00041
namespace sc {
00042
00043
class MBPT2_R12;
00044
00048 class R12IntEvalInfo :
virtual public SavableState {
00049
00050
public:
00051
00052
enum StoreMethod { mem_posix = 0, posix = 1, mem_mpi = 2, mpi = 3, mem_only = 4 };
00053
00054
private:
00055
00056
MolecularEnergy* mole_;
00057
Ref<SCF> ref_;
00058
Ref<Integral> integral_;
00059
Ref<GaussianBasisSet> bs_;
00060
Ref<GaussianBasisSet> bs_aux_;
00061
Ref<SCMatrixKit> matrixkit_;
00062
Ref<MessageGrp> msg_;
00063
Ref<MemoryGrp> mem_;
00064
Ref<ThreadGrp> thr_;
00065
00066
int nocc_;
00067
int nocc_act_;
00068
int nfzc_;
00069
int nfzv_;
00070
int noso_;
00071
00072 size_t memory_;
00073
bool dynamic_;
00074
int debug_;
00075 StoreMethod ints_method_;
00076
char* ints_file_;
00077
00078
RefSCMatrix scf_vec_;
00079
RefDiagSCMatrix evals_;
00080
RefDiagSCMatrix occs_;
00081
int* orbsym_;
00082
00083
void eigen_(
RefDiagSCMatrix& evals,
RefSCMatrix& scf_vec,
RefDiagSCMatrix& occs,
int*& orbsym);
00084
00085
public:
00086
R12IntEvalInfo(
StateIn&);
00087
R12IntEvalInfo(
MBPT2_R12*);
00088 ~
R12IntEvalInfo();
00089
00090
void save_data_state(
StateOut&);
00091
00092
void set_dynamic(
bool dynamic) { dynamic_ = dynamic; };
00093
void set_debug_level(
int debug) { debug_ = debug; };
00094
void set_ints_method(
const StoreMethod method) { ints_method_ = method; };
00095
void set_ints_file(
const char* filename) { ints_file_ = strdup(filename); };
00096
void set_memory(size_t nbytes) {
if (nbytes >= 0) memory_ = nbytes; };
00097
00098
MolecularEnergy* mole()
const {
return mole_; };
00099
Ref<SCF> ref()
const {
return ref_; };
00100
Ref<Integral> integral()
const {
return integral_; };
00101
Ref<GaussianBasisSet> basis()
const {
return bs_; };
00102
Ref<GaussianBasisSet> basis_aux()
const {
return bs_aux_; };
00103
Ref<SCMatrixKit> matrixkit()
const {
return matrixkit_; };
00104
Ref<MemoryGrp> mem()
const {
return mem_;};
00105
Ref<MessageGrp> msg()
const {
return msg_;};
00106
Ref<ThreadGrp> thr()
const {
return thr_;};
00107
00108
bool dynamic()
const {
return dynamic_; };
00109
int debug_level()
const {
return debug_; };
00110
const StoreMethod ints_method()
const {
return ints_method_; };
00111
char* ints_file()
const;
00112
const size_t memory()
const {
return memory_; };
00113
00114
const int nocc()
const {
return nocc_;};
00115
const int nocc_act()
const {
return nocc_act_;};
00116
const int noso()
const {
return noso_;};
00117
const int nfzc()
const {
return nfzc_;};
00118
const int nfzv()
const {
return nfzv_;};
00119
00120
RefSCMatrix scf_vec()
const {
return scf_vec_; };
00121
RefDiagSCMatrix evals()
const {
return evals_; };
00122
int *orbsym()
const {
return orbsym_; };
00123
00125
void compute_multipole_ints(
RefSymmSCMatrix& MX,
00126
RefSymmSCMatrix& MY,
00127
RefSymmSCMatrix& MZ,
00128
RefSymmSCMatrix& MXX,
00129
RefSymmSCMatrix& MYY,
00130
RefSymmSCMatrix& MZZ);
00131
00132 };
00133
00134 }
00135
00136
#endif
00137
00138
00139
00140
00141
00142
00143