removed useless file
[qmc.git] / dmc.cpp
blobcdbeda9197c5cd3957cc7297e76374a543f39f30
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 #include "qmc.hpp"
27 #include "config.hpp"
29 using namespace std;
31 int main (int argc, char **argv) {
32 Config conf (argc, argv);
33 SpinChain init = conf.init;
34 double alpha = conf.alpha;
35 int nspins = conf.nspins;
36 int niter = conf.niter;
37 std::ofstream &out = conf.out;
38 bool print_state = conf.print_state;
39 Energy en(conf.J, conf.D);
40 //QMC<VarProb> mc(VarProb(alpha), init);
41 Walker mc(VarProb(alpha), init, en);
43 bool accepted = true; // first value is always accepted
44 double e = 0.0;
45 double w = 0.0;
46 std::string state_str = init.toString();
47 for (int i=1;i<=niter;i++) {
48 if (!accepted) {
49 // e still contains the correct value
50 } else {
51 //e = en.compute(mc.state(), mc.helper(), mc.probability());
52 e = mc.localEnergy();
53 if (print_state) state_str = mc.state().toString();
55 w = mc.weight();
56 if (conf.M) {
57 e = mc.state().staggeredMagnetization();
59 if (out.is_open()) {
60 if (print_state) {
61 out << state_str << " " << (e/nspins) << " " << w << "\n";
62 } else {
63 out << "* " << (e/nspins) << " " << w << "\n";
66 accepted = mc.step();
68 if (out.is_open()) {
69 out.close();
71 return 0;