shellpairs.h

00001 //
00002 // shellpairs.h
00003 //
00004 // Copyright (C) 2001 Edward Valeev
00005 //
00006 // Author: Edward Valeev <edward.valeev@chemistry.gatech.edu>
00007 // Maintainer: EV
00008 //
00009 // This file is part of the SC Toolkit.
00010 //
00011 // The SC Toolkit is free software; you can redistribute it and/or modify
00012 // it under the terms of the GNU Library General Public License as published by
00013 // the Free Software Foundation; either version 2, or (at your option)
00014 // any later version.
00015 //
00016 // The SC Toolkit is distributed in the hope that it will be useful,
00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019 // GNU Library General Public License for more details.
00020 //
00021 // You should have received a copy of the GNU Library General Public License
00022 // along with the SC Toolkit; see the file COPYING.LIB.  If not, write to
00023 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
00024 //
00025 // The U.S. Government is granted a limited license as per AL 91-7.
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 // Local Variables:
00098 // mode: c++
00099 // c-file-style: "CLJ"
00100 // End:

Generated at Mon Dec 3 23:23:41 2007 for MPQC 2.3.1 using the documentation package Doxygen 1.5.2.