ergo
scf.h
Go to the documentation of this file.
1 /* Ergo, version 3.2, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2012 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Primary academic reference:
19  * Kohn−Sham Density Functional Theory Electronic Structure Calculations
20  * with Linearly Scaling Computational Time and Memory Usage,
21  * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek,
22  * J. Chem. Theory Comput. 7, 340 (2011),
23  * <http://dx.doi.org/10.1021/ct100611z>
24  *
25  * For further information about Ergo, see <http://www.ergoscf.org>.
26  */
27 
28 #ifndef SCFHEADER
29 #define SCFHEADER
30 
31 #include <string.h>
32 
33 #include "molecule.h"
34 #include "basisinfo.h"
35 #include "integrals_2el.h"
36 #include "matrix_typedefs.h"
37 
38 
39 namespace SCF {
40 
41 static const int DISTURB_ELEMENT_MAX_COUNT = 60;
42 
43 struct Options {
45  std::string method_and_basis_set;
67  int use_dft;
129  method_and_basis_set("N/A"),
130  electric_field(0,0,0),
134  convergence_threshold(2e-7),
135  step_length_giveup(0.00005),
136  step_length_start(0.4),
147  purification_maxmul(100),
151  use_dft(0),
158  skip_H_core(0),
161  force_restricted(0),
168  use_diis_always(0),
188  image_view_axis(),
196  do_acc_scan_J(0),
197  do_acc_scan_K(0),
198  do_acc_scan_Vxc(0),
200  scan_no_of_steps(16),
201  scan_start_thresh(1e-9),
202  scan_step_factor(sqrt((ergo_real)10)),
210  {
211  memset(disturbedElementIndexVector, 0,
213  }
214 };
215 
219 struct MatOptions {
221  std::vector<int> permutationHML;
222  std::vector<int> inversePermutationHML;
230  int threads;
232 
234  sparse_threshold(1e-8),
235  threshold_inch(0),
240  threads(1),
241  parallelLevel(1)
242  {};
244  }
247  void prepare(const BasisInfoStruct& basisInfo);
248 };
249 
252  {}
253 
254 };
255 
256 } /* end of SCF name space */
257 
258 
259 
260 #endif