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 // Thermostat.h
16 //
17 ////////////////////////////////////////////////////////////////////////////////
18 
19 #ifndef THERMOSTAT_H
20 #define THERMOSTAT_H
21 
22 #include<iostream>
23 #include<iomanip>
24 #include<sstream>
25 #include<stdlib.h>
26 
27 #include "Sample.h"
28 
29 class Thermostat : public Var
30 {
31   Sample *s;
32 
33   public:
34 
name(void)35   const char *name ( void ) const { return "thermostat"; };
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 << " thermostat takes only one value" << endl;
43       return 1;
44     }
45 
46     string v = argv[1];
47     if ( !( v == "SCALING" || v == "ANDERSEN" || v == "LOWE" ||
48          v == "BDP" || v == "OFF" ) )
49     {
50       if ( ui->onpe0() )
51         cout << " thermostat must be SCALING or ANDERSEN or LOWE or BDP or OFF"
52              << endl;
53       return 1;
54     }
55 
56     s->ctrl.thermostat = v;
57 
58     return 0;
59   }
60 
print(void)61   string print (void) const
62   {
63      ostringstream st;
64      st.setf(ios::left,ios::adjustfield);
65      st << setw(10) << name() << " = ";
66      st.setf(ios::right,ios::adjustfield);
67      st << setw(10) << s->ctrl.thermostat;
68      return st.str();
69   }
70 
Thermostat(Sample * sample)71   Thermostat(Sample *sample) : s(sample) { s->ctrl.thermostat = "OFF"; };
72 };
73 #endif
74