- Course: PHY480/905, MSU
- Instructor: Phil Duxbury (duxbury@pa.msu.edu)
- TAs: Connor Glosser (glosser1@msu.edu), Jenni Portman (jenniportman@gmail.com)
- Need help?
- Open an issue ticket for the project's repository
- Office hours
- Connor: Monday, 2pm - 4pm
- Jenni: Tuesday, 2pm - 4pm
- Email for 1-on-1 help, or to set up a time to meet
- Exchange weeks:
- @MSU: February 2 - February 6
- @TU Delft: May 11 - May 15
ICCP develops students’ ability to write computer programs for simulating many-body classical and quantum physics systems. Groups choose either Fortran 90 or C++ as their coding language. The course focuses primarily on projects and learning with Socratic style discussions. We encourage students to think of their own solutions to setting up the simulation problems and coding them. All students do the same warm up project (Monte Carlo for an Ising model) and the same first joint project which involves writing a molecular dynamics code for simulation of Argon. In the second part of the course, students work on writing an advanced Monte Carlo code chosen between simulation of polymer conformations, quantum Monte Carlo or cluster Monte Carlo. For the final project(s) students may choose from among many possibilities offered by the instructors, and may even suggest their own project should they wish to investigate other areas of interest. Each group works on a different project and makes a presentation on the last day of the course. As the course involves an exchange with TU Delft in the Netherlands, students from MSU receive $300 to assist with their air ticket. Often MSU graduate students can cover the rest of their airfare from either their research group, from the College of Natural Science or from the Graduate School. The Delft University of Technology covers hotel costs and offers a per diem of about 20 euros while students visit Delft to participate in the course.
- Basic programming skills in a language like Fortran, C, or C++
- Working understanding of numerical methods
- Understanding of quantum and statistical mechanics at the junior/senior undergraduate level
These won't be enforced by the instructor, but you'll likely find the course difficult without understanding them.
- Project 0: Ising model
- Introduction to Fortran. Investigation of ferromagnetic dependence on temperature. The Metropolis algorithm. Lattices & boundary conditions.
- Project 1: Molecular dynamics
- Numerical integration of the EoM for a model of argon gas. Minimum image criterion and periodic boundary conditions in a continuum. Free energy, pair correlation, and temperature calculations. Data blocking and energy fluctuations.
- Project 2: Advanced Monte Carlo
- Ising model revisit: the Wolff algorithm, critical phenomena, and data structures
- Polymer conformations: the Rosenbluth algorithm(s), convergence, on- and off-lattice models
- Variational Monte Carlo: the He/H2 ground states
- Project 3: Students' choice
- Lattice Boltzmann
- Tight-binding
- Percolation
- DTFD quantum mechanics
- etc.
| Project | ICCP | PHY480 |
|---|---|---|
| Project 0: Ising model | Friday, January 30, 2014 | Wednesday, February 18, 2014 |
| Project 1: Molecular Dynamics | Sunday, March 1, 2014 | TBA |
| Project 2: Advanced Monte Carlo | Sunday, March 29, 2014 | TBA |
| Project 3: Students' Choice | Sunday, May 3, 2014 | TBA |
- Projects & reports – 75%
- "Final" - 25%
- Students participating in ICCP give a final presentation at the end of their visit to TU Delft
- Otherwise, students have a one-on-one oral examination during finals week
- Ising model
- Argon molecular dynamics
- Advanced Monte Carlo methods
- Extra project resources
To submit a completed project, simply issue a pull request on the original repository before the due date. Your branch should contain:
- The source code you developed to solve the problem in the
src/directory and, - A written report of your findings in the
report/directory, typeset in LaTeX
Each project repository contains a skeleton LaTeX file for you to fill in with your report. Your report should follow the style of a research paper (abstract, intro, etc.) and should contain about five or six pages. Please remember to include all figures in your submission branch!
- To start, fork a project repository
- Clone the repository to your computer.
- Modify the files and commit changes to complete your solution.
- Push/sync the changes up to GitHub.
- Create a pull request on the original project repository to turn in the assignment. You can continue to submit changes after you create your pull request -- simply commit and push them.
Your pull request should contain both your project and LaTeX source code in separate sub directories; e.g.
molecular-dynamics/
├── report/
│ ├── figures/
│ │ ├── energy.pdf
│ │ └── pair_corr.pdf
│ └── md_report.tex
└── src/
├── Makefile
├── molecular_dynamics.f90
└── parameters.f90
Please do not include executables or compiled PDFs (however we need the PDFs corresponding to your images to produce your document, so you should absolutely include them!) We will compile both your program and your report on the HPCC, so please test everything there before submitting.
In case you need a refresher...
- PHY201 – Introduction to Fortran
- Fortran 90 reference card
- Useful Unix commands
- Become an SSH ninja
- The LaTeX Wikibook
- sharing code snippets: gist.github.com
- asking questions: Stack Overflow
- Git and GitHub
- Official GitHub Help
- Recommended resources
- Git: The simple guide (EN)/(NL)
- GitHub Pages
From MSU's statement on Academic Integrity:
Plagiarism (from the Latin plagiarius, an abductor, and plagiare, to steal) defined by the White House Office of Science and Technology Policy on Misconduct in Research as “ . . . the appropriation of another person’s ideas, processes, results or words without giving appropriate credit.” At MSU, General Student Regulation 1.00 states in part that “no student shall claim or submit the academic work of another as one’s own.” (For the complete regulation, see Protection of Scholarship and Grades.) Plagiarism may be accidental or blatant and there is even self-plagiarism. However, students are held to the same standards whether or not they knew they were plagiarizing or whether or not they were plagiarizing themselves or someone else.
Of course you're free to collaborate with others while working on your projects--that's the whole point of ICCP, after all--just give credit where credit is due. Please respect the terms of use and/or license of any code you find, and if you implement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.
This work and all other materials under https://github.com/ICCP are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (where applicable). Adopted from the advanced-js course syllabus found here.
