ergo
GetDensFromFock.h
Go to the documentation of this file.
1/* Ergo, version 3.8.2, a program for linear scaling electronic structure
2 * calculations.
3 * Copyright (C) 2023 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"
45#include "transform.h"
46#include "output.h"
47
48
49
57{
58public:
59
60 static const int UNDEF_VALUE_UINT;
61 static const std::string NA_STRING;
62
63 static const bool BOOL_TRUE;
64 static const bool BOOL_FALSE;
65
66 void create_checkpoint(symmMatrix& Finput,
67 symmMatrix& F_ort_prev,
70 generalVector *eigVecLUMO,
71 generalVector *eigVecHOMO,
72 std::string IDstr
73 );
74
75
76 static void restore_from_checkpoint(GetDensFromFock& DensFromFock,
77 symmMatrix& Finput,
78 symmMatrix& F_ort_prev,
79 generalVector *eigVecLUMO,
80 generalVector *eigVecHOMO,
81 std::string checkpoint_path,
82 std::string IDstr,
83 int SCF_step
84 );
85
86
87 //constructor
89 {
90 do_output(LOG_CAT_INFO, LOG_AREA_DENSFROMF, "Create object from GetDensFromFock.");
91
92 // set all variables and flags to default values
97 maxMul = 0;
100
103
111
124
127
134
137
138 std::string stats_prefix = ""; // default value
139
140 truncationNormPurification = mat::euclNorm; // default value
142
145
146
147 filenameFinput = "matrix_Finput";
148 filenameF_ort_prev = "matrix_F_ort_prev";
149 filenameeigVecLUMO = "vector_eigVecLUMO";
150 filenameeigVecHOMO = "vector_eigVecHOMO";
151 filenameOverlap = "matrix_Overlap";
152 filenameD_ort_prev = "matrix_D_ort_prev";
153 filenameinvCholFactor = "matrix_invCholFactor";
154 file_for_basic_types = "basic_types";
155 }
156
159 int get_dens_from_fock(symmMatrix& Finput,
160 symmMatrix& resultDens,
161 symmMatrix& F_ort_prev
164 );
165
166
167
171 symmMatrix& F,
172 symmMatrix& resultDens,
173 symmMatrix& F_ort_prev
177 );
178
179
181 std::vector<generalVector> &eigVecUNOCCref,
182 std::vector<generalVector> &eigVecOCCref,
183 std::vector<ergo_real> &eigValUNOCCref,
184 std::vector<ergo_real> &eigValOCCref
185 )
186 {
187 eigVecUNOCCref = eigVecUNOCC;
188 eigVecOCCref = eigVecOCC;
189 eigValOCCref = eigValOCC;
190 eigValUNOCCref = eigValUNOCC;
191 }
192
197 {
198 homoInterval_Finput = intervalType(-1e22, 1e22);
199 lumoInterval_Finput = intervalType(-1e22, 1e22);
200 homoInterval_Finput = intervalType(-1e22, 1e22);
201 lumoInterval_Finput = intervalType(-1e22, 1e22);
202
207 }
208
209
210
211
212 inline void set_SCF_step(int step )
213 { SCF_step = step; }
214 inline void unset_SCF_step()
216
217
220 inline void set_generate_figures(std::string str = "" )
221 {
222 if (create_m_files)
223 {
224 assert(SCF_step >= 0);
227 }
228 }
229
233 {
236 }
237
238 inline void set_general_params(const int n_,
239 mat::SizesAndBlocks const& matrixSizesAndBlocks_
240 )
241 {
242 assert(n_ >= 1);
243 n = n_;
244 matrixSizesAndBlocks = matrixSizesAndBlocks_;
245 }
246
247 inline void set_cht_matrix_params(const int leavesSizeMax_,
248 const int blocksize_
249 )
250 {
251 assert(leavesSizeMax_ >= 1);
252 assert(blocksize_ >= 1);
253 leavesSizeMax = leavesSizeMax_;
254 blocksize = blocksize_;
255 }
256
257 inline void get_SizesAndBlocks(mat::SizesAndBlocks& matrixSizesAndBlocks_
258 ) const
259 {
260 matrixSizesAndBlocks_ = matrixSizesAndBlocks;
261 }
262
266 inline void set_truncationNormPurification(mat::normType const truncationNormPurification_ )
267 { truncationNormPurification = truncationNormPurification_; }
268
272 inline void set_stopCriterionNormPurification(mat::normType const stopCriterionNormPurification_ )
273 { stopCriterionNormPurification = stopCriterionNormPurification_; }
274
275
277 { factor = 2; }
278
280 { factor = 1; }
281
282 inline void set_no_occupied_orbs(int noOfOccupiedOrbs_)
283 {
284 assert(noOfOccupiedOrbs_ >= 0);
285 noOfOccupiedOrbs = noOfOccupiedOrbs_;
286 }
287
288 inline void clean_puri_stats()
289 { puri_stats.clear(); }
290
291
292 inline void set_invCholFactor(triangMatrix const& invCholFactor_,
293 ergo_real invCholFactor_euclnorm_)
294 {
295 invCholFactor = invCholFactor_;
296 assert(invCholFactor_euclnorm_ >= 0);
297 invCholFactor_euclnorm = invCholFactor_euclnorm_;
298 }
299
300 inline void set_gap_expected_lower_bound(ergo_real gap_expected_lower_bound_)
301 {
302 assert(gap_expected_lower_bound_ >= 0);
303 gap_expected_lower_bound = gap_expected_lower_bound_;
304 }
305
308 inline void set_purification_maxmul(ergo_real purification_maxmul_)
309 {
310 assert(purification_maxmul_ > 0);
311 maxMul = purification_maxmul_;
312 }
313
314 inline void set_number_of_eigenvectors_to_compute(int occ, int unocc)
315 {
318 }
319
320 inline void set_projection_method_params(int go_back, int step)
321 {
324 }
325
326 /**** SET/UNSET SECTION *****/
327
329 { return create_m_files == BOOL_TRUE; }
334
335
336
343
344
351
352
359
360 inline int get_use_diagonalization() const
361 { return use_diagonalization == BOOL_TRUE; }
366
367
368 inline int get_use_purification() const
369 { return use_purification == BOOL_TRUE; }
374
375
382
383
384 inline int get_use_diag_on_error() const
385 { return use_diag_on_error == BOOL_TRUE; }
390
391
392 inline std::string get_stats_prefix() const
393 { return stats_prefix; }
394 inline void set_stats_prefix(std::string stats_prefix_)
395 { stats_prefix = stats_prefix_; }
396 inline void unset_stats_prefix()
397 { stats_prefix = ""; }
398
399
400 inline int get_use_acceleration() const
401 { return use_acceleration == BOOL_TRUE; }
406
413
420
427
428
429
436
437
444
445
452
453
460
461
462 inline void set_diagonalization_params(ergo_real electronicTemperature_,
463 symmMatrix& overlapMatrix_)
464 {
465 set_overlapMatrix(overlapMatrix_);
466 assert(electronicTemperature_ >= 0);
467 electronicTemperature = electronicTemperature_;
468 }
469
470 inline void set_overlapMatrix(symmMatrix& overlapMatrix_)
471 { overlapMatrix = overlapMatrix_; }
472
473
474 inline void set_purification_limits(ergo_real subspaceErrorLimit_,
475 ergo_real eigvalueErrorLimit_ = 0,
477 {
478 set_eigvalueErrorLimit(eigvalueErrorLimit_);
479 set_subspaceErrorLimit(subspaceErrorLimit_);
481 }
482
485 inline void set_eigvalueErrorLimit(ergo_real eigvalueErrorLimit_)
486 { eigvalueErrorLimit = eigvalueErrorLimit_; }
487
491 inline void set_subspaceErrorLimit(ergo_real subspaceErrorLimit_)
492 { subspaceErrorLimit = subspaceErrorLimit_; }
493
499 inline void set_puri_eig_acc_factor_for_guess(ergo_real puri_eig_acc_factor_for_guess_)
500 { puri_eig_acc_factor_for_guess = puri_eig_acc_factor_for_guess_; }
501
502
503
504 // get some results from the purification
505
507 { return resultEntropyTerm; }
508
509 inline void get_puri_stats(std::map<std::string, double>& puri_stats_) const
510 { puri_stats_ = puri_stats; }
511
512
513
514 // Fprev is effective Hamiltonian matrix (=Finput)
515 // Intervals contain the homo and lumo eigenvalues of Fprev
516 inline void set_eigs_Fprev(intervalType& homoInterval_Finput_,
517 intervalType& lumoInterval_Finput_)
518 {
519 homoInterval_Finput = intervalType(homoInterval_Finput_);
520 lumoInterval_Finput = intervalType(lumoInterval_Finput_);
521 }
522
523 inline void get_eigs_Fprev(intervalType& homoInterval_Finput_,
524 intervalType& lumoInterval_Finput_) const
525 {
526 homoInterval_Finput_ = intervalType(homoInterval_Finput);
527 lumoInterval_Finput_ = intervalType(lumoInterval_Finput);
528 }
529
530 // F_ort_prev is matrix in orthogonal basis
531 // Intervals contain the homo and lumo eigenvalues of F_ort_prev
532 inline void set_eigs_F_ort_prev(intervalType& homoInterval_F_ort_prev_,
533 intervalType& lumoInterval_F_ort_prev_)
534 {
535 homoInterval_F_ort_prev = intervalType(homoInterval_F_ort_prev_);
536 lumoInterval_F_ort_prev = intervalType(lumoInterval_F_ort_prev_);
537 }
538
539 inline void get_eigs_F_ort_prev(intervalType& homoInterval_F_ort_prev_,
540 intervalType& lumoInterval_F_ort_prev_) const
541 {
542 homoInterval_F_ort_prev_ = intervalType(homoInterval_F_ort_prev);
543 lumoInterval_F_ort_prev_ = intervalType(lumoInterval_F_ort_prev);
544 }
545
547 { return eigvalueErrorLimit; }
549 { return subspaceErrorLimit; }
552
553 inline void compute_eigenvectors(std::string eigenvectors_method_,
554 std::string eigenvectors_iterative_method_,
555 ergo_real eigensolver_accuracy_,
556 int eigensolver_maxiter_,
557 int use_prev_vector_as_initial_guess_,
558 int try_eigv_on_next_iteration_if_fail_)
559 {
560 assert(eigenvectors_method_ == "square" || eigenvectors_method_ == "projection");
561 eigenvectors_method = eigenvectors_method_;
562
563 assert(eigenvectors_iterative_method_ == "power" || eigenvectors_iterative_method_ == "lanczos");
564 eigenvectors_iterative_method = eigenvectors_iterative_method_;
565
566 eigensolver_accuracy = eigensolver_accuracy_;
567 eigensolver_maxiter = eigensolver_maxiter_;
568
569 if (use_prev_vector_as_initial_guess_ > 0)
570 {
572 }
573 else
574 {
576 }
577 if (try_eigv_on_next_iteration_if_fail_ > 0)
578 {
580 }
581 else
582 {
584 }
585
586 }
587
588 inline void compute_eigenvectors_extra(int puri_compute_eigv_in_each_iteration_, int run_shift_and_square_method_on_F_)
589 {
590 if (puri_compute_eigv_in_each_iteration_ > 0)
591 {
593 }
594 else
595 {
597 }
598
599 if (run_shift_and_square_method_on_F_ > 0)
600 {
602 }
603 else
604 {
606 }
607 }
608
609private:
610
612
613
614
639
671 std::string stats_prefix;
676
689 int n;
708 int maxMul;
717
720
722 std::map<std::string, double> puri_stats;
723
724 std::vector<generalVector> eigVecOCC;
725 std::vector<generalVector> eigVecUNOCC;
726 std::vector<ergo_real> eigValOCC;
727 std::vector<ergo_real> eigValUNOCC;
728
729 // Names of files needed for checkpoints
730 const char *filenameFinput;
734 const char *filenameOverlap;
738};
739
740
741
742#endif // GETDENSFROMFOCKHEADER
GetDensFromFock class containing parameters and functions for computing density matrix.
Definition: GetDensFromFock.h:57
static const bool BOOL_FALSE
Definition: GetDensFromFock.h:64
void set_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:456
int get_use_diagonalization() const
Definition: GetDensFromFock.h:360
std::vector< generalVector > eigVecOCC
Definition: GetDensFromFock.h:724
ergo_real eigensolver_accuracy
The accuracy for the eigenvalue problem solver.
Definition: GetDensFromFock.h:685
int jump_over_X_iter_proj_method
Parameter used in the projection method for computing eigenvectors.
Definition: GetDensFromFock.h:650
void get_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_) const
Definition: GetDensFromFock.h:539
int get_output_homo_and_lumo_eigenvectors() const
Definition: GetDensFromFock.h:337
void set_stopCriterionNormPurification(mat::normType const stopCriterionNormPurification_)
Set stopping criterion norm used in the recursive expansion.
Definition: GetDensFromFock.h:272
int number_of_occupied_eigenvectors
Number of occupied eigenvectors to compute.
Definition: GetDensFromFock.h:644
void set_subspaceErrorLimit(ergo_real subspaceErrorLimit_)
Set maximum allowed error in invariant subspaces of the density matrix.
Definition: GetDensFromFock.h:491
int get_use_diag_on_error() const
Definition: GetDensFromFock.h:384
const char * filenameeigVecHOMO
Definition: GetDensFromFock.h:733
const char * filenameF_ort_prev
Definition: GetDensFromFock.h:731
mat::SizesAndBlocks matrixSizesAndBlocks
Information about HML matrix block sizes etc.
Definition: GetDensFromFock.h:710
int get_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:430
void set_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:339
const char * filenameeigVecLUMO
Definition: GetDensFromFock.h:732
void set_purification_create_m_files()
Definition: GetDensFromFock.h:330
int n
System size.
Definition: GetDensFromFock.h:689
void set_cht_matrix_params(const int leavesSizeMax_, const int blocksize_)
Definition: GetDensFromFock.h:247
ergo_real subspaceErrorLimit
Tolerated error in the occupied subspace as measured by the sinus of the largest canonical angle.
Definition: GetDensFromFock.h:631
void get_eigs_Fprev(intervalType &homoInterval_Finput_, intervalType &lumoInterval_Finput_) const
Definition: GetDensFromFock.h:523
void set_purification_maxmul(ergo_real purification_maxmul_)
Set maximum allowed number of iterations in recursive expansion.
Definition: GetDensFromFock.h:308
int get_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:421
void set_purification_ignore_failure()
Definition: GetDensFromFock.h:347
ergo_real get_eigvalueErrorLimit() const
Definition: GetDensFromFock.h:546
bool use_rand_perturbation_for_alleigsint
Apply a random perturbation to (try to) improve the convergence speed of Lanczos calculation of extre...
Definition: GetDensFromFock.h:663
void set_use_diagonalization()
Definition: GetDensFromFock.h:362
void unset_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:357
bool use_prev_vector_as_initial_guess
Use eigenvector from the previous SCF cycle as an initial guess in this cycle.
Definition: GetDensFromFock.h:652
void unset_use_diagonalization()
Definition: GetDensFromFock.h:364
ergo_real resultEntropyTerm
Definition: GetDensFromFock.h:721
std::vector< generalVector > eigVecUNOCC
Definition: GetDensFromFock.h:725
void set_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:416
int number_of_unoccupied_eigenvectors
Number of unoccupied eigenvectors to compute.
Definition: GetDensFromFock.h:646
static const bool BOOL_TRUE
Definition: GetDensFromFock.h:63
std::map< std::string, double > puri_stats
Definition: GetDensFromFock.h:722
void set_generate_figures(std::string str="")
Plot figures from the recursive expansion.
Definition: GetDensFromFock.h:220
std::vector< ergo_real > eigValOCC
Definition: GetDensFromFock.h:726
void set_no_occupied_orbs(int noOfOccupiedOrbs_)
Definition: GetDensFromFock.h:282
int eigensolver_maxiter
Maximum number of iterations for the eigenvalue problem solver.
Definition: GetDensFromFock.h:687
bool store_all_eigenvalues_to_file
Store eigenvalues to the file when doing diagonalization.
Definition: GetDensFromFock.h:619
bool use_diag_on_error
Flag to fall back on diagonalization if purification fails.
Definition: GetDensFromFock.h:637
int get_use_purification() const
Definition: GetDensFromFock.h:368
intervalType lumoInterval_F_ort_prev
Definition: GetDensFromFock.h:719
std::string stats_prefix
Prefix to be added to statistics files.
Definition: GetDensFromFock.h:671
void unset_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:450
void set_use_new_stopping_criterion()
Definition: GetDensFromFock.h:409
const char * filenameD_ort_prev
Definition: GetDensFromFock.h:735
void compute_eigenvectors_extra(int puri_compute_eigv_in_each_iteration_, int run_shift_and_square_method_on_F_)
Definition: GetDensFromFock.h:588
bool plot_puri_results
Plot results of the purification from this function call.
Definition: GetDensFromFock.h:673
std::string eigenvectors_iterative_method
Iterative method for computing eigenvectors: power or lanczos.
Definition: GetDensFromFock.h:683
void unset_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:434
void do_restricted_calculations()
Definition: GetDensFromFock.h:276
void unset_use_acceleration()
Definition: GetDensFromFock.h:404
GetDensFromFock()
Definition: GetDensFromFock.h:88
void get_computed_eigenpairs(std::vector< generalVector > &eigVecUNOCCref, std::vector< generalVector > &eigVecOCCref, std::vector< ergo_real > &eigValUNOCCref, std::vector< ergo_real > &eigValOCCref)
Definition: GetDensFromFock.h:180
void unset_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:458
void set_stats_prefix(std::string stats_prefix_)
Definition: GetDensFromFock.h:394
void unset_use_diag_on_error()
Definition: GetDensFromFock.h:388
static const std::string NA_STRING
Definition: GetDensFromFock.h:61
void set_invCholFactor(triangMatrix const &invCholFactor_, ergo_real invCholFactor_euclnorm_)
Definition: GetDensFromFock.h:292
bool use_diag_on_error_guess
Definition: GetDensFromFock.h:638
int get_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:438
void set_use_diag_on_error()
Definition: GetDensFromFock.h:386
void set_eigvalueErrorLimit(ergo_real eigvalueErrorLimit_)
Set maximum allowed error in eigenvalues of the density matrix.
Definition: GetDensFromFock.h:485
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:553
symmMatrix overlapMatrix
Overlap matrix (written to file)
Definition: GetDensFromFock.h:696
void set_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:355
bool 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:656
int leavesSizeMax
Information about leavesSizeMax and blocksize for CHTMatrix.
Definition: GetDensFromFock.h:712
void do_unrestricted_calculations()
Definition: GetDensFromFock.h:279
const char * filenameinvCholFactor
Definition: GetDensFromFock.h:736
void clean_eigs_intervals()
Set bounds for HOMO and LUMO eigenvalues to -/+ inf, thus remove any known bounds.
Definition: GetDensFromFock.h:196
bool use_new_stopping_criterion
Use new parameterless stopping criterion.
Definition: GetDensFromFock.h:679
void set_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_)
Definition: GetDensFromFock.h:532
ergo_real gap_expected_lower_bound
Expected lower bound for the gap to be used in early iterations.
Definition: GetDensFromFock.h:627
bool puri_compute_eigv_in_each_iteration
Compute eigenvectors in each iteration of the recursive expansion.
Definition: GetDensFromFock.h:654
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:1020
void unset_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:442
int get_use_new_stopping_criterion() const
Definition: GetDensFromFock.h:407
mat::normType stopCriterionNormPurification
Norm to be used for stopping criterion.
Definition: GetDensFromFock.h:706
const char * file_for_basic_types
Definition: GetDensFromFock.h:737
void unset_stats_prefix()
Definition: GetDensFromFock.h:396
int maxMul
Maximum allowed number of matrix multiplications in the purification.
Definition: GetDensFromFock.h:708
void unset_SCF_step()
Definition: GetDensFromFock.h:214
void clean_puri_stats()
Definition: GetDensFromFock.h:288
static const int UNDEF_VALUE_UINT
Definition: GetDensFromFock.h:60
void set_use_purification()
Definition: GetDensFromFock.h:370
bool output_homo_and_lumo_eigenvectors
Compute homo and lumo eigenvectors and write them to the file.
Definition: GetDensFromFock.h:642
bool save_permuted_F_matrix_in_bin
Save sparse matrix F into bin file in the current permutation of rows and columns.
Definition: GetDensFromFock.h:659
intervalType lumoInterval_Finput
Definition: GetDensFromFock.h:716
void set_general_params(const int n_, mat::SizesAndBlocks const &matrixSizesAndBlocks_)
Definition: GetDensFromFock.h:238
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:499
const char * filenameOverlap
Definition: GetDensFromFock.h:734
ergo_real get_puri_eig_acc_factor_for_guess() const
Definition: GetDensFromFock.h:550
void set_diagonalization_params(ergo_real electronicTemperature_, symmMatrix &overlapMatrix_)
Definition: GetDensFromFock.h:462
int SCF_step
Definition: GetDensFromFock.h:611
void set_projection_method_params(int go_back, int step)
Definition: GetDensFromFock.h:320
void set_run_shift_and_square_method_on_F()
Definition: GetDensFromFock.h:440
int get_use_acceleration() const
Definition: GetDensFromFock.h:400
int go_back_X_iter_proj_method
Parameter used in the projection method for computing eigenvectors.
Definition: GetDensFromFock.h:648
std::vector< ergo_real > eigValUNOCC
Definition: GetDensFromFock.h:727
int get_use_rand_perturbation_for_alleigsint() const
Definition: GetDensFromFock.h:353
std::string get_stats_prefix() const
Definition: GetDensFromFock.h:392
void unset_purification_ignore_failure()
Definition: GetDensFromFock.h:349
bool use_purification
Flag to turn on purification.
Definition: GetDensFromFock.h:617
void set_overlapMatrix(symmMatrix &overlapMatrix_)
Definition: GetDensFromFock.h:470
void unset_use_purification()
Definition: GetDensFromFock.h:372
bool create_m_files
Flag to create m-files with information about the purification process.
Definition: GetDensFromFock.h:640
bool use_acceleration
Use acceleration in the purification.
Definition: GetDensFromFock.h:677
void set_gap_expected_lower_bound(ergo_real gap_expected_lower_bound_)
Definition: GetDensFromFock.h:300
void unset_use_new_stopping_criterion()
Definition: GetDensFromFock.h:411
triangMatrix invCholFactor
Inverse Cholesky factor (written to file)
Definition: GetDensFromFock.h:700
void unset_purification_create_m_files()
Definition: GetDensFromFock.h:332
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:633
int get_dens_from_fock_sparse(symmMatrix &F, symmMatrix &resultDens, symmMatrix &F_ort_prev)
Use recursive expansion for computing the density matrix from Fock matrix.
Definition: GetDensFromFock.cc:306
std::string plot_puri_results_str
Definition: GetDensFromFock.h:675
ergo_real eigvalueErrorLimit
Tolerated deviation of eigenvalues from 0 and 1 in the computed density matrix.
Definition: GetDensFromFock.h:629
void unset_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:418
int get_store_all_eigenvalues_to_file() const
Definition: GetDensFromFock.h:414
ergo_real get_result_entropy_term() const
Definition: GetDensFromFock.h:506
void set_purification_limits(ergo_real subspaceErrorLimit_, ergo_real eigvalueErrorLimit_=0, ergo_real puri_eig_acc_factor_for_guess=0)
Definition: GetDensFromFock.h:474
void set_use_diag_on_error_guess()
Definition: GetDensFromFock.h:378
int get_use_diag_on_error_guess() const
Definition: GetDensFromFock.h:376
int get_purification_ignore_failure() const
Definition: GetDensFromFock.h:345
void unset_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:341
intervalType homoInterval_Finput
Definition: GetDensFromFock.h:715
ergo_real factor
Factor to scale the resulting density matrix.
Definition: GetDensFromFock.h:693
void get_puri_stats(std::map< std::string, double > &puri_stats_) const
Definition: GetDensFromFock.h:509
int get_purification_create_m_files() const
Definition: GetDensFromFock.h:328
void get_SizesAndBlocks(mat::SizesAndBlocks &matrixSizesAndBlocks_) const
Definition: GetDensFromFock.h:257
mat::normType truncationNormPurification
Norm to be used for truncation.
Definition: GetDensFromFock.h:704
int blocksize
Information about leavesSizeMax and blocksize for CHTMatrix.
Definition: GetDensFromFock.h:713
ergo_real invCholFactor_euclnorm
Euclidean norm of inverse Cholesky factor.
Definition: GetDensFromFock.h:702
bool ignore_purification_failure
Continue even if purification fails to converge.
Definition: GetDensFromFock.h:661
ergo_real get_subspaceErrorLimit() const
Definition: GetDensFromFock.h:548
int get_dens_from_fock(symmMatrix &Finput, symmMatrix &resultDens, symmMatrix &F_ort_prev)
Choose which method to use for computing the density matrix from Fock matrix.
Definition: GetDensFromFock.cc:76
symmMatrix D_ort_prev
Density matrix from previous SCF cycle (written to file)
Definition: GetDensFromFock.h:698
void set_truncationNormPurification(mat::normType const truncationNormPurification_)
Set truncation norm used in the recursive expansion.
Definition: GetDensFromFock.h:266
void set_puri_compute_eigv_in_each_iteration()
Definition: GetDensFromFock.h:432
ergo_real electronicTemperature
Electronic temperature.
Definition: GetDensFromFock.h:625
void unset_use_diag_on_error_guess()
Definition: GetDensFromFock.h:380
void set_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:448
void set_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:423
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:1217
void set_use_acceleration()
Definition: GetDensFromFock.h:402
void unset_generate_figures()
Do not plot figures from the recursive expansion.
Definition: GetDensFromFock.h:232
std::string eigenvectors_method
Method for computing eigenvectors: square or projection.
Definition: GetDensFromFock.h:681
bool 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:622
int get_use_prev_vector_as_initial_guess()
Definition: GetDensFromFock.h:454
intervalType homoInterval_F_ort_prev
Definition: GetDensFromFock.h:718
void set_eigs_Fprev(intervalType &homoInterval_Finput_, intervalType &lumoInterval_Finput_)
Definition: GetDensFromFock.h:516
void set_number_of_eigenvectors_to_compute(int occ, int unocc)
Definition: GetDensFromFock.h:314
const char * filenameFinput
Definition: GetDensFromFock.h:730
int noOfOccupiedOrbs
Number of occupied orbitals.
Definition: GetDensFromFock.h:691
void unset_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:425
int get_try_eigv_on_next_iteration_if_fail()
Definition: GetDensFromFock.h:446
void set_SCF_step(int step)
Definition: GetDensFromFock.h:212
bool use_diagonalization
Flag to turn on diagonalization.
Definition: GetDensFromFock.h:615
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
Definition: VectorGeneral.h:48
Header file with typedefs for matrix and vector types.
mat::Interval< ergo_real > intervalType
Definition: matrix_typedefs.h:78
Header file with typedefs for matrix types, using either the hierarchical matrix library (HML) or the...
normType
Definition: matInclude.h:139
@ euclNorm
Definition: matInclude.h:139
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
Functionality for writing output messages to a text file.
#define LOG_AREA_DENSFROMF
Definition: output.h:61
#define LOG_CAT_INFO
Definition: output.h:49
Definition of the main floating-point datatype used; the ergo_real type.
double ergo_real
Definition: realtype.h:69
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
MatrixTriangular< real, matri > triangMatrix
Definition: test_LanczosSeveralLargestEig.cc:70