Mini-Project 1: Computational Investigations
The purpose of the computational investigation mini-project is to set up our own laboratory on a chip, by equipping our computers with the tools required to calculate the energetics of arbitrary systems of matter, as well as equipping ourselves with the skills required to perform and interpret these computer experiments.
Just as in the experimental laboratory, the appropriate tools and equipment must be available to address the topic at hand, and we must be competent in using those tools and equipment, so too in the computational laboratory.
The particular computer laboratory tools we will use include the Atomic Simulation Environment (ASE), a Python package that convenient unifies several atomistic models, including classical molecular dynamics (MD) and density functional theory (DFT), as well as a suite of tools to build and manipulate atomic structures to be passed to these models. We will use Ovito, a visualization and analysis package, to graphically and analytically understand our models. We will use MATLAB to execute analyses developed by other researchers. And we will use plain text and Microsoft Excel to manually prepare data files to model simple systems, because in many real cases it is easier to manually prepare atomistic models in plain text than in a package like ASE, and in all cases, it requires a clearer understanding of the material structure and problem under consideration.
The problems to solve in this mini-project are intentionally stated at a high level, without a lot of detailed instruction, and in many cases asking you to calculate a parameter without explaining a motivation to do so. The reason these 4 problems is a 5 week assignment is that there are many smaller questions within these questions. Ideally, most or all of these smaller questions you find along the way (and their answers) will make it into your description of your solution to the problem. Responses to each question should take the general form of an investigation, that is, a restatement of the question (this could be the Title), an explanation of the context of the problem – that is, “why” are we doing these things (Introduction), a listing of the particular techniques to be used (Methods), the data that have been calculated (Results), and the synthesis of the data into findings (Conclusions).
We will guide you through the process of acquiring the technical skills required to answer these questions. Inevitably, as with all questions we have not solved before, difficulties will come up. Most of these hurdles we will overcome, either by taking some time to sit with the problem and figuring out how on our own, or working with our colleagues and instructors to find some guidance on how to overcome challenges. Sometimes problems will come up that none of us can find a solution to. Since these are problem set questions rather than real questions, we have the luxury to modify them in certain cases as need be. This file should be considered a “living document” that can be updated in response to the needs of the class, perhaps with more detail on how to perform particular tasks, more detail on context and motivation of problems, or small revisions to the requirements of a problem.
Reference – the combination of the following document by Ercolessi, in tandem with playing with MD software, were sufficient for Eric to teach himself molecular dynamics, without formal instruction, in 2013 fresh out of undergrad. In this class, we will guide you through the introductory steps of running simple atomistic simulations, using friendlier software than was available 10 years ago, but still, Chapter 1 of the Ercolessi text is essential reading covering the philosophy and basics of atomistic modelling. Despite this text being 25 years old, it has held up well. Certain details have changed, but in general this text is still the best introduction to atomistic modelling we are aware of. Chapters 2-4 contain more detail on the mathematical foundation of MD (Chap 2), practical matters in performing MD calculations (Chap 3), and the physical foundation of MD (Chap 4).
Ercolessi, Furio. "A molecular dynamics primer." Spring college in computational physics, ICTP, Trieste 19 (1997). https://www.cse-lab.ethz.ch/wp-content/uploads/2013/01/MD-Primer.pdf
Prologue:
A. Installation of scientific software is a real and sometimes difficult part of performing computer experiments. However, once you have installed a piece of scientific software, you have a window to deeper understanding at your fingertips. In this course we will try to use software with relatively simple installation, but in the future, you may need to go to some trouble to install a package you want to use. Think of this as analogous to buying an expensive piece of lab equipment like an electron microscope: if you are really going to benefit from using this tool, you may have to go to some trouble to get access to it. And better yet with computer experiments, many of the tools do not cost any $$$.
Install ASE. If Python is installed, the command >>pip install ase is often sufficient to install ASE. For more detail, see Installation — ASE documentation (dtu.dk)
Install Ovito Basic (available for Windows, Max, Linux at http://www.ovito.org/)
Install MATLAB. The university provides a license for all students. If you prefer you can use MATLAB in a browser window at
Make sure Microsoft Excel (or equivalent) and a plain text editor are installed. In Windows I like Notepad++ as a text editor but all operating systems will come with at least a basic editor.
Prepare an fcc unit cell in a text file. Visualize in Ovito. Use the Ovito replicate command to visualize the structure. Use the Ovito replicate function to visualize a 5x5x5 unit cell supercell. Identify a convention cell. Use the Ovito slice function to reveal the (111) plane. Look down the [111] direction. Compare the visualization of the [111] direction of the fcc lattice to the visualization of the [001] direction of an hcp lattice.
The Problems:
1. Calculate pair potentials
The pair potential is the total energy of a two-body interacting system as a function of the distance between bodies. Using the ASE calculators, and a diatomic system with a suitable vacuum size, calculate the pair potential of a Lennard-Jones, EAM, and DFT potential, for hydrogen, helium, carbon and iron.
2. Calculate equation of state
The ground state energy of a system is its internal energy in the absence of pressure or temperature. Compute the ground state energy of a 3x3x3 unit cell of α – Fe for a range of volumes within ±50% of the α – Fe ground state equilibrium lattice parameter. Plot the ground state energy as a function of lattice parameter. Fit the computed ground state energy to a Birch-Murnaghan analytical model of equation of state. Compute the equilibrium lattice parameter for copper and copper oxides CuO and Cu2O. Calculate Pilling-Bedworth ratio for copper : copper oxide
3. Martensitic transformation
As shown below, the fcc lattice on basis vectors x,y,z is isomorphic to a body centred tetragonal (bct) lattice on the basis a,a,c. The diffusionless transformation from fcc to bcc can be considered as a distortion of the body centred tetragonal (bct) structure, in which the c/a ratio of the bct unit cell is compressed and the total volume per nucleus expanded (equivalently, the a dimension expanded) in order to accommodate the fcc to bcc transition.
In Excel, prepare a list of coordinates of a 3x3x3 fcc supercell with lattice parameter 1, whose basis vectors we will call i,j,k. Determine the scaling parameters (l,m,n) required to transform this supercell into a bcc lattice on the same basis i,j,k. Use Ovito to draw both the fcc and bcc supercells, and label the basis vectors I,j,k on each.
Bonus: Use ASE to compute your own data to reproduce a plot such as:
4. Phase transition dynamics
Simulate the transition from high to low temperature of a 1000 atom Lennard-Jones system. Export an ASE trajectory into a format accepted by Ovito, and use Ovito (GUI or Python) to output the trajectory as a LAMMPS formatted dump file. Use MATLAB to compute the extracopularity parameter developed by John Camkiran (available on Github). Plot the extracopularity of every atom as a function of time on the same chart. Compute the variance of extracopularity amongst the atoms of the system for each time step, and plot this parameter versus time.