removed useless file
[qmc.git] / config.hpp
blob6aa1e324df2ac73d2d6e307e62ef81f1bb06c088
1 /*
2 * Copyright (c) 2009 Mauro Iazzi
4 * Permission is hereby granted, free of charge, to any person
5 * obtaining a copy of this software and associated documentation
6 * files (the "Software"), to deal in the Software without
7 * restriction, including without limitation the rights to use,
8 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following
11 * conditions:
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23 * OTHER DEALINGS IN THE SOFTWARE.
26 #ifndef __CONFIG_HPP
27 #define __CONFIG_HPP
29 #include "qmc.hpp"
31 void print_help () {
34 struct Config {
35 int seed;
36 bool print_state;
37 std::ofstream out;
38 int nspins;
39 int niter;
40 int L;
41 bool M;
42 double alpha;
43 SpinChain init;
44 double J;
45 double D;
46 void _default () {
47 print_state = false;
48 seed = time(NULL);
49 alpha = 0.24;
50 nspins = 100;
51 niter = int(1e6);
52 L = 10;
53 J = 1.0;
54 D = 0.8;
55 M = false;
56 init = SpinChain::neel(nspins);
58 Config () {
59 _default();
61 Config (int argc, char **argv) {
62 _default();
63 std::string filename;
64 for (int i=1;i<argc;i++) {
65 if (argv[i][0]!='-') {
66 print_help();
67 exit(1);
69 switch (argv[i][1]) {
70 case 's':
71 print_state = true;
72 break;
73 case 'o':
74 filename = argv[++i];
75 break;
76 case 'r':
77 srand(atoi(argv[++i]));
78 break;
79 case 'i':
80 niter = atoi(argv[++i]);
81 break;
82 case 'M':
83 M = true;
84 break;
85 case 'l':
86 L = atoi(argv[++i]);
87 break;
88 case 'j':
89 case 'J':
90 J = atof(argv[++i]);
91 break;
92 case 'd':
93 case 'D':
94 D = atof(argv[++i]);
95 break;
96 case 'a':
97 alpha = atof(argv[++i]);
98 break;
99 case 'n':
100 nspins = atoi(argv[++i]);
101 break;
102 case 'h':
103 case 'H':
104 print_help();
105 exit(0);
106 break;
107 default:
108 print_help();
109 exit(1);
110 break;
113 if (filename=="<>") {
114 } else if (filename!="") {
115 out.open(filename.c_str(), std::ofstream::out);
117 init = SpinChain::neel(nspins);
118 if (out.is_open()) {
119 out.precision(10);
120 out << "#!prepend " << alpha << "\n";
121 out << "#!prepend " << nspins << "\n";
122 out << "# alpha = " << alpha << "\n";
123 out << "# number of spins = " << nspins << "\n";
124 out << "# J = " << J << "\n";
125 out << "# Delta = " << D << "\n";
126 out << "# value = " << (M?"magnetization":"energy") << "\n";
131 #endif // __CONFIG_HPP