MPQC
2.3.1
Main Page
Related Pages
Classes
Files
File List
src
lib
chemistry
qc
wfn
wfn.h
1
//
2
// wfn.h
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_wfn_wfn_h
29
#define _chemistry_qc_wfn_wfn_h
30
31
#ifdef __GNUC__
32
#pragma interface
33
#endif
34
35
#include <iostream>
36
37
#include <util/misc/compute.h>
38
#include <math/scmat/matrix.h>
39
#include <math/scmat/vector3.h>
40
#include <chemistry/molecule/energy.h>
41
#include <chemistry/qc/basis/basis.h>
42
#include <chemistry/qc/basis/integral.h>
43
#include <chemistry/qc/basis/orthog.h>
44
45
namespace
sc {
46
48
class
Wavefunction
:
public
MolecularEnergy
{
49
50
RefSCDimension
aodim_;
51
RefSCDimension
sodim_;
52
Ref<SCMatrixKit>
basiskit_;
53
54
ResultRefSymmSCMatrix
overlap_;
55
ResultRefSymmSCMatrix
hcore_;
56
ResultRefSCMatrix
natural_orbitals_;
57
ResultRefDiagSCMatrix
natural_density_;
58
59
double
* bs_values;
60
double
* bsg_values;
61
62
Ref<GaussianBasisSet>
gbs_;
63
Ref<Integral>
integral_;
64
65
Ref<GaussianBasisSet>
atom_basis_;
66
double
* atom_basis_coef_;
67
68
double
lindep_tol_;
69
OverlapOrthog::OrthogMethod
orthog_method_;
70
Ref<OverlapOrthog>
orthog_;
71
72
int
print_nao_;
73
int
print_npa_;
74
75
void
init_orthog();
76
77
void
set_up_charge_types(std::vector<int> &q_pc,
78
std::vector<int> &q_cd,
79
std::vector<int> &n_pc,
80
std::vector<int> &n_cd);
81
82
double
nuc_rep_pc_pc(
const
std::vector<int>&,
const
std::vector<int>&,
bool
);
83
double
nuc_rep_pc_cd(
const
std::vector<int>&,
const
std::vector<int>&);
84
double
nuc_rep_cd_cd(
const
std::vector<int>&,
const
std::vector<int>&,
bool
);
85
void
scale_atom_basis_coef();
86
87
void
nuc_rep_grad_pc_pc(
double
**grad,
88
const
std::vector<int>&c1,
89
const
std::vector<int>&c2,
90
bool
uniq);
91
void
nuc_rep_grad_pc_cd(
double
**grad,
92
const
std::vector<int>&c1,
93
const
std::vector<int>&c2);
94
void
nuc_rep_grad_cd_cd(
double
**grad,
95
const
std::vector<int>&c1,
96
const
std::vector<int>&c2,
97
bool
uniq);
98
99
protected
:
100
101
int
debug_;
102
103
double
min_orthog_res();
104
double
max_orthog_res();
105
106
void
copy_orthog_info(
const
Ref<Wavefunction>
&);
107
108
public
:
109
Wavefunction
(
StateIn
&);
142
Wavefunction
(
const
Ref<KeyVal>
&);
143
virtual
~
Wavefunction
();
144
145
void
save_data_state
(
StateOut
&);
146
147
double
density
(
const
SCVector3
&);
148
double
density_gradient(
const
SCVector3
&,
double
*);
149
double
natural_orbital(
const
SCVector3
& r,
int
iorb);
150
double
natural_orbital_density(
const
SCVector3
& r,
151
int
orb,
double
* orbval = 0);
152
double
orbital(
const
SCVector3
& r,
int
iorb,
const
RefSCMatrix
& orbs);
153
154
double
orbital_density(
const
SCVector3
& r,
155
int
iorb,
156
const
RefSCMatrix
& orbs,
157
double
* orbval = 0);
158
160
double
charge
();
162
virtual
int
nelectron
() = 0;
163
165
virtual
RefSymmSCMatrix
density
() = 0;
167
virtual
RefSymmSCMatrix
ao_density
();
169
virtual
RefSCMatrix
natural_orbitals
();
171
virtual
RefDiagSCMatrix
natural_density
();
172
174
virtual
int
spin_polarized
() = 0;
175
177
virtual
RefSymmSCMatrix
alpha_density
();
179
virtual
RefSymmSCMatrix
beta_density
();
181
virtual
RefSymmSCMatrix
alpha_ao_density
();
183
virtual
RefSymmSCMatrix
beta_ao_density
();
184
186
virtual
RefSCMatrix
nao
(
double
*atom_charges=0);
187
189
virtual
RefSymmSCMatrix
overlap
();
191
virtual
RefSymmSCMatrix
core_hamiltonian
();
192
196
virtual
double
nuclear_repulsion_energy
();
201
void
nuclear_repulsion_energy_gradient
(
double
*g);
206
virtual
void
nuclear_repulsion_energy_gradient
(
double
**g);
207
209
RefSCDimension
ao_dimension
();
211
RefSCDimension
so_dimension
();
213
RefSCDimension
oso_dimension
();
215
Ref<SCMatrixKit>
basis_matrixkit
();
217
Ref<Molecule>
molecule
()
const
;
219
Ref<GaussianBasisSet>
basis
()
const
;
221
Ref<GaussianBasisSet>
atom_basis
()
const
;
224
const
double
*
atom_basis_coef
()
const
;
226
Ref<Integral>
integral
();
227
228
// override symmetry_changed from MolecularEnergy
229
void
symmetry_changed
();
230
237
RefSCMatrix
so_to_orthog_so
();
238
241
RefSCMatrix
so_to_orthog_so_inverse
();
242
244
OverlapOrthog::OrthogMethod
orthog_method
()
const
;
246
void
set_orthog_method
(
const
OverlapOrthog::OrthogMethod
&);
247
249
double
lindep_tol
()
const
;
251
void
set_lindep_tol
(
double
);
252
253
void
obsolete
();
254
255
void
print
(std::ostream& =
ExEnv::out0
())
const
;
256
};
257
258
}
259
260
#endif
261
262
// Local Variables:
263
// mode: c++
264
// c-file-style: "ETS"
265
// End:
Generated at Mon Dec 23 2013 21:14:29 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.3.1.