RASPA3 3.0.13
A molecular simulation code for computing adsorption and diffusion in nanoporous materials
Loading...
Searching...
No Matches
MonteCarlo Struct Referenceexport

Performs Monte Carlo simulations for molecular systems. More...

Collaboration diagram for MonteCarlo:

Public Types

enum class  WeightingMethod : std::size_t { LambdaZero = 0 , AllLambdas = 1 }
 Enumeration of weighting methods for sampling. More...
 
enum class  SimulationStage : std::size_t { Uninitialized = 0 , Initialization = 1 , Equilibration = 2 , Production = 3 }
 Enumeration of simulation stages. More...
 

Public Member Functions

 MonteCarlo ()
 Default constructor for the MonteCarlo class.
 
 MonteCarlo (InputReader &reader) noexcept
 Constructs a MonteCarlo object with simulation parameters from an InputReader.
 
 MonteCarlo (std::size_t numberOfCycles, std::size_t numberOfInitializationCycles, std::size_t numberOfEquilibrationCycles, std::size_t printEvery, std::size_t writeBinaryRestartEvery, std::size_t rescaleWangLandauEvery, std::size_t optimizeMCMovesEvery, std::vector< System > &systems, RandomNumber &randomSeed, std::size_t numberOfBlocks, bool outputToFiles=false)
 Constructs a MonteCarlo object with specified simulation parameters.
 
void createOutputFiles ()
 Creates output files for writing simulation data.
 
void writeOutputHeader ()
 Write the output header.
 
void createInterpolationGrids ()
 Creates energy interpolation grids.
 
void run ()
 Runs the Monte Carlo simulation.
 
void performCycle ()
 Performs a single Monte Carlo cycle.
 
void initialize ()
 Performs the initialization stage of the simulation.
 
void equilibrate ()
 Performs the equilibration stage of the simulation.
 
void production ()
 Performs the production stage of the simulation.
 
void output ()
 Generates the final output of the simulation.
 
SystemrandomSystem ()
 Selects a random system from the list of systems.
 
std::string repr () const
 Returns a string representation of the MonteCarlo object.
 

Public Attributes

std::uint64_t versionNumber {1}
 Version number for serialization.
 
bool outputToFiles {true}
 
RandomNumber random
 Random number generator.
 
std::size_t numberOfCycles
 Number of production cycles.
 
std::size_t numberOfSteps
 Total number of steps performed.
 
std::size_t numberOfInitializationCycles
 Number of initialization cycles.
 
std::size_t numberOfEquilibrationCycles
 Number of equilibration cycles.
 
std::size_t printEvery
 Frequency of printing status reports.
 
std::size_t writeRestartEvery
 Frequency of writing restart files.
 
std::size_t writeBinaryRestartEvery
 Frequency of writing binary restart files.
 
std::size_t rescaleWangLandauEvery
 Frequency of rescaling Wang-Landau factors.
 
std::size_t optimizeMCMovesEvery
 Frequency of optimizing MC moves.
 
std::size_t currentCycle {0}
 Current cycle number.
 
SimulationStage simulationStage {SimulationStage::Uninitialized}
 Current simulation stage.
 
std::vector< Systemsystems
 Vector of systems to simulate.
 
std::size_t fractionalMoleculeSystem {0}
 
std::vector< std::ofstream > streams
 Output streams for writing data.
 
std::vector< std::string > outputJsonFileNames
 Filenames for output JSON files.
 
std::vector< nlohmann::json > outputJsons
 Output data in JSON format.
 
BlockErrorEstimation estimation {}
 Block error estimation object.
 
std::chrono::duration< double > totalGridCreationTime {0}
 Total time for calculating the interpolation grid.
 
std::chrono::duration< double > totalInitializationSimulationTime {0}
 Total time for initialization stage.
 
std::chrono::duration< double > totalEquilibrationSimulationTime {0}
 Total time for equilibration stage.
 
std::chrono::duration< double > totalProductionSimulationTime {0}
 Total time for production stage.
 
std::chrono::duration< double > totalSimulationTime {0}
 Total simulation time.
 

Friends

Archive< std::ofstream > & operator<< (Archive< std::ofstream > &archive, const MonteCarlo &mc)
 
Archive< std::ifstream > & operator>> (Archive< std::ifstream > &archive, MonteCarlo &mc)
 

Detailed Description

Performs Monte Carlo simulations for molecular systems.

The MonteCarlo struct orchestrates the execution of Monte Carlo simulations, including initialization, equilibration, and production stages. It manages multiple systems, random number generation, simulation parameters, and output generation.

Member Enumeration Documentation

◆ SimulationStage

enum class MonteCarlo::SimulationStage : std::size_t
strong

Enumeration of simulation stages.

Enumerator
Uninitialized 

Simulation not initialized.

Initialization 

Initialization stage.

Equilibration 

Equilibration stage.

Production 

Production stage.

◆ WeightingMethod

enum class MonteCarlo::WeightingMethod : std::size_t
strong

Enumeration of weighting methods for sampling.

Enumerator
LambdaZero 

Use only lambda = 0 in sampling.

AllLambdas 

Use all lambda values in sampling.

Constructor & Destructor Documentation

◆ MonteCarlo() [1/3]

MonteCarlo::MonteCarlo ( )

Default constructor for the MonteCarlo class.

Initializes a MonteCarlo object with default parameters.

◆ MonteCarlo() [2/3]

MonteCarlo::MonteCarlo ( InputReader reader)
noexcept

Constructs a MonteCarlo object with simulation parameters from an InputReader.

Parameters
readerInputReader containing simulation parameters.

◆ MonteCarlo() [3/3]

MonteCarlo::MonteCarlo ( std::size_t  numberOfCycles,
std::size_t  numberOfInitializationCycles,
std::size_t  numberOfEquilibrationCycles,
std::size_t  printEvery,
std::size_t  writeBinaryRestartEvery,
std::size_t  rescaleWangLandauEvery,
std::size_t  optimizeMCMovesEvery,
std::vector< System > &  systems,
RandomNumber &  randomSeed,
std::size_t  numberOfBlocks,
bool  outputToFiles = false 
)

Constructs a MonteCarlo object with specified simulation parameters.

Parameters
numberOfCyclesNumber of production cycles.
numberOfInitializationCyclesNumber of initialization cycles.
numberOfEquilibrationCyclesNumber of equilibration cycles.
printEveryFrequency of printing status reports.
writeBinaryRestartEveryFrequency of writing binary restart files.
rescaleWangLandauEveryFrequency of rescaling Wang-Landau factors.
optimizeMCMovesEveryFrequency of optimizing MC moves.
systemsVector of System objects to simulate.
randomSeedRandom number generator seed.
numberOfBlocksNumber of blocks for error estimation.

Member Function Documentation

◆ equilibrate()

void MonteCarlo::equilibrate ( )

Performs the equilibration stage of the simulation.

Equilibrates the systems by running the specified number of equilibration cycles, and adjusts Wang-Landau biasing factors.

◆ initialize()

void MonteCarlo::initialize ( )

Performs the initialization stage of the simulation.

Sets up the simulation systems, writes initial output, and runs the specified number of initialization cycles.

◆ output()

void MonteCarlo::output ( )

Generates the final output of the simulation.

Writes energy statistics, move statistics, CPU timings, and other properties to output files.

◆ performCycle()

void MonteCarlo::performCycle ( )

Performs a single Monte Carlo cycle.

Executes a number of Monte Carlo steps, updates system properties, and handles output generation and restart file writing.

◆ production()

void MonteCarlo::production ( )

Performs the production stage of the simulation.

Runs the main simulation cycles, collects statistics, and samples properties.

◆ randomSystem()

System & MonteCarlo::randomSystem ( )

Selects a random system from the list of systems.

Returns
Reference to a randomly selected System object.

◆ repr()

std::string MonteCarlo::repr ( ) const

Returns a string representation of the MonteCarlo object.

Returns
A string describing the MonteCarlo object.

◆ run()

void MonteCarlo::run ( )

Runs the Monte Carlo simulation.

Orchestrates the simulation by executing initialization, equilibration, and production stages sequentially.


The documentation for this struct was generated from the following file: