ergo
|
Various utilities used by self-consistent field (SCF) code. More...
#include <pthread.h>
#include <sstream>
#include "scf_utils.h"
#include "output.h"
#include "integrals_1el.h"
#include "memorymanag.h"
#include "operator_matrix.h"
#include "integrals_1el_kinetic.h"
#include "integrals_1el_potential.h"
#include "utilities.h"
#include "integrals_2el_explicit.h"
#include "basis_func_pair_list.h"
#include "integrals_2el_boxed.h"
#include "integrals_2el_layer.h"
#include "density_description_file.h"
#include "mat_acc_extrapolate.h"
#include "basis_func_pair_list_1el.h"
#include "integral_matrix_wrappers.h"
#include "units.h"
#include "densitymanager.h"
#include "dft_common.h"
#include "xc_matrix.h"
#include "xc_matrix_sparse.h"
Classes | |
class | Jworker |
class | Kworker |
class | Vxc_worker |
Functions | |
template<class Tinvestigator , class Tworker > | |
static void | do_scan_and_report (Tinvestigator investigator, Tworker worker, const char *scanName, int nSteps, ergo_real startThresh, ergo_real stepFactor) |
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) |
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) |
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) |
template<typename Tmatrix > | |
void | output_sparsity_template (int n, const Tmatrix &M, const char *matrixName, const char *matrixTypeName) |
void | output_sparsity (int n, const normalMatrix &M, const char *matrixName) |
void | output_sparsity_symm (int n, const symmMatrix &M, const char *matrixName) |
void | output_sparsity_triang (int n, const triangMatrix &M, const char *matrixName) |
static ergo_real | get_trace (int n, const ergo_real *P, const ergo_real *H_core) |
static int | add_square_matrices (int n, const ergo_real *A, const ergo_real *B, ergo_real *C) |
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) |
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) |
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) |
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. More... | |
int | add_disturbance_to_matrix (int n, symmMatrix &A, ergo_real disturbance, int specificElementCount, const int *elementIndexVector, std::vector< int > const &permutationHML) |
int | get_simple_starting_guess_sparse (int n, int noOfElectrons, symmMatrix &densityMatrix) |
int | get_diag_matrix_from_file (int n, symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML) |
int | write_diag_elements_to_file (int n, const symmMatrix &M, const char *fileName, std::vector< int > const &permutationHML) |
int | write_full_matrix (int n, const symmMatrix &M, const char *fileName, std::vector< int > const &inversePermutationHML) |
int | write_basis_func_coord_file (const BasisInfoStruct &basisInfo) |
int | write_2el_integral_m_file (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo) |
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) |
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) |
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. More... | |
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) |
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. More... | |
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) |
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. More... | |
int | compute_FDSminusSDF_sparse (int n, symmMatrix &F_symm, symmMatrix &D_symm, symmMatrix &S_symm, normalMatrix &result, ergo_real sparse_threshold) |
int | determine_number_of_electrons_unrestricted (int noOfElectrons, int alpha_beta_diff, int *noOfElectrons_alpha, int *noOfElectrons_beta) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
Various utilities used by self-consistent field (SCF) code.
For example, interface routines converting between HML matrix format used in main SCF code and elementwise format used by integral code.
int add_disturbance_to_matrix | ( | int | n, |
symmMatrix & | A, | ||
ergo_real | disturbance, | ||
int | specificElementCount, | ||
const int * | elementIndexVector, | ||
std::vector< int > const & | permutationHML | ||
) |
|
static |
Referenced by get_2e_matrix_and_energy_sparse().
int compute_FDSminusSDF_sparse | ( | int | n, |
symmMatrix & | F_symm, | ||
symmMatrix & | D_symm, | ||
symmMatrix & | S_symm, | ||
normalMatrix & | result, | ||
ergo_real | sparse_threshold | ||
) |
References do_output(), mat::SingletonForTimings::instance(), LOG_AREA_DENSFROMF, LOG_AREA_SCF, LOG_CAT_INFO, output_current_memory_usage(), output_sparsity(), Util::TimeMeter::print(), mat::SingletonForTimings::reset(), and mat::FileWritable::writeAndReadAll().
Referenced by SCF_unrestricted::get_FDSminusSDF(), and SCF_restricted::get_FDSminusSDF().
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 | ||
) |
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 | ||
) |
References Atom::charge, compute_operator_matrix_sparse_symm(), compute_T_sparse_linear(), compute_V_sparse(), Atom::coords, do_output(), Molecule::getAtom(), Molecule::getNoOfAtoms(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, Util::TimeMeter::print(), template_blas_sqrt(), UNIT_one_Angstrom, and write_matrix_in_matrix_market_format().
Referenced by do_tdhf_dynamics(), and SCF_general::SCF_general().
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 | ||
) |
int determine_number_of_electrons_unrestricted | ( | int | noOfElectrons, |
int | alpha_beta_diff, | ||
int * | noOfElectrons_alpha, | ||
int * | noOfElectrons_beta | ||
) |
References do_output(), LOG_AREA_SCF, LOG_CAT_ERROR, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::SCF_unrestricted().
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 | ||
) |
References do_scan_and_report().
Referenced by SCF_restricted::get_2e_part_and_energy(), and Ergo::registerInputVariables().
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 | ||
) |
References do_scan_and_report().
Referenced by SCF_restricted::get_2e_part_and_energy(), and Ergo::registerInputVariables().
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 | ||
) |
References do_scan_and_report().
Referenced by SCF_restricted::get_2e_part_and_energy(), and Ergo::registerInputVariables().
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 | ||
) |
References Atom::coords, do_output(), get_density(), get_no_of_primitives_for_density(), Molecule::getAtom(), Molecule::getNoOfAtoms(), integrate_density_in_box_2(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, Util::TimeMeter::print(), and write_gcube_file_header().
Referenced by SCF_unrestricted::output_density_images(), SCF_restricted::output_density_images(), and SCF_restricted::output_density_images_orbital().
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 | ||
) |
References Atom::charge, do_output(), get_mulliken_charges(), Molecule::getAtom(), Molecule::getNoOfAtoms(), LOG_AREA_SCF, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::do_mulliken_pop_stuff(), and SCF_restricted::do_mulliken_pop_stuff().
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 | ||
) |
References do_output(), get_mulliken_charges(), Molecule::getNoOfAtoms(), LOG_AREA_SCF, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::do_mulliken_pop_stuff().
|
static |
References do_output(), LOG_AREA_SCF, and LOG_CAT_INFO.
Referenced by do_acc_scan_J(), do_acc_scan_K(), and do_acc_scan_Vxc().
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.
G_c is defined as J_a + J_b + K_a + K_b. G_o is defined as J_a + J_b + K_a.
References JK::ExchWeights::alpha, compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse(), JK::ExchWeights::computeRangeSeparatedExchange, dft_get_uxc_mt(), do_output(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, output_current_memory_usage(), and JK::Params::use_naive_fockmat_constr.
Referenced by SCF_unrestricted::get_2e_part_and_energy().
|
static |
References compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse(), do_output(), LOG_AREA_SCF, and LOG_CAT_ERROR.
Referenced by get_2e_matrices_and_energy_sparse_unrestricted().
|
static |
References JK::ExchWeights::alpha, compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse(), JK::ExchWeights::computeRangeSeparatedExchange, dft_get_uxc_mt(), do_output(), getUXC_seq(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, and output_current_memory_usage().
Referenced by get_2e_matrices_and_energy_sparse_unrestricted().
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 | ||
) |
References JK::ExchWeights::alpha, compute_JK_single_box(), JK::ExchWeights::computeRangeSeparatedExchange, dft_get_uxc_mt(), do_output(), get_2e_matrices_and_energy_simple_HF_sparse_unrestricted(), get_2e_matrices_and_energy_simple_sparse_unrestricted(), get_trace(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, output_current_memory_usage(), JK::Params::threshold_J, JK::Params::threshold_K, JK::Params::use_differential_density, JK::Params::use_fmm, and JK::Params::use_naive_fockmat_constr.
Referenced by SCF_unrestricted::get_2e_part_and_energy().
|
static |
References compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse(), do_output(), LOG_AREA_SCF, LOG_CAT_ERROR, and LOG_CAT_INFO.
Referenced by get_2e_matrix_and_energy_sparse().
|
static |
Routine for computing the two-electron part of the Fock/KS matrix, in sparse form.
This routine is only used when FMM is enabled.
References JK::ExchWeights::alpha, compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse(), JK::ExchWeights::computeRangeSeparatedExchange, dft_get_xc_mt(), do_output(), getXC_mt(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, output_current_memory_usage(), SCF_statistics::start_timer(), and SCF_statistics::stop_timer().
Referenced by 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.
Both input and output matrices are in sparse form, but full matrix form may be used in intermediate steps. If FMM is not used, full matrix format is applied.
basisInfo | the used basis set. |
molecule | position of atoms (used for eg. XC grid). |
integralInfo | - the integral evaluation object. |
twoelMatrix_sparse | - the evaluation result. |
densityMatrix_sparse | - the density for which 2e matrix is to be evaluated. |
J_K_params | the settings of the integral evaluation. |
do_xc | whether xc contribution to 2e matrix and energy are to be added. 1 means that the traditional full matrix code should be called, 2 means that the sparse variant is to be used. |
energy_2el | 2el energy contribution |
noOfElectrons | number of electrons... |
CAM_params | a structure containing parameters needed when functionals like CAMB3LYP are used. |
gridParams | a structure containing parameters for the grid. |
matrix_size_block_info | block sizes etc for hierarchic matrix library. |
get_J_K_Fxc_matrices | flag saying if matrices should be saved for statistics/testing purposes. If that feature is active, matrices are saved in parameters J_matrix K_matrix Fxc_matrix . |
J_matrix | resulting J matrix, if requested. |
K_matrix | resulting K matrix, if requested. |
Fxc_matrix | resulting Fxc matrix, if requested. |
stats | a structure holding SCF statistics. |
permutationHML | - the permutation of basis functions, needed for transformation between the dense and sparse formats. |
inversePermutationHML | - the inverse permutation of basis functions, needed for transformation between the dense and sparse formats. |
References add_square_matrices(), JK::ExchWeights::alpha, compute_2e_matrix_coulomb(), compute_2e_matrix_exchange(), compute_2e_matrix_list_explicit(), JK::ExchWeights::computeRangeSeparatedExchange, dft_get_xc_mt(), do_output(), get_2e_matrix_and_energy_simple_HF_sparse(), get_2e_matrix_and_energy_simple_sparse(), get_trace(), LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, BasisInfoStruct::noOfBasisFuncs, output_current_memory_usage(), JK::Params::threshold_J, JK::Params::threshold_K, JK::Params::use_fmm, and JK::Params::use_naive_fockmat_constr.
Referenced by SCF_restricted::get_2e_part_and_energy().
int get_diag_matrix_from_file | ( | int | n, |
symmMatrix & | M, | ||
const char * | fileName, | ||
std::vector< int > const & | permutationHML | ||
) |
References do_output(), LOG_AREA_MAIN, LOG_AREA_SCF, LOG_CAT_ERROR, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::get_starting_guess_density(), and SCF_restricted::get_starting_guess_density().
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 | ||
) |
References compute_operator_matrix_sparse_symm(), and template_blas_sqrt().
Referenced by SCF_restricted::get_expected_values_pos_operator().
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 | ||
) |
References compute_gradient_of_nucl_and_trDV().
Referenced by SCF_restricted::compute_gradient_fixeddens().
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 | ||
) |
References fun_get_cam_param(), and fun_get_hf_weight.
Referenced by es_run(), SCF_general::SCF_general(), and ErgoE2Evaluator::transform().
|
static |
int get_simple_starting_guess_sparse | ( | int | n, |
int | noOfElectrons, | ||
symmMatrix & | densityMatrix | ||
) |
References do_output(), LOG_AREA_SCF, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::get_starting_guess_density(), and SCF_restricted::get_starting_guess_density().
Referenced by get_2e_matrices_and_energy_sparse_unrestricted(), and get_2e_matrix_and_energy_sparse().
void output_sparsity | ( | int | n, |
const normalMatrix & | M, | ||
const char * | matrixName | ||
) |
References output_sparsity_template().
Referenced by compute_FDSminusSDF_sparse(), SCF_unrestricted::get_FDSminusSDF(), and SCF_restricted::get_FDSminusSDF().
void output_sparsity_symm | ( | int | n, |
const symmMatrix & | M, | ||
const char * | matrixName | ||
) |
References output_sparsity_template().
Referenced by SCF_restricted::get_new_density_matrix(), SCF_unrestricted::get_starting_guess_density(), SCF_restricted::get_starting_guess_density(), SCF_unrestricted::output_sparsity_S_F_D(), SCF_restricted::output_sparsity_S_F_D(), and SCF_general::SCF_general().
void output_sparsity_template | ( | int | n, |
const Tmatrix & | M, | ||
const char * | matrixName, | ||
const char * | matrixTypeName | ||
) |
References do_output(), LOG_AREA_SCF, and LOG_CAT_INFO.
Referenced by output_sparsity(), output_sparsity_symm(), and output_sparsity_triang().
void output_sparsity_triang | ( | int | n, |
const triangMatrix & | M, | ||
const char * | matrixName | ||
) |
References output_sparsity_template().
Referenced by SCF_general::SCF_general().
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.
A | the matrix to save. The matrix must be saved to a backing store already. |
basisInfo | the basis set description. |
fileName | The file that will contain the matrix. It will be overwritten without further questions. |
inversePermutationHML | permutation information needed when using hierarchic matrices. |
References A, ddf_writeShellListAndDensityMatricesToFile(), do_output(), LOG_AREA_SCF, LOG_CAT_INFO, and BasisInfoStruct::noOfBasisFuncs.
Referenced by SCF_restricted::save_final_potential(), and SCF_general::SCF_general().
int write_2el_integral_m_file | ( | const BasisInfoStruct & | basisInfo, |
const IntegralInfo & | integralInfo | ||
) |
References do_2e_integral(), and BasisInfoStruct::noOfBasisFuncs.
Referenced by SCF_general::SCF_general().
int write_basis_func_coord_file | ( | const BasisInfoStruct & | basisInfo | ) |
References BasisInfoStruct::basisFuncList, BasisFuncStruct::centerCoords, and BasisInfoStruct::noOfBasisFuncs.
Referenced by SCF_general::SCF_general().
int write_diag_elements_to_file | ( | int | n, |
const symmMatrix & | M, | ||
const char * | fileName, | ||
std::vector< int > const & | permutationHML | ||
) |
References do_output(), LOG_AREA_MAIN, LOG_CAT_ERROR, and LOG_CAT_INFO.
Referenced by SCF_unrestricted::write_diag_dens_to_file(), and SCF_restricted::write_diag_dens_to_file().
int write_full_matrix | ( | int | n, |
const symmMatrix & | M, | ||
const char * | fileName, | ||
std::vector< int > const & | inversePermutationHML | ||
) |
Referenced by SCF_restricted::save_full_matrices_for_matlab().
|
static |
References Atom::charge, Atom::coords, Molecule::getAtom(), and Molecule::getNoOfAtoms().
Referenced by do_density_images().