Make changes

This commit is contained in:
2023-12-03 13:33:48 +01:00
parent 84692040d3
commit 237bd37184
13 changed files with 377 additions and 207 deletions

View File

@@ -5,7 +5,7 @@
*
* @version 1.0
*
* @brief Functions for monte carlo simulations.
* @brief Functions for Monte Carlo simulations.
*
* @bug No known bugs
* */
@@ -17,23 +17,13 @@
#include "utils.hpp"
#include <functional>
#include <string>
#include <omp.h>
#include <string>
//#define BURN_IN_TIME 12500
// #define BURN_IN_TIME 12500
#define BURN_IN_TIME 5000
#pragma omp declare reduction(+: data_t: omp_out += omp_in)
/** @brief Test numerical data with analytical data.
*
* @param tol The tolerance between the analytical and numerical solution.
* @param max_cycles The max number of Monte Carlo cycles.
*
* return int
* */
int test_2x2_lattice(double tol, int max_cycles);
namespace montecarlo {
/** @brief Write the expected values for each Monte Carlo cycles to file.
*
* @param T Temperature
@@ -41,8 +31,8 @@ int test_2x2_lattice(double tol, int max_cycles);
* @param cycles The amount of Monte Carlo cycles to do
* @param filename The file to write to
* */
void monte_carlo_progression(double T, int L, int cycles,
const std::string filename);
void progression(double T, int L, int cycles,
const std::string filename);
/** @brief Write the expected values for each Monte Carlo cycles to file.
*
@@ -52,8 +42,8 @@ void monte_carlo_progression(double T, int L, int cycles,
* @param value The value to set the elements in the lattice
* @param filename The file to write to
* */
void monte_carlo_progression(double T, int L, int cycles, int value,
const std::string filename);
void progression(double T, int L, int cycles, int value,
const std::string filename);
/** @brief Estimate the probability distribution for the energy.
*
@@ -62,7 +52,8 @@ void monte_carlo_progression(double T, int L, int cycles, int value,
* @param cycles The amount of Monte Carlo cycles to do
* @param filename The file to write to
* */
void pd_estimate(double T, int L, int cycles, const std::string filename);
void pd_estimate(double T, int L, int cycles,
const std::string filename);
/** @brief Execute the Metropolis algorithm for a certain amount of Monte
* Carlo cycles.
@@ -73,7 +64,7 @@ void pd_estimate(double T, int L, int cycles, const std::string filename);
*
* @return data_t
* */
data_t monte_carlo_serial(int L, double T, int cycles);
data_t mcmc_serial(int L, double T, int cycles, int burn_in_time = BURN_IN_TIME);
/** @brief Execute the Metropolis algorithm for a certain amount of Monte
* Carlo cycles in parallel.
@@ -84,7 +75,7 @@ data_t monte_carlo_serial(int L, double T, int cycles);
*
* @return data_t
* */
data_t monte_carlo_parallel(int L, double T, int cycles);
data_t mcmc_parallel(int L, double T, int cycles, int burn_in_time = BURN_IN_TIME);
/** @brief Perform the MCMC algorithm using a range of temperatures.
*
@@ -95,9 +86,10 @@ data_t monte_carlo_parallel(int L, double T, int cycles);
* @param monte_carlo Which Monte Carlo implementation to use
* @param outfile The file to write the data to
* */
void phase_transition(
int L, double start_T, double end_T, int points_T,
std::function<data_t(int, double, int)> monte_carlo,
std::string outfile);
void
phase_transition(int L, double start_T, double end_T, int points_T, int cycles,
std::function<data_t(int, double, int, int)> monte_carlo,
std::string outfile, int burn_in_time = BURN_IN_TIME);
}; // namespace montecarlo
#endif