3-dimensional Monte Carlo simulation of high entropy alloys
- Cannonical ensemble (fixed temperature).
- Effective pair interaction (EPI) model.
- Temperature parallelization.
For more information about EPI and high entropy alloys, you may check the following papers:
- Robust data-driven approach for predicting the configurational energy of high entropy alloys
- Monte Carlo simulation of order-disorder transition in refractory high entropy alloys: A data-driven approach
Software architecture description
Make sure you have the following packages already installed:
- gcc: support -std=c++11.
- MPI: support mpicxx, OpenMPI is used for testing, but the program should also works for MPICH.
- python: >=3.0, include numpy, scipy, and matplotlib.
- If you want to use the notebook, please install Jupyter Notebook.
Example:
-
Generate "neighbors.dat" in "./Python/neighbor_tmp" via
python ./Python/genNeighbors.py
- Note that the first line in "neighbors.dat" is the distances of neighboring atoms to the centering atom. The radiu-cutoff r_max can be set in the main function of "genNeighbors.py".
- The supercell size can also be set in the main function of "genNeighbors.py" by setting "n_repeats=[4,4,4]" to other values (by default, ).
- The "EPI.dat" are the energy model parameters for the pair-interaction model. They can be obtained from the linear regression of energy vs EPI. By default, it includes at most 6 neighboring shells.
-
Run Monte Carlo simulation via
cd ./C++ mpicxx -O3 -std=c++11 MonteCarlo.cpp mpirun -n 4 ./a.out
- The supercell size is obtained from the "neighbors.dat" mentioned above.
- Temperature parallelization is implemented with MPI. The following variables can be set in the main funciton:
- T_min and T_max: minimum and maximum temperatures.
- n_T: the number of different temperatures. parallelized with MPI.
- n_measure: the number of sweeps used for making measurement.
- n_discard: the number of sweeeps discarded between each measurement.
- You can save the output to a file with
Note that the outputs start with a bunch of TEST, and the only the last TEST carries out the Monte Carlo simulation
mpirun -n 4 ./a.out > ../Output/output.dat
-
You can also ignore the above steps, and simply run
./run.sh
- Fork the repository
- Create Feat_xxx branch
- Commit your code
- Create Pull Request