mirror of
https://github.com/triqs/dft_tools
synced 2025-01-12 05:58:18 +01:00
New notation for Monte Carlo variables
This commit is contained in:
parent
fe58c9759f
commit
e7d29d8243
@ -168,16 +168,16 @@ The Monte-Carlo itself can now be written::
|
|||||||
if (world.rank() == 0) std::cout << "Ising chain" << std::endl;
|
if (world.rank() == 0) std::cout << "Ising chain" << std::endl;
|
||||||
|
|
||||||
// Prepare the MC parameters
|
// Prepare the MC parameters
|
||||||
int N_Cycles = 500000;
|
int n_cycles = 500000;
|
||||||
int Length_Cycle = 50;
|
int length_cycle = 50;
|
||||||
int N_Warmup_Cycles = 100000;
|
int n_warmup_cycles = 100000;
|
||||||
std::string Random_Name = "";
|
std::string random_name = "";
|
||||||
int Random_Seed = 374982 + world.rank() * 273894;
|
int random_seed = 374982 + world.rank() * 273894;
|
||||||
int Verbosity = (world.rank() == 0 ? 2 : 0);
|
int verbosity = (world.rank() == 0 ? 2 : 0);
|
||||||
|
|
||||||
// Construct a Monte Carlo loop
|
// Construct a Monte Carlo loop
|
||||||
triqs::mc_tools::mc_generic<double> IsingMC(N_Cycles, Length_Cycle, N_Warmup_Cycles,
|
triqs::mc_tools::mc_generic<double> IsingMC(n_cycles, length_cycle, n_warmup_cycles,
|
||||||
Random_Name, Random_Seed, Verbosity);
|
random_name, random_seed, verbosity);
|
||||||
|
|
||||||
// parameters of the model
|
// parameters of the model
|
||||||
int length = 100;
|
int length = 100;
|
||||||
|
@ -48,8 +48,8 @@ C++ variable names
|
|||||||
|
|
||||||
In the C++ examples, these variables will be called:
|
In the C++ examples, these variables will be called:
|
||||||
|
|
||||||
* ``N_Cycles`` :math:`= N`
|
* ``n_cycles`` :math:`= N`
|
||||||
* ``Length_Cycle`` :math:`= L`
|
* ``length_cycle`` :math:`= L`
|
||||||
* ``N_Warmup_Cycle`` :math:`= W`
|
* ``N_Warmup_Cycle`` :math:`= W`
|
||||||
|
|
||||||
You will also have to use these names if you will construct an ``mc_generic``
|
You will also have to use these names if you will construct an ``mc_generic``
|
||||||
|
@ -87,16 +87,16 @@ but obviously you would usually want to cut this into pieces for clarity::
|
|||||||
if (world.rank() == 0) std::cout << "Isolated spin" << std::endl;
|
if (world.rank() == 0) std::cout << "Isolated spin" << std::endl;
|
||||||
|
|
||||||
// prepare the MC parameters
|
// prepare the MC parameters
|
||||||
int N_Cycles = 5000000;
|
int n_cycles = 5000000;
|
||||||
int Length_Cycle = 10;
|
int length_cycle = 10;
|
||||||
int N_Warmup_Cycles = 10000;
|
int n_warmup_cycles = 10000;
|
||||||
std::string Random_Name = "";
|
std::string random_name = "";
|
||||||
int Random_Seed = 374982 + world.rank() * 273894;
|
int random_seed = 374982 + world.rank() * 273894;
|
||||||
int Verbosity = (world.rank() == 0 ? 2 : 0);
|
int verbosity = (world.rank() == 0 ? 2 : 0);
|
||||||
|
|
||||||
// construct a Monte Carlo loop
|
// construct a Monte Carlo loop
|
||||||
triqs::mc_tools::mc_generic<double> SpinMC(N_Cycles, Length_Cycle, N_Warmup_Cycles,
|
triqs::mc_tools::mc_generic<double> SpinMC(n_cycles, length_cycle, n_warmup_cycles,
|
||||||
Random_Name, Random_Seed, Verbosity);
|
random_name, random_seed, verbosity);
|
||||||
|
|
||||||
// parameters of the model
|
// parameters of the model
|
||||||
double beta = 0.3;
|
double beta = 0.3;
|
||||||
@ -140,15 +140,15 @@ The lines that follow, define the parameters of the Monte
|
|||||||
Carlo simulation and construct a Monte Carlo object
|
Carlo simulation and construct a Monte Carlo object
|
||||||
called ``SpinMC``::
|
called ``SpinMC``::
|
||||||
|
|
||||||
int N_Cycles = 5000000;
|
int n_cycles = 5000000;
|
||||||
int Length_Cycle = 10;
|
int length_cycle = 10;
|
||||||
int N_Warmup_Cycles = 10000;
|
int n_warmup_cycles = 10000;
|
||||||
std::string Random_Name = "";
|
std::string random_name = "";
|
||||||
int Random_Seed = 374982 + world.rank() * 273894;
|
int random_seed = 374982 + world.rank() * 273894;
|
||||||
int Verbosity = (world.rank() == 0 ? 2 : 0);
|
int verbosity = (world.rank() == 0 ? 2 : 0);
|
||||||
|
|
||||||
triqs::mc_tools::mc_generic<double> SpinMC(N_Cycles, Length_Cycle, N_Warmup_Cycles,
|
triqs::mc_tools::mc_generic<double> SpinMC(n_cycles, length_cycle, n_warmup_cycles,
|
||||||
Random_Name, Random_Seed, Verbosity);
|
random_name, random_seed, verbosity);
|
||||||
|
|
||||||
The ``SpinMC`` is an instance of the ``mc_generic`` class. First of all, note
|
The ``SpinMC`` is an instance of the ``mc_generic`` class. First of all, note
|
||||||
that you need to include the header ``<triqs/mc_tools/mc_generic.hpp>`` in
|
that you need to include the header ``<triqs/mc_tools/mc_generic.hpp>`` in
|
||||||
@ -161,14 +161,14 @@ number of measurements and the warmup length. The definition of these variables
|
|||||||
has been detailed earlier in :ref:`montecarloloop`.
|
has been detailed earlier in :ref:`montecarloloop`.
|
||||||
|
|
||||||
The next two define the random number generator by giving its name in
|
The next two define the random number generator by giving its name in
|
||||||
``Random_Name`` (an empty string means the default generator, i.e. the Mersenne
|
``random_name`` (an empty string means the default generator, i.e. the Mersenne
|
||||||
Twister) and the random seed in ``Random_See``. As you see the seed is
|
Twister) and the random seed in ``Random_See``. As you see the seed is
|
||||||
different for all node with the use of ``world.rank()``.
|
different for all node with the use of ``world.rank()``.
|
||||||
|
|
||||||
Finally, the last parameter sets the verbosity level. 0 means no output, 1 will
|
Finally, the last parameter sets the verbosity level. 0 means no output, 1 will
|
||||||
output the progress level for the current node and 2 additionally shows some
|
output the progress level for the current node and 2 additionally shows some
|
||||||
statistics about the simulation when you call ``collect_results``. As you see,
|
statistics about the simulation when you call ``collect_results``. As you see,
|
||||||
we have put ``Verbosity`` to 2 only for the master node and 0 for all the other
|
we have put ``verbosity`` to 2 only for the master node and 0 for all the other
|
||||||
ones. This way the information will be printed only by the master.
|
ones. This way the information will be printed only by the master.
|
||||||
|
|
||||||
Moves and measures
|
Moves and measures
|
||||||
@ -269,7 +269,7 @@ Let's look at ``compute_m``::
|
|||||||
|
|
||||||
|
|
||||||
Here only two methods are expected, ``accumulate`` and ``collect_results``.
|
Here only two methods are expected, ``accumulate`` and ``collect_results``.
|
||||||
The method ``accumulate`` is called every ``Length_Cycle`` Monte Carlo loops.
|
The method ``accumulate`` is called every ``length_cycle`` Monte Carlo loops.
|
||||||
It takes one argument which is the current sign in the Monte Carlo simulation.
|
It takes one argument which is the current sign in the Monte Carlo simulation.
|
||||||
Here, we sum the sign in ``Z`` (the partition function) and the magnetization
|
Here, we sum the sign in ``Z`` (the partition function) and the magnetization
|
||||||
in ``M``. The other method ``collect_results`` is usually called just once at
|
in ``M``. The other method ``collect_results`` is usually called just once at
|
||||||
|
@ -81,8 +81,8 @@ When you construct an instance of a Monte Carlo class ``mc_generic``, this
|
|||||||
instance automatically has an access to a random number generator.
|
instance automatically has an access to a random number generator.
|
||||||
Imagine you constructed an instance::
|
Imagine you constructed an instance::
|
||||||
|
|
||||||
triqs::mc_tools::mc_generic<double> SpinMC(N_Cycles, Length_Cycle, N_Warmup_Cycles,
|
triqs::mc_tools::mc_generic<double> SpinMC(n_cycles, length_cycle, n_warmup_cycles,
|
||||||
Random_Name, Random_Seed, Verbosity);
|
random_name, random_seed, verbosity);
|
||||||
|
|
||||||
Now, you can use ``SpinMC`` to have a random number generator::
|
Now, you can use ``SpinMC`` to have a random number generator::
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user