softmatter:Glotzilla Simulation Package
The Glotzilla package is a set of simulation and analysis modules written primarily in C++. The goal of the development of this package was to create a set of highly optimized simulation codes capable of studying the behavior of simple fluids, bead spring polymer chains, arbitrary shaped nano/micron sized colloids, polydisperse colloids, and hybrid systems therein. The code was designed to take advantage of object oriented programming techniques to allow for easy recycling of code, as well as pre-compiler directives to create a highly streamlined executable. The design of this code allows substantial cross-linking between libraries and modules, allowing for rapid development of simulation and analysis routines.
There exist two main modules in Glotzilla, the "Monte Carlo" module and "Dynamics" module. The Monte Carlo module is capable of performing Metropolis MC simulations of systems of spherical or arbitrary geometry, and particles with patterned surfaces. The Dynamics module is capable of performing simulations of systems composed of spherical beads, whether in mono/binary/etc. mixtures or as hybrid units such as polymers, arbitrary polyhedra, or patterned and tethered particles. The Dynamics module includes several integration routines: NVE Molecular Dynamics (MD), NVT MD using the Berendsen Thermostat, NVT MD using the Nose-Hoover Thermostat, NPT MD using the Martyna Barostat, NVT Brownian Dynamics (BD), and NVT Dissipative Particle Dynamics (DPD). These main modules link to a general library that provides access to standard math routines as well as classes such as the "cell list" class and "neighbor list" class.
Other modules that have been created:
- crystal_detector used to calculate crystalline bonds via spherical harmonics
- YLM_analysis for detecting local structures via spherical harmonics and residual minimization
- chi4 a method to calculate a four point correlation function
- radius_of_gyration for calculating the radius of gyration scalar and tensor
- radial_distribution_function for calculating the radial distribution function (also known as pair correlation function or g(r))
- mean_square_displacement for calculating the Mean Squared Displacement
- crystal_maker for creating arrangements of FCC, BCC, SC and other such arrangments of particles or objects
- strings for determining if String-Like Motion is present
These modules also link to the general library that provides access to classes such as the "histogram" class for easily histogramming data, and the "loader "class for reading in single files or entire directories of data for processing, in addition to access to "cell list" and "neighbor list" classes previously described. These analysis modules can be used standalone or can be easily called from within any other module, including the MC and Dynamics modules. For example, the Dynamics code initializes the system using the "Crystal Maker" module, a module which is capable of creating ordered arrays of particles. The ability to access the routines in any other module is as simple as writing an "#include" statement.
An additional example of this integration can be seen in the "Umbrella Sampling" module for performing biased MC simulations and the "Forward Flux Sampling" module for sampling transition states. Both of these modules link to the Monte Carlo code to perform their functions. This ensuring that all variants of MC simulation are utilizing the most up-to-date and efficient version of the MC code, with minimal reprogramming of those modules.
The Glotzilla package also includes a structural library containing coordination and spherical harmonic data for local clusters, such as a Frank Kasper polyhedra and simple crystalline clusters. This library also contains overall histograms of spherical harmonic expansions of a wide range of bulk systems ranging from BCC crystals to dodecagonal quasicrystals. The YLM_analysismodule, for instance, links to this structure library and performs least squares comparisons to these reference structures to determine the local structure of a particle and the bulk ordering of the system. Radial Distribution Functions are also cataloged, allowing for yet another metric of structural comparison.
The Glotzilla package includes a module for visualizing simulations in realtime, written using the GLUT framework for openGL. A graphical front end has also been created, written using the Cocoa framework, for easy, interactive use of the visualizer and data-management. View Visualizer User Manual
The Glotzilla framework includes a straighforward graphical user interface (GUI) that allows the user to configure and compile simulations without necessarily understanding unix or C++. View Glotzilla GUI User Manual
Glotzilla currently runs with full features under Mac OS X. It also runs on Linux without the GUI or visualizer. There is no version currently available for Windows, and a Windows port is not forthcoming in the near future. If you are having trouble running Glotzilla, see Running Glotzilla FAQs
Direct Glotzilla related questions to firstname.lastname@example.org.