# Computational Physics - Outline and information

for PHY480, PHY832 and ICCP

** Instructor: ** Phil Duxbury (BPS 4208, duxbury at pa.msu.edu)

** TAs: ** Connor Glosser, Jenni Portman

** First lecture:** 1-2pm Tuesday Jan. 14 or 1-2pm Wednesday Jan. 15 (choose one) BPS1240

** Regular lecture times:** 12-1pm Tuesday, 1-2pm Wednesday (same lecture twice) BPS1240

** Laboratory times when TAs or lecturer will be there: ** 12-3pm Tuesday, 1-4pm Wednesday, BPS1240

** Additional times when BPS1240 will be open: ** Thursday 10-12, Friday 10-11pm, 1-2pm

We will add further times as needed.

** Coding notes: Read this first! **
A must read: Programming notes for the ICCP,
including brief introduction to coding and unix - mostly Fortran but also some thoughts about other languages
Here is a new and improved version of the coding notes by Connor
Latex file

** International option (PHY832 students and some PHY480 students) **
The international option is in collaboration with
Technical University Delft (TUDelft) in the Netherlands. In the international option
coding may be done in either C++ or Fortran 90, the choice being made by
each group of students.

Co-instructor for the International option: Prof. Jos Thijssen of TUDelft who will visit with nine
dutch students Feb. 1-7.

** Course Outline **

This course emphasises developing Fortran code and using it to simulate
several different systems of broad interest in physics. Students may also use C++/python but
the coding discussions will mostly be based in Fortran. The main
projects are based on the following methods / problems which form the basis of
computational physics:

Monte Carlo Methods.

Molecular Dynamics Methods

TBA

TBA

### The projects

** Getting to know Fortran: **

To get started you should read the coding notes above and/or do the first two worksheets in the
introduction to fortran course. There you will find a summary of Fortran syntax,
some examples and a more comprehensive introduction to Fortran 90. A summary
of linux commands is also there.

** First Project - Non-ICCP**

**
MC methods I and Outline of the first project **

**
MC methods II**

All students need to hand in the computer code they developed to solve this problem.
In addition, PHY480 students need to write a report on this project. Your report should be
written latex with the figures
embedded in the text. Here is a template to use.
** mclectures1.tex**

This contains a figure and is called in such a way that the
figure needs to be in the same directory as the .tex file. Here is the figure.
** harding2.jpeg**

.
To create a .pdf file from the .tex file you only need to enter "pdflatex mclecture1.tex"
to create a file called mclecture1.pdf. There are many good online introductions
to latex. One aspect not required for the first project report is the
use of a bibliography file. That will be introduced in the second
project report.

** Second project: PHY480, Not-ICCP - MD for Argon - Due April 14th (writeup in .tex, using .bib file)**

Background that you might find useful.

** mdlecture1.pdf**

Introduction to MD and outline of the second project.

** twoparticles.f90**

A fortran 90 code for MD simulation of two particles in LJ potential

** fcc.f90**

A fortran 90 code to generate an fcc lattice

** fcc.nb**

A Mathematica code to visualize the fcc lattice

** mdlecture2.pdf**

More information on the MD project and some useful coding tricks.

** Second Project - ICCP: Due around April 14**

** Advanced Monte Carlo Methods: **

The three
options are outlined in the lecture notes
** ICCPProject2.pdf**

More detailed background to the three options will be posted soon.
Background to the polymer MC project (Option 1) is given in the

** Polymer physics and algorithms Review**

Background to the Ising cluster Algorithm project (Option 2) is given in the

** Ising MC paper**

Background to the Quantum Monte Carlo project (Option 3) is given in the

** Variational QMC lecture notes.**

** Original Scanned Version (large file)**

** Third Project - Both PHY480 and ICCP: Due Monday May 5 at 5pm (no extensions as I have to submit grades May 6).**

Here is a summary of the four options available for the ** third project **

* Background for each of the four options is as follows: *

Tight binding project (Option 1);

A paper
on tight binding for graphene.

A paper on localization in quantum percolation.

A paper on localization in the Anderson model.
a review of localization

The Quantum Spin Chain Problem (Option 2)
The Schrodinger Dynamics Problem (Option 3)
Lattice Boltzmann (Option 3.5)
(this is probably too long for the time available unless Connor helps you a lot)

### Course evaluation

For each project you will write a report, which contains
the objective of the calculations, your code, and the results you generated
using your code. These reports constitute 75% of the grade. For PHY480 students there will be a 1 hour final
lab exam based on your projects. . These meetings will be held
in BPS1240. During your "final" meeting we will discuss your project reports and codes that
you hand in, and you will be asked to run your algorithms to illustrate
some issues. In addition you will be asked to make relatively minor modifications
of your codes to calculate new things. For PHY832 students the final project in Delft will make
up the other 25% of your grade.

### Reference materials

PHY201 - introduction
to fortran. This is the introductory Fortran course. The worksheets have some sample
programs.
Fortran 90 reference card
Here is a more complete
summary of Fortran 90 which we shall refer to during the course. It comes from the
www site
Here is a list of
useful unix commands and an introduction to
Linux Computing in BPS1240.
The worksheets for the
PHY201 might be also useful

### Recommended text

Computational phyiscs, J.M. Thijssen (Cambridge University Press,1999)
### Other useful books

Introduction to computer simulations methods, Second Edition.
H. Gould and J. Tobochnik (Addison-Wesley,1996)
Molecular modeling for beginners, A Hinchcliffe (Wiley,2003)

"An introduction to Fortran 90 for scientific computing", by James M. Ortega.

A more advanced book is

"Fortran 90/95 explained" second edition. by Michael Metcalf and
John Reid. Oxford University Press, 1999.
A nice (free) online book containing Fortran 77, Fortran 90 and C++ codes for
a wide range of useful procedures is
Numerical recipes online . They are charging for later editions.

### Some other useful links

Fortran tutorial

Python reference card
C++ reference card

Michael Feig's Lecture notes on biomolecular
simulations using CHARMM. Read this to learn how to define the energy functions.

Review of Monte Carlo
Methods for proteins (.pdf file). Read this to learn how to choose the Monte Carlo moves.

The rational behind force fields

The CHARMM22 force field for proteins

Review of simulation
methods for macromolecules by Kurt Kremer (.pdf file)

** c++ or f90 - you make the call**

C++ or Fortran for scientific computing

f90 is better, including efficiency comparisons