ergo
SCF_restricted.h
Go to the documentation of this file.
1 /* Ergo, version 3.8, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2019 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_RESTRICTED_HEADER
39 #define SCF_RESTRICTED_HEADER
40 
41 #include "SCF_general.h"
42 
43 #include "GetDensFromFock.h"
44 
45 
47 {
48  public:
49 
50  // Constructor
51  SCF_restricted(const Molecule& molecule_,
52  const Molecule& extraCharges_,
53  const BasisInfoStruct & basisInfo_,
54  const IntegralInfo& integralInfo_,
55  const char* guessDmatFileNamePtr, // FIXME ELIAS: use std::string for this instead?
56  const JK::Params& J_K_paramsPtr,
57  const Dft::GridParams& gridParams_,
58  const SCF::Options& scfopts,
59  const SCF::MatOptions& matOpts,
60  ergo_real threshold_integrals_1el_input);
61 
62  // Destructor
64 
65  void get_Fock_matrix(symmMatrix & FockMatrix_);
66  void get_density_matrix(symmMatrix & densityMatrix_);
67 
68  private:
69  void initialize_matrices();
70  void check_params();
76  void calculate_energy();
77  void get_FDSminusSDF();
78  void get_error_measure();
79  void add_to_DIIS_list();
81  void combine_old_fock_matrices(ergo_real stepLength);
83  void clear_diis_list();
84  void clear_error_matrices();
87  void write_density_to_file();
88  void save_final_potential();
91  void get_expected_values_pos_operator(generalVector &eigVec, const char *vector_name);
92  void output_density_images();
93  void output_density_images_orbital(generalVector &eigVec, const std::string &filename_id);
95  void report_final_results();
97  void update_subspace_diff();
98  void disturb_fock_matrix(ergo_real subspaceError);
99  void disturb_dens_matrix(ergo_real subspaceError);
100  void do_spin_flip(int atomCount);
101  void disturb_dens_matrix_exact(ergo_real subspaceError);
104  void create_mtx_files_F(int const scfIter);
105  void create_mtx_files_D(int const scfIter);
108  void create_eigenvectors_files() const;
109  void create_eigenvalues_files() const;
110  void create_eigvec_file(const generalVector &eigVec,
111  const char *vector_name,
112  const char *filename_id) const;
113  void create_gabedit_file() const;
114  void create_gabedit_file_2() const;
115  void compute_dipole_moment();
116  void do_mulliken_pop_stuff();
118 
119  void get_non_ort_err_mat_normalized_in_ort_basis(symmMatrix & randomMatrix, int transform_with_S_also);
120  void transform_with_S(symmMatrix & A);
122 
123  void disturb_dens_matrix_exact_try(const symmMatrix & randomMatrix,
124  const symmMatrix & orgDensMatrix,
125  ergo_real disturbanceFactor,
126  ergo_real & resultSinTheta,
127  symmMatrix & resultDensMatrix);
128 
135  symmMatrix F_ort_prev; // Used by purification
136  symmMatrix D_ort_prev; // Used for computing eigenvectors
140  // The following three matrices are only used when doing sparsity investigation, otherwise they are empty
144 
145  std::vector<generalVector> eigVecOCC;
146  std::vector<generalVector> eigVecUNOCC;
147  std::vector<ergo_real> eigValOCC;
148  std::vector<ergo_real> eigValUNOCC;
149 
154 
155 };
156 
157 
158 
159 
160 
161 #endif
SCF_restricted::create_mtx_files_F
void create_mtx_files_F(int const scfIter)
Definition: SCF_restricted.cc:1200
SCF_general::S_symm
symmMatrix S_symm
Definition: SCF_general.h:114
SCF_general::DensFromFock
GetDensFromFock DensFromFock
Definition: SCF_general.h:125
template_blas_sqrt
Treal template_blas_sqrt(Treal x)
SCF::Options::scan_step_factor
ergo_real scan_step_factor
Definition: scf.h:138
GetDensFromFock::set_no_occupied_orbs
void set_no_occupied_orbs(int noOfOccupiedOrbs_)
Definition: GetDensFromFock.h:282
ShellSpecStruct::coeffList
ergo_real coeffList[MAX_NO_OF_CONTR_GAUSSIANS]
Definition: basisinfo.h:72
SquareFuncIntegrator
Provides temporary storage for compute_integral_of_square_of_basis_func.
Definition: basisinfo.h:189
GetDensFromFock::set_use_diag_on_error
void set_use_diag_on_error()
Definition: GetDensFromFock.h:386
SCF_general
Definition: SCF_general.h:52
get_dipole_moment
void get_dipole_moment(const symmMatrix &densityMatrix, const BasisInfoStruct &basisInfo, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, const Molecule &molecule, int logArea, const char *label)
Definition: dipole_moment.cc:74
SCF_restricted::create_mtx_files_D
void create_mtx_files_D(int const scfIter)
Definition: SCF_restricted.cc:1214
SCF_restricted::write_diag_dens_to_file
void write_diag_dens_to_file()
Definition: SCF_restricted.cc:1120
integral_matrix_wrappers.h
Wrapper routines for different parts of the integral code, including conversion of matrices from/to t...
SCF_general::nuclearEnergy
ergo_real nuclearEnergy
Definition: SCF_general.h:98
SCF_restricted::compute_dipole_moment
void compute_dipole_moment()
Definition: SCF_restricted.cc:1174
GetDensFromFock::get_eigs_Fprev
void get_eigs_Fprev(intervalType &homoInterval_Finput_, intervalType &lumoInterval_Finput_) const
Definition: GetDensFromFock.h:523
SCF::MatOptions::sparse_threshold
ergo_real sparse_threshold
threshold value for sparse matrix truncation.
Definition: scf.h:280
SCF::Options::do_acc_scan_J
int do_acc_scan_J
Definition: scf.h:132
SCF::Options::starting_guess_disturbance
ergo_real starting_guess_disturbance
Definition: scf.h:89
SCF::DISTURB_ELEMENT_MAX_COUNT
static const int DISTURB_ELEMENT_MAX_COUNT
Definition: scf.h:51
GetDensFromFock::get_output_homo_and_lumo_eigenvectors
int get_output_homo_and_lumo_eigenvectors() const
Definition: GetDensFromFock.h:337
BasisInfoStruct::noOfBasisFuncs
int noOfBasisFuncs
Definition: basisinfo.h:120
GetDensFromFock::set_SCF_step
void set_SCF_step(int step)
Definition: GetDensFromFock.h:212
SCF::Options::verify_gradient_fixeddens
int verify_gradient_fixeddens
Definition: scf.h:159
SCF::Options::eigensolver_maxiter
int eigensolver_maxiter
Definition: scf.h:156
SCF_restricted::SCF_restricted
SCF_restricted(const Molecule &molecule_, const Molecule &extraCharges_, const BasisInfoStruct &basisInfo_, const IntegralInfo &integralInfo_, const char *guessDmatFileNamePtr, const JK::Params &J_K_paramsPtr, const Dft::GridParams &gridParams_, const SCF::Options &scfopts, const SCF::MatOptions &matOpts, ergo_real threshold_integrals_1el_input)
Definition: SCF_restricted.cc:54
dipole_moment.h
Functionality for computing the dipole moment of a molecule for a given density matrix.
SCF_restricted::get_new_density_matrix
void get_new_density_matrix()
Definition: SCF_restricted.cc:740
SCF_restricted::twoel_matrix_core
symmMatrix twoel_matrix_core
Definition: SCF_restricted.h:131
SCF_restricted::create_eigvec_file
void create_eigvec_file(const generalVector &eigVec, const char *vector_name, const char *filename_id) const
Definition: SCF_restricted.cc:1291
matrix_description_struct
Definition: density_description_file.h:50
SCF_restricted::report_final_results
void report_final_results()
Definition: SCF_restricted.cc:1131
output_sparsity
void output_sparsity(int n, const normalMatrix &M, const char *matrixName)
Definition: scf_utils.cc:371
SCF_restricted::create_eigenvalues_files
void create_eigenvalues_files() const
Definition: SCF_restricted.cc:1228
SCF_restricted::save_full_matrices_for_matlab
void save_full_matrices_for_matlab()
Definition: SCF_restricted.cc:908
SCF::Options::disturbedElementIndexVector
int disturbedElementIndexVector[DISTURB_ELEMENT_MAX_COUNT]
Definition: scf.h:91
UNIT_one_Angstrom
#define UNIT_one_Angstrom
Definition: units.h:43
LOG_CAT_ERROR
#define LOG_CAT_ERROR
Definition: output.h:47
matrix_description_struct::values
ergo_real * values
Definition: density_description_file.h:54
SCF_restricted::save_density_as_prevdens
void save_density_as_prevdens()
Definition: SCF_restricted.cc:1142
mat::Interval::upp
Treal upp() const
Definition: Interval.h:145
LOG_CAT_WARNING
#define LOG_CAT_WARNING
Definition: output.h:48
Molecule::getNuclearRepulsionEnergyQuadratic
ergo_real getNuclearRepulsionEnergyQuadratic() const
Compute nuclear repulsion energy.
Definition: molecule.cc:87
SCF_general::GetEuclideanNormOfMatrix
ergo_real GetEuclideanNormOfMatrix(const symmMatrix &A)
Definition: SCF_general.cc:493
SCF_general::H_core_Matrix
symmMatrix H_core_Matrix
Definition: SCF_general.h:117
SCF_general::threshold_integrals_1el
ergo_real threshold_integrals_1el
Definition: SCF_general.h:88
atom_labels.h
Provides a way to map atom labels to their charges. The main procedure provided by this file is get_c...
SCF_restricted::transform_with_invChol
void transform_with_invChol(symmMatrix &A)
Transform matrix A to invCholT*A*invChol.
Definition: SCF_restricted.cc:1626
ergo_real
double ergo_real
Definition: realtype.h:69
SCF_restricted::create_lumo_eigvec_file
void create_lumo_eigvec_file() const
SCF::Options::eigensolver_accuracy
ergo_real eigensolver_accuracy
Definition: scf.h:155
SCF_restricted::bestFockMatrixSoFar
symmMatrix bestFockMatrixSoFar
Definition: SCF_restricted.h:137
SCF_restricted::disturb_fock_matrix
void disturb_fock_matrix(ergo_real subspaceError)
Definition: SCF_restricted.cc:1816
SCF_restricted::initialize_matrices
void initialize_matrices()
Definition: SCF_restricted.cc:105
SCF::Options::calculation_identifier
std::string calculation_identifier
Definition: scf.h:54
SCF_general::curr_subspace_diff
ergo_real curr_subspace_diff
Definition: SCF_general.h:112
SCF_restricted::report_density_difference
void report_density_difference()
Definition: SCF_restricted.cc:1152
SCF_restricted::check_params
void check_params()
Definition: SCF_restricted.cc:133
ShellSpecStruct::shellType
int shellType
Definition: basisinfo.h:78
SCF_restricted::Fxc_matrix
symmMatrix Fxc_matrix
Definition: SCF_restricted.h:143
SCF_general::energy_2el_valence
ergo_real energy_2el_valence
Definition: SCF_general.h:104
SCF_restricted::disturb_dens_matrix_exact
void disturb_dens_matrix_exact(ergo_real subspaceError)
Definition: SCF_restricted.cc:1763
symmMatrix
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
SCF::Options::min_number_of_iterations
int min_number_of_iterations
Definition: scf.h:109
SCF::Options::shift_using_prev_density_matrix
ergo_real shift_using_prev_density_matrix
Definition: scf.h:92
SCF_restricted::output_expected_values_pos_operator
void output_expected_values_pos_operator()
Definition: SCF_restricted.cc:929
GetDensFromFock::create_checkpoint
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
SCF_restricted::create_gabedit_file
void create_gabedit_file() const
Definition: SCF_restricted.cc:1411
SCF_restricted::densityMatrix_core
symmMatrix densityMatrix_core
Definition: SCF_restricted.h:130
BasisInfoStruct::shellList
ShellSpecStruct * shellList
Definition: basisinfo.h:119
get_nucl_energy_for_given_mol_and_dens
static ergo_real get_nucl_energy_for_given_mol_and_dens(const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, const symmMatrix &D, ergo_real threshold_integrals_1el, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML)
Definition: SCF_restricted.cc:1883
SCF_restricted::save_final_potential
void save_final_potential()
Definition: SCF_restricted.cc:896
SCF_general::errorMeasure
ergo_real errorMeasure
Definition: SCF_general.h:110
SCF_restricted::eigVecUNOCC
std::vector< generalVector > eigVecUNOCC
Definition: SCF_restricted.h:146
ShellSpecStruct::centerCoords
ergo_real centerCoords[3]
Definition: basisinfo.h:76
SCF_restricted::bestFockMatrixSoFar2
symmMatrix bestFockMatrixSoFar2
Definition: SCF_restricted.h:138
SCF_general::energy_reference
ergo_real energy_reference
Definition: SCF_general.h:106
SCF_restricted::add_random_disturbance_to_starting_guess
void add_random_disturbance_to_starting_guess()
Definition: SCF_restricted.cc:237
SCF_restricted::update_best_fock_so_far
void update_best_fock_so_far()
Definition: SCF_restricted.cc:673
BasisInfoStruct
Definition: basisinfo.h:112
SCF_general::J_K_params
const JK::Params & J_K_params
Definition: SCF_general.h:84
SCF_restricted::write_density_to_file
void write_density_to_file()
Definition: SCF_restricted.cc:880
SCF_statistics
Definition: SCF_statistics.h:57
Molecule::getNoOfAtoms
int getNoOfAtoms() const
Definition: molecule.h:114
Atom
Simple atom representation by its charge and cartesian coordinates.
Definition: molecule.h:51
ShellSpecStruct::exponentList
ergo_real exponentList[MAX_NO_OF_CONTR_GAUSSIANS]
Definition: basisinfo.h:73
rows
mat::SizesAndBlocks rows
Definition: test.cc:51
SCF_restricted::Fprev
symmMatrix Fprev
Definition: SCF_restricted.h:133
ddf_writeShellListAndDensityMatricesToFile_sparse
int ddf_writeShellListAndDensityMatricesToFile_sparse(const BasisInfoStruct &basisInfo, int noOfDensityMatrices, matrix_description_struct *densityMatrixList, const char *fileName)
Writes basisInfo and sparse matrices in a format that can be later read by ddf_load_density.
Definition: density_description_file.cc:640
get_atom_label_from_charge_int
int get_atom_label_from_charge_int(int charge, char *atomLabelString, size_t bufferSize)
Definition: atom_labels.cc:141
RandomNumber
Definition: SCF_restricted.cc:1597
SCF_restricted::get_starting_guess_density
void get_starting_guess_density()
Definition: SCF_restricted.cc:143
SCF::Options::compute_core_density
int compute_core_density
Definition: scf.h:116
if
if(!(yy_init))
Definition: ergo_input_parser.c:784
SCF_restricted::ErrorMatrix
normalMatrix ErrorMatrix
Definition: SCF_restricted.h:139
JK::Params
Definition: integrals_2el.h:45
SCF::Options::eigenvectors_iterative_method
std::string eigenvectors_iterative_method
Definition: scf.h:154
template_blas_fabs
Treal template_blas_fabs(Treal x)
get_diag_matrix_from_file
int get_diag_matrix_from_file(int n, symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:840
SCF_restricted::homoInterval_F_ort_prev
intervalType homoInterval_F_ort_prev
Definition: SCF_restricted.h:150
GetDensFromFock::unset_use_diag_on_error
void unset_use_diag_on_error()
Definition: GetDensFromFock.h:388
SCF_restricted::eigValUNOCC
std::vector< ergo_real > eigValUNOCC
Definition: SCF_restricted.h:148
SCF::MatOptions
An object respresenting the configuration of the matrix library.
Definition: scf.h:276
do_mulliken_atomic_charges
void do_mulliken_atomic_charges(const symmMatrix &densityMatrix, const symmMatrix &S_symm, const BasisInfoStruct &basisInfo, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, const Molecule &molecule)
Definition: scf_utils.cc:2296
SCF_restricted::disturb_dens_matrix
void disturb_dens_matrix(ergo_real subspaceError)
Definition: SCF_restricted.cc:1673
SCF_restricted::output_density_images_orbital
void output_density_images_orbital(generalVector &eigVec, const std::string &filename_id)
Definition: SCF_restricted.cc:1064
write_matrix_in_matrix_market_format
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
RandomNumber::accumulate
ergo_real accumulate(ergo_real &a, int const dummy1, int const dummy2)
Definition: SCF_restricted.cc:1598
SCF_general::gridParams
const Dft::GridParams & gridParams
Definition: SCF_general.h:85
SCF_restricted::eigVecOCC
std::vector< generalVector > eigVecOCC
Definition: SCF_restricted.h:145
SCF::Options::gap_expected_lower_bound
ergo_real gap_expected_lower_bound
Definition: scf.h:71
SCF::Options::create_checkpoints
int create_checkpoints
Definition: scf.h:65
SCF::Options::do_f_thresh_verification
int do_f_thresh_verification
Definition: scf.h:104
write_full_matrix
int write_full_matrix(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &inversePermutationHML)
Definition: scf_utils.cc:959
Dft::GridParams
A structure describing the grid settings.
Definition: grid_params.h:59
SCF::Options::do_report_density_diff
int do_report_density_diff
Definition: scf.h:107
GetDensFromFock::get_dens_from_fock
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
LOG_AREA_DENSFROMF
#define LOG_AREA_DENSFROMF
Definition: output.h:61
SCF_restricted::create_gabedit_file_2
void create_gabedit_file_2() const
SCF_restricted::use_diis_to_get_new_fock_matrix
void use_diis_to_get_new_fock_matrix()
Definition: SCF_restricted.cc:702
SCF_restricted::F_ort_prev
symmMatrix F_ort_prev
Definition: SCF_restricted.h:135
GetDensFromFock::unset_use_diagonalization
void unset_use_diagonalization()
Definition: GetDensFromFock.h:364
SCF_general::CAM_params
JK::ExchWeights CAM_params
Definition: SCF_general.h:92
SCF_restricted.h
Class for self-consistent field (SCF) procedure; spin-restricted case.
SCF::MatOptions::inversePermutationHML
std::vector< int > inversePermutationHML
Definition: scf.h:279
get_exp_value_pos_operator
void get_exp_value_pos_operator(const BasisInfoStruct &basisInfo, const Molecule &molecule, const symmMatrix &densityMatrix, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< ergo_real > &mean, std::vector< ergo_real > &std)
Definition: scf_utils.cc:2364
SCF_restricted::get_density_matrix
void get_density_matrix(symmMatrix &densityMatrix_)
Definition: SCF_restricted.cc:97
scf_utils.h
Various utilities used by self-consistent field (SCF) code. For example, interface routines convertin...
SCF::Options::no_of_core_electrons
int no_of_core_electrons
Definition: scf.h:117
IntegralInfo
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
diis_restricted.h
DIISManagerRestricted class implementing direct inversion in the iterative subspace (DIIS) for restri...
BasisInfoStruct::noOfShells
int noOfShells
Definition: basisinfo.h:118
SCF::Options::checkpoint_IDstr
std::string checkpoint_IDstr
Definition: scf.h:66
get_2e_matrix_and_energy_sparse
int get_2e_matrix_and_energy_sparse(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, symmMatrix &twoelMatrix_sparse, symmMatrix &densityMatrix_sparse, const JK::Params &J_K_params, const JK::ExchWeights &CAM_params, const Dft::GridParams &gridParams, int do_xc, ergo_real *energy_2el, int noOfElectrons, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, int get_J_K_Fxc_matrices, symmMatrix &J_matrix, symmMatrix &K_matrix, symmMatrix &Fxc_matrix, SCF_statistics &stats)
General routine for computing the two-electron part of the Fock/KS matrix.
Definition: scf_utils.cc:1531
SCF_restricted::transform_with_S
void transform_with_S(symmMatrix &A)
Transform matrix A to S*A*S.
Definition: SCF_restricted.cc:1607
SCF::Options::use_diag_guess_from_file
int use_diag_guess_from_file
Definition: scf.h:87
SCF_restricted::do_mulliken_pop_stuff
void do_mulliken_pop_stuff()
Definition: SCF_restricted.cc:1183
GetDensFromFock::compute_eigenvectors_extra
void compute_eigenvectors_extra(int puri_compute_eigv_in_each_iteration_, int run_shift_and_square_method_on_F_)
Definition: GetDensFromFock.h:588
SCF_general::guessDmatFileName
const char * guessDmatFileName
Definition: SCF_general.h:83
SCF_restricted::eigValOCC
std::vector< ergo_real > eigValOCC
Definition: SCF_restricted.h:147
compute_FDSminusSDF_sparse
int compute_FDSminusSDF_sparse(int n, symmMatrix &F_symm, symmMatrix &D_symm, symmMatrix &S_symm, normalMatrix &result, ergo_real sparse_threshold)
Definition: scf_utils.cc:2084
SCF_statistics::add_value
void add_value(std::string identifier, double value)
Definition: SCF_statistics.cc:68
matrix_utilities.h
Utilities related to the hierarchical matrix library (HML), including functions for setting up permut...
GetDensFromFock.h
Routines for getting density matrix from a given Fock matrix.
SCF_general::SCF_step
int SCF_step
Definition: SCF_general.h:95
mat::VectorGeneral::is_empty
bool is_empty() const
Definition: VectorGeneral.h:56
SCF_restricted::create_eigenvectors_files
void create_eigenvectors_files() const
Definition: SCF_restricted.cc:1252
ShellSpecStruct::noOfContr
int noOfContr
Definition: basisinfo.h:77
do_density_images
void do_density_images(const BasisInfoStruct &basisInfo, const Molecule &molecule, const ergo_real *densityMatrixFull_tot, const ergo_real *densityMatrixFull_spin, double output_density_images_boxwidth, const std::string &filename_id)
Definition: scf_utils.cc:2410
compute_maxabs_sparse
ergo_real compute_maxabs_sparse(const Tmatrix &M)
Definition: matrix_utilities.h:97
mat::VectorGeneral
Definition: MatrixBase.h:55
Util::TimeMeter::print
void print(int area, const char *routine)
Definition: utilities.h:111
mat::MatrixGeneral
Normal matrix.
Definition: MatrixBase.h:49
SCF_restricted::homoInterval_Fprev
intervalType homoInterval_Fprev
Definition: SCF_restricted.h:152
Molecule::getAtom
const Atom & getAtom(int i) const
Definition: molecule.h:113
output_diff_norm_values
static void output_diff_norm_values(symmMatrix const &F1, symmMatrix const &F2, ergo_real acc, const char *name)
Definition: SCF_restricted.cc:277
do_acc_scan_Vxc
void do_acc_scan_Vxc(symmMatrix &D, const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, const Molecule &molecule, const Dft::GridParams &gridParams, int noOfElectrons, triangMatrix &invCholFactor, bool doInvCholFactorTransformation, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, int nSteps, ergo_real startThresh, ergo_real stepFactor)
Definition: scf_utils.cc:320
GetDensFromFock::get_eigs_F_ort_prev
void get_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_) const
Definition: GetDensFromFock.h:539
mat::MatrixGeneral::frob
Treal frob() const
Definition: MatrixGeneral.h:284
mat::transpose
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition: matrix_proxy.h:131
SCF_restricted::do_spin_flip
void do_spin_flip(int atomCount)
Definition: SCF_restricted.cc:1136
write_diag_elements_to_file
int write_diag_elements_to_file(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:917
cols
mat::SizesAndBlocks cols
Definition: test.cc:52
utilities.h
Basic OS access utilities.
GetDensFromFock::compute_eigenvectors
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
do_acc_scan_K
void do_acc_scan_K(symmMatrix &D, const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, triangMatrix &invCholFactor, bool doInvCholFactorTransformation, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, int nSteps, ergo_real startThresh, ergo_real stepFactor)
Definition: scf_utils.cc:235
SCF::Options::sg_disturb_specific_elements
int sg_disturb_specific_elements
Definition: scf.h:90
DIISManagerRestricted
Definition: diis_restricted.h:44
A
#define A
LOG_CAT_INFO
#define LOG_CAT_INFO
Definition: output.h:49
SCF_restricted::~SCF_restricted
~SCF_restricted()
Definition: SCF_restricted.cc:83
SCF_general::scfopts
const SCF::Options & scfopts
Definition: SCF_general.h:86
SCF::Options::try_eigv_on_next_iteration_if_fail
int try_eigv_on_next_iteration_if_fail
Definition: scf.h:125
SCF_general::matOpts
const SCF::MatOptions & matOpts
Definition: SCF_general.h:87
SCF::MatOptions::permutationHML
std::vector< int > permutationHML
Definition: scf.h:278
SCF_general::noOfElectrons
int noOfElectrons
Definition: SCF_general.h:121
SCF_general::energy_2el
ergo_real energy_2el
Definition: SCF_general.h:100
GetDensFromFock::set_generate_figures
void set_generate_figures(std::string str="")
Plot figures from the recursive expansion.
Definition: GetDensFromFock.h:220
GetDensFromFock::get_result_entropy_term
ergo_real get_result_entropy_term() const
Definition: GetDensFromFock.h:506
UNIT_one_eV
#define UNIT_one_eV
Definition: units.h:45
SCF_general::invCholFactor
triangMatrix invCholFactor
Definition: SCF_general.h:115
SCF::Options::use_simple_starting_guess
int use_simple_starting_guess
Definition: scf.h:86
SCF_general.h
Class for self-consistent field (SCF) procedure; base class that can be used for both restricted and ...
GetDensFromFock::get_use_diag_on_error_guess
int get_use_diag_on_error_guess() const
Definition: GetDensFromFock.h:376
SCF_restricted::get_FDSminusSDF
void get_FDSminusSDF()
Definition: SCF_restricted.cc:629
SCF_restricted::get_2e_part_and_energy
void get_2e_part_and_energy()
Definition: SCF_restricted.cc:321
SCF_restricted::get_expected_values_pos_operator
void get_expected_values_pos_operator(generalVector &eigVec, const char *vector_name)
Definition: SCF_restricted.cc:952
get_electron_nuclear_attraction_energy
ergo_real get_electron_nuclear_attraction_energy(const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, const symmMatrix &D, ergo_real threshold_integrals_1el, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:304
SCF_restricted::Dprev
symmMatrix Dprev
Definition: SCF_restricted.h:134
mat::Interval< ergo_real >
LOG_AREA_SCF
#define LOG_AREA_SCF
Definition: output.h:58
max
#define max(a, b)
Definition: integrator.cc:87
SCF::Options::method_and_basis_set
std::string method_and_basis_set
Definition: scf.h:55
GetDensFromFock::get_use_diag_on_error
int get_use_diag_on_error() const
Definition: GetDensFromFock.h:384
SCF::Options::run_shift_and_square_method_on_F
int run_shift_and_square_method_on_F
Definition: scf.h:127
GetDensFromFock::get_use_diagonalization
int get_use_diagonalization() const
Definition: GetDensFromFock.h:360
units.h
Constants for conversion between units for some common units like Angstrom, electron-volt (eV),...
SCF::Options::purification_subspace_err_limit
ergo_real purification_subspace_err_limit
Definition: scf.h:68
SCF_restricted::initialize_homo_lumo_limits
void initialize_homo_lumo_limits()
Definition: SCF_restricted.cc:255
SCF_restricted::densityMatrix
symmMatrix densityMatrix
Definition: SCF_restricted.h:129
density_description_file.h
An interface file for writing and reading density matrices to/from a file, including basis set inform...
matrix_description_struct::colind
int * colind
Definition: density_description_file.h:53
SCF_restricted::add_to_DIIS_list
void add_to_DIIS_list()
Definition: SCF_restricted.cc:661
BasisInfoStruct::use_6_d_funcs
int use_6_d_funcs
Whether to use 6 d-type basis functions instead of the usual 5 functions.
Definition: basisinfo.h:113
SCF_restricted::create_homo_eigvec_file
void create_homo_eigvec_file() const
SCF::Options::use_dft
int use_dft
Definition: scf.h:85
mat::VectorGeneral::fullvector
void fullvector(std::vector< Treal > &fullVector) const
Definition: VectorGeneral.h:88
SCF::Options::eigenvectors_method
std::string eigenvectors_method
Definition: scf.h:153
SCF_restricted
Definition: SCF_restricted.h:47
add_disturbance_to_matrix
int add_disturbance_to_matrix(int n, symmMatrix &A, ergo_real disturbance, int specificElementCount, const int *elementIndexVector, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:761
GetDensFromFock::get_use_purification
int get_use_purification() const
Definition: GetDensFromFock.h:368
SCF_restricted::J_matrix
symmMatrix J_matrix
Definition: SCF_restricted.h:141
SCF_restricted::lumoInterval_F_ort_prev
intervalType lumoInterval_F_ort_prev
Definition: SCF_restricted.h:151
Atom::charge
ergo_real charge
Definition: molecule.h:52
ShellSpecStruct::startIndexInMatrix
int startIndexInMatrix
Definition: basisinfo.h:81
SCF_restricted::combine_old_fock_matrices
void combine_old_fock_matrices(ergo_real stepLength)
Definition: SCF_restricted.cc:688
save_symmetric_matrix
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
SCF::Options::scan_do_invcholfactor_transf
int scan_do_invcholfactor_transf
Definition: scf.h:135
SCF_general::energy_of_valence
ergo_real energy_of_valence
Definition: SCF_general.h:105
matrix_description_struct::rowind
int * rowind
Definition: density_description_file.h:52
SCF_restricted::clear_error_matrices
void clear_error_matrices()
Definition: SCF_restricted.cc:723
SCF_general::energy_2el_core
ergo_real energy_2el_core
Definition: SCF_general.h:103
SCF_restricted::lumoInterval_Fprev
intervalType lumoInterval_Fprev
Definition: SCF_restricted.h:153
Molecule
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
SCF::Options::output_density_images_boxwidth
ergo_real output_density_images_boxwidth
Definition: scf.h:118
SCF::Options::do_acc_scan_Vxc
int do_acc_scan_Vxc
Definition: scf.h:134
SCF_restricted::output_sparsity_S_F_D
void output_sparsity_S_F_D(SCF_statistics &stats)
Definition: SCF_restricted.cc:589
SCF::Options::puri_compute_eigv_in_each_iteration
int puri_compute_eigv_in_each_iteration
Definition: scf.h:126
GetDensFromFock::unset_generate_figures
void unset_generate_figures()
Do not plot figures from the recursive expansion.
Definition: GetDensFromFock.h:232
mat::SizesAndBlocks
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
SCF_restricted::get_error_measure
void get_error_measure()
Definition: SCF_restricted.cc:650
SCF_general::electronicEntropyTerm
ergo_real electronicEntropyTerm
Definition: SCF_general.h:108
SCF::Options::use_prev_vector_as_initial_guess
int use_prev_vector_as_initial_guess
Definition: scf.h:147
SCF::Options
Definition: scf.h:53
output_sparsity_symm
void output_sparsity_symm(int n, const symmMatrix &M, const char *matrixName)
Definition: scf_utils.cc:376
SCF::MatOptions::size_block_info
mat::SizesAndBlocks size_block_info
Definition: scf.h:277
density_projection.h
Functionality for preparing a starting guess density matrix given a previous density matrix....
GetDensFromFock::get_computed_eigenpairs
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
SCF_general::molecule
const Molecule & molecule
Definition: SCF_general.h:79
machine_epsilon.h
Functionality for determining an approximate value of the "machine epsilon" – the smallest number tha...
matrix_description_struct::nvalues
long nvalues
Definition: density_description_file.h:51
output_orbital_coeffs_in_gabedit_order
static void output_orbital_coeffs_in_gabedit_order(const BasisInfoStruct &basisInfo, std::vector< int > const &shellIdxList, std::ofstream &ff, std::vector< ergo_real > const &orbital_vec)
Definition: SCF_restricted.cc:1322
GetDensFromFock::set_eigs_F_ort_prev
void set_eigs_F_ort_prev(intervalType &homoInterval_F_ort_prev_, intervalType &lumoInterval_F_ort_prev_)
Definition: GetDensFromFock.h:532
SCF_general::curr_cycle_stats
SCF_statistics * curr_cycle_stats
Definition: SCF_general.h:123
GetDensFromFock::clean_eigs_intervals
void clean_eigs_intervals()
Set bounds for HOMO and LUMO eigenvalues to -/+ inf, thus remove any known bounds.
Definition: GetDensFromFock.h:196
get_simple_starting_guess_sparse
int get_simple_starting_guess_sparse(int n, int noOfElectrons, symmMatrix &densityMatrix)
Definition: scf_utils.cc:818
SCF_general::basisInfo
const BasisInfoStruct & basisInfo
Definition: SCF_general.h:81
SquareFuncIntegrator::getShellFactor
ergo_real getShellFactor(const IntegralInfo &integralInfo, ergo_real exponent, int shellType, int use_6_d_funcs)
Definition: basisinfo.cc:277
SCF_general::integralInfo
const IntegralInfo & integralInfo
Definition: SCF_general.h:82
get_machine_epsilon
ergo_real get_machine_epsilon()
return machine epsilon.
Definition: machine_epsilon.cc:50
SCF_restricted::write_matrices_to_file
void write_matrices_to_file()
Definition: SCF_restricted.cc:266
SCF_restricted::disturb_dens_matrix_exact_try
void disturb_dens_matrix_exact_try(const symmMatrix &randomMatrix, const symmMatrix &orgDensMatrix, ergo_real disturbanceFactor, ergo_real &resultSinTheta, symmMatrix &resultDensMatrix)
Definition: SCF_restricted.cc:1695
GetDensFromFock::set_use_diagonalization
void set_use_diagonalization()
Definition: GetDensFromFock.h:362
Atom::coords
ergo_real coords[3]
Definition: molecule.h:53
SCF_restricted::D_ort_prev
symmMatrix D_ort_prev
Definition: SCF_restricted.h:136
mat::Interval::increase
void increase(Treal const value)
Increases interval with value in both directions.
Definition: Interval.h:133
SCF_restricted::update_subspace_diff
void update_subspace_diff()
Definition: SCF_restricted.cc:1571
do_output
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
get_gradient_for_given_mol_and_dens
int get_gradient_for_given_mol_and_dens(const IntegralInfo &integralInfo, const Molecule &molecule, const BasisInfoStruct &basisInfo, const symmMatrix &D, ergo_real threshold_integrals_1el, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, ergo_real *result_gradient_list)
Definition: scf_utils.cc:701
SCF_restricted::compute_gradient_fixeddens
void compute_gradient_fixeddens()
Definition: SCF_restricted.cc:1907
SCF_statistics::add_values
void add_values(ValueMap &values_to_add)
Definition: SCF_statistics.cc:74
do_acc_scan_J
void do_acc_scan_J(const symmMatrix &D, const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, triangMatrix &invCholFactor, bool doInvCholFactorTransformation, const JK::Params &J_K_params, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, int nSteps, ergo_real startThresh, ergo_real stepFactor)
Definition: scf_utils.cc:158
SCF_general::energy
ergo_real energy
Definition: SCF_general.h:101
SCF_restricted::save_current_fock_as_fprev
void save_current_fock_as_fprev()
Definition: SCF_restricted.cc:729
check_if_matrix_contains_strange_elements
bool check_if_matrix_contains_strange_elements(const symmMatrix &M, std::vector< int > const &inversePermutationHML)
This function is supposed to check if a matrix contains any strange numbers such as "inf" or "nan".
Definition: matrix_utilities.cc:362
SCF_general::DIIS
DIISManager * DIIS
Definition: SCF_general.h:119
GetDensFromFock::clean_puri_stats
void clean_puri_stats()
Definition: GetDensFromFock.h:288
SCF_restricted::K_matrix
symmMatrix K_matrix
Definition: SCF_restricted.h:142
GetDensFromFock::do_restricted_calculations
void do_restricted_calculations()
Definition: GetDensFromFock.h:276
load_density_and_project_sparse
int load_density_and_project_sparse(GetDensFromFock &DensFromFock, const char *densityFileName, int noOfDensityMatrices, const IntegralInfo *integralInfo, const BasisInfoStruct &basisInfo, symmMatrix &S_symm, symmMatrix **densityMatrixList, const int *noOfElectronsList, mat::SizesAndBlocks matrix_size_block_info, std::vector< int > const &matrixPermutationVec, ergo_real sparse_threshold)
load_density_and_project_sparse loads one or two density matrices (depending on value of noOfDensityM...
Definition: density_projection.cc:123
GetDensFromFock::get_puri_stats
void get_puri_stats(std::map< std::string, double > &puri_stats_) const
Definition: GetDensFromFock.h:509
SCF_restricted::get_Fock_matrix
void get_Fock_matrix(symmMatrix &FockMatrix_)
Definition: SCF_restricted.cc:89
SCF::Options::do_acc_scan_K
int do_acc_scan_K
Definition: scf.h:133
SCF_restricted::clear_diis_list
void clear_diis_list()
Definition: SCF_restricted.cc:717
Util::TimeMeter
Time-measuring class.
Definition: utilities.h:80
output.h
Functionality for writing output messages to a text file.
Molecule::replaceAtom
void replaceAtom(int i, const Atom &atom)
Definition: molecule.h:110
get_eucl_diff_with_adapted_accuracy
static ergo_real get_eucl_diff_with_adapted_accuracy(int n, const symmMatrix &F_w, const symmMatrix &F_ort_prev_w, ergo_real acc)
Definition: SCF_restricted.cc:297
mat::Interval::low
Treal low() const
Definition: Interval.h:144
SCF::Options::scan_start_thresh
ergo_real scan_start_thresh
Definition: scf.h:137
SCF_restricted::calculate_energy
void calculate_energy()
Definition: SCF_restricted.cc:608
write_matrix_to_file
static int write_matrix_to_file(symmMatrix &M, const std::vector< int > &inversePermutationHML, const BasisInfoStruct &basisInfo, const char *fileName)
Definition: SCF_restricted.cc:854
SCF_restricted::FockMatrix
symmMatrix FockMatrix
Definition: SCF_restricted.h:132
SCF::Options::scan_no_of_steps
int scan_no_of_steps
Definition: scf.h:136
SCF_restricted::output_density_images
void output_density_images()
Definition: SCF_restricted.cc:1027
SCF_restricted::get_non_ort_err_mat_normalized_in_ort_basis
void get_non_ort_err_mat_normalized_in_ort_basis(symmMatrix &randomMatrix, int transform_with_S_also)
Definition: SCF_restricted.cc:1634