1 //////////////////////////////////////////////////////////////////////////////// 2 // 3 // Copyright (c) 2008 The Regents of the University of California 4 // 5 // This file is part of Qbox 6 // 7 // Qbox is distributed under the terms of the GNU General Public License 8 // as published by the Free Software Foundation, either version 2 of 9 // the License, or (at your option) any later version. 10 // See the file COPYING in the root directory of this distribution 11 // or <http://www.gnu.org/licenses/>. 12 // 13 //////////////////////////////////////////////////////////////////////////////// 14 // 15 // Control.h: 16 // 17 //////////////////////////////////////////////////////////////////////////////// 18 19 #ifndef CONTROL_H 20 #define CONTROL_H 21 22 #include <string> 23 #include <vector> 24 #include <map> 25 #include "D3vector.h" 26 27 struct Control 28 { 29 // control variables 30 std::map<std::string,std::string> debug; 31 std::string timing; 32 std::string wf_dyn, atoms_dyn; // dynamics string flags 33 int nite; 34 double emass; // electron mass 35 36 double fermi_temp; // temperature of Fermi distribution 37 double ecutprec; 38 39 std::string wf_diag; 40 41 std::string tcp; 42 double tcp_rcut; 43 double tcp_sigma; 44 45 double gms_mix; // mixing factor for generalized minimum spread functions 46 47 std::string thermostat; 48 double th_temp,th_time, th_width; // thermostat control 49 50 std::string stress; 51 std::string cell_dyn; 52 std::string cell_lock; 53 double cell_mass; 54 double ecuts; // confinement potential energy cutoff 55 double ext_stress[6]; // external stress tensor: xx,yy,zz,xy,yz,xz 56 57 std::string xc; 58 double alpha_PBE0; 59 double alpha_RSH; 60 double beta_RSH; 61 double mu_RSH; 62 std::string spin; 63 int delta_spin; 64 65 double dt; 66 int iprint; 67 int timeout; 68 69 double charge_mix_coeff; 70 double charge_mix_rcut; 71 int charge_mix_ndim; 72 73 int blHF[3]; 74 double btHF; 75 76 double scf_tol; 77 double force_tol; 78 double stress_tol; 79 80 D3vector e_field; 81 std::string polarization; 82 83 std::string iter_cmd; 84 int iter_cmd_period; 85 }; 86 #endif 87