ergo
GetDensFromFock.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 
39 #ifndef GETDENSFROMFOCKHEADER
40 #define GETDENSFROMFOCKHEADER
41 
42 #include "realtype.h"
43 #include "matrix_typedefs.h"
44 #include "matrix_typedefs_chtml.h"
45 #include "transform.h"
46 #include "output.h"
47 
48 
49 
57 {
58 public:
59 
60  static const int UNDEF_VALUE; // for flags
61  static const int UNDEF_VALUE_UINT;
63  static const std::string UNDEF_VALUE_STRING;
64 
65  static const int SET;
66  static const int UNSET;
67 
68  void create_checkpoint(symmMatrix& Finput,
69  symmMatrix& F_ort_prev,
72  generalVector *eigVecLUMO,
73  generalVector *eigVecHOMO,
74  std::string IDstr
75  );
76 
77 
78  static void restore_from_checkpoint(GetDensFromFock& DensFromFock,
79  symmMatrix& Finput,
80  symmMatrix& F_ort_prev,
81  generalVector *eigVecLUMO,
82  generalVector *eigVecHOMO,
83  std::string checkpoint_path,
84  std::string IDstr,
85  int SCF_step
86  );
87 
88 
89  //constructor
91  {
92  do_output(LOG_CAT_INFO, LOG_AREA_DENSFROMF, "Create object from GetDensFromFock.");
93 
94  // set all variables and flags to UNDEF_VALUE
95 
103 
106 
114 
123 
126 
133 
136 
137  std::string stats_prefix = ""; // default value
138 
141 
142 
143  filenameFinput = "matrix_Finput";
144  filenameF_ort_prev = "matrix_F_ort_prev";
145  filenameeigVecLUMO = "vector_eigVecLUMO";
146  filenameeigVecHOMO = "vector_eigVecHOMO";
147  filenameOverlap = "matrix_Overlap";
148  filenameD_ort_prev = "matrix_D_ort_prev";
149  filenameinvCholFactor = "matrix_invCholFactor";
150  file_for_basic_types = "basic_types";
151  }
152 
155  int get_dens_from_fock(symmMatrix& Finput,
156  symmMatrix& resultDens,
157  symmMatrix& F_ort_prev,
160  generalVector *eigVecLUMO = 0,
161  generalVector *eigVecHOMO = 0
162  );
163 
164 
165 
169  symmMatrix& resultDens,
170  symmMatrix& F_ort_prev,
173  generalVector *eigVecLUMO = 0,
174  generalVector *eigVecHOMO = 0
175  );
176 
177 
181  inline void clean_eigs_intervals()
182  {
183  homoInterval_Finput = intervalType(-1e22, 1e22);
184  lumoInterval_Finput = intervalType(-1e22, 1e22);
185  homoInterval_Finput = intervalType(-1e22, 1e22);
186  lumoInterval_Finput = intervalType(-1e22, 1e22);
187 
188  homoInterval_F_ort_prev = intervalType(-1e22, 1e22);
189  lumoInterval_F_ort_prev = intervalType(-1e22, 1e22);
190  homoInterval_F_ort_prev = intervalType(-1e22, 1e22);
191  lumoInterval_F_ort_prev = intervalType(-1e22, 1e22);
192  }
193 
194  inline void set_SCF_step(int step )
195  { SCF_step = step; }
196  inline void unset_SCF_step()
198 
199 
202  inline void set_generate_figures(std::string str = "" )
203  {
204  assert(create_m_files != UNDEF_VALUE);
205  if (create_m_files == SET)
206  {
207  assert(SCF_step >= 0);
209  plot_puri_results_str = str;
210  }
211  }
212 
216  {
217  assert(create_m_files != UNDEF_VALUE);
220  }
221 
222  inline void set_general_params(const int n_,
223  mat::SizesAndBlocks const& matrixSizesAndBlocks_
224  )
225  {
226  assert(n_ >= 1);
227  n = n_;
228  matrixSizesAndBlocks = matrixSizesAndBlocks_;
229  }
230 
231  inline void set_cht_matrix_params(const int leavesSizeMax_,
232  const int blocksize_
233  )
234  {
235  assert(leavesSizeMax_ >= 1);
236  assert(blocksize_ >= 1);
237  leavesSizeMax = leavesSizeMax_;
238  blocksize = blocksize_;
239  }
240 
241  inline void get_SizesAndBlocks(mat::SizesAndBlocks& matrixSizesAndBlocks_
242  ) const
243  {
244  matrixSizesAndBlocks_ = matrixSizesAndBlocks;
245  }
246 
250  inline void set_truncationNormPurification(mat::normType const truncationNormPurification_ )
251  { truncationNormPurification = truncationNormPurification_; }
252 
256  inline void set_stopCriterionNormPurification(mat::normType const stopCriterionNormPurification_ )
257  { stopCriterionNormPurification = stopCriterionNormPurification_; }
258 
259 
261  { factor = 2; }
262 
264  { factor = 1; }
265 
266  inline void set_no_occupied_orbs(int noOfOccupiedOrbs_)
267  {
268  assert(noOfOccupiedOrbs_ >= 0);
269  noOfOccupiedOrbs = noOfOccupiedOrbs_;
270  }
271 
272  inline void clean_puri_stats()
273  { puri_stats.clear(); }
274 
275 
276  inline void set_invCholFactor(triangMatrix const& invCholFactor_,
277  ergo_real invCholFactor_euclnorm_)
278  {
279  invCholFactor = invCholFactor_;
280  assert(invCholFactor_euclnorm_ >= 0);
281  invCholFactor_euclnorm = invCholFactor_euclnorm_;
282  }
283 
284  inline void set_gap_expected_lower_bound(ergo_real gap_expected_lower_bound_)
285  {
286  assert(gap_expected_lower_bound_ >= 0);
287  gap_expected_lower_bound = gap_expected_lower_bound_;
288  }
289 
292  inline void set_purification_maxmul(ergo_real purification_maxmul_)
293  {
294  assert(purification_maxmul_ > 0);
295  maxMul = purification_maxmul_;
296  }
297 
298  /**** SET/UNSET SECTION *****/
299 
301  { return create_m_files == SET; }
303  { create_m_files = SET; }
305  { create_m_files = UNSET; }
306 
307 
308 
315 
316 
318  { return ignore_purification_failure == SET; }
323 
324 
331 
332  inline int get_use_diagonalization() const
333  { return use_diagonalization == SET; }
335  { use_diagonalization = SET; }
338 
339 
340  inline int get_use_purification() const
341  { return use_purification == SET; }
342  inline void set_use_purification()
343  { use_purification = SET; }
345  { use_purification = UNSET; }
346 
347 
348  inline int get_use_diag_on_error_guess() const
349  { return use_diag_on_error_guess == SET; }
354 
355 
356  inline int get_use_diag_on_error() const
357  { return use_diag_on_error == SET; }
358  inline void set_use_diag_on_error()
359  { use_diag_on_error = SET; }
361  { use_diag_on_error = UNSET; }
362 
363 
364  inline std::string get_stats_prefix() const
365  { return stats_prefix; }
366  inline void set_stats_prefix(std::string stats_prefix_)
367  { stats_prefix = stats_prefix_; }
368  inline void unset_stats_prefix()
369  { stats_prefix = ""; }
370 
371 
372  inline int get_use_acceleration() const
373  { return use_acceleration == SET; }
374  inline void set_use_acceleration()
375  { use_acceleration = SET; }
377  { use_acceleration = UNSET; }
378 
380  { return use_new_stopping_criterion == SET; }
385 
387  { return store_all_eigenvalues_to_file == SET; }
392 
399 
400 
401 
408 
409 
416 
417 
424 
425 
432 
433 
434  inline void set_diagonalization_params(ergo_real electronicTemperature_,
435  symmMatrix& overlapMatrix_)
436  {
437  set_overlapMatrix(overlapMatrix_);
438  assert(electronicTemperature_ >= 0);
439  electronicTemperature = electronicTemperature_;
440  }
441 
442  inline void set_overlapMatrix(symmMatrix& overlapMatrix_)
443  { overlapMatrix = overlapMatrix_; }
444 
445 
446  inline void set_purification_limits(ergo_real subspaceErrorLimit_,
447  ergo_real eigvalueErrorLimit_ = 0,
449  {
450  set_eigvalueErrorLimit(eigvalueErrorLimit_);
451  set_subspaceErrorLimit(subspaceErrorLimit_);
453  }
454 
457  inline void set_eigvalueErrorLimit(ergo_real eigvalueErrorLimit_)
458  { eigvalueErrorLimit = eigvalueErrorLimit_; }
459 
463  inline void set_subspaceErrorLimit(ergo_real subspaceErrorLimit_)
464  { subspaceErrorLimit = subspaceErrorLimit_; }
465 
471  inline void set_puri_eig_acc_factor_for_guess(ergo_real puri_eig_acc_factor_for_guess_)
472  { puri_eig_acc_factor_for_guess = puri_eig_acc_factor_for_guess_; }
473 
474 
475 
476  // get some results from the purification
477 
479  { return resultEntropyTerm; }
480 
481  inline void get_puri_stats(std::map<std::string, double>& puri_stats_) const
482  { puri_stats_ = puri_stats; }
483 
484 
485 
486  // Fprev is effective Hamiltonian matrix (=Finput)
487  // Intervals contain the homo and lumo eigenvalues of Fprev
488  inline void set_eigs_Fprev(intervalType& homoInterval_Finput_,
489  intervalType& lumoInterval_Finput_)
490  {
491  homoInterval_Finput = intervalType(homoInterval_Finput_);
492  lumoInterval_Finput = intervalType(lumoInterval_Finput_);
493  }
494 
495  inline void get_eigs_Fprev(intervalType& homoInterval_Finput_,
496  intervalType& lumoInterval_Finput_) const
497  {
498  homoInterval_Finput_ = intervalType(homoInterval_Finput);
499  lumoInterval_Finput_ = intervalType(lumoInterval_Finput);
500  }
501 
502  // F_ort_prev is matrix in orthogonal basis
503  // Intervals contain the homo and lumo eigenvalues of F_ort_prev
504  inline void set_eigs_F_ort_prev(intervalType& homoInterval_F_ort_prev_,
505  intervalType& lumoInterval_F_ort_prev_)
506  {
507  homoInterval_F_ort_prev = intervalType(homoInterval_F_ort_prev_);
508  lumoInterval_F_ort_prev = intervalType(lumoInterval_F_ort_prev_);
509  }
510 
511  inline void get_eigs_F_ort_prev(intervalType& homoInterval_F_ort_prev_,
512  intervalType& lumoInterval_F_ort_prev_) const
513  {
514  homoInterval_F_ort_prev_ = intervalType(homoInterval_F_ort_prev);
515  lumoInterval_F_ort_prev_ = intervalType(lumoInterval_F_ort_prev);
516  }
517 
519  { return eigvalueErrorLimit; }
521  { return subspaceErrorLimit; }
524 
525 
526 
527  inline void compute_eigenvectors(std::string eigenvectors_method_,
528  std::string eigenvectors_iterative_method_,
529  ergo_real eigensolver_accuracy_,
530  int eigensolver_maxiter_,
531  int use_prev_vector_as_initial_guess_,
532  int try_eigv_on_next_iteration_if_fail_)
533  {
534  assert(eigenvectors_method_ == "square" || eigenvectors_method_ == "projection");
535  eigenvectors_method = eigenvectors_method_;
536 
537  assert(eigenvectors_iterative_method_ == "power" || eigenvectors_iterative_method_ == "lanczos");
538  eigenvectors_iterative_method = eigenvectors_iterative_method_;
539 
540  eigensolver_accuracy = eigensolver_accuracy_;
541  eigensolver_maxiter = eigensolver_maxiter_;
542 
543  if (use_prev_vector_as_initial_guess_ > 0)
544  {
546  }
547  else
548  {
550  }
551  if (try_eigv_on_next_iteration_if_fail_ > 0)
552  {
554  }
555  else
556  {
558  }
559 
560  }
561 
562  inline void compute_eigenvectors_extra(int puri_compute_eigv_in_each_iteration_, int run_shift_and_square_method_on_F_)
563  {
564  if (puri_compute_eigv_in_each_iteration_ > 0)
565  {
567  }
568  else
569  {
571  }
572 
573  if (run_shift_and_square_method_on_F_ > 0)
574  {
576  }
577  else
578  {
580  }
581  }
582 
583 private:
584 
585  int SCF_step;
586 
587 
588 
613 
637  std::string stats_prefix;
642 
647  std::string eigenvectors_method;
655  int n;
674  int maxMul;
679  int blocksize;
683 
686 
688  std::map<std::string, double> puri_stats;
689 
690 
691  // Names of files needed for checkpoints
692  const char *filenameFinput;
693  const char *filenameF_ort_prev;
694  const char *filenameeigVecLUMO;
695  const char *filenameeigVecHOMO;
696  const char *filenameOverlap;
697  const char *filenameD_ort_prev;
699  const char *file_for_basic_types;
700 };
701 
702 
703 
704 #endif // GETDENSFROMFOCKHEADER
GetDensFromFock class containing parameters and functions for computing density matrix.
Definition: GetDensFromFock.h:56
void unset_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:313
void set_purification_create_m_files()
Definition: GetDensFromFock.h:302
std::string get_stats_prefix() const
Definition: GetDensFromFock.h:364
void unset_use_diagonalization()
Definition: GetDensFromFock.h:336
triangMatrix invCholFactor
Inverse Cholesky factor (written to file)
Definition: GetDensFromFock.h:666
ergo_real get_eigvalueErrorLimit() const
Definition: GetDensFromFock.h:518
int puri_compute_eigv_in_each_iteration
Compute eigenvectors in each iteration of the recursive expansion.
Definition: GetDensFromFock.h:620
void unset_generate_figures()
Do not plot figures from the recursive expansion.
Definition: GetDensFromFock.h:215
void set_use_acceleration()
Definition: GetDensFromFock.h:374
double ergo_real
Definition: realtype.h:69
void set_eigs_Fprev(intervalType &homoInterval_Finput_, intervalType &lumoInterval_Finput_)
Definition: GetDensFromFock.h:488
void do_unrestricted_calculations()
Definition: GetDensFromFock.h:263
const char * filenameFinput
Definition: GetDensFromFock.h:692
Functionality for writing output messages to a text file.
void unset_use_new_stopping_criterion()
Definition: GetDensFromFock.h:383
int use_rand_perturbation_for_alleigsint
Apply a random perturbation to (try to) improve the convergence speed of Lanczos calculation of extre...
Definition: GetDensFromFock.h:629
std::string plot_puri_results_str
Definition: GetDensFromFock.h:641
ergo_real eigvalueErrorLimit
Tolerated deviation of eigenvalues from 0 and 1 in the computed density matrix.
Definition: GetDensFromFock.h:603
void set_cht_matrix_params(const int leavesSizeMax_, const int blocksize_)
Definition: GetDensFromFock.h:231
std::string eigenvectors_method
Method for computing eigenvectors: square or projection.
Definition: GetDensFromFock.h:647
static void restore_from_checkpoint(GetDensFromFock &DensFromFock, symmMatrix &Finput, symmMatrix &F_ort_prev, generalVector *eigVecLUMO, generalVector *eigVecHOMO, std::string checkpoint_path, std::string IDstr, int SCF_step)
Function restores data from files in order to repeat recursive expansion in a desired SCF cycle...
Definition: GetDensFromFock.cc:1224
int get_dens_from_fock(symmMatrix &Finput, symmMatrix &resultDens, symmMatrix &F_ort_prev, generalVector *eigVecLUMO=0, generalVector *eigVecHOMO=0)
Choose which method to use for computing the density matrix from Fock matrix.
Definition: GetDensFromFock.cc:78
void unset_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:390
void unset_stats_prefix()
Definition: GetDensFromFock.h:368
const char * filenameinvCholFactor
Definition: GetDensFromFock.h:698
void set_purification_maxmul(ergo_real purification_maxmul_)
Set maximum allowed number of iterations in recursive expansion.
Definition: GetDensFromFock.h:292
void get_SizesAndBlocks(mat::SizesAndBlocks &matrixSizesAndBlocks_) const
Definition: GetDensFromFock.h:241
int maxMul
Maximum allowed number of matrix multiplications in the purification.
Definition: GetDensFromFock.h:674
const char * filenameD_ort_prev
Definition: GetDensFromFock.h:697
mat::Interval< ergo_real > intervalType
Definition: matrix_typedefs.h:78
std::map< std::string, double > puri_stats
Definition: GetDensFromFock.h:688
void set_no_occupied_orbs(int noOfOccupiedOrbs_)
Definition: GetDensFromFock.h:266
static const std::string UNDEF_VALUE_STRING
Definition: GetDensFromFock.h:63
void do_restricted_calculations()
Definition: GetDensFromFock.h:260
void set_truncationNormPurification(mat::normType const truncationNormPurification_)
Set truncation norm used in the recursive expansion.
Definition: GetDensFromFock.h:250
void set_overlapMatrix(symmMatrix &overlapMatrix_)
Definition: GetDensFromFock.h:442
static const ergo_real UNDEF_VALUE_REAL
Definition: GetDensFromFock.h:62
void unset_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:406
void set_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:412
void clean_eigs_intervals()
Set bounds for HOMO and LUMO eigenvalues to -/+ inf, thus remove any known bounds.
Definition: GetDensFromFock.h:181
intervalType homoInterval_Finput
Definition: GetDensFromFock.h:681
intervalType lumoInterval_Finput
Definition: GetDensFromFock.h:682
void unset_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:397
int get_purification_create_m_files() const
Definition: GetDensFromFock.h:300
int get_use_diag_on_error_guess() const
Definition: GetDensFromFock.h:348
void set_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:404
const char * file_for_basic_types
Definition: GetDensFromFock.h:699
void unset_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:414
int try_eigv_on_next_iteration_if_fail
For square method: if eigenvector is not computed in iteration i, try to compute it in iteration i+1...
Definition: GetDensFromFock.h:596
ergo_real get_subspaceErrorLimit() const
Definition: GetDensFromFock.h:520
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
void get_puri_stats(std::map< std::string, double > &puri_stats_) const
Definition: GetDensFromFock.h:481
void set_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:311
#define LOG_AREA_DENSFROMF
Definition: output.h:61
int get_use_rand_perturbation_for_alleigsint() const
Definition: GetDensFromFock.h:325
void set_use_purification()
Definition: GetDensFromFock.h:342
void set_gap_expected_lower_bound(ergo_real gap_expected_lower_bound_)
Definition: GetDensFromFock.h:284
const char * filenameOverlap
Definition: GetDensFromFock.h:696
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
void unset_use_diag_on_error()
Definition: GetDensFromFock.h:360
void set_use_diagonalization()
Definition: GetDensFromFock.h:334
mat::SizesAndBlocks matrixSizesAndBlocks
Information about HML matrix block sizes etc.
Definition: GetDensFromFock.h:676
void unset_use_diag_on_error_guess()
Definition: GetDensFromFock.h:352
void set_purification_limits(ergo_real subspaceErrorLimit_, ergo_real eigvalueErrorLimit_=0, ergo_real puri_eig_acc_factor_for_guess=0)
Definition: GetDensFromFock.h:446
ergo_real eigensolver_accuracy
The accuracy for the eigenvalue problem solver.
Definition: GetDensFromFock.h:651
void set_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:327
void set_use_new_stopping_criterion()
Definition: GetDensFromFock.h:381
void unset_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:422
int output_homo_and_lumo_eigenvectors
Compute homo and lumo eigenvectors and write them to the file.
Definition: GetDensFromFock.h:616
int get_use_diagonalization() const
Definition: GetDensFromFock.h:332
mat::normType truncationNormPurification
Norm to be used for truncation.
Definition: GetDensFromFock.h:670
void unset_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:430
void set_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:428
ergo_real electronicTemperature
Electronic temperature.
Definition: GetDensFromFock.h:599
void compute_eigenvectors(std::string eigenvectors_method_, std::string eigenvectors_iterative_method_, ergo_real eigensolver_accuracy_, int eigensolver_maxiter_, int use_prev_vector_as_initial_guess_, int try_eigv_on_next_iteration_if_fail_)
Definition: GetDensFromFock.h:527
int run_shift_and_square_method_on_F
(for comparison) Run shift_and_square method to get eigenvectors of the matrix F for various shifts...
Definition: GetDensFromFock.h:622
Definition of the main floating-point datatype used; the ergo_real type.
const char * filenameF_ort_prev
Definition: GetDensFromFock.h:693
#define LOG_CAT_INFO
Definition: output.h:49
MatrixTriangular< real, matri > triangMatrix
Definition: test_LanczosSeveralLargestEig.cc:70
ergo_real get_puri_eig_acc_factor_for_guess() const
Definition: GetDensFromFock.h:522
symmMatrix D_ort_prev
Density matrix from previous SCF cycle (written to file)
Definition: GetDensFromFock.h:664
int use_acceleration
Use acceleration in the purification.
Definition: GetDensFromFock.h:643
std::string stats_prefix
Prefix to be added to statistics files.
Definition: GetDensFromFock.h:637
int SCF_step
Definition: GetDensFromFock.h:585
void set_SCF_step(int step)
Definition: GetDensFromFock.h:194
const char * filenameeigVecHOMO
Definition: GetDensFromFock.h:695
int get_dens_from_fock_sparse(symmMatrix &F, symmMatrix &resultDens, symmMatrix &F_ort_prev, generalVector *eigVecLUMO=0, generalVector *eigVecHOMO=0)
Use recursive expansion for computing the density matrix from Fock matrix.
Definition: GetDensFromFock.cc:293
mat::normType stopCriterionNormPurification
Norm to be used for stopping criterion.
Definition: GetDensFromFock.h:672
int plot_puri_results
Plot results of the purification from this function call.
Definition: GetDensFromFock.h:639
void set_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:395
intervalType homoInterval_F_ort_prev
Definition: GetDensFromFock.h:684
void set_general_params(const int n_, mat::SizesAndBlocks const &matrixSizesAndBlocks_)
Definition: GetDensFromFock.h:222
int store_all_eigenvalues_to_file
Store eigenvalues to the file when doing diagonalization.
Definition: GetDensFromFock.h:593
int get_use_acceleration() const
Definition: GetDensFromFock.h:372
void set_purification_ignore_failure()
Definition: GetDensFromFock.h:319
int create_m_files
Flag to create m-files with information about the purification process.
Definition: GetDensFromFock.h:614
void clean_puri_stats()
Definition: GetDensFromFock.h:272
int get_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:410
static const int UNDEF_VALUE_UINT
Definition: GetDensFromFock.h:61
void unset_purification_create_m_files()
Definition: GetDensFromFock.h:304
ergo_real subspaceErrorLimit
Tolerated error in the occupied subspace as measured by the sinus of the largest canonical angle...
Definition: GetDensFromFock.h:605
int get_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:402
static const int UNDEF_VALUE
Definition: GetDensFromFock.h:60
void unset_use_purification()
Definition: GetDensFromFock.h:344
void set_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:420
ergo_real puri_eig_acc_factor_for_guess
With this number will be multiplied the tolerated deviation of eigenvalues from 0 and 1 in the comput...
Definition: GetDensFromFock.h:607
void set_use_diag_on_error()
Definition: GetDensFromFock.h:358
int n
System size.
Definition: GetDensFromFock.h:655
symmMatrix overlapMatrix
Overlap matrix (written to file)
Definition: GetDensFromFock.h:662
void set_use_diag_on_error_guess()
Definition: GetDensFromFock.h:350
ergo_real get_result_entropy_term() const
Definition: GetDensFromFock.h:478
void unset_purification_ignore_failure()
Definition: GetDensFromFock.h:321
int noOfOccupiedOrbs
Number of occupied orbitals.
Definition: GetDensFromFock.h:657
void get_eigs_Fprev(intervalType &homoInterval_Finput_, intervalType &lumoInterval_Finput_) const
Definition: GetDensFromFock.h:495
GetDensFromFock()
Definition: GetDensFromFock.h:90
void compute_eigenvectors_extra(int puri_compute_eigv_in_each_iteration_, int run_shift_and_square_method_on_F_)
Definition: GetDensFromFock.h:562
Header file with typedefs for matrix and vector types.
void unset_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:329
Header file with typedefs for matrix types, using either the hierarchical matrix library (HML) or the...
int use_diagonalization
Flag to turn on diagonalization.
Definition: GetDensFromFock.h:589
int get_purification_ignore_failure() const
Definition: GetDensFromFock.h:317
void set_puri_eig_acc_factor_for_guess(ergo_real puri_eig_acc_factor_for_guess_)
Set puri_eig_acc_factor_for_guess parameter.
Definition: GetDensFromFock.h:471
static const int UNSET
Definition: GetDensFromFock.h:66
int eigensolver_maxiter
Maximum number of iterations for the eigenvalue problem solver.
Definition: GetDensFromFock.h:653
int use_purification
Flag to turn on purification.
Definition: GetDensFromFock.h:591
void set_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:388
std::string eigenvectors_iterative_method
Iterative method for computing eigenvectors: power or lanczos.
Definition: GetDensFromFock.h:649
int get_use_new_stopping_criterion() const
Definition: GetDensFromFock.h:379
int get_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:426
void set_diagonalization_params(ergo_real electronicTemperature_, symmMatrix &overlapMatrix_)
Definition: GetDensFromFock.h:434
void unset_SCF_step()
Definition: GetDensFromFock.h:196
void get_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_) const
Definition: GetDensFromFock.h:511
int get_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:418
void set_eigvalueErrorLimit(ergo_real eigvalueErrorLimit_)
Set maximum allowed error in eigenvalues of the density matrix.
Definition: GetDensFromFock.h:457
intervalType lumoInterval_F_ort_prev
Definition: GetDensFromFock.h:685
ergo_real resultEntropyTerm
Definition: GetDensFromFock.h:687
int get_store_all_eigenvalues_to_file() const
Definition: GetDensFromFock.h:386
int get_output_homo_and_lumo_eigenvectors() const
Definition: GetDensFromFock.h:309
ergo_real invCholFactor_euclnorm
Euclidean norm of inverse Cholesky factor.
Definition: GetDensFromFock.h:668
static const int SET
Definition: GetDensFromFock.h:65
void set_stats_prefix(std::string stats_prefix_)
Definition: GetDensFromFock.h:366
void set_subspaceErrorLimit(ergo_real subspaceErrorLimit_)
Set maximum allowed error in invariant subspaces of the density matrix.
Definition: GetDensFromFock.h:463
int use_new_stopping_criterion
Use new parameterless stopping criterion.
Definition: GetDensFromFock.h:645
int get_use_diag_on_error() const
Definition: GetDensFromFock.h:356
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
int leavesSizeMax
Information about leavesSizeMax and blocksize for CHTMatrix.
Definition: GetDensFromFock.h:678
ergo_real gap_expected_lower_bound
Expected lower bound for the gap to be used in early iterations.
Definition: GetDensFromFock.h:601
void set_generate_figures(std::string str="")
Plot figures from the recursive expansion.
Definition: GetDensFromFock.h:202
int get_use_purification() const
Definition: GetDensFromFock.h:340
void create_checkpoint(symmMatrix &Finput, symmMatrix &F_ort_prev, generalVector *eigVecLUMO, generalVector *eigVecHOMO, std::string IDstr)
Function save all needed data to files in order to repeat recursive expansion in a desired SCF cycle ...
Definition: GetDensFromFock.cc:1027
void unset_use_acceleration()
Definition: GetDensFromFock.h:376
int use_prev_vector_as_initial_guess
Use eigenvector from the previous SCF cycle as an initial guess in this cycle.
Definition: GetDensFromFock.h:618
int use_diag_on_error
Flag to fall back on diagonalization if purification fails.
Definition: GetDensFromFock.h:611
int use_diag_on_error_guess
Definition: GetDensFromFock.h:612
const char * filenameeigVecLUMO
Definition: GetDensFromFock.h:694
int ignore_purification_failure
Continue even if purification fails to converge.
Definition: GetDensFromFock.h:627
void set_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_)
Definition: GetDensFromFock.h:504
int blocksize
Information about leavesSizeMax and blocksize for CHTMatrix.
Definition: GetDensFromFock.h:679
ergo_real factor
Factor to scale the resulting density matrix.
Definition: GetDensFromFock.h:659
void set_invCholFactor(triangMatrix const &invCholFactor_, ergo_real invCholFactor_euclnorm_)
Definition: GetDensFromFock.h:276
normType
Definition: matInclude.h:139
int get_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:393
void set_stopCriterionNormPurification(mat::normType const stopCriterionNormPurification_)
Set stopping criterion norm used in the recursive expansion.
Definition: GetDensFromFock.h:256
int save_permuted_F_matrix_in_bin
Save sparse matrix F into bin file in the current permutation of rows and columns.
Definition: GetDensFromFock.h:625