oILAB
Loading...
Searching...
No Matches
MonteCarloImplementation.h
Go to the documentation of this file.
1//
2// Created by Nikhil Chandra Admal on 8/6/24.
3//
4#ifndef OILAB_MONTECARLOIMPLEMENTATION_H
5#define OILAB_MONTECARLOIMPLEMENTATION_H
6
7#include <OrderedTuplet.h>
9#include <LandauWangTP.h>
10#include <CanonicalTP.h>
11
12namespace gbLAB {
13 template<typename StateType, typename SystemType, typename EnsembleType, typename EvolveType>
15 MonteCarlo(const EnsembleType& ensemble,
16 const EvolveType& evolve) : EvolutionAlgorithm<StateType,SystemType,EvolveType>(evolve),
17 ensemble(ensemble),
18 currentState(ensemble.sampleNewState(ensemble.initializeState(), true))
19 {}
20 template<typename StateType, typename SystemType, typename EnsembleType, typename EvolveType>
22 MonteCarlo(const EnsembleType& ensemble,
23 const EvolveType& evolve,
24 const StateType& state) : EvolutionAlgorithm<StateType,SystemType,EvolveType>(evolve),
25 ensemble(ensemble),
26 //currentState(ensemble.sampleNewState(state, false))
27 currentState(state)
28 {}
29
30 template<typename StateType, typename SystemType, typename EnsembleType, typename EvolveType>
32 {
33 int acceptCount = 0;
34
35 for (int i = 0; i < maxIterations; ++i) {
36 auto proposedState= ensemble.sampleNewState(currentState, false);
37 bool transition = this->acceptMove(std::make_pair(proposedState,ensemble.constructMesoState(proposedState)),
38 std::make_pair(currentState,ensemble.constructMesoState(currentState)));
39 if (transition)
40 {
41 currentState = proposedState;
42 acceptCount++;
43 }
44 }
45 }
46
47}
48#endif
MonteCarlo(const EnsembleType &ensemble, const EvolveType &evolve)
void evolve(const int &maxIterations)