Running simulations

To run simulations with SuSMoST one needs

  • Python interpreter with installed SuSMoST Python packages

  • An adsorption model

  • A Python script with simulation code

SuSMoST Python packages installation is described in Installing SuSMoST. Adsorption models are essentially directories with several files. They can be downloaded from the Downloads page, or found in a models directory of SuSMoST installation. Most of models included in SuSMoST contains example.py scripts with exemplar simulation code.

The simplest simulation script (NH3/V3C2 model)

For example lets try to do simulation for the NH3/V3C2 model. First of all lets activate SuSMoST’s Python environment:

$ source ve/bin/activate

Then change your current directory to the model’s directory:

$ cd models/NH3-V3C2

Then launch the example.py script:

$ python example.py

If everything has been done right, in some second you will see the output:

2.7487196394264197

This is a natural logarith of the model’s partition function per site. If you are interested in details, take a look at the source of the example.py script.

Along with the simple example.py script the NH3-V3C2 directory also contains more complicated and usefull example-isotherm.py. It prints out surface coverages for a sequence of NH3/V3C2 adsorption complex energies:

-0.3 0.9554971864503797
-0.24 0.8563763324198087
-0.18 0.7513212340924432
-0.12 0.6294038161599375
-0.06 0.5028657967144572
0.0 0.3445965667110924
0.06 0.1522997166803156
0.12 0.028102706082451023
0.18 0.0030560681307699716
0.24000000000000005 0.00030207886450439256
0.3 2.9554309932887306e-05

Here is an isotherm plot from these data:

The simplest simulation script with MPI (CO/Pt(111) model)

Simulations scripts that use parallel tempering algorithm should be launched appropriately. An example of such script is the example.py file in CO/Pt(111) model. To launch this script you need activate Python environment with SuSMoST and set working directory to the model directory, just like in previous example:

$ source ve/bin/activate
$ cd models/CO-Pt111

But you need to launch such scripts via mpiexec command with number of processes that is equal to number of parallel replicas requested by the script. Number of replicas correspond to the lenght of temperatures list that is passed to the :py:func:make_metropolis function. The models/CO-Pt111/example.py script requests four temperatures, hence it should be launched in this way:

$ mpiexec -n 4 python example.py

Successfull simulation should print out statistical digest about simulation. Like this:

Temperature # 0 = 2.0
        Parameter # 0 : 'coverage'
                Sample size      1000
                Sample mean     0.307809
                Sample stdDev   0.000183
                Autocorrelation function parameters:
                        First zero time:         30
                        Exponential time:       10.556 (RMSE=0.038)
                        Integrated time:        27.107
                Effective sample size integrated        36.891
                Effective sample size exponential       47.366
                Sample mean stdDev      0.000
        Parameter # -2 : 'Energy'
                Sample size      1000
                Sample mean     -0.003104
                Sample stdDev   0.000000
                Autocorrelation function parameters:
                        First zero time:         24
                        Exponential time:       8.418 (RMSE=0.054)
                        Integrated time:        14.961
                Effective sample size integrated        66.839
                Effective sample size exponential       59.399
                Sample mean stdDev      0.000
        Correlations between parameters:
                 1.000 0.865
                 0.865 1.000
Temperature # 1 = 8.965331703353698
        Parameter # 0 : 'coverage'
                Sample size      1000
                Sample mean     0.306266
                Sample stdDev   0.001398
                Autocorrelation function parameters:
                        First zero time:         66
                        Exponential time:       16.284 (RMSE=0.030)
                        Integrated time:        23.136
                Effective sample size integrated        43.223
                Effective sample size exponential       30.704
                Sample mean stdDev      0.000
        Parameter # -2 : 'Energy'
                Sample size      1000
                Sample mean     -0.003090
                Sample stdDev   0.000006
                Autocorrelation function parameters:
                        First zero time:         93
                        Exponential time:       26.992 (RMSE=0.028)
                        Integrated time:        35.761
                Effective sample size integrated        27.964
                Effective sample size exponential       18.524
                Sample mean stdDev      0.000
        Correlations between parameters:
                 1.000 -0.694
                 -0.694 1.000
Temperature # 2 = 10.695830923113437
        Parameter # 0 : 'coverage'
                Sample size      1000
                Sample mean     0.304536
                Sample stdDev   0.002205
                Autocorrelation function parameters:
                        First zero time:         49
                        Exponential time:       11.973 (RMSE=0.040)
                        Integrated time:        12.767
                Effective sample size integrated        78.325
                Effective sample size exponential       41.762
                Sample mean stdDev      0.000
        Parameter # -2 : 'Energy'
                Sample size      1000
                Sample mean     -0.003076
                Sample stdDev   0.000010
                Autocorrelation function parameters:
                        First zero time:         101
                        Exponential time:       24.256 (RMSE=0.027)
                        Integrated time:        28.377
                Effective sample size integrated        35.240
                Effective sample size exponential       20.613
                Sample mean stdDev      0.000
        Correlations between parameters:
                 1.000 -0.615
                 -0.615 1.000
Temperature # 3 = 12.0
        Parameter # 0 : 'coverage'
                Sample size      1000
                Sample mean     0.302917
                Sample stdDev   0.002512
                Autocorrelation function parameters:
                        First zero time:         42
                        Exponential time:       10.671 (RMSE=0.042)
                        Integrated time:        12.250
                Effective sample size integrated        81.634
                Effective sample size exponential       46.855
                Sample mean stdDev      0.000
        Parameter # -2 : 'Energy'
                Sample size      1000
                Sample mean     -0.003066
                Sample stdDev   0.000012
                Autocorrelation function parameters:
                        First zero time:         63
                        Exponential time:       17.843 (RMSE=0.036)
                        Integrated time:        21.985
                Effective sample size integrated        45.485
                Effective sample size exponential       28.022
                Sample mean stdDev      0.000
        Correlations between parameters:
                 1.000 -0.667
                 -0.667 1.000
Recommended temperatures: [2.0, 8.119878894794397, 10.375217380314396, 12.0]

Parallel tempering simulations also generate surface samples as XYZ files. By default these samples are stored in files named traj_T.xyz, where T is the temperature of the sample. Here are samples from CO/Pt(111) simulations we ran above.

t1

t2

t3

t4