next up previous contents
Next: Results Up: Atomistic Modeling of Biomolecular Previous: PME Equations   Contents

Background Research

Before we could begin writing our code for implementing equations 5 - 8 we had to learn several things: the necessary biology in order to understand the context of what we were coding and how our code would be used, the underlying mathematics and physics of electrostatic interactions, the computational techniques that we were going to use (Ewald, PME, Cardinal B-Splines, erfc), and the coding language, FORTRAN90. Because of the magnitude of this project we also had to learn how to use Makefiles in order to make repeated compilation feasable. Also because we are approaching the problem from the perspective of atomistic molecular dynamics rather than the protein we did not need as much biology as if we were working at the scale of protein interactions. The next step was to learn the mathematics necessary for the computation, especially Fourier transforms. Fourier transforms are a method of transforming normal functions into a periodic space, where the calculations we are trying to do over an infinitely repeating cell become much easier. Because all of us had already been exposed to calculus we were able to jump to Fourier transforms and the basics of Cardinal B-Spline. We also needed the basic physics that was required for the problem, especially Newton's Third Law and Couloumb's Law. Next we had to learn the necessary mathematical methods for the problem. First we learned about Ewald summations; then we learned about a more complicated but computationally more efficient, for large numbers of particles, method called Particle Mesh Ewald (PME) which breaks the charges up and assigns pieces of them to points on a mesh. This allows the use of Fast Fourier Transforms, which require a regularly spaced mesh. To assign the charges to the mesh we used an advanced mathematical technique called Cardinal B-Splines. Learning these mathematical techniques in sufficient detail to use them in our code proved to be the most difficult part of the project and most of the time before we actually began coding was spent on learning and understanding them. We also had to learn FORTRAN90 for this project, but did not have time for a full course so we did a warm up project programming the complementary error function (erfc), a simple integral that we need for the real space term, see Equation 3 and code in Appendix A.4.1. Because of the relatively large amounts of code we worked with, we found it useful to learn and use CVS (Concurrent Versions System) to manage editing of files, and Makefiles to handle compilation. To confirm the accuracy of our code for calculating several of the functions, we also learned Matlab which we used to produce graphs and run numerical checks. We also had to learn how to interface with the FFTW library, [11] was very helpful in this regard.
next up previous contents
Next: Results Up: Atomistic Modeling of Biomolecular Previous: PME Equations   Contents
Thomas G Dimiduk 2004-04-15