ergo
scf.h
Go to the documentation of this file.
1 /* Ergo, version 3.7, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2018 Elias Rudberg, Emanuel H. Rubensson, Pawel Salek,
4  * and Anastasia Kruchinina.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Primary academic reference:
20  * Ergo: An open-source program for linear-scaling electronic structure
21  * calculations,
22  * Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, and Anastasia
23  * Kruchinina,
24  * SoftwareX 7, 107 (2018),
25  * <http://dx.doi.org/10.1016/j.softx.2018.03.005>
26  *
27  * For further information about Ergo, see <http://www.ergoscf.org>.
28  */
29 
38 #ifndef SCF_HEADER
39 #define SCF_HEADER
40 
41 #include <string.h>
42 
43 #include "molecule.h"
44 #include "basisinfo.h"
45 #include "integrals_2el.h"
46 #include "matrix_typedefs.h"
47 
48 
49 namespace SCF {
50 
51 static const int DISTURB_ELEMENT_MAX_COUNT = 60;
52 
53 struct Options {
55  std::string method_and_basis_set;
66  std::string checkpoint_IDstr;
85  int use_dft;
149  std::string eigenvectors_method;
156 
159  method_and_basis_set("N/A"),
160  electric_field(0,0,0),
164  convergence_threshold(2e-7),
165  step_length_giveup(0.00005),
166  step_length_start(0.4),
170  checkpoint_IDstr(""),
178  cht_leavesSizeMax(1024),
179  cht_blocksize(64),
185  purification_maxmul(100),
189  use_dft(0),
196  skip_H_core(0),
199  force_restricted(0),
206  use_diis_always(0),
222  image_view_axis(),
235  do_acc_scan_J(0),
236  do_acc_scan_K(0),
237  do_acc_scan_Vxc(0),
239  scan_no_of_steps(16),
240  scan_start_thresh(1e-9),
252  eigenvectors_method("square"),
255  eigensolver_maxiter(200),
259  {
260  memset(disturbedElementIndexVector, 0,
262  }
263 };
264 
268 struct MatOptions {
270  std::vector<int> permutationHML;
271  std::vector<int> inversePermutationHML;
279  int threads;
283 
285  sparse_threshold(1e-8),
286  threshold_inch(1e-10),
291  threads(1),
292  parallelLevel(1),
293  /* FIXME: there should be a param to set no_of_buffers_per_allocator, for large calculations it needs to be larger, e.g. 10 x larger seems to give much better performance of matrix operations for large cases.
294  This is also connected to blocksize, maybe the best solution would be to have a param determining the number of MegaBytes per allocator or something like that. */
297  {};
299  }
302  void prepare(const BasisInfoStruct& basisInfo);
303 };
304 
307  {}
308 
309 };
310 
311 } /* end of SCF name space */
312 
313 
314 
315 #endif
int purification_with_acceleration
Definition: scf.h:69
static Treal getMachineEpsilon()
Definition: matInclude.h:147
int min_number_of_iterations
Definition: scf.h:109
int use_simple_dense_H_core
Definition: scf.h:94
int output_density_images_only
Definition: scf.h:114
int purification_create_m_files
Definition: scf.h:82
int max_no_of_diis_matrices
Definition: scf.h:100
ergo_real subspace_factor_dens
Definition: scf.h:77
double ergo_real
Definition: realtype.h:69
int do_acc_scan_Vxc
Definition: scf.h:134
int no_of_impr_req_for_diis
Definition: scf.h:102
int create_mtx_file_S
Definition: scf.h:139
int compute_core_density
Definition: scf.h:116
int create_mtx_file_H_core
Definition: scf.h:140
int store_all_eigenvalues_to_file
Definition: scf.h:124
Definition: scf.h:305
OutputOptions()
Definition: scf.h:306
ergo_real sparse_threshold_for_Z
Definition: scf.h:59
static const int DISTURB_ELEMENT_MAX_COUNT
Definition: scf.h:51
ergo_real error_maxabs_for_diis
Definition: scf.h:108
std::vector< int > inversePermutationHML
Definition: scf.h:271
ergo_real starting_guess_disturbance
Definition: scf.h:89
int do_f_thresh_verification
Definition: scf.h:104
int use_diis_always
Definition: scf.h:103
void prepare(const BasisInfoStruct &basisInfo)
after the parameters are called, this routine is to be called to figure out the basis set permutation...
Definition: scf.cc:53
int no_of_careful_first_scf_steps
Definition: scf.h:106
ergo_real gap_expected_lower_bound
Definition: scf.h:71
std::vector< int > permutationHML
Definition: scf.h:270
int do_acc_scan_K
Definition: scf.h:133
int use_new_stopping_criterion
Definition: scf.h:70
int no_of_threads_for_V
Definition: scf.h:79
int sparse_matrix_block_factor_2
Definition: scf.h:277
A representation of Vector or point in cartesian space.
Definition: molecule.h:60
int no_of_core_electrons
Definition: scf.h:117
int create_checkpoints
Definition: scf.h:65
int try_eigv_on_next_iteration_if_fail
Definition: scf.h:125
ergo_real box_size_for_V_and_T
Definition: scf.h:80
int write_diag_dens_to_file
Definition: scf.h:88
int run_shift_and_square_method_on_F
Definition: scf.h:127
ergo_real puri_eig_acc_factor_for_guess
Definition: scf.h:63
ergo_real scan_step_factor
Definition: scf.h:138
int sparse_matrix_block_factor_3
Definition: scf.h:276
Code for setting up basis functions starting from shells.
Class representing a molecule as a set of atoms with assiciated coordinates and charges of the atomic...
Definition: allocate.cc:39
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
ergo_real step_length_giveup
Definition: scf.h:61
int create_mtx_files_S_and_quit
Definition: scf.h:144
ergo_real purification_conv_limit
Definition: scf.h:64
int disturbedElementIndexVector[DISTURB_ELEMENT_MAX_COUNT]
Definition: scf.h:91
~MatOptions()
Definition: scf.h:298
mat::normType purification_truncation_norm
Definition: scf.h:72
int max_number_of_iterations
Definition: scf.h:110
int create_basis_func_coord_file
Definition: scf.h:146
int force_unrestricted
use an unrestricted det.
Definition: scf.h:97
ergo_real purification_subspace_err_limit
Definition: scf.h:68
int scan_do_invcholfactor_transf
Definition: scf.h:135
int save_final_potential
Definition: scf.h:120
ergo_real step_length_start
Definition: scf.h:62
int use_artificial_subspace_disturbances
Definition: scf.h:78
int write_overlap_matrix
Definition: scf.h:129
int create_mtx_files_dipole
Definition: scf.h:143
int save_full_matrices_for_matlab
Definition: scf.h:130
Vector3D electric_field
Definition: scf.h:56
int parallelLevel
Definition: scf.h:280
int puri_compute_eigv_in_each_iteration
Definition: scf.h:126
int use_diagonalization
Definition: scf.h:121
int output_expected_values_pos_operator
Definition: scf.h:112
std::string calculation_identifier
Definition: scf.h:54
int force_restricted
use a restricted determinant for open shell.
Definition: scf.h:96
int cht_leavesSizeMax
Definition: scf.h:74
ergo_real threshold_inch
Truncation threshold in INCH function.
Definition: scf.h:274
int create_mtx_files_F
Definition: scf.h:141
int purification_use_rand_perturbation_for_alleigsint
Definition: scf.h:84
ergo_real eigensolver_accuracy
Definition: scf.h:151
std::string eigenvectors_method
Definition: scf.h:149
int skip_H_core
Definition: scf.h:93
ergo_real sparse_threshold
threshold value for sparse matrix truncation.
Definition: scf.h:272
int eigensolver_maxiter
Definition: scf.h:152
Options()
Initializes all the fields to sane values.
Definition: scf.h:158
int verify_gradient_fixeddens
Definition: scf.h:155
int no_of_buffers_per_allocator
Definition: scf.h:281
int use_diag_on_error_guess
Definition: scf.h:123
int output_statistics_mfiles
Definition: scf.h:105
int starting_guess_spin_diff
Definition: scf.h:99
int sparse_matrix_block_size
Definition: scf.h:275
Definition: matInclude.h:139
int do_acc_scan_J
Definition: scf.h:132
int analyze_result_after_scf
Definition: scf.h:131
MatOptions()
Definition: scf.h:284
ergo_real purification_eigvalue_err_limit
Definition: scf.h:67
int output_mulliken_pop
Definition: scf.h:153
int output_density_at_every_step
Definition: scf.h:111
int break_on_energy_increase
Definition: scf.h:95
int use_allocator_manager
Definition: scf.h:282
int image_view_axis
Definition: scf.h:119
ergo_real scan_start_thresh
Definition: scf.h:137
Definition: basisinfo.h:112
int use_prev_vector_as_initial_guess
Definition: scf.h:147
std::string eigenvectors_iterative_method
Definition: scf.h:150
Definition: scf.h:53
int use_dft
Definition: scf.h:85
int sg_disturb_specific_elements
Definition: scf.h:90
int threads
Definition: scf.h:279
int scan_no_of_steps
Definition: scf.h:136
Header file with typedefs for matrix and vector types.
int save_permuted_F_matrix_in_bin
Definition: scf.h:128
ergo_real electronic_temperature
Definition: scf.h:57
int output_homo_and_lumo_eigenvectors
Definition: scf.h:148
int purification_maxmul
Definition: scf.h:81
std::string checkpoint_IDstr
Definition: scf.h:66
ergo_real output_density_images_boxwidth
Definition: scf.h:118
std::string method_and_basis_set
Definition: scf.h:55
int use_simple_starting_guess
Definition: scf.h:86
ergo_real shift_using_prev_density_matrix
Definition: scf.h:92
int max_restart_count
Definition: scf.h:101
int purification_ignore_failure
Definition: scf.h:83
ergo_real sparse_threshold_for_S
Definition: scf.h:58
int use_diag_on_error
Definition: scf.h:122
int create_2el_integral_m_file
Definition: scf.h:145
int write_guess_density_only
Definition: scf.h:115
mat::normType purification_stop_crit_norm
Definition: scf.h:73
int output_density_images
Definition: scf.h:113
int sparse_matrix_block_factor_1
Definition: scf.h:278
ergo_real subspace_factor_fock
Definition: scf.h:76
int cht_blocksize
Definition: scf.h:75
Definition: scf.h:49
An object respresenting the configuration of the matrix library.
Definition: scf.h:268
int use_diag_guess_from_file
Definition: scf.h:87
Parameters related to integral evaluation.
int spin_flip_atom_count
Definition: scf.h:98
int create_mtx_files_D
Definition: scf.h:142
int do_report_density_diff
Definition: scf.h:107
Treal template_blas_sqrt(Treal x)
mat::SizesAndBlocks size_block_info
Definition: scf.h:269
int compute_gradient_fixeddens
Definition: scf.h:154
normType
Definition: matInclude.h:139
ergo_real convergence_threshold
Definition: scf.h:60