Go to the documentation of this file.
38 #ifndef SCF_GENERAL_HEADER
39 #define SCF_GENERAL_HEADER
69 const char* guessDmatFileName_,
int store_all_eigenvalues_to_file
Definition: scf.h:124
General DIISManager class that can be used as a base class in implementations of direct inversion in ...
virtual void update_subspace_diff()=0
symmMatrix S_symm
Definition: SCF_general.h:114
GetDensFromFock DensFromFock
Definition: SCF_general.h:125
Treal template_blas_sqrt(Treal x)
ergo_real threshold_K
Definition: integrals_2el.h:48
void set_use_diag_on_error()
Definition: GetDensFromFock.h:386
Definition: SCF_general.h:52
int compute_h_core_matrix_simple_dense(const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, symmMatrix &H_core_Matrix_sparse, ergo_real threshold_integrals_1el, int noOfThreadsForV, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
Definition: scf_utils.cc:409
int number_of_unoccupied_eigenvectors
Definition: scf.h:150
ergo_real mu
Definition: integral_info.h:151
virtual void save_full_matrices_for_matlab()=0
void set_use_acceleration()
Definition: GetDensFromFock.h:402
int output_expected_values_pos_operator
Definition: scf.h:112
#define LOG_CAT_RESULTS
Definition: output.h:51
mat::normType purification_truncation_norm
Definition: scf.h:72
void stop_timer(std::string identifier)
Definition: SCF_statistics.cc:62
Wrapper routines for different parts of the integral code, including conversion of matrices from/to t...
ergo_real nuclearEnergy
Definition: SCF_general.h:98
ergo_real sparse_threshold
threshold value for sparse matrix truncation.
Definition: scf.h:280
ergo_real starting_guess_disturbance
Definition: scf.h:89
ergo_real step_length_start
Definition: scf.h:62
int noOfBasisFuncs
Definition: basisinfo.h:120
void set_projection_method_params(int go_back, int step)
Definition: GetDensFromFock.h:320
void output_mfile(std::string name)
Definition: SCF_statistics.cc:81
virtual void clear_error_matrices()=0
static ergo_real get_eucl_norm_try_different_acc(const symmMatrix &A, ergo_real &acc)
Definition: SCF_general.cc:53
void set_stopCriterionNormPurification(mat::normType const stopCriterionNormPurification_)
Set stopping criterion norm used in the recursive expansion.
Definition: GetDensFromFock.h:272
Code for AllocatorManager class used for memory allocation/deallocation in matrix library....
int save_permuted_F_matrix_in_bin
Definition: scf.h:128
int create_mtx_file_H_core
Definition: scf.h:140
virtual void get_error_measure()=0
void set_purification_maxmul(ergo_real purification_maxmul_)
Set maximum allowed number of iterations in recursive expansion.
Definition: GetDensFromFock.h:308
#define UNIT_one_Angstrom
Definition: units.h:43
virtual void disturb_fock_matrix(ergo_real subspaceError)=0
#define LOG_CAT_ERROR
Definition: output.h:47
virtual void create_mtx_files_F(int const scfIter)=0
int write_overlap_matrix
Definition: scf.h:129
void set_purification_ignore_failure()
Definition: GetDensFromFock.h:347
#define LOG_CAT_WARNING
Definition: output.h:48
ergo_real GetEuclideanNormOfMatrix(const symmMatrix &A)
Definition: SCF_general.cc:493
void unset_use_diag_on_error_guess()
Definition: GetDensFromFock.h:380
symmMatrix H_core_Matrix
Definition: SCF_general.h:117
ergo_real threshold_integrals_1el
Definition: SCF_general.h:88
virtual void write_matrices_to_file()=0
double ergo_real
Definition: realtype.h:69
void set_diagonalization_params(ergo_real electronicTemperature_, symmMatrix &overlapMatrix_)
Definition: GetDensFromFock.h:462
int create_mtx_file_S
Definition: scf.h:139
char s[MAX_WORKING_DIRECTORY_LEN]
Definition: utilities.h:57
int use_simple_dense_H_core
Definition: scf.h:94
std::string calculation_identifier
Definition: scf.h:54
virtual void compute_dipole_moment()=0
ergo_real curr_subspace_diff
Definition: SCF_general.h:112
int output_density_images_only
Definition: scf.h:114
int purification_maxmul
Definition: scf.h:81
ergo_real energy_2el_valence
Definition: SCF_general.h:104
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
void unset_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:425
int min_number_of_iterations
Definition: scf.h:109
mat::normType purification_stop_crit_norm
Definition: scf.h:73
Vector3D electric_field
Definition: scf.h:56
ergo_real errorMeasure
Definition: SCF_general.h:110
int Initialize(int noOfIters)
Definition: diis_general.cc:83
ergo_real energy_reference
Definition: SCF_general.h:106
int purification_ignore_failure
Definition: scf.h:83
ergo_real getNuclearElectricFieldEnergy(const Vector3D &electricField) const
Compute nuclear energy in given electric field.
Definition: molecule.cc:138
void set_use_purification()
Definition: GetDensFromFock.h:370
Definition: basisinfo.h:112
Definition: utilities.h:56
const JK::Params & J_K_params
Definition: SCF_general.h:84
Definition: SCF_statistics.h:57
int no_of_threads_for_V
Definition: scf.h:79
int getNoOfAtoms() const
Definition: molecule.h:114
int max_number_of_iterations
Definition: scf.h:110
virtual void report_final_results()=0
int purification_use_rand_perturbation_for_alleigsint
Definition: scf.h:84
void set_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:416
ergo_real alpha
Definition: integral_info.h:149
int compute_h_core_matrix_sparse(const IntegralInfo &integralInfo, const Molecule &molecule, const Molecule &extraCharges, ergo_real electric_field_x, ergo_real electric_field_y, ergo_real electric_field_z, const BasisInfoStruct &basisInfo, symmMatrix &H_core_Matrix_sparse, ergo_real threshold_integrals_1el, int noOfThreadsForV, ergo_real boxSizeForVT, ergo_real &result_nuclearRepulsionEnergy, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, int const create_dipole_mtx, std::vector< int > const *const inversePermutationHML, std::string const *const calculation_identifier, std::string const *const method_and_basis_set)
Definition: scf_utils.cc:457
int compute_core_density
Definition: scf.h:116
ergo_real step_length_giveup
Definition: scf.h:61
virtual void check_params()=0
ergo_real sparse_threshold_for_Z
Definition: scf.h:59
void unset_purification_create_m_files()
Definition: GetDensFromFock.h:332
virtual void get_starting_guess_density()=0
Definition: integrals_2el.h:45
int break_on_energy_increase
Definition: scf.h:95
Code for classes containing various options related to self-consistent field (SCF) calculations.
virtual ~SCF_general()
Definition: SCF_general.cc:487
void unset_use_diag_on_error()
Definition: GetDensFromFock.h:388
virtual void report_density_difference()=0
An object respresenting the configuration of the matrix library.
Definition: scf.h:276
virtual void clear_diis_list()=0
int GetNoOfIters()
Definition: diis_general.cc:74
int write_diag_dens_to_file
Definition: scf.h:88
void write_matrix_in_matrix_market_format(Tmatrix const &A, std::vector< int > const &inversePermutation, std::string filename, std::string identifier, std::string method_and_basis)
Definition: matrix_utilities.h:149
ergo_real puri_eig_acc_factor_for_guess
Definition: scf.h:63
const Dft::GridParams & gridParams
Definition: SCF_general.h:85
virtual void output_sparsity_S_F_D(SCF_statistics &stats)=0
void set_number_of_eigenvectors_to_compute(int occ, int unocc)
Definition: GetDensFromFock.h:314
Definition: diis_general.h:48
int write_2el_integral_m_file(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo)
Definition: scf_utils.cc:995
int use_diag_on_error_guess
Definition: scf.h:123
ergo_real gap_expected_lower_bound
Definition: scf.h:71
int cht_blocksize
Definition: scf.h:75
MatrixTriangular< real, matri > triangMatrix
Definition: test_LanczosSeveralLargestEig.cc:70
void unset_use_acceleration()
Definition: GetDensFromFock.h:404
void set_invCholFactor(triangMatrix const &invCholFactor_, ergo_real invCholFactor_euclnorm_)
Definition: GetDensFromFock.h:292
virtual void create_gabedit_file() const =0
virtual void use_diis_to_get_new_fock_matrix()=0
void set_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:339
A structure describing the grid settings.
Definition: grid_params.h:59
void unset_purification_ignore_failure()
Definition: GetDensFromFock.h:349
int number_of_occupied_eigenvectors
Definition: scf.h:149
int skip_H_core
Definition: scf.h:93
Definition: utilities.h:49
void get_energy(ergo_real &E, ergo_real &E_nuclear)
Definition: SCF_general.cc:524
int create_mtx_files_S_and_quit
Definition: scf.h:144
int output_mulliken_pop
Definition: scf.h:157
virtual void initialize_matrices()=0
virtual void disturb_dens_matrix(ergo_real subspaceError)=0
Class for keeping timings and other statistics related to self-consistent field (SCF) procedure.
void get_invCholFactor_matrix(triangMatrix &invCholFactor_)
Definition: SCF_general.cc:508
void start_timer(std::string identifier)
Definition: SCF_statistics.cc:59
Streaming grid generator.
virtual void add_random_disturbance_to_starting_guess()=0
void unset_use_diagonalization()
Definition: GetDensFromFock.h:364
ergo_real electronic_temperature
Definition: scf.h:57
JK::ExchWeights CAM_params
Definition: SCF_general.h:92
std::vector< int > inversePermutationHML
Definition: scf.h:279
void set_use_diag_on_error_guess()
Definition: GetDensFromFock.h:378
int write_basis_func_coord_file(const BasisInfoStruct &basisInfo)
Definition: scf_utils.cc:976
void set_purification_create_m_files()
Definition: GetDensFromFock.h:330
Various utilities used by self-consistent field (SCF) code. For example, interface routines convertin...
int output_density_images
Definition: scf.h:113
ergo_real beta
Definition: integral_info.h:150
virtual void get_FDSminusSDF()=0
void set_save_permuted_F_matrix_in_bin()
Definition: GetDensFromFock.h:423
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
int compute_gradient_fixeddens
Definition: scf.h:158
int create_mtx_files_dipole
Definition: scf.h:143
const char * guessDmatFileName
Definition: SCF_general.h:83
int purification_create_m_files
Definition: scf.h:82
int sparse_matrix_block_size
Definition: scf.h:283
int get_memory_usage_by_procfile(double *virtualMemGigaBytes, double *residentMemGigaBytes, double *virtualMemPeakGigaBytes)
Definition: utilities.cc:229
char s[MAX_HOST_NAME_LEN]
Definition: utilities.h:50
void add_value(std::string identifier, double value)
Definition: SCF_statistics.cc:68
void unset_use_new_stopping_criterion()
Definition: GetDensFromFock.h:411
Utilities related to the hierarchical matrix library (HML), including functions for setting up permut...
@ right
Definition: Matrix.h:75
Routines for getting density matrix from a given Fock matrix.
int SCF_step
Definition: SCF_general.h:95
int purification_with_acceleration
Definition: scf.h:69
virtual void compute_gradient_fixeddens()=0
void set_cht_matrix_params(const int leavesSizeMax_, const int blocksize_)
Definition: GetDensFromFock.h:247
virtual void initialize_homo_lumo_limits()=0
void get_host_name(host_name_struct *result)
Definition: utilities.cc:78
void print(int area, const char *routine)
Definition: utilities.h:111
Normal matrix.
Definition: MatrixBase.h:49
int create_mtx_files_F
Definition: scf.h:141
int output_homo_and_lumo_eigenvectors
Definition: scf.h:148
ergo_real v[3]
Definition: molecule.h:61
void unset_output_homo_and_lumo_eigenvectors()
Definition: GetDensFromFock.h:341
virtual void output_density_images()=0
void get_working_directory(working_directory_struct *result)
Definition: utilities.cc:88
virtual void add_to_DIIS_list()=0
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition: matrix_proxy.h:131
virtual void get_new_density_matrix()=0
#define UNIT_one_Kelvin
Definition: units.h:46
Basic OS access utilities.
void get_overlap_matrix(symmMatrix &S)
Definition: SCF_general.cc:500
void set_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:355
int create_mtx_files_D
Definition: scf.h:142
virtual void get_2e_part_and_energy()=0
#define LOG_CAT_INFO
Definition: output.h:49
int use_diag_on_error
Definition: scf.h:122
const SCF::Options & scfopts
Definition: SCF_general.h:86
virtual void write_diag_dens_to_file()=0
const SCF::MatOptions & matOpts
Definition: SCF_general.h:87
virtual void output_expected_values_pos_operator()=0
std::vector< int > permutationHML
Definition: scf.h:278
int noOfElectrons
Definition: SCF_general.h:121
std::string getStatistics()
Definition: AllocatorManager.h:141
ergo_real threshold_inch
Truncation threshold in INCH function.
Definition: scf.h:282
ergo_real energy_2el
Definition: SCF_general.h:100
triangMatrix invCholFactor
Definition: SCF_general.h:115
int use_simple_starting_guess
Definition: scf.h:86
virtual void create_mtx_files_D(int const scfIter)=0
Code for setting up basis functions starting from shells.
Class for self-consistent field (SCF) procedure; base class that can be used for both restricted and ...
int jump_over_X_iter_proj_method
Definition: scf.h:151
int save_full_matrices_for_matlab
Definition: scf.h:130
const Molecule & extraCharges
Definition: SCF_general.h:80
Parameters related to integral evaluation.
void create_mtx_files_with_different_orderings(const symmMatrix &A, const std::string &calculation_identifier, const std::string &method_and_basis_set, const std::vector< int > &inversePermutationHML, const BasisInfoStruct &basisInfo)
Definition: scf_utils.cc:2639
#define LOG_AREA_SCF
Definition: output.h:58
void set_gap_expected_lower_bound(ergo_real gap_expected_lower_bound_)
Definition: GetDensFromFock.h:300
std::string method_and_basis_set
Definition: scf.h:55
Definition: integral_info.h:148
int no_of_impr_req_for_diis
Definition: scf.h:102
Constants for conversion between units for some common units like Angstrom, electron-volt (eV),...
ergo_real purification_subspace_err_limit
Definition: scf.h:68
void set_general_params(const int n_, mat::SizesAndBlocks const &matrixSizesAndBlocks_)
Definition: GetDensFromFock.h:238
int output_density_at_every_step
Definition: scf.h:111
int use_dft
Definition: scf.h:85
void do_output_time(int logCategory, int logArea, const char *s)
Definition: output.cc:159
ergo_real subspace_factor_dens
Definition: scf.h:77
ergo_real box_size_for_V_and_T
Definition: scf.h:80
void output_current_memory_usage(int logArea, const char *contextString)
Definition: output.cc:186
int spin_flip_atom_count
Definition: scf.h:98
int max_restart_count
Definition: scf.h:101
int get_use_purification() const
Definition: GetDensFromFock.h:368
virtual void create_eigenvectors_files() const =0
int use_new_stopping_criterion
Definition: scf.h:70
int create_basis_func_coord_file
Definition: scf.h:146
int computeRangeSeparatedExchange
shortcut for |beta| != 0
Definition: integral_info.h:152
int save_symmetric_matrix(symmMatrix &A, const BasisInfoStruct &basisInfo, const char *fileName, std::vector< int > const &inversePermutationHML)
Saves specified symmetic matrix to a file of specified name.
Definition: scf_utils.cc:735
Class representing a molecule as a set of atoms with assiciated coordinates and charges of the atomic...
int go_back_X_iter_proj_method
Definition: scf.h:152
ergo_real energy_of_valence
Definition: SCF_general.h:105
ergo_real energy_2el_core
Definition: SCF_general.h:103
int write_guess_density_only
Definition: scf.h:115
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
int create_2el_integral_m_file
Definition: scf.h:145
void getExtremeInternuclearDistancesQuadratic(ergo_real &minDist, ergo_real &maxDist) const
Compute smallest and largest internuclear distances.
Definition: molecule.cc:66
int use_diis_always
Definition: scf.h:103
void set_purification_limits(ergo_real subspaceErrorLimit_, ergo_real eigvalueErrorLimit_=0, ergo_real puri_eig_acc_factor_for_guess=0)
Definition: GetDensFromFock.h:474
virtual void save_final_potential()=0
int use_diagonalization
Definition: scf.h:121
void unset_generate_figures()
Do not plot figures from the recursive expansion.
Definition: GetDensFromFock.h:232
virtual void do_mulliken_pop_stuff()=0
static AllocatorManager & instance()
ergo_real electronicEntropyTerm
Definition: SCF_general.h:108
void unset_store_all_eigenvalues_to_file()
Definition: GetDensFromFock.h:418
void output_sparsity_symm(int n, const symmMatrix &M, const char *matrixName)
Definition: scf_utils.cc:376
mat::SizesAndBlocks size_block_info
Definition: scf.h:277
int max_no_of_diis_matrices
Definition: scf.h:100
ergo_real threshold_J
Definition: integrals_2el.h:47
int use_artificial_subspace_disturbances
Definition: scf.h:78
ergo_real invCholFactor_euclnorm
Definition: SCF_general.h:116
const Molecule & molecule
Definition: SCF_general.h:79
#define VERSION
Definition: config.h:268
void get_H_core_matrix(symmMatrix &H_core)
Definition: SCF_general.cc:516
Functionality for determining an approximate value of the "machine epsilon" – the smallest number tha...
int cht_leavesSizeMax
Definition: scf.h:74
SCF_statistics * curr_cycle_stats
Definition: SCF_general.h:123
const BasisInfoStruct & basisInfo
Definition: SCF_general.h:81
virtual void update_best_fock_so_far()=0
int no_of_careful_first_scf_steps
Definition: scf.h:106
virtual void do_spin_flip(int atomCount)=0
const IntegralInfo & integralInfo
Definition: SCF_general.h:82
ergo_real get_machine_epsilon()
return machine epsilon.
Definition: machine_epsilon.cc:50
int compute_overlap_matrix_sparse(const BasisInfoStruct &basisInfo, symmMatrix &S_symm, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:423
void set_use_diagonalization()
Definition: GetDensFromFock.h:362
int output_statistics_mfiles
Definition: scf.h:105
virtual void save_current_fock_as_fprev()=0
void get_hf_weight_and_cam_params(int use_dft, ergo_real *exch_param_alpha, ergo_real *exch_param_beta, ergo_real *exch_param_mu)
Definition: scf_utils.cc:2611
virtual void disturb_dens_matrix_exact(ergo_real subspaceError)=0
void unset_use_purification()
Definition: GetDensFromFock.h:372
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
int getNumberOfElectrons() const
Compute total number of electrons.
Definition: molecule.cc:158
void set_truncationNormPurification(mat::normType const truncationNormPurification_)
Set truncation norm used in the recursive expansion.
Definition: GetDensFromFock.h:266
ergo_real energy
Definition: SCF_general.h:101
ergo_real sparse_threshold_for_S
Definition: scf.h:58
int save_final_potential
Definition: scf.h:120
virtual void write_density_to_file()=0
DIISManager * DIIS
Definition: SCF_general.h:119
void unset_purification_use_rand_perturbation_for_alleigsint()
Definition: GetDensFromFock.h:357
virtual void combine_old_fock_matrices(ergo_real stepLength)=0
GetDensFromFock class containing parameters and functions for computing density matrix.
Definition: GetDensFromFock.h:57
void output_sparsity_triang(int n, const triangMatrix &M, const char *matrixName)
Definition: scf_utils.cc:381
Treal eucl_thresh(Treal const threshold)
Definition: MatrixGeneral.h:525
Time-measuring class.
Definition: utilities.h:80
void set_use_new_stopping_criterion()
Definition: GetDensFromFock.h:409
ergo_real purification_eigvalue_err_limit
Definition: scf.h:67
virtual void calculate_energy()=0
void do_SCF_iterations()
Definition: SCF_general.cc:531
Functionality for writing output messages to a text file.
SCF_general(const Molecule &molecule_, const Molecule &extraCharges_, const BasisInfoStruct &basisInfo_, const IntegralInfo &integralInfo_, const char *guessDmatFileName_, const JK::Params &J_K_params_, const Dft::GridParams &gridParams_, const SCF::Options &scfopts, const SCF::MatOptions &matOpts, ergo_real threshold_integrals_1el_input)
Definition: SCF_general.cc:81
ergo_real error_maxabs_for_diis
Definition: scf.h:108
virtual void save_density_as_prevdens()=0