ergo
|
00001 /* Ergo, version 3.2, a program for linear scaling electronic structure 00002 * calculations. 00003 * Copyright (C) 2012 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek. 00004 * 00005 * This program is free software: you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation, either version 3 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 * 00018 * Primary academic reference: 00019 * KohnâSham Density Functional Theory Electronic Structure Calculations 00020 * with Linearly Scaling Computational Time and Memory Usage, 00021 * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek, 00022 * J. Chem. Theory Comput. 7, 340 (2011), 00023 * <http://dx.doi.org/10.1021/ct100611z> 00024 * 00025 * For further information about Ergo, see <http://www.ergoscf.org>. 00026 */ 00027 00028 #ifndef CIHEADER 00029 #define CIHEADER 00030 00031 #include "basisinfo.h" 00032 #include "integrals_2el.h" 00033 00034 00035 namespace CI { 00036 00037 struct Options { 00038 int use_random_orbitals; 00039 int use_lowdin_orbitals; 00040 int no_of_core_electrons; 00041 int use_random_starting_guess; 00042 ergo_real convergence_threshold; 00043 ergo_real initial_step_length; 00044 int max_no_of_iterations; 00045 ergo_real shift; 00046 int use_energy_diff_limit; 00047 ergo_real energy_diff_limit; 00048 00050 Options() : use_random_orbitals(0), 00051 use_lowdin_orbitals(0), 00052 no_of_core_electrons(0), 00053 use_random_starting_guess(0), 00054 convergence_threshold(1e-4), 00055 initial_step_length(0.01), 00056 max_no_of_iterations(30), 00057 shift(0.0), 00058 use_energy_diff_limit(0), 00059 energy_diff_limit(10.0) 00060 { 00061 } 00062 }; 00063 00064 } /* End of CI namespace */ 00065 00066 00067 int do_CI( 00068 const BasisInfoStruct & basisInfo, 00069 const IntegralInfo* integralInfo, 00070 const CI::Options& options, 00071 const ergo_real* S, 00072 const ergo_real* h_AO, 00073 const ergo_real* F_a, 00074 const ergo_real* F_b, 00075 int n_el_a, 00076 int n_el_b, 00077 ergo_real nuclearEnergy, 00078 ergo_real HF_energy 00079 ); 00080 00081 00082 #endif