SCF_unrestricted.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef SCF_UNRESTRICTED_HEADER
00029 #define SCF_UNRESTRICTED_HEADER
00030
00031 #include "SCF_general.h"
00032
00033
00034 class SCF_unrestricted : public SCF_general
00035 {
00036 public:
00037
00038
00039 SCF_unrestricted(const Molecule& molecule_,
00040 const Molecule& extraCharges_,
00041 const BasisInfoStruct & basisInfo_,
00042 const BasisInfoStruct & basisInfoDensFit_,
00043 const IntegralInfo & integralInfo_,
00044 const char* guessDmatFileName_,
00045 const JK::Params& J_K_params_,
00046 const Dft::GridParams& gridParams_,
00047 const SCF::Options& scfopts,
00048 const SCF::MatOptions& matOpts,
00049 ergo_real threshold_integrals_1el_input,
00050 int alpha_beta_diff_input);
00051
00052
00053 ~SCF_unrestricted();
00054
00055 void get_Fock_matrices(symmMatrix & FockMatrix_a, symmMatrix & FockMatrix_b);
00056 void get_no_of_electrons(int & noOfElectrons_a, int & noOfElectrons_b);
00057
00058 private:
00059 void initialize_matrices();
00060 void check_params();
00061 void get_starting_guess_density();
00062 void initialize_homo_lumo_limits();
00063 void write_matrices_to_file();
00064 void get_2e_part_and_energy();
00065 void output_sparsity_S_F_D(SCF_statistics & stats);
00066 void calculate_energy();
00067 void get_FDSminusSDF();
00068 void get_error_measure();
00069 void add_to_DIIS_list();
00070 void update_best_fock_so_far();
00071 void combine_old_fock_matrices(ergo_real stepLength);
00072 void use_diis_to_get_new_fock_matrix();
00073 void clear_diis_list();
00074 void clear_error_matrices();
00075 void save_current_fock_as_fprev();
00076 void get_new_density_matrix();
00077 void write_density_to_file();
00078 void save_final_potential();
00079 void add_random_disturbance_to_starting_guess();
00080 void output_density_images();
00081 void output_csr_matrices_for_gao();
00082 void do_electron_dynamics();
00083 void write_diag_dens_to_file();
00084 void report_final_results();
00085 void save_density_as_prevdens();
00086 void update_subspace_diff();
00087 void disturb_fock_matrix(ergo_real subspaceError);
00088 void disturb_dens_matrix(ergo_real subspaceError);
00089 void do_spin_flip(int atomCount);
00090 void disturb_dens_matrix_exact(ergo_real subspaceError);
00091 void save_full_matrices_for_matlab();
00092 void report_density_difference();
00093 void create_mtx_files_F(int const scfIter);
00094 void create_mtx_files_D(int const scfIter);
00095 void create_homo_eigvec_file() const;
00096 void create_lumo_eigvec_file() const;
00097 void create_gabedit_file() const;
00098 void compute_dipole_moment();
00099 void do_mulliken_pop_stuff();
00100
00101 void get_S2(ergo_real & S2_exact, ergo_real & S2);
00102
00103 symmMatrix densityMatrix_alpha;
00104 symmMatrix densityMatrix_beta;
00105 symmMatrix FockMatrix_alpha;
00106 symmMatrix FockMatrix_beta;
00107 symmMatrix Fprev_alpha;
00108 symmMatrix Fprev_beta;
00109 symmMatrix Dprev_alpha;
00110 symmMatrix Dprev_beta;
00111 symmMatrix F_ort_prev_alpha;
00112 symmMatrix F_ort_prev_beta;
00113 symmMatrix bestFockMatrixSoFar_alpha;
00114 symmMatrix bestFockMatrixSoFar_beta;
00115 symmMatrix bestFockMatrixSoFar2_alpha;
00116 symmMatrix bestFockMatrixSoFar2_beta;
00117 normalMatrix ErrorMatrix_alpha;
00118 normalMatrix ErrorMatrix_beta;
00119 symmMatrix G_alpha;
00120 symmMatrix G_beta;
00121
00122
00123 intervalType homoInterval_F_ort_prev_alpha;
00124 intervalType lumoInterval_F_ort_prev_alpha;
00125 intervalType homoInterval_F_ort_prev_beta;
00126 intervalType lumoInterval_F_ort_prev_beta;
00127 intervalType homoInterval_Fprev_alpha;
00128 intervalType lumoInterval_Fprev_alpha;
00129 intervalType homoInterval_Fprev_beta;
00130 intervalType lumoInterval_Fprev_beta;
00131
00132 int alpha_beta_diff;
00133 int noOfElectrons_alpha;
00134 int noOfElectrons_beta;
00135 };
00136
00137
00138
00139
00140
00141 #endif