Biophysics II - Spring 2006


The focus of Biophysics II is molecular simulation methods. Molecular simulation is different from other simulation methods because it is the simulation of discrete particles, usually atoms. The atoms are represented as point masses. One important area of molecular simulation is molecular dynamics (MD). MD is the prediction of the trajectories of classical point masses in space as a function of time. These trajectories are created by solving the classical equations of motion as determined by Newton's Equation F=ma.


MISCELLANEOUS ITEMS


Viewing Molecular Dynamics Trajectories
Part of the fun and utility of molecular dynamics is the ability to directly see what is happening. Fortunately, there exist today a plethora of molecular viewing programs that not only display static structures, but also display molecular dynamics trajectories. A simple and free viewer that runs on most platforms is the protein data bank (PDB) formatted files and infer the bond connectivity based on empirical knowledge about protein structure. Alternatively, these programs can read pdb file and crdbox file to display a trajectory.

LECTURES


Lectures 1-4: These lectures focus on the numerical solution of Ordinary Differential Equations or ODE's. Numerical solutions to ODE's are important because the classical equations of motion, viz., Newton's Equation F=ma, is a type of Ordinary Differential Equation. After learning this material, you should be able to

1. Take an ODE and create a numerical finite difference algorithm to solve that ODE on a computer.

2. Understand what is meant by the accuracy of a numerical finite difference ODE algorithm.

3. Understand what is meant by the stability of a numerical finite difference ODE algorithm.

4. Convert a higher-order ODE to a system of first order ODEs.

5. Write down and implement the most common finite difference methods used to solve MD problems: Verlet, Leap-Frog, and Velocity Verlet. These can be applied to many ODEs, not just MD.

6. Use the method of Tuckerman, Berne, and Martyna to generate time-reversible, symplectic integrators for MD.


PROGRAMS


Verlet.C: A C++ program that implements the Verlet algorithm to solve the Harmonic Oscillator problem. To run this program, it must first be compiled. To compile this program, download it to a file called "Verlet.C". On most machines, the following command will work to compile this program: "g++ Verlet.C -o Verlet -lm". This command should produce an executable file called "Verlet". This file can be run from the command line: "./Verlet 0.01". This will run the Verlet program with a time-step of 0.01 and output the results to standard output. To plot the results, the output should first be placed into a file. This can be done on Unix-based machines with the following command: "./Verlet 0.01 > Verlet.out". This will place the output into a file "Verlet.out", which can be plotted.

A C++ program to implement the velocity Verlet algorithm is presented here. It exists in several files:

VEC3D.h
This is a basic vector class. It describes a three dimensional vector represented in a fixed Cartesian basis. It has basic operations such as adding and subtracting vectors, multiplying vectors by real numbers, and taking dot products.
MDUTIL.h
This is the header file for a set of simple utilities. In C++ every source file ending in a .C usually is accompanied by a .h file. These files contain the declarations of the various functions and classes needed by other parts of the program.
MDUTIL.C
This is the .C file corresponding to MDUTIL.h. This file contains routines that compute kinetic energy, find the closest distance that images of any two atoms make, and remove the center of mass motion of the system.
IO.h
This contains declarations for IO.C
IO.C
This contains declarations of routines for input/output (I/O). For example, this contains a routine to write the time and energies to a file.
FORCE.h
This contains declarations for FORCE.C
FORCE.C
This contains the subroutine to compute the particle forces.
VV_LJ.C
This is the main routine from which everything is called.

On most machines this code can be compiled with the command:

g++ -O3 MDUTIL.C IO.C FORCE.C VV_LJ.C -o vvlj -lm

This will produce an executable file "vvlj" that can be run from the command line.


ASSIGNMENTS


Assignment01: The objective of this assignment is to gain some experience in coding and running a simple numerical ODE solver.

Assignment02

The starting files needed for assignment 02: a.start, b.start, c.start and d.start. These files contain binary starting files with 4000 particles, 1000 particles, 100 particles, and 10 particles respectively.