User's Guide
The directory examples
contains a set of projects for
studying a single or many sphere-dimers in solvent.
Before trying any of the examples, set the environment with
cd nano-dimer && . examples/env.sh
which extends LUA_PATH
with the modules in the directory
nanomotor
.
Note that the number of steps is intentionally kept small to permit quick testing during development. Every example also provides a batch job script that may be used to run statistically significant simulations.
Running a simulation
Each project consists of two simulation phases, an equilibration and a production phase. In the equilibration phase, the nanomotors are placed randomly without overlap, the free space is filled with solvent particles of the given density and temperature, and the system is equilibrated until the concentrations of solvent species reach a steady state. In the production phase, structural and dynamical properties of the system are observed using steady-state averages and time correlation functions.
A simulation phase consists of a simulation script and a configuration file containing parameters for the simulation model and the observables. The results of a simulation are written to a single HDF5 output file in the H5MD format, which organises particle and observable data in a hierarchical structure of groups and datasets.
Equilibrate a system of a single sphere-dimer in solvent with
cd examples/single_dimer/equilibration && ./single_dimer.lua config.lua
The current step, total energy and remaining run-time are output periodically to indicate the progress.
OpenCL 1.1 CUDA 4.2.1
NVIDIA CUDA
NVIDIA Corporation
cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll
Tesla C2050
NVIDIA Corporation
cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
#0 0.2500008792 4.0s
#1000 0.25000087452767 1.3m
#2000 0.25000087466829 1.4m
#3000 0.25000087047698 1.4m
#4000 0.25000086889896 1.3m
#5000 0.25000087682256 1.4m
…
The results are written to the file single_dimer.h5
,
which may be analysed and plotted with Python scripts using h5py, NumPy, and Matplotlib. For interactive analysis,
IPython provides a shell and a
graphical notebook.
The total energy may be plotted with
../../../tools/total_energy.py total_energy.pdf single_dimer.h5
The center of mass velocity may be plotted with
../../../tools/center_of_mass_velocity.py center_of_mass_velocity.pdf single_dimer.h5
The mole fractions of the solvent species may be plotted with
../../../tools/species.py species.pdf single_dimer.h5
The production phase may be run with
cd ../production && ./single_dimer.lua config.lua
which reads the system state from the output file of the equilibration phase.
The production phase periodically snapshots the simulation state. Try
interrupting the simulation with Ctrl
+ c
:
#0 0.25000091676174 21.7s
#10000 0.25000091853318 1.6m
#20000 0.25000091383999 1.5m
^C
When the simulation is rerun, it picks up exactly where the snapshot was taken:
./single_dimer.lua config.lua
#20000 0.25000091383999 15.3s
#30000 0.25000091963694 1.3m
#40000 0.25000092646063 1.1m
#50000 0.25000091554534 55.3s
…
A snapshot file is written atomically, i.e., it is guaranteed to contain a consistent state of the simulation.