source: ThirdParty/mpqc_open/src/lib/chemistry/qc/scf/clscf.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: 3.6 KB
Line 
1//
2// clscf.h --- definition of the closed shell SCF class
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Edward Seidl <seidl@janed.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_clscf_h
29#define _chemistry_qc_scf_clscf_h
30
31#ifdef __GNUC__
32#pragma interface
33#endif
34
35#include <chemistry/qc/scf/scf.h>
36
37namespace sc {
38
39// //////////////////////////////////////////////////////////////////////////
40
41/** The CLSCF class is a base for classes implementing a self-consistent
42procedure for closed-shell molecules. */
43class CLSCF: public SCF {
44 protected:
45 Ref<PointGroup> most_recent_pg_;
46 int user_occupations_;
47 int tndocc_;
48 int nirrep_;
49 int *initial_ndocc_;
50 int *ndocc_;
51
52 ResultRefSymmSCMatrix cl_fock_;
53
54 public:
55 CLSCF(StateIn&);
56 /** The KeyVal constructor:
57 <dl>
58
59 <dt><tt>total_charge</tt><dd> This floating point number
60 gives the total charge
61 of the molecule. The default is 0.
62
63 <dt><tt>docc</tt><dd> This vector of integers gives the total
64 number of doubly occupied orbitals of each irreducible
65 representation. By default, this will be chosen to make the
66 molecule uncharged and the electrons will be distributed among the
67 irreducible representations according to the orbital energies.
68
69 </dl> */
70 CLSCF(const Ref<KeyVal>&);
71 ~CLSCF();
72
73 void save_data_state(StateOut&);
74
75 void print(std::ostream&o=ExEnv::out0()) const;
76
77 double occupation(int irrep, int vectornum);
78
79 int n_fock_matrices() const;
80 /** Returns closed-shell Fock matrix in AO basis (excluding XC contribution in KS DFT).
81 Use effective_fock() if you want the full KS Fock matrix.
82 Argument i must be 0.
83 */
84 RefSymmSCMatrix fock(int i);
85 /** Returns closed-shell Fock matrix in MO basis (including XC contribution for KS DFT). */
86 RefSymmSCMatrix effective_fock();
87
88 RefSymmSCMatrix density();
89
90 void symmetry_changed();
91
92 // returns 0
93 int spin_polarized();
94
95 protected:
96 // these are temporary data, so they should not be checkpointed
97 RefSymmSCMatrix cl_dens_;
98 RefSymmSCMatrix cl_dens_diff_;
99 RefSymmSCMatrix cl_gmat_;
100
101 void set_occupations(const RefDiagSCMatrix& evals);
102
103 // scf things
104 void init_vector();
105 void done_vector();
106 void reset_density();
107 double new_density();
108 double scf_energy();
109
110 Ref<SCExtrapData> extrap_data();
111
112 // gradient things
113 void init_gradient();
114 void done_gradient();
115
116 RefSymmSCMatrix lagrangian();
117 RefSymmSCMatrix gradient_density();
118
119 // hessian things
120 void init_hessian();
121 void done_hessian();
122
123 // The Hartree-Fock derivatives
124 void two_body_deriv_hf(double*grad,double exchange_fraction);
125};
126
127}
128
129#endif
130
131// Local Variables:
132// mode: c++
133// c-file-style: "ETS"
134// End:
Note: See TracBrowser for help on using the repository browser.