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