1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2014 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 // AlphaPBE0.h
16 //
17 ////////////////////////////////////////////////////////////////////////////////
18 
19 #ifndef ALPHAPBE0_H
20 #define ALPHAPBE0_H
21 
22 #include<iostream>
23 #include<iomanip>
24 #include<sstream>
25 #include<stdlib.h>
26 
27 #include "Sample.h"
28 
29 class AlphaPBE0 : public Var
30 {
31   Sample *s;
32 
33   public:
34 
name(void)35   const char *name ( void ) const { return "alpha_PBE0"; };
36 
set(int argc,char ** argv)37   int set ( int argc, char **argv )
38   {
39     if ( argc != 2 )
40     {
41       if ( ui->onpe0() )
42       cout << " alpha_PBE0 takes only one value" << endl;
43       return 1;
44     }
45 
46     double v = atof(argv[1]);
47     if ( v < 0.0 )
48     {
49       if ( ui->onpe0() )
50         cout << " alpha_PBE0 must be non-negative" << endl;
51       return 1;
52     }
53 
54     s->ctrl.alpha_PBE0 = v;
55 
56     return 0;
57   }
58 
print(void)59   string print (void) const
60   {
61      ostringstream st;
62      st.setf(ios::left,ios::adjustfield);
63      st << setw(10) << name() << " = ";
64      st.setf(ios::right,ios::adjustfield);
65      st << s->ctrl.alpha_PBE0;
66      return st.str();
67   }
68 
AlphaPBE0(Sample * sample)69   AlphaPBE0(Sample *sample) : s(sample)
70   {
71     s->ctrl.alpha_PBE0 = 0.25;
72   }
73 };
74 #endif
75