source: ThirdParty/mpqc_open/src/lib/chemistry/qc/scf/effh.h@ 860145

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 860145 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 4.0 KB
Line 
1//
2// effh.h --- definition of the effective fock builder classes
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _chemistry_qc_scf_effh_h
29#define _chemistry_qc_scf_effh_h
30
31#ifdef __GNUC__
32#pragma interface
33#endif
34
35#include <math/scmat/blkiter.h>
36#include <math/scmat/blocked.h>
37#include <chemistry/qc/scf/scf.h>
38
39namespace sc {
40
41class AccumEffectiveH: public BlockedSCElementOp2 {
42 protected:
43 SCF *scf_;
44 double coef_[18];
45
46 virtual void init() =0;
47
48 // hindex is 0 for the closed and 1 for the open shell fock matrix
49 // shelli and shellj are 0 for closed, 1 for open, and 2 for virtual
50 int index(int hindex, int shelli, int shellj);
51
52 // converts an occupation number to a shell number
53 int shell(double);
54
55 double& coef(int i, int j, int k) { return coef_[index(i,j,k)]; }
56
57 public:
58 AccumEffectiveH(SCF*);
59 virtual ~AccumEffectiveH();
60
61 virtual void process(SCMatrixBlockIter&,SCMatrixBlockIter&);
62};
63
64// Guest & Saunders general form
65// C O V
66// ----------
67// | |
68// C | fc |
69// | |
70// -------------------
71// | | |
72// O | 2fc-fo | fc |
73// | | |
74// ----------------------------
75// | | | |
76// V | fc | fo | fc |
77// | | | |
78// ----------------------------
79class GSGeneralEffH: public AccumEffectiveH {
80 protected:
81 void init();
82
83 public:
84 GSGeneralEffH(SCF*);
85 ~GSGeneralEffH();
86};
87
88// Guest & Saunders' form for high spin
89// C O V
90// ----------
91// | |
92// C | 2fc-fo |
93// | |
94// -------------------
95// | | |
96// O | 2fc-fo | 2fc-fo |
97// | | |
98// ----------------------------
99// | | | |
100// V | fc | fo | 2fc-fo |
101// | | | |
102// ----------------------------
103class GSHighSpinEffH: public AccumEffectiveH {
104 protected:
105 void init();
106
107 public:
108 GSHighSpinEffH(SCF*);
109 ~GSHighSpinEffH();
110};
111
112// test form
113// C O V
114// ----------
115// | |
116// C | fo |
117// | |
118// -------------------
119// | | |
120// O | 2fc-fo | fo |
121// | | |
122// ----------------------------
123// | | | |
124// V | fc | fo | fo |
125// | | | |
126// ----------------------------
127class TestEffH: public AccumEffectiveH {
128 protected:
129 void init();
130
131 public:
132 TestEffH(SCF*);
133 ~TestEffH();
134};
135
136// form for converged wavefunction
137// C O V
138// ----------
139// | |
140// C | fc |
141// | |
142// -------------------
143// | | |
144// O | 2fc-fo | fo |
145// | | |
146// ----------------------------
147// | | | |
148// V | fc | fo | fo |
149// | | | |
150// ----------------------------
151class PsiEffH: public AccumEffectiveH {
152 protected:
153 void init();
154
155 public:
156 PsiEffH(SCF*);
157 ~PsiEffH();
158};
159
160}
161
162#endif
163
164// Local Variables:
165// mode: c++
166// c-file-style: "ETS"
167// End:
Note: See TracBrowser for help on using the repository browser.