This introduction pertains to a course I taught at the graduate level at Drexel in the 2003-2004 academic year.
Course Objectives
The objective of this course is to provide graduate students with a basic understanding of molecular simulation. The level of understanding we will target involves both the skills to critique current molecular simulation research in the students' respective fields and to develop simple simulation programs that may contribute to students' original research.
Course Outline
Prerequisites
Calculus and differential equations through the undergraduate level. Undergraduate physical chemistry (rudimentary quantum and statistical mechanics). Some knowledge of programming will be helpful. Access to either a Windows or Linux PC is required.
Course Policies
Recommended homework exercises will be suggested. The grade is based on a final project of the student's choice. A description of the project assignment appears in Sec. 8. Participants will be granted user accounts on the instructor's Linux cluster, syrinx.chemeng.drexel.edu.
Introductory Remarks
In this course, we are concerned with systems of many particles. Such a system models a chunk of matter, and the particles are its contituents. Statistical mechanics allows us predict the macroscopic properties and behavior of matter when conceptualized as collections of many ( 10) particles, and it is the central theme of this course. As we will see, the formalism of statistical mechanics allows straightforward analytical treatment of only a few simple systems. The primary motivation behind molecular simulation is to apply the framework of statistical mechanics in the prediction of macroscopic behavior for relatively ``complicated'' systems. The two major branches of molecular simulation we will consider are (1) Monte Carlo and (2) molecular dynamics.
Statistical mechanics is a broad subject, and we will restrict ourselves in this course to stat mech at the introductory level. The lessons of elementary stat mech will be reinforced time and time again throughout the course as we explore aspects of molecular simulation techniques. Stat mech is not normally taught to engineering students outside a general course on physical chemistry. (Undergraduates in physics or chemistry might get a one or two course series on statistical mechanics.)
A second component of this course is programming. Most engineering students take a programming course (though this is not true for our unfortunate tDEC students), so some exposure to computer programming is expected as a prerequisite. It will be necessary to discuss certain simulation algorithms using ``pseudo-code'' examples, or even examples written in C or FORTRAN. The level of code presented in this course will generally be sufficiently basic such that novices can understand it line by line. For example, see if you can predict what the following C program does:
#include <stdio.h> int main () { int i; for (i=0;i<100;i++) printf(``Hello, I am number %i\n'',i); }If it looks somewhat mysterious to you, don't worry. Part of this course will be explaining how code works. By the end of the course, you would be able to write the above program (perhaps in FORTRAN) had I told you to write a program to output the numbers 0 - 99. It must be emphasized at this point that I do not intend to turn you all into expert coders. This is a survey course from which I hope you gain an accurate picture of the field of molecular simulation from which you can begin your own exploration. In order to achieve this goal, it is necessary to do some minor work with actual code.
A closely related aspect of this component is the practical matter of how one works with simulation code. My preference, and therefore the manner in which I teach the course, is to use a Unix-like environment, as opposed to Windows. It should be emphasized that the concepts and ideas that form the backbone of this course are not operating system-specific. However, the implementation of those ideas and concepts, as I hope you will see, is straightforward once you know how to write, compile, and run simple programs at a Unix prompt. Again, this will be at a basic level; this is not a programming course.
Much of this course is based on the book Understanding Molecular Simulation by Daan Frenkel and Berend Smit, [1] two chemical engineers from Amsterdam. The book's website, http://molsim.chem.uva.nl/frenkel_smit/, is an excellent resource for FORTRAN source code. There are several other books which I have used on occasion, [2,3,4] the most useful of which was Computer Simulation of Liquids by Allen and Tildesly. [2].