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_cints_shellpairs_h
00033
#define _chemistry_qc_cints_shellpairs_h
00034
00035
#include <util/ref/ref.h>
00036
#include <chemistry/qc/basis/basis.h>
00037
#include <chemistry/qc/cints/primpairs.h>
00038
00039
namespace sc {
00040
00041
class ShellPairsCints;
00042
00044 class ShellPairCints :
virtual public SavableState {
00045
int prim1_offset_;
00046
int prim2_offset_;
00047
Ref<PrimPairsCints> prim_pairs_;
00048
00049
friend void init_shell_pair(
ShellPairsCints&);
00050
00051
public:
00052
ShellPairCints(
Ref<PrimPairsCints>&);
00053
ShellPairCints(
StateIn&);
00054 ~
ShellPairCints();
00055
00056
void save_data_state(
StateOut&);
00057
00058
void init(
const int,
00059
const int);
00060
00061 prim_pair_t* prim_pair(
int p1,
int p2)
const {
return prim_pairs_->prim_pair(p1+prim1_offset_,p2+prim2_offset_); };
00062
double prim_pair_P(
int p1,
int p2,
int xyz)
const {
return prim_pairs_->P(p1+prim1_offset_,p2+prim2_offset_,xyz); };
00063
double prim_pair_gamma(
int p1,
int p2)
const {
return prim_pairs_->gamma(p1+prim1_offset_,p2+prim2_offset_); };
00064
double prim_pair_ovlp(
int p1,
int p2)
const {
return prim_pairs_->ovlp(p1+prim1_offset_,p2+prim2_offset_); }
00065 };
00066
00067
00069 class ShellPairsCints:
virtual public SavableState {
00070
Ref<GaussianBasisSet> bs1_;
00071
Ref<GaussianBasisSet> bs2_;
00072
Ref<PrimPairsCints> prim_pairs_;
00073
Ref<ShellPairCints> shell_pair_;
00074
00075
public:
00076
ShellPairsCints(
const Ref<GaussianBasisSet>&,
00077
const Ref<GaussianBasisSet>&);
00078
ShellPairsCints(
const Ref<ShellPairsCints>&);
00079
ShellPairsCints(
const Ref<KeyVal>&);
00080
ShellPairsCints(
StateIn&);
00081
00082 ~
ShellPairsCints();
00083
00084
void save_data_state(
StateOut&);
00085
00086
friend void init_shell_pair(
ShellPairsCints&);
00087
ShellPairCints* shell_pair(
int si,
int sj)
const {
00088 shell_pair_->init(bs1_->shell_to_primitive(si), bs2_->shell_to_primitive(sj));
00089
return shell_pair_.
pointer();
00090 }
00091 };
00092
00093 }
00094
00095
#endif
00096
00097
00098
00099
00100