Molecular Simulations (06-640) – Fall 2012 Course website: http://github.com/jkitchin/dft-course
You can clone your copy with:
git clone http://github.com/jkitchin/dft-courseand update it with:
git pullInstructor: Prof. John Kitchin, DH A207F, 412-268-7803, jkitchin@andrew.cmu.edu TA: None
Office hours by appointment.
Class times and location: Monday and Wednesday, 3-4:20pm DH4201
Textbook: Density Functional Theory: A Practical Introduction, David Sholl and Jan Steckel.
We will also use the notes at http://github.com/jkitchin/dft-book very extensively. These notes are continuously being developed, so you may need to update your copy from time to time.
I will provide you with an account on our computing cluster for performing assignments in class. You will receive directions by email on using this account.
Class philosophy: A wide range of molecular simulations are used widely today to calculate the properties of materials. This course will focus on the use of density functional theory, a nearly first-principles molecular simulation method, to calculate the properties of molecular and solid-state material systems. We will focus on the most basic property, the total energy of the system, and how that can be used to derive other properties. We will also introduce tools for facilitating computational simulations including the use of editors, version control software, data analysis and visualization. The goal is to provide you with basic tools that you can use to build your own simulation work environment, rather than relying on the fixed capabilities of canned software.
Class objectives: By the end of this class you should be able to
- Understand the basic principles of density functional theory and how it can be used to predict the properties of materials.
- Setup and run DFT calculations on molecular, bulk and surface systems
- Use numerical methods to analyze molecular simulation data
- Visualize 1D, 2D and 3D simulation data.
- Critically assess articles from the scientific literature that utilize molecular simulation techniques.
You will be required to do some programming in python. That language is similar to Matlab, and we will be learning by examples in class. You will also be required to use a Linux computing environment, and tools that include emacs and git. The basics of these tools will be covered in class, but you may have to learn more about them on your own to gain proficiency.
You will need to bring your laptop to class. Your laptop should have an ssh client, and an X-server installed on it. If you run Linux or have a Macintosh, this probably automatically available. If you have a Windows PC, I recommend SSH Tectia (available at http://www.cmu.edu/computing/software/all/tectia/download.html), and the XMing server (http://www.straightrunning.com/XmingNotes/) You need the public domain release). This is what I use regularly.
The course will have some homework assignments, some presentations, and some projects. Due dates will be given in class.
You should identify a topic to perform a literature review on. You should discuss the topic with me before completing the project. You will prepare a presentation outlining the topic, the key results from the literature, and your critical review of the results.
You will be required to develop a reusable code module for some aspect of running molecular simulations. The code should be hosted at gitHUB, and part of your grade will be based on how well the module is documented and how well it works. You are responsible for choosing what this module will do, and you should discuss the project with me before starting it to ensure it has a proper scope. The project should take about 2 weeks to complete. The project could be an analysis module, a new equation of state, etc… A test example should be included to illustrate usage.
You will be assigned a class of oxides and a set of polymorph structures. You will compute equations of state for each polymorph and determine the relative stability of each structure. You will prepare a report summarizing your work, including convergence testing, and comparisons to available literature data (both computational and experimental). This project will take about 3-4 weeks. You will also prepare a presentation on your results and present it to the class.
You should identify a small computational project that utilizes the materials covered in class to solve a materials simulation problem. You will setup, run and analyze the calculations. You will prepare a written report summarizing the results, and present your results to the class. Your report should include a literature background discussion, and comparisons to literature where appropriate.
Here is an approximate class schedule. The days with NO CLASS are not likely to change. These days may be augmented with video lectures, or devoted to project work. The topics on a particular day may change.
Introduction - overview of DFT
Setup of laptops and Linux home directories. Intro to VC, editors, python Creating molecules, bond lengths, moments of inertia, etc…
NO CLASS - Labor day
Calculating energies, forces, geometry optimizations
NO CLASS
NO CLASS
Molecular properties, vibrational calculations, dipole moments, etc…
Molecular reactions, barriers
Intro to gilgamesh
NO CLASS
NO CLASS
NO CLASS Intro to bulk systems, unit cell optimizationLiterature review reports are due. What was the problem addressed. How was DFT used? What were the conclusions. Critical review of the approach. Could you repeat the work based on provided information?
The topic should be something you are interested in learning more about.
You should prepare a 2-5 page review of the paper. Please turn it in by sending me a pdf and the paper(s).
Bulk phase stability, atomistic thermodynamics
Bulk electronic structure, band structure, atom-projected dos MagnetismIntroduction to surface construction, relaxation, work function
Adsorption, adsorbate vibrations
NO CLASS
For mini-project 1 you should develop a small piece of python code that performs an “analysis” of a calculation results. Some examples include:
- Implement an uncertainty analysis on the estimated parameters in an equation of state, e.g. what is the 95% confidence interval on the minimum volume and bulk modulus. You may use any EOS and approach you want. You may use data from dft-book or you can calculate or use your own.
- Implement a linear programming approach to phase stability. You may use the formation energies for Cu-Pd alloys from dft-book, or other data, e.g. from http://materialsproject.org. Prepare a figure that shows what phases are present as a function of composition from pure Cu to pure Pd.
- Implement a 3-d graphic, e.g. figure out how to make the figure at http://www.halogenbonding.eu/img/fig1.jpg.
- Figure out how to plot the WAVECAR file. It is a binary file, and there is a fortran code at http://www.andrew.cmu.edu/user/feenstra/wavetrans/ which may be helpful. You could even use the fortran executable if you wanted. They main result is to get a picture of a wavefunction.
- Figure out how to plot the electron density as a “fog” rather than with isosurfaces. The figure should have the atomic geometry in it so you can see the electron cloud around the atom positions. There is an example at http://docs.enthought.com/mayavi/mayavi/auto/example_chemistry.html of what the figure should look like.
- Other similar projects are possible. Please discuss them with me in advance. I am especially interested in 3D graphic oriented projects, projects that explore parallel python for running lots of jobs, automating analysis, etc…
You must put your project on your gitHUB account, and send me the link to it. There should be a README.org file that explains the project, what it is, how to use your code, and any known limitations. There should be an example org-file that contains a description of a specific problem you are solving with your code, an example script that solves the problem, and the output of the script, including any figures. Your code should also work for me when I clone your git repository. Part of the grade for this assignment will be based on how easy it is to figure out what you are doing, how the code is organized, commented, etc…
NO CLASS
Electronic structure-reactivity relationships alloy reactivity coverage dependenceFor mini-project 2 you will contribute to a collaborative research project to compute equations of state for oxide polymorphs. You will compute the EOS for four oxide polymorphs using two different exchange correlation functionals. You must run this in your gilgamesh account home directory:
git clone git@github.com:KitchinHUB/oxide-polymorphs.gitThis will ask you for your gitHUB password. If it did not, you did the wrong thing. You will have to make sure that you have a gilgamesh ssh key setup for github. Follow the directions at https://help.github.com/articles/generating-ssh-keys.
If you see this:
[06640@gilgamesh ~]$ git clone git@github.com:KitchinHUB/oxide-polymorphs.git Cloning into oxide-polymorphs... Permission denied (publickey). fatal: The remote end hung up unexpectedly
then you have not setup your ssh keys correctly. Follow the directions above. Here is what the commands I ran and their output to setup my keys looked like:
[06640@gilgamesh dft-course]$ cd [06640@gilgamesh ~]$ git clone git@github.com:KitchinHUB/oxide-polymorphs.git Cloning into oxide-polymorphs... Permission denied (publickey). fatal: The remote end hung up unexpectedly [06640@gilgamesh ~]$ cd .ssh [06640@gilgamesh .ssh]$ ls known_hosts [06640@gilgamesh .ssh]$ ssh-keygen -t rsa -C "jkitchin@andrew.cmu.edu" Generating public/private rsa key pair. Enter file in which to save the key (/home/06640/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/06640/.ssh/id_rsa. Your public key has been saved in /home/06640/.ssh/id_rsa.pub. The key fingerprint is: 9f:49:e4:62:89:54:8d:a3:c5:e6:47:18:72:a4:ce:68 jkitchin@andrew.cmu.edu [06640@gilgamesh .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtuCFWLTeXjRpRfxZCBntg4zYV1025bHV3FlYRF3DUvidoxLL9oeGLMm+ZconMRB48o4Cn+BtuwKsFkKWhr2dXXc64e5MUaks+qhN6TUkovDMjvw== jkitchin@andrew.cmu.edu [06640@gilgamesh .ssh]$ cd [06640@gilgamesh ~]$ git clone git@github.com:KitchinHUB/oxide-polymorphs.git Cloning into oxide-polymorphs... Enter passphrase for key '/home/06640/.ssh/id_rsa': remote: Counting objects: 7821, done. remote: Compressing objects: 100% (4470/4470), done. remote: Total 7821 (delta 3602), reused 7460 (delta 3258) Receiving objects: 100% (7821/7821), 151.80 MiB | 5.82 MiB/s, done. Resolving deltas: 100% (3602/3602), done. [06640@gilgamesh ~]$
Then you need to go to https://github.com/settings/ssh to upload your key.
It will take a while (several minutes) to download everything.
In the newly formed oxide-polymorphs you will find instructions in 06640-f12-oxide-polymorphs.org. In that file you will find instructions on what to do, and how to do it.
DFT+U / hybrid functionals? Advanced topics I?Advanced topics II?
Advanced topics III?
You will choose your final project. The scope is up to you, and you should outline a proposal of what you want to do, how many calculations you think need to be done, and what you will learn from it. Discuss the proposal with me and then, get to work!
Here is what you will be graded on:
- A written report (50% of the final project grade) describing a) the problem you chose b) what is known about the problem (with proper citations to the literature that include a url or doi). c) Your approach to the problem, e.g. what calculations were done and why, including where the calculations are. d) The results e) your conclusions.
You will email me a pdf containing the report by the time the final presentations are over on December 10, 2012. This report does not need to be long, but it must be complete, well-organized, well-written, etc… Please name the report <username>-final-project-report.pdf where you replace <username> with your username.
- An oral presentation (50% of the final project). You will have 8 minutes to present your project to the class. Due to the number of students that have to present, the time will be strictly enforced. You lose a letter grade for going over. There will be 2 minutes of questions.
Here is what I suggest for your slides. You should not have more than six slides (or automatic loss of letter grade) to present. you can have as many backup slides as you want.
- title
- introduction to the problem
- methods
- results 1
- results 2
- conclusions
This will give you 1-2 minutes to talk per slide.
Your job is to effectively communicate your project goal, results and conclusions in this time frame. You need to send me the slides (powerpoint or preferrably a pdf) prior to time of the final exam slot so I can load them onto a computer.
The final presentations will be given in DH 1112 on Mon. December 10 5:30p.m.‐ 8:30p.m.
We will go in alphabetical order by andrew id, and stay until they are done.