The code can currently perform either a NVE (constant number, volume and energy) micro-canonical simulation or a NVT (constant number, volume and temperature) simulation. For the later case, a variety of standard thermostat methods are implemented. The initial velocities can be either read from the file data/initial_velocity or are set randomly based on an input temperature. The integration is performed via the ‘velocity Verlet’ algorithm (see any book on MD simulations) with a fixed time step. Intermediate atomic positions are output to the file ‘md_output’ at every time step. The masses are set with the arg parameter atom_mass_xxx (see below).
This is called by the statement “‘’if (run_moldyn(cfg)) call diary(cfg)’‘“ in socorro.f90. run_moldyn returns a logical that indicates whether any modifications to cfg have occurred. If an MD simulation is performed, the cfg returned is that for the final time step.
- atom_mass_xxx - This is the mass of the atom in amu.
- Here xxx is replaced by the tag used in the crystal file. There should be one line like this for each type. The default is to assume a mass of 1 amu.
- md_desired_temp - Target temperature for the isothermal simulation methods.
- default: md_init_temp
- md_gen_velocities - Specify the method for initializing velocities.
-
YES Determine the initial velocities based on md_init_temp. (default)NO Read the initial velocities from the file ‘initial_velocity’ in the run directory. This file contains a line with the x, y, and z velocity for each atom on a separate line. The order of the atoms is assumed to be the same as in the crystal file.
- md_hoover_mass - Hoover methed effective mass.
- It is the effective mass associated with the additional coordinate added to control the temperature. It may need to be adjusted by trial and error.
default: 1000. - md_init_temp - Temperature used to define the initial velocity distributions.
- The velocities are selected from a Maxwell-Boltzman distribution. Then they are adjusted to give zero total momentum and rescaled to give the exact temperature requested. default: 0
- md_method - Specify the molecular dynamics method to be used.
- NONE (default) - do no MD.
NVE perform a NVE simulation using a fixed time-step velocity Verlet algorithm.NVT_RESCALE perform a NVT (isochoric,isothermal) simulation using a fixed time-step. The temperature control is through periodic rescaling of the velocities to achieve the desired temperature.NVT_ANDERSON perform a NVT (isochoric, isothermal) simulation using a fixed time-step. The temperature is controlled via a stochastic method due to Anderson (see H C Anderson, J. Chem. Phys. 72, 2384 (1980)). At each time step and for each atom, a random velocity from a Maxwell-Boltzman distribution replaces the velocity with a probability give by 1/temp_freq.NVT_HOOVER perform a NVT (isochoric, isothermal) simulation using a fixed time-step. The temperature is controlled using the Hoover implementation of the Nosé thermostat. (See, for example, “Understanding Molecular Simulations” by Frenkel and Smit). The rate of energy flow between the ions and the heat bath is controlled by md_hoover_mass.
- md_skip_steps - Number of time steps to ignore before starting to compute averages.
- In other words (skip_steps)*(time_step) is an equilibration time. default: 0
- md_steps - Number of time steps to integrate the equation of motion.
- default: 0
- md_temp_freq - Parameter that determines the frequency of velocity modifications for the isothermal simulation methods.
- --<NVT\_RESCALE= - The velocity is rescaled every md_temp_freq time steps.
NVT\_ANDERSON, it give the inverse of the probability that an atom will get a random velocity in a given time step.
- md_time_step - Time step used for the MD. See note below regarding units.
Notes regarding units
The convention in the code is that energies are in Rydbergs and that distances are in Bohrs. I have made the choice to have the code work with the nuclear masses in units of the electron mass - keep in the spirit of atomic units. For convenience, when masses are entered, they are assumed to be in amu (atomic mass units) and are converted in the code to electron masses. Having made this choice for the mass unit, the choice of the time unit is now fixed. The unit of time is 3.421E-17 sec. Since a typical MD time step is on the order of a few femtoseconds (fs), the typical time steps will be on the order of 100 in the units used here.
There is a subtlety in the determination of the temperature. In classical thermodynamics (MD is classical in the treatment of the ionic motion), each degree of freedom has a kinetic energy of kT/2. The issue is related to the number of degrees of freedom. If the MD method used conserves the total momentum, then the number of degrees of freedom is 3(N-1). If the total momentum is not conserved, the number of degrees of freedom is 3N. The NVE and NVT_RESCALE methods conserve the total momentum. (Actually, for NVT_RESCALE the total momentum remains zero if it starts out zero. The initial velocities are generated in the code to have zero total momentum.) For these methods, the code uses 3(N-1) degrees of freedom to determine the temperature. For NVT\_ANDERSON, the total momentum is not conserved, so the code uses 3N degrees of freedom to compute the temperature.
« Energy Minimization | TOC | »