Go to the documentation of this file.
40 #ifndef SCF_UTILS_HEADER
41 #define SCF_UTILS_HEADER
67 ergo_real & result_nuclearRepulsionEnergy,
69 std::vector<int>
const & permutationHML,
70 int const create_dipole_mtx = 0,
71 std::vector<int>
const *
const inversePermutationHML = 0,
72 std::string
const *
const calculation_identifier = 0,
73 std::string
const *
const method_and_basis_set = 0);
83 std::vector<int>
const & permutationHML,
84 ergo_real & result_nuclearRepulsionEnergy);
93 std::vector<int>
const & permutationHML,
99 std::vector<int>
const & inversePermutationHML);
105 int specificElementCount,
106 const int* elementIndexVector,
107 std::vector<int>
const & permutationHML);
117 const char* fileName,
118 std::vector<int>
const & permutationHML);
123 const char* fileName,
124 std::vector<int>
const & permutationHML);
129 const char* fileName,
130 std::vector<int>
const & inversePermutationHML);
151 std::vector<int>
const & permutationHML,
152 std::vector<int>
const & inversePermutationHML,
153 int get_J_K_Fxc_matrices,
174 std::vector<int>
const & permutationHML,
175 std::vector<int>
const & inversePermutationHML);
192 std::vector<int>
const & permutationHML,
193 std::vector<int>
const & inversePermutationHML);
206 int* noOfElectrons_alpha,
207 int* noOfElectrons_beta);
218 int* noOfElectrons_alpha,
219 int* noOfElectrons_beta);
226 std::vector<int>
const & permutationHML,
227 std::vector<int>
const & inversePermutationHML,
235 std::vector<int>
const & permutationHML,
236 std::vector<int>
const & inversePermutationHML,
243 std::vector<int>
const & permutationHML,
244 std::vector<ergo_real> &mean,
245 std::vector<ergo_real> &std);
253 double output_density_images_boxwidth,
254 const std::string &filename_id =
"");
261 bool doInvCholFactorTransformation,
264 std::vector<int>
const & permutationHML,
274 bool doInvCholFactorTransformation,
278 std::vector<int>
const & permutationHML,
279 std::vector<int>
const & inversePermutationHML,
292 bool doInvCholFactorTransformation,
294 std::vector<int>
const & permutationHML,
295 std::vector<int>
const & inversePermutationHML,
302 const std::string & calculation_identifier,
303 const std::string & method_and_basis_set,
304 const std::vector<int> & inversePermutationHML,
int determine_number_of_electrons_unrestricted(int noOfElectrons, int alpha_beta_diff, int *noOfElectrons_alpha, int *noOfElectrons_beta)
Definition: scf_utils.cc:2201
Treal template_blas_sqrt(Treal x)
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
ergo_real threshold_K
Definition: integrals_2el.h:48
static int get_density(const BasisInfoStruct &bis, DistributionSpecStruct *rho, int maxCountRho, real targetRhoError, int nbast, const Dft::Matrix &dmat, BasisFuncStruct *basisFuncList)
Definition: grid_hicu.cc:2488
const triangMatrix & invCholFactor
Definition: scf_utils.cc:208
void output_sparsity_symm(int n, const symmMatrix &M, const char *matrixName)
Definition: scf_utils.cc:376
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
ergo_real maxError
Definition: grid_params.h:47
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...
Code for 1-electron integrals, computation of electron-nuclear potential energy matrix V.
Code for 1-electron integrals, computation of kinetic-energy matrix T.
Kworker(symmMatrix &D_, const IntegralInfo &integralInfo_, const BasisInfoStruct &basisInfo_, const triangMatrix &invCholFactor_, bool doInvCholFactorTransformation_, const JK::ExchWeights &CAM_params_, const JK::Params &J_K_params_, std::vector< int > const &permutationHML_, std::vector< int > const &inversePermutationHML_)
Definition: scf_utils.cc:182
int noOfBasisFuncs
Definition: basisinfo.h:120
ergo_real do_2e_integral(int mu, int nu, int la, int si, const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo)
Definition: integrals_2el_explicit.cc:75
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
Common DFT routines. Mostly functional mixing.
Definition: basisinfo.h:50
void output_sparsity(int n, const normalMatrix &M, const char *matrixName)
Definition: scf_utils.cc:371
int compute_operator_matrix_sparse_symm(const BasisInfoStruct &basisInfo, int pow_x, int pow_y, int pow_z, symmMatrix &A_symm, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:522
Memory allocation/deallocation routines.
The sparse XC matrix evaluator.
#define UNIT_one_Angstrom
Definition: units.h:43
int compute_T_sparse_linear(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real threshold, ergo_real boxSize, symmMatrix &T, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:331
#define LOG_CAT_ERROR
Definition: output.h:47
ergo_real getNuclearRepulsionEnergyQuadratic() const
Compute nuclear repulsion energy.
Definition: molecule.cc:87
int use_fmm
Definition: integrals_2el.h:51
double ergo_real
Definition: realtype.h:69
ergo_real integrate_density_in_box_2(int nPrims, DistributionSpecStruct *rho, ergo_real *minVect, ergo_real *maxVect, std::vector< int > monomialIntsAdd)
Definition: densitymanager.cc:140
const BasisInfoStruct & basisInfo
Definition: scf_utils.cc:134
int compute_K_by_boxes_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, symmMatrix &K, symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML)
Returns the exchange matrix multiplied by 0.5.
Definition: integral_matrix_wrappers.cc:794
std::vector< int > const & permutationHML
Definition: scf_utils.cc:296
const JK::ExchWeights & CAM_params
Definition: scf_utils.cc:210
void output_sparsity(int n, const normalMatrix &M, const char *matrixName)
Definition: scf_utils.cc:371
real getUXC_seq(const BasisInfoStruct &bis, const IntegralInfo &integralInfo, const Molecule &mol, const Dft::GridParams &gss, int nElectrons, const symmMatrix &densA, const symmMatrix &densB, symmMatrix &xcA, symmMatrix &xcB, real *xcEnergy, std::vector< int > const &permutationHML)
Definition: xc_matrix_sparse.cc:418
JK::Params J_K_params
Definition: scf_utils.cc:211
symmMatrix & D
Definition: scf_utils.cc:205
Definition: scf_utils.cc:111
MatrixSymmetric< real, matri > symmMatrix
Definition: test_LanczosSeveralLargestEig.cc:69
static int write_gcube_file_header(FILE *f, const char *firstLine, const Molecule &m, double originX, double originY, double originZ, int NX, double incrX, int NY, double incrY, int NZ, double incrZ)
Definition: scf_utils.cc:2344
int compute_J_by_boxes_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::Params &J_K_params, symmMatrix &J, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML)
Definition: integral_matrix_wrappers.cc:596
mat::SizesAndBlocks const & matrix_size_block_info
Definition: scf_utils.cc:295
const triangMatrix & invCholFactor
Definition: scf_utils.cc:135
int use_naive_fockmat_constr
Definition: integrals_2el.h:46
Definition: basisinfo.h:112
Definition: SCF_statistics.h:57
int getNoOfAtoms() const
Definition: molecule.h:114
void ComputeMatrix(ergo_real param, symmMatrix &result) const
Definition: scf_utils.cc:216
static void get_mulliken_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, std::vector< ergo_real > &resultVector)
Definition: scf_utils.cc:2229
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
void do_mulliken_spin_densities(const symmMatrix &spinDensityMatrix, 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:2325
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
bool doInvCholFactorTransformation
Definition: scf_utils.cc:136
void output_sparsity_triang(int n, const triangMatrix &M, const char *matrixName)
Definition: scf_utils.cc:381
Definition: integrals_2el.h:45
int write_2el_integral_m_file(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo)
Definition: scf_utils.cc:995
int get_diag_matrix_from_file(int n, symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:840
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
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
int get_no_of_primitives_for_density(ergo_real cutoff, const ergo_real *dmat, const BasisInfoStruct &basisInfo)
Definition: densitymanager.cc:157
Vxc_worker(symmMatrix &D_, const IntegralInfo &integralInfo_, const BasisInfoStruct &basisInfo_, const Molecule &molecule_, const Dft::GridParams &gridParams_, int noOfElectrons_, const triangMatrix &invCholFactor_, bool doInvCholFactorTransformation_, mat::SizesAndBlocks const &matrix_size_block_info_, std::vector< int > const &permutationHML_, std::vector< int > const &inversePermutationHML_)
Definition: scf_utils.cc:260
int compute_h_core_matrix_full(const IntegralInfo &integralInfo, const BasisInfoStruct &basisInfo, int nAtoms, const Atom *atomList, ergo_real *result, ergo_real threshold)
Definition: integrals_1el.cc:59
int write_2el_integral_m_file(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo)
Definition: scf_utils.cc:995
Jworker(const symmMatrix &D_, const IntegralInfo &integralInfo_, const BasisInfoStruct &basisInfo_, const triangMatrix &invCholFactor_, bool doInvCholFactorTransformation_, const JK::Params &J_K_params_, std::vector< int > const &permutationHML_)
Definition: scf_utils.cc:113
const IntegralInfo & integralInfo
Definition: scf_utils.cc:206
MatrixGeneral< real, matri > normalMatrix
Definition: test_LanczosSeveralLargestEig.cc:71
static void do_scan_and_report(Tinvestigator investigator, Tworker worker, const char *scanName, int nSteps, ergo_real startThresh, ergo_real stepFactor)
Definition: scf_utils.cc:77
MatrixTriangular< real, matri > triangMatrix
Definition: test_LanczosSeveralLargestEig.cc:70
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
int write_full_matrix(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &inversePermutationHML)
Definition: scf_utils.cc:959
A structure describing the grid settings.
Definition: grid_params.h:59
int get_2e_matrices_and_energy_restricted_open(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_Fc, symmMatrix &twoelMatrix_Fo, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_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)
Computes G_c and G_o.
Definition: scf_utils.cc:1929
int compute_V_sparse(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, symmMatrix &V, std::vector< int > const &permutationHML, ergo_real &result_nuclearRepulsionEnergy)
Definition: integral_matrix_wrappers.cc:86
HiCuGridParams hicuParams
Definition: grid_params.h:74
#define LOG_AREA_DENSFROMF
Definition: output.h:61
Class for keeping timings and other statistics related to self-consistent field (SCF) procedure.
int compute_2e_matrix_exchange(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, ergo_real *K, ergo_real *dens, ergo_real threshold)
Definition: integrals_2el_layer.cc:52
const IntegralInfo & integralInfo
Definition: scf_utils.cc:133
void start_timer(std::string identifier)
Definition: SCF_statistics.cc:59
Streaming grid generator.
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
const Dft::GridParams & gridParams
Definition: scf_utils.cc:291
int write_diag_elements_to_file(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:917
JK::Params J_K_params
Definition: scf_utils.cc:137
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=0, std::vector< int > const *const inversePermutationHML=0, std::string const *const calculation_identifier=0, std::string const *const method_and_basis_set=0)
Definition: scf_utils.cc:457
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
int write_basis_func_coord_file(const BasisInfoStruct &basisInfo)
Definition: scf_utils.cc:976
void ComputeMatrix(ergo_real param, symmMatrix &result) const
Definition: scf_utils.cc:300
void output_sparsity_template(int n, const Tmatrix &M, const char *matrixName, const char *matrixTypeName)
Definition: scf_utils.cc:357
Various utilities used by self-consistent field (SCF) code. For example, interface routines convertin...
std::vector< int > const & inversePermutationHML
Definition: scf_utils.cc:213
Contains coefficients needed for quick integral evaluation.
Definition: integral_info.h:94
Functions for setting up lists of non-negligible basis function pairs, for 1-electron integrals.
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
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
EXTERN_C real dft_get_xc_mt(int nElectrons, const real *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xc, real *edfty)
Computes the XC interaction matrix for given density matrix.
Definition: xc_matrix.cc:381
const symmMatrix & D
Definition: scf_utils.cc:132
Code for 2-electron integrals, computation of Coulomb (J) and HF exchange (K) matrices using a single...
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
void getMatrixPermutationOnlyFactor2(const std::vector< ergo_real > &xcoords, const std::vector< ergo_real > &ycoords, const std::vector< ergo_real > &zcoords, int sparse_block_size_lowest, int first_factor_in, std::vector< int > &permutation, std::vector< int > &inversePermutation)
Definition: matrix_utilities.cc:240
int get_simple_starting_guess_sparse(int n, int noOfElectrons, symmMatrix &densityMatrix)
Definition: scf_utils.cc:818
void grid_free_files()
Frees all the cached data if any.
Definition: grid_reader.cc:135
Functionality for working with the electron density as a function of space, for a given basis set and...
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
int save_symmetric_matrix(symmMatrix &A, const BasisInfoStruct &basisInfo, const char *name, std::vector< int > const &inversePermutationHML)
Saves specified symmetic matrix to a file of specified name.
Definition: scf_utils.cc:735
Code for explicit computation of 4-index 2-electron integrals.
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
void print(int area, const char *routine)
Definition: utilities.h:111
static ergo_real get_trace(int n, const ergo_real *P, const ergo_real *H_core)
Definition: scf_utils.cc:388
ergo_real v[3]
Definition: molecule.h:61
const Atom & getAtom(int i) const
Definition: molecule.h:113
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
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition: matrix_proxy.h:131
int write_diag_elements_to_file(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:917
Basic OS access utilities.
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
#define LOG_CAT_INFO
Definition: output.h:49
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
static int get_2e_matrix_and_energy_simple_HF_sparse(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_sparse, symmMatrix &densityMatrix_sparse, const JK::Params &J_K_params, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, ergo_real *energy_2el, int get_J_K_matrices, symmMatrix &J_matrix, symmMatrix &K_matrix)
Definition: scf_utils.cc:1016
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
Code for 1-electron integrals; dense matrix variant of H_core matrix computation.
bool doInvCholFactorTransformation
Definition: scf_utils.cc:209
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
static std::string writeAndReadAll()
Definition: FileWritable.cc:509
static SingletonForTimings & instance()
Definition: Matrix.h:96
const Molecule & molecule
Definition: scf_utils.cc:290
int noOfElectrons
Definition: scf_utils.cc:292
real(* fun_get_hf_weight)(void)
Definition: functionals.c:109
Header file with typedefs for matrix and vector types. The levels of hierarchic matrices are defined ...
#define LOG_AREA_MAIN
Definition: output.h:57
Code for setting up basis functions starting from shells.
static int add_square_matrices(int n, const ergo_real *A, const ergo_real *B, ergo_real *C)
Definition: scf_utils.cc:399
BasisFuncStruct * basisFuncList
Definition: basisinfo.h:121
Parameters related to integral evaluation.
Vector3D centerCoords
Definition: basisinfo.h:90
int write_basis_func_coord_file(const BasisInfoStruct &basisInfo)
Definition: scf_utils.cc:976
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
std::vector< int > const & permutationHML
Definition: scf_utils.cc:138
void ComputeMatrix(ergo_real param, symmMatrix &result) const
Definition: scf_utils.cc:141
int use_differential_density
Definition: integrals_2el.h:50
Definition: integral_info.h:148
Constants for conversion between units for some common units like Angstrom, electron-volt (eV),...
const triangMatrix & invCholFactor
Definition: scf_utils.cc:293
An interface file for writing and reading density matrices to/from a file, including basis set inform...
int ddf_writeShellListAndDensityMatricesToFile(const BasisInfoStruct &basisInfo, int noOfDensityMatrices, ergo_real **densityMatrixList, const char *fileName)
Definition: density_description_file.cc:526
void output_current_memory_usage(int logArea, const char *contextString)
Definition: output.cc:186
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
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
ergo_real charge
Definition: molecule.h:52
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
symmMatrix & D
Definition: scf_utils.cc:287
Class representing a molecule as a set of atoms with assiciated coordinates and charges of the atomic...
Definition: mat_acc_extrapolate.h:53
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
int write_full_matrix(int n, const symmMatrix &M, const char *fileName, std::vector< int > const &inversePermutationHML)
Definition: scf_utils.cc:959
Functions for computing the matrix of a dipole/quadrupole/etc operator. Full and sparse versions.
Functions for setting up lists of non-negligible basis function pairs, for 2-electron integrals.
int compute_JK_single_box(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real *J, ergo_real *K, const ergo_real *dens, ergo_real threshold)
Definition: integrals_2el_boxed.cc:373
int compute_2e_matrix_coulomb(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real *J, ergo_real *dens, const JK::Params &J_K_params)
Definition: integrals_2el_layer.cc:73
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
const Atom * getAtomListPtr() const
Definition: molecule.h:112
void output_sparsity_symm(int n, const symmMatrix &M, const char *matrixName)
Definition: scf_utils.cc:376
int compute_gradient_of_nucl_and_trDV(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, ergo_real threshold, ergo_real boxSize, const symmMatrix &densityMatrix_sparse, std::vector< int > const &permutationHML, ergo_real *result_gradient_list)
Definition: integral_matrix_wrappers.cc:237
int get_2e_matrices_and_energy_restricted_open(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_Fc, symmMatrix &twoelMatrix_Fo, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_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)
Computes G_c and G_o.
Definition: scf_utils.cc:1929
static int get_2e_matrices_and_energy_simple_HF_sparse_unrestricted(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, symmMatrix &twoelMatrix_sparse_alpha, symmMatrix &twoelMatrix_sparse_beta, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_params, const JK::ExchWeights &CAM_params, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, ergo_real *energy_2el)
Definition: scf_utils.cc:1079
ergo_real threshold_J
Definition: integrals_2el.h:47
Functions for computing dense Coulomb and HF exchange matrices.
static int get_2e_matrices_and_energy_simple_sparse_unrestricted(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_sparse_alpha, symmMatrix &twoelMatrix_sparse_beta, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_params, const Dft::GridParams &gridParams, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, ergo_real *energy_2el, int do_xc, int noOfElectrons)
Definition: scf_utils.cc:1316
static ergo_real distance(const ergo_real *a, const ergo_real *b)
Coomputes distance between two points, they do not need to be of the Vector3D type.
Definition: dft_common.cc:526
int get_simple_starting_guess_sparse(int n, int noOfElectrons, symmMatrix &densityMatrix)
Definition: scf_utils.cc:818
int get_2e_matrices_and_energy_sparse_unrestricted(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_sparse_alpha, symmMatrix &twoelMatrix_sparse_beta, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_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)
Definition: scf_utils.cc:1721
ergo_real coords[3]
Definition: molecule.h:53
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
const BasisInfoStruct & basisInfo
Definition: scf_utils.cc:289
EXTERN_C real dft_get_uxc_mt(int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty)
Definition: xc_matrix.cc:539
int compute_2e_matrix_list_explicit(const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, ergo_real **resultList, ergo_real **densList, int noOfMatrices, ergo_real threshold)
Definition: integrals_2el_explicit.cc:323
void reset()
Definition: Matrix.h:86
const BasisInfoStruct & basisInfo
Definition: scf_utils.cc:207
std::vector< int > const & permutationHML
Definition: scf_utils.cc:212
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
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
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
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
int get_2e_matrices_and_energy_sparse_unrestricted(const BasisInfoStruct &basisInfo, const Molecule &molecule, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, symmMatrix &twoelMatrix_sparse_alpha, symmMatrix &twoelMatrix_sparse_beta, symmMatrix &densityMatrix_sparse_alpha, symmMatrix &densityMatrix_sparse_beta, const JK::Params &J_K_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)
Definition: scf_utils.cc:1721
int get_diag_matrix_from_file(int n, symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML)
Definition: scf_utils.cc:840
const IntegralInfo & integralInfo
Definition: scf_utils.cc:288
int determine_number_of_electrons_unrestricted(int noOfElectrons, int alpha_beta_diff, int *noOfElectrons_alpha, int *noOfElectrons_beta)
Definition: scf_utils.cc:2201
static int get_2e_matrix_and_energy_simple_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, mat::SizesAndBlocks const &matrix_size_block_info, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, ergo_real *energy_2el, int do_xc, int noOfElectrons, int get_J_K_Fxc_matrices, symmMatrix &J_matrix, symmMatrix &K_matrix, symmMatrix &Fxc_matrix, SCF_statistics &stats)
Routine for computing the two-electron part of the Fock/KS matrix, in sparse form.
Definition: scf_utils.cc:1162
Definition: scf_utils.cc:258
void output_sparsity_triang(int n, const triangMatrix &M, const char *matrixName)
Definition: scf_utils.cc:381
real getXC_mt(const BasisInfoStruct &bis, const IntegralInfo &integralInfo, const Molecule &mol, const Dft::GridParams &gss, int nElectrons, const symmMatrix &dens, symmMatrix &xcm, real *xcEnergy, std::vector< int > const &permutationHML)
Definition: xc_matrix_sparse.cc:274
Time-measuring class.
Definition: utilities.h:80
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
Functionality for writing output messages to a text file.
bool doInvCholFactorTransformation
Definition: scf_utils.cc:294
void do_mulliken_spin_densities(const symmMatrix &spinDensityMatrix, 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:2325
Definition: scf_utils.cc:180
int fun_get_cam_param(real *alpha, real *beta, real *mu)
Definition: fun-cam.c:1367