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