Main Page   Class Hierarchy   Compound List   File List   Compound Members   Related Pages  

effh.h

00001 //
00002 // effh.h --- definition of the effective fock builder classes
00003 //
00004 // Copyright (C) 1996 Limit Point Systems, Inc.
00005 //
00006 // Author: Curtis Janssen <cljanss@limitpt.com>
00007 // Maintainer: LPS
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 #ifndef _chemistry_qc_scf_effh_h
00029 #define _chemistry_qc_scf_effh_h
00030 
00031 #ifdef __GNUC__
00032 #pragma interface
00033 #endif
00034 
00035 #include <math/scmat/blkiter.h>
00036 #include <math/scmat/blocked.h>
00037 #include <chemistry/qc/scf/scf.h>
00038 
00039 class AccumEffectiveH: public BlockedSCElementOp2 {
00040   protected:
00041     SCF *scf_;
00042     double coef_[18];
00043 
00044     virtual void init() =0;
00045     
00046     // hindex is 0 for the closed and 1 for the open shell fock matrix
00047     // shelli and shellj are 0 for closed, 1 for open, and 2 for virtual
00048     int index(int hindex, int shelli, int shellj);
00049 
00050     // converts an occupation number to a shell number
00051     int shell(double);
00052 
00053     double& coef(int i, int j, int k) { return coef_[index(i,j,k)]; }
00054 
00055   public:
00056     AccumEffectiveH(SCF*);
00057     virtual ~AccumEffectiveH();
00058 
00059     virtual void process(SCMatrixBlockIter&,SCMatrixBlockIter&);
00060 };
00061 
00062 //  Guest & Saunders general form 
00063 //        C        O         V
00064 //    ----------
00065 //    |        |
00066 // C  |   fc   |
00067 //    |        |
00068 //    -------------------
00069 //    |        |        |
00070 // O  | 2fc-fo |   fc   |
00071 //    |        |        |
00072 //    ----------------------------
00073 //    |        |        |        |
00074 // V  |   fc   |   fo   |   fc   |
00075 //    |        |        |        |
00076 //    ----------------------------
00077 class GSGeneralEffH: public AccumEffectiveH {
00078   protected:
00079     void init();
00080     
00081   public:
00082     GSGeneralEffH(SCF*);
00083     ~GSGeneralEffH();
00084 };
00085 
00086 //  Guest & Saunders' form for high spin
00087 //        C        O         V
00088 //    ----------
00089 //    |        |
00090 // C  | 2fc-fo |
00091 //    |        |
00092 //    -------------------
00093 //    |        |        |
00094 // O  | 2fc-fo | 2fc-fo |
00095 //    |        |        |
00096 //    ----------------------------
00097 //    |        |        |        |
00098 // V  |   fc   |   fo   | 2fc-fo |
00099 //    |        |        |        |
00100 //    ----------------------------
00101 class GSHighSpinEffH: public AccumEffectiveH {
00102   protected:
00103     void init();
00104 
00105   public:
00106     GSHighSpinEffH(SCF*);
00107     ~GSHighSpinEffH();
00108 };
00109 
00110 //  test form
00111 //        C        O         V
00112 //    ----------
00113 //    |        |
00114 // C  |   fo   |
00115 //    |        |
00116 //    -------------------
00117 //    |        |        |
00118 // O  | 2fc-fo |   fo   |
00119 //    |        |        |
00120 //    ----------------------------
00121 //    |        |        |        |
00122 // V  |   fc   |   fo   |   fo   |
00123 //    |        |        |        |
00124 //    ----------------------------
00125 class TestEffH: public AccumEffectiveH {
00126   protected:
00127     void init();
00128 
00129   public:
00130     TestEffH(SCF*);
00131     ~TestEffH();
00132 };
00133 
00134 //  form for converged wavefunction
00135 //        C        O         V
00136 //    ----------
00137 //    |        |
00138 // C  |   fc   |
00139 //    |        |
00140 //    -------------------
00141 //    |        |        |
00142 // O  | 2fc-fo |   fo   |
00143 //    |        |        |
00144 //    ----------------------------
00145 //    |        |        |        |
00146 // V  |   fc   |   fo   |   fo   |
00147 //    |        |        |        |
00148 //    ----------------------------
00149 class PsiEffH: public AccumEffectiveH {
00150   protected:
00151     void init();
00152 
00153   public:
00154     PsiEffH(SCF*);
00155     ~PsiEffH();
00156 };
00157 
00158 #endif
00159 
00160 // Local Variables:
00161 // mode: c++
00162 // c-file-style: "ETS"
00163 // End:

Generated at Thu Oct 4 18:08:43 2001 for MPQC 2.0.0 using the documentation package Doxygen 1.2.5.