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
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.
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
46 std::string state_str
= init
.toString();
47 for (int i
=1;i
<=niter
;i
++) {
49 // e still contains the correct value
51 //e = en.compute(mc.state(), mc.helper(), mc.probability());
53 if (print_state
) state_str
= mc
.state().toString();
57 e
= mc
.state().staggeredMagnetization();
61 out
<< state_str
<< " " << (e
/nspins
) << " " << w
<< "\n";
63 out
<< "* " << (e
/nspins
) << " " << w
<< "\n";