diff --git a/.gitignore b/.gitignore
index e43b0f9..712f6eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,4 @@
.DS_Store
+/README.html
+/Project*/README.html
+/Project*/main.py
diff --git a/Project#01/README.md b/Project#01/README.md
deleted file mode 100644
index b6a1d47..0000000
--- a/Project#01/README.md
+++ /dev/null
@@ -1,130 +0,0 @@
-# Molecular-Geometry-Analysis
-The purpose of this project is to introduce you to fundamental C-language (or C++) programming techniques in the context of a scientific problem, viz. the calculation of the internal coordinates (bond lengths, bond angles, dihedral angles), moments of inertia, and rotational constants of a polyatomic molecule. A concise set of instructions for this project may be found [here](./project1-instructions.pdf).
-
-We thank Dr. Yukio Yamaguchi of the University of Georgia for the original version of this project.
-
-## Step 1: Read the Coordinate Data from Input
-The input to the program is the set of Cartesian coordinates of the atoms (in bohr) and their associated atomic numbers. A sample molecule (acetaldehyde) to use as input to the program is:
-
- 7
- 6 0.000000000000 0.000000000000 0.000000000000
- 6 0.000000000000 0.000000000000 2.845112131228
- 8 1.899115961744 0.000000000000 4.139062527233
- 1 -1.894048308506 0.000000000000 3.747688672216
- 1 1.942500819960 0.000000000000 -0.701145981971
- 1 -1.007295466862 -1.669971842687 -0.705916966833
- 1 -1.007295466862 1.669971842687 -0.705916966833
-
-The first line above is the number of atoms (an integer), while the remaining lines contain the z-values and x-, y-, and z-coordinates of each atom (one integer followed by three double-precision floating-point numbers). This [input file](./input/acetaldehyde.dat) ("acetaldehyde.dat") along with a few other test cases can be found in this repository in the [input directory](./input).
-
-After downloading the file to your computer (to a file called “geom.dat”, for example), you must open the file, read the data from each line into appropriate variables, and finally close the file.
-
-- [Hint #1](./hints/hint1-1.md): Opening and closing the file stream
-- [Hint #2](./hints/hint1-2.md): Reading the number of atoms
-- [Hint #3](./hints/hint1-3.md): Storing the z-values and the coordinates
-- [Solution](./hints/step1-solution.md)
-
-## Step 2: Bond Lengths
-Calculate the interatomic distances using the expression:
-
-
-
-where x, y, and z are Cartesian coordinates and i and j denote atomic indices.
-
-- [Hint 1](./hints/hint2-1.md): Memory allocation
-- [Hint 2](./hints/hint2-2.md): Loop structure
-- [Hint 3](./hints/hint2-3.md): Printing the results
-- [Hint 4](./hints/hint2-4.md): Extending the Molecule class
-- [Solution](./hints/step2-solution.md)
-
-## Step 3: Bond Angles
-Calculate all possible bond angles. For example, the angle, φijk, between atoms i-j-k, where j is the central atom is given by:
-
-
-
-where the eij are unit vectors between the atoms, e.g.,
-
-
-
-- [Hint 1](./hints/hint3-1.md): Memory allocation for the unit vectors
-- [Hint 2](./hints/hint3-2.md): Avoiding a divide-by-zero
-- [Hint 3](./hints/hint3-3.md): Memory allocation for the bond angles
-- [Hint 4](./hints/hint3-4.md): Smart printing
-- [Hint 5](./hints/hint3-5.md): Trigonometric functions
-- [Solution](./hints/step3-solution.md)
-
-## Step 4: Out-of-Plane Angles
-Calculate all possible out-of-plane angles. For example, the angle θijkl for atom i out of the plane containing atoms j-k-l (with k as the central atom, connected to i) is given by:
-
-
-
-- [Hint 1](./hints/hint4-1.md): Memory allocation?
-- [Hint 2](./hints/hint4-2.md): Cross products
-- [Hint 3](./hints/hint4-3.md): Numerical precision
-- [Hint 4](./hints/hint4-4.md): Smarter printing
-- [Solution](./hints/step4-solution.md)
-
-## Step 5: Torsion/Dihedral Angles
-Calculate all possible torsional angles. For example, the torsional angle τijkl for the atom connectivity i-j-k-l is given by:
-
-
-
-Can you also determine the sign of the torsional angle?
-
-- [Hint 1](./hints/hint5-1.md): Memory allocation?
-- [Hint 2](./hints/hint5-2.md): Numerical precision
-- [Hint 3](./hints/hint5-3.md): Smart printing
-- [Hint 4](./hints/hint5-4.md): Sign
-- [Solution](./hints/step5-solution.md)
-
-## Step 6: Center-of-Mass Translation
-Find the center of mass of the molecule:
-
-
-
-where mi is the mass of atom i and the summation runs over all atoms in the molecule.
-
-Translate the input coordinates of the molecule to the center-of-mass.
-
-- [Hint 1](./hints/hint6-1.md): Atomic masses
-- [Hint 2](./hints/hint6-2.md): Translating between atomic number and atomic mass
-- [Solution](./hints/step6-solution.md)
-
-## Step 7: Principal Moments of Inertia
-Calculate elements of the [moment of inertia tensor](http://en.wikipedia.org/wiki/Moment_of_inertia_tensor).
-
-Diagonal:
-
-
-
-Off-diagonal (add a negative sign):
-
-
-
-Diagonalize the inertia tensor to obtain the principal moments of inertia:
-
-
-
-Report the moments of inertia in amu bohr2, amu Å2, and g cm2.
-
-Based on the relative values of the principal moments, determine the [molecular rotor type](http://en.wikipedia.org/wiki/Rotational_spectroscopy): linear, oblate, prolate, asymmetric.
-
-- [Hint 1](./hints/hint7-1.md): Diagonalization of a 3×3 matrix
-- [Hint 2](./hints/hint7-2.md): Physical constants
-- [Solution](./hints/step7-solution.md)
-
-## Step 8: Rotational Constants
-Compute the rotational constants in cm-1 and MHz:
-
-
-
-- [Solution](./hints/step8-solution.md)
-
-
-## Test Cases
-- Acetaldehyde: [input coordinates](./input/acetaldehyde.dat) | [output](./output/acetaldehyde_out.txt)
-- Benzene: [input coordinates](./input/benzene.dat) | [output](./output/benzene_out.txt)
-- Allene: [input coordinates](./input/allene.dat) | [output](./output/allene_out.txt)
-
-## References
-E.B. Wilson, J.C. Decius, and P.C. Cross, __Molecular Vibrations__, McGraw-Hill, 1955.
diff --git a/Project#01/eigen.tar.gz b/Project#01/eigen.tar.gz
deleted file mode 100644
index ac30d9b..0000000
Binary files a/Project#01/eigen.tar.gz and /dev/null differ
diff --git a/Project#01/figures/.DS_Store b/Project#01/figures/.DS_Store
deleted file mode 100644
index 09b6423..0000000
Binary files a/Project#01/figures/.DS_Store and /dev/null differ
diff --git a/Project#01/hints/hint1-1.md b/Project#01/hints/hint1-1.md
deleted file mode 100644
index 7ae4d3b..0000000
--- a/Project#01/hints/hint1-1.md
+++ /dev/null
@@ -1,20 +0,0 @@
-To open a file named "geom.dat", you need a file stream object:
-
-```c++
-#include
-#include
-#include
-
-...
-
-int main()
-{
- ifstream input("geom.dat");
-
- ...
-
- input.close();
-
- return 0;
-}
-```
diff --git a/Project#01/hints/hint1-2.md b/Project#01/hints/hint1-2.md
deleted file mode 100644
index 7fa15f6..0000000
--- a/Project#01/hints/hint1-2.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Use the ">>" operator to read the data from the file:
-
-```c++
-#include
-#include
-#include
-
-...
-
-int main()
-{
- ifstream input("geom.dat");
-
- int natom;
- input >> natom;
-
- input.close();
-
- return 0;
-}
-```
diff --git a/Project#01/hints/hint1-3.md b/Project#01/hints/hint1-3.md
deleted file mode 100644
index ecd2d17..0000000
--- a/Project#01/hints/hint1-3.md
+++ /dev/null
@@ -1,20 +0,0 @@
-It may be convenient to use arrays to store the z-values and Cartesian coordinates of the atoms:
-```c++
-int zval[50];
-double x[50], y[50], z[50];
-```
-
-A more elegant solution is to allocate the memory dynamically for each array once you know the number of atoms:
-```c++
-int natom;
-input >> natom;
-
-int *zval = new int[natom];
-double *x = new double[natom];
-double *y = new double[natom];
-double *z = new double[natom];
-
-delete[] zval; delete[] x; delete[] y; delete[] z;
-```
-
-Don't forget to delete[] the memory after you're finished!
diff --git a/Project#01/hints/hint2-1.md b/Project#01/hints/hint2-1.md
deleted file mode 100644
index 68bb23c..0000000
--- a/Project#01/hints/hint2-1.md
+++ /dev/null
@@ -1,18 +0,0 @@
-If we choose to store the matrix of bond distances, we need to allocate the necessary memory, either as a static two-dimensional array:
-```c++
-double R[50][50];
-```
-
-or via dynamic allocation using the [Molecule class](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Classes-and-Objects):
-```c++
-double **R = new double* [mol.natom];
-for(int i=0; i < mol.natom; i++)
- R[i] = new double[mol.natom];
-```
-
-Don't forget to delete[] the memory at the end of the program:
-```c++
-for(int i=0; i < mol.natom; i++)
- delete[] R[i];
-delete[] R;
-```
diff --git a/Project#01/hints/hint2-2.md b/Project#01/hints/hint2-2.md
deleted file mode 100644
index 49dc043..0000000
--- a/Project#01/hints/hint2-2.md
+++ /dev/null
@@ -1,15 +0,0 @@
-To build the distance matrix, we need a loop for each index:
-```c++
- ...
- #include
- ...
-
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < mol.natom; j++) {
- R[i][j] = sqrt( (mol.geom[i][0]-mol.geom[j][0])*(mol.geom[i][0]-mol.geom[j][0])
- + (mol.geom[i][1]-mol.geom[j][1])*(mol.geom[i][1]-mol.geom[j][1])
- + (mol.geom[i][2]-mol.geom[j][2])*(mol.geom[i][2]-mol.geom[j][2]) );
- }
- }
-```
-Note also that the `sqrt()` function is part of the C math library; thus we need the `#include ` directive.
diff --git a/Project#01/hints/hint2-3.md b/Project#01/hints/hint2-3.md
deleted file mode 100644
index 30bbb93..0000000
--- a/Project#01/hints/hint2-3.md
+++ /dev/null
@@ -1,7 +0,0 @@
-To print the interatomic distance matrix, we could just run through its unique values:
-```c++
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, R[i][j]);
-```
-Note the conditional on the index `j` which keeps the code form printing redundant information.
diff --git a/Project#01/hints/hint2-4.md b/Project#01/hints/hint2-4.md
deleted file mode 100644
index b7c4f47..0000000
--- a/Project#01/hints/hint2-4.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Now that we've written some code to compute bond distances, we can extend the Molecule class a bit more to define our `bond()` function:
-```c++
-double Molecule::bond(int a, int b)
-{
- return sqrt( (geom[a][0]-geom[b][0])*(geom[a][0]-geom[b][0])
- + (geom[a][1]-geom[b][1])*(geom[a][1]-geom[b][1])
- + (geom[a][2]-geom[b][2])*(geom[a][2]-geom[b][2]) );
-}
-```
-
-Note that since `bond()` is a member function of the Molecule class, we can access the geom array with just `geom` rather than `mol.geom`
diff --git a/Project#01/hints/hint3-1.md b/Project#01/hints/hint3-1.md
deleted file mode 100644
index 8bc992a..0000000
--- a/Project#01/hints/hint3-1.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Each unit vector points from one atom to another, hence each Cartesian component should be treated as a matrix, much like the interatomic distance matrix. For now, let's store the unit vectors in memory, but later we'll write a function to recompute them as needed:
-```c++
- double **ex = new double* [mol.natom];
- double **ey = new double* [mol.natom];
- double **ez = new double* [mol.natom];
- for(int i=0; i < mol.natom; i++) {
- ex[i] = new double[mol.natom];
- ey[i] = new double[mol.natom];
- ez[i] = new double[mol.natom];
- }
-```
-And don't forget to delete[] them at the end:
-```c++
- for(int i=0; i < mol.natom; i++) {
- delete[] ex[i]; delete[] ey[i]; delete[] ez[i];
- }
- delete[] ex; delete[] ey; delete[] ez;
-```
diff --git a/Project#01/hints/hint3-2.md b/Project#01/hints/hint3-2.md
deleted file mode 100644
index 731dda4..0000000
--- a/Project#01/hints/hint3-2.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Be careful about the diagonal elements of the unit vector matrices because of the division by the bond distance between atoms i and j. You should restrict the loops to skip those elements involving a divide-by-zero condition!
-```c++
- for(i=0; i < mol.natom; i++) {
- for(j=0; j < i; j++) {
- ex[i][j] = ex[j][i] = -(x[i] - x[j])/R[i][j];
- ey[i][j] = ey[j][i] = -(y[i] - y[j])/R[i][j];
- ez[i][j] = ez[j][i] = -(z[i] - z[j])/R[i][j];
- }
- }
-```
diff --git a/Project#01/hints/hint3-3.md b/Project#01/hints/hint3-3.md
deleted file mode 100644
index f6f19ee..0000000
--- a/Project#01/hints/hint3-3.md
+++ /dev/null
@@ -1,10 +0,0 @@
-If you choose to store the bond angles for later use (not absolutely necessary, as we'll see), you need a three-dimensional array:
-```c++
- double ***phi = new double** [mol.natom];
- for(int i=0; i < mol.natom; i++) {
- phi[i] = new double* [mol.natom];
- for(int j=0; j < mol.natom; j++) {
- phi[i][j] = new double[mol.natom];
- }
- }
-```
diff --git a/Project#01/hints/hint3-4.md b/Project#01/hints/hint3-4.md
deleted file mode 100644
index 766d3a9..0000000
--- a/Project#01/hints/hint3-4.md
+++ /dev/null
@@ -1,22 +0,0 @@
-If you print the angle between every possible combination of three atoms, you'll get lots of zeroes and angles between atoms that are far apart. To print mainly interesting angles, use if-else blocks to enforce these restrictions:
-```c++
-if(i!=j && i!=k && j!=k) { } /* Skip coincidences */
-```
-
-and
-```c++
-if(i < j && j < k && R[i][j] < 4.0 && R[j][k] < 4.0) { } /* Skip atoms far apart (specifically with bond distances > 4.0 bohr) */
-```
-
-Alternatively, you can limit the loop structure and just filter out the bond distances:
-```c++
-for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(R[i][j] < 4.0 && R[j][k] < 4.0) {
- ...
- }
- }
- }
-}
-```
diff --git a/Project#01/hints/hint3-5.md b/Project#01/hints/hint3-5.md
deleted file mode 100644
index c7f19d9..0000000
--- a/Project#01/hints/hint3-5.md
+++ /dev/null
@@ -1 +0,0 @@
-To compute the final bond angle, you must use the `acos()` function (arccos), which, like the `sqrt()` function, is part of the [C math library](http://en.wikipedia.org/wiki/Math.h).
diff --git a/Project#01/hints/hint4-1.md b/Project#01/hints/hint4-1.md
deleted file mode 100644
index e1f85cd..0000000
--- a/Project#01/hints/hint4-1.md
+++ /dev/null
@@ -1 +0,0 @@
-Note that, unlike the interatomic distance matrix and the three-dimensional bond angle array, the out-of-plane angles are not needed later in the program. Hence, there is no need to allocate any memory to store these angles. Simply print them one at a time.
diff --git a/Project#01/hints/hint4-2.md b/Project#01/hints/hint4-2.md
deleted file mode 100644
index 0cd31f4..0000000
--- a/Project#01/hints/hint4-2.md
+++ /dev/null
@@ -1,10 +0,0 @@
-A cross product between two vectors is another vector. Therefore, to store the cross product needed to compute a given out-of-plane angle, you need to store the x, y, and z components of the resulting vector, which you then use to compute a dot product with yet another vector. It is convenient to assign separate variables for each part of this calculation:
-```c++
-ejkl_x = (ey[k][j] * ez[k][l] - ez[k][j] * ey[k][l]);
-ejkl_y = (ez[k][j] * ex[k][l] - ex[k][j] * ez[k][l]);
-ejkl_z = (ex[k][j] * ey[k][l] - ey[k][j] * ex[k][l]);
-
-exx = ejkl_x * ex[k][i];
-eyy = ejkl_y * ey[k][i];
-ezz = ejkl_z * ez[k][i];
-```
diff --git a/Project#01/hints/hint4-3.md b/Project#01/hints/hint4-3.md
deleted file mode 100644
index ab6b32b..0000000
--- a/Project#01/hints/hint4-3.md
+++ /dev/null
@@ -1,8 +0,0 @@
-The final out-of-plane angle is computed using the `asin()` function. Note that since sine yields values between -1 and +1, the `asin()` function can only take arguments between -1.0 and +1.0. However, numerical precision in the calculation of the cross- and dot-products earlier in the calculation can yield results slightly outside this domain. Hence, you should test the argument of `asin()` before you call it:
-```c++
- theta = (exx + eyy + ezz)/sin(phi[j][k][l]);
-
- if(theta < -1.0) theta = asin(-1.0);
- else if(theta > 1.0) theta = asin(1.0);
- else theta = asin(theta);
-```
diff --git a/Project#01/hints/hint4-4.md b/Project#01/hints/hint4-4.md
deleted file mode 100644
index 6aebb96..0000000
--- a/Project#01/hints/hint4-4.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Just as for the bond angle code, we need to exclude ijkl combinations involving coincidences among the indices as well as distant atom pairs:
-```c++
- if(i!=j && i!=k && i!=l && j!=k && j!=l && k!=l) { } /* Skip coincidences */
-```
-and
-```c++
- if(R[i][k] < 4.0 && R[k][j] < 4.0 && R[k][l] < 4.0) { } /* Skip distant atom pairs */
-```
diff --git a/Project#01/hints/hint5-1.md b/Project#01/hints/hint5-1.md
deleted file mode 100644
index 32e48c3..0000000
--- a/Project#01/hints/hint5-1.md
+++ /dev/null
@@ -1 +0,0 @@
-Just as for the out-of-plane angles, there is no need to store the torsional angles after they are printed, so no special memory allocation procedure is needed for this step.
diff --git a/Project#01/hints/hint5-2.md b/Project#01/hints/hint5-2.md
deleted file mode 100644
index 4a4ffb9..0000000
--- a/Project#01/hints/hint5-2.md
+++ /dev/null
@@ -1 +0,0 @@
-Just as for `asin()` in the out-of-plane angle calculation, you should check the argument to `acos()` to make sure it lies between -1.0 and +1.0.
diff --git a/Project#01/hints/hint5-3.md b/Project#01/hints/hint5-3.md
deleted file mode 100644
index 0613c4a..0000000
--- a/Project#01/hints/hint5-3.md
+++ /dev/null
@@ -1 +0,0 @@
-To print only the unique dihedral angles, it is straightforward in this case to limit the loop structure over i, j, k, and l to keep j < i, k < j, and l < k. Also, one should limit the printing only to atom pairs that are close together.
diff --git a/Project#01/hints/hint5-4.md b/Project#01/hints/hint5-4.md
deleted file mode 100644
index 43f3dd5..0000000
--- a/Project#01/hints/hint5-4.md
+++ /dev/null
@@ -1 +0,0 @@
-The sign of a torsional/dihedral angle among atoms **_i-j-k-l_** is positive (negative) if the vector along **_k-l_** lies to the right (left) of the plane formed by **_i-j-k_** when the plane is viewed along the **_j-k_** vector.
diff --git a/Project#01/hints/hint6-1.md b/Project#01/hints/hint6-1.md
deleted file mode 100644
index 27f9698..0000000
--- a/Project#01/hints/hint6-1.md
+++ /dev/null
@@ -1 +0,0 @@
-An excellent source for atomic masses and other physical constants is the [National Institute of Standard and Technology (NIST) website](http://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?ele=&ascii=html&isotype=some).
diff --git a/Project#01/hints/hint6-2.md b/Project#01/hints/hint6-2.md
deleted file mode 100644
index aea0a42..0000000
--- a/Project#01/hints/hint6-2.md
+++ /dev/null
@@ -1,10 +0,0 @@
-An elegant way to translate between the atomic number (z-value) of a given atom and its mass is to prepare a static array of the masses of the most abundant isotope of each element. I suggest preparing a header file containing a [global array](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Variable-Scope-and-Reference-Types#global-variables), e.g.:
-```c++
- double masses[] = {
- 0.0000000,
- 1.007825,
- 4.002603,
- 6.015123,
- ...};
-```
-Note that, for example, `masses[1] = 1.007825`, which is the correct atomic mass for a hydrogen atom.
diff --git a/Project#01/hints/hint7-1.md b/Project#01/hints/hint7-1.md
deleted file mode 100644
index 4aa7771..0000000
--- a/Project#01/hints/hint7-1.md
+++ /dev/null
@@ -1,45 +0,0 @@
-Here are two approaches for the [diagonalization](http://en.wikipedia.org/wiki/Diagonalizable_matrix) of the moment of inertia tensor:
-
-## Secular Determinant
-Since the moment of inertia tensor is only a 3x3 matrix, a brute-force approach via the secular determinant is feasible:
-
-
-
-This leads to a cubic equation in λ, which one can solve directly. Have fun with that.
-
-## More General Algorithms
-"Canned" algorithms are definitely the way to go for general matrix diagonalization. Most such algorithms are based on a two-step procedure:
- - Reduction of the matrix to a tridiagonal form using the [Householder](http://en.wikipedia.org/wiki/Householder's_method) or Givens approaches.
- - Diagonalization of the tridiagonal structure, either by solving its secular determinant or by other methods, e.g. [QR or QL decompositions](http://en.wikipedia.org/wiki/QR_decomposition).
-
-A convenient canned library for a wide range of linear algebraic operations is the [Eigen package](http://eigen.tuxfamily.org). This is a template-only library that provides a very clean interface for manipulating a large number of matrix types. You can either download and install the library from the [official website](http://eigen.tuxfamily.org) or just grab the [gzipped tarfile from here](../eigen.tar.gz). Unpack the library in the same directory as your source code, and you're ready to get started.
-
-To use the library to diagonalize your moment inertia tensor, follow these steps:
-
-- Add the following lines to your main source file below the inclusion of other headers:
-```c++
-#include "Eigen/Dense"
-#include "Eigen/Eigenvalues"
-#include "Eigen/Core"
-
-typedef Eigen::Matrix Matrix;
-```
-This code defines a new type called a `Matrix` that may be dynamically allocated and contains only doubles.
-- Allocate your moment of inertia tensor by a line of code like:
-```c++
-Matrix I(3,3);
-```
-- Access or assign individual elements of the Matrix using parenthetical notation rather than brackets, e.g.:
-```c++
-I(0,0) = 2.0;
-```
-- The Eigen package makes it easy to examine your matrix using cout:
-```c++
-cout << I << endl;
-```
-- After you have built the moment of inertia tensor, you may compute its eigenvalues and eigenvectors as follows:
-```c++
- Eigen::SelfAdjointEigenSolver solver(I);
- Matrix evecs = solver.eigenvectors();
- Matrix evals = solver.eigenvalues();
-```
diff --git a/Project#01/hints/hint7-2.md b/Project#01/hints/hint7-2.md
deleted file mode 100644
index 5a9a10c..0000000
--- a/Project#01/hints/hint7-2.md
+++ /dev/null
@@ -1 +0,0 @@
-Lots of useful and precise physical constants are available at the [National Institute of Standards and Technology website](http://physics.nist.gov/cuu/Constants/index.html?/codata86.html).
diff --git a/Project#01/hints/step1-solution.md b/Project#01/hints/step1-solution.md
deleted file mode 100644
index 9a1ffe4..0000000
--- a/Project#01/hints/step1-solution.md
+++ /dev/null
@@ -1,60 +0,0 @@
-```c++
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- ifstream input("geom.dat");
-
- int natom;
- input >> natom;
-
- int *zval = new int[natom];
- double *x = new double[natom];
- double *y = new double[natom];
- double *z = new double[natom];
-
- for(int i=0; i < natom; i++)
- input >> zval[i] >> x[i] >> y[i] >> z[i];
-
- input.close();
-
- cout << "Number of atoms: " << natom << endl;
- cout << "Input Cartesian coordinates:\n";
- for(int i=0; i < natom; i++)
- printf("%d %20.12f %20.12f %20.12f\n", (int) zval[i], x[i], y[i], z[i]);
-
- delete[] zval;
- delete[] x; delete[] y; delete[] z;
-
- return 0;
-}
-```
-
-An even more elegant solution would be to couple the above to the [Molecule class](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Classes-and-Objects) we defined earlier in the Fundamentals section:
-```c++
-#include "molecule.h"
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- return 0;
-}
-```
-
-
diff --git a/Project#01/hints/step2-solution.md b/Project#01/hints/step2-solution.md
deleted file mode 100644
index bc24c9e..0000000
--- a/Project#01/hints/step2-solution.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Here we use the Molecule class we've been working on so far, and thanks to the new "bond()" function, we don't need to worry about storing the distances in a matrix:
-
-```c++
-#include "molecule.h"
-#include
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- return 0;
-}
-```
-
-The output from the above program for the acetaldehyde test case is:
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-```
diff --git a/Project#01/hints/step3-solution.md b/Project#01/hints/step3-solution.md
deleted file mode 100644
index 8de6c2d..0000000
--- a/Project#01/hints/step3-solution.md
+++ /dev/null
@@ -1,128 +0,0 @@
-Here again we've extended the Molecule class to compute the bond angles without storing them. This also required the addition of a new function to compute the Cartesian unit vectors on the fly, whose declaration we add to the member functions of molecule.h:
-```c++
-#include
-
-using namespace std;
-
-class Molecule
-{
- public:
- int natom;
- int charge;
- int *zvals;
- double **geom;
- string point_group;
-
- void print_geom();
- void rotate(double phi);
- void translate(double x, double y, double z);
- double bond(int atom1, int atom2);
- double angle(int atom1, int atom2, int atom3);
- double torsion(int atom1, int atom2, int atom3, int atom4);
- double unit(int cart, int atom1, int atom2);
-
- Molecule(const char *filename, int q);
- ~Molecule();
-};
-```
-
-Now the two new functions added to molecule.cc:
-```c++
-// Returns the value of the unit vector between atoms a and b
-// in the cart direction (cart=0=x, cart=1=y, cart=2=z)
-double Molecule::unit(int cart, int a, int b)
-{
- return -(geom[a][cart]-geom[b][cart])/bond(a,b);
-}
-
-// Returns the angle between atoms a, b, and c in radians
-double Molecule::angle(int a, int b, int c)
-{
- return acos(unit(0,b,a) * unit(0,b,c) + unit(1,b,a) * unit(1,b,c) + unit(2,b,a) * unit(2,b,c));
-}
-```
-
-And finally, the code that makes use of the above:
-
-```c++
-#include "molecule.h"
-#include
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- return 0;
-}
-```
-Note that the value of π is obtained with machine precision using `acos(-1.0)`.
-
-The above code produces the following output for the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 2- 1- 0 124.268308
- 3- 1- 0 115.479341
- 3- 2- 1 28.377448
- 5- 4- 0 35.109529
- 6- 4- 0 35.109529
- 6- 5- 0 36.373677
- 6- 5- 4 60.484476
-```
diff --git a/Project#01/hints/step4-solution.md b/Project#01/hints/step4-solution.md
deleted file mode 100644
index 5c3ae48..0000000
--- a/Project#01/hints/step4-solution.md
+++ /dev/null
@@ -1,174 +0,0 @@
-We've added a new function to the Molecule class for computing the out-of-plane angles. Here's the new molecule.h:
-
-```c++
-#include
-
-using namespace std;
-
-class Molecule
-{
- public:
- int natom;
- int charge;
- int *zvals;
- double **geom;
- string point_group;
-
- void print_geom();
- void rotate(double phi);
- void translate(double x, double y, double z);
- double bond(int atom1, int atom2);
- double angle(int atom1, int atom2, int atom3);
- double torsion(int atom1, int atom2, int atom3, int atom4);
- double oop(int atom1, int atom2, int atom3, int atom4);
- double unit(int cart, int atom1, int atom2);
-
- Molecule(const char *filename, int q);
- ~Molecule();
-};
-```
-
-Here's the new `oop()` function for molecule.cc:
-
-```c++
-double Molecule::oop(int a, int b, int c, int d)
-{
- double ebcd_x = (unit(1,c,b) * unit(2,c,d) - unit(2,c,b) * unit(1,c,d));
- double ebcd_y = (unit(2,c,b) * unit(0,c,d) - unit(0,c,b) * unit(2,c,d));
- double ebcd_z = (unit(0,c,b) * unit(1,c,d) - unit(1,c,b) * unit(0,c,d));
-
- double exx = ebcd_x * unit(0,c,a);
- double eyy = ebcd_y * unit(1,c,a);
- double ezz = ebcd_z * unit(2,c,a);
-
- double theta = (exx + eyy + ezz)/sin(angle(b,c,d));
-
- if(theta < -1.0) theta = asin(-1.0);
- else if(theta > 1.0) theta = asin(1.0);
- else theta = asin(theta);
-
- return theta;
-}
-```
-
-And finally the new code that makes use of the class:
-
-```c++
-#include "molecule.h"
-#include
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- cout << "\nOut-of-Plane angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int k=0; k < mol.natom; k++) {
- for(int j=0; j < mol.natom; j++) {
- for(int l=0; l < j; l++) {
- if(i!=j && i!=k && i!=l && j!=k && k!=l && mol.bond(i,k) < 4.0 && mol.bond(k,j) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.oop(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- return 0;
-}
-```
-
-The above code produces the following output for the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 2- 1- 0 124.268308
- 3- 1- 0 115.479341
- 3- 2- 1 28.377448
- 5- 4- 0 35.109529
- 6- 4- 0 35.109529
- 6- 5- 0 36.373677
- 6- 5- 4 60.484476
-
-Out-of-plane angles:
- 0- 3- 1- 2 -0.000000
- 0- 6- 4- 5 19.939726
- 0- 6- 5- 4 -19.850523
- 0- 5- 6- 4 19.850523
- 1- 5- 0- 4 53.678778
- 1- 6- 0- 4 -53.678778
- 1- 6- 0- 5 54.977064
- 2- 3- 1- 0 0.000000
- 3- 2- 1- 0 -0.000000
- 4- 5- 0- 1 -53.651534
- 4- 6- 0- 1 53.651534
- 4- 6- 0- 5 -54.869992
- 4- 6- 5- 0 29.885677
- 4- 5- 6- 0 -29.885677
- 5- 4- 0- 1 53.626323
- 5- 6- 0- 1 -56.277112
- 5- 6- 0- 4 56.194621
- 5- 6- 4- 0 -30.558964
- 5- 4- 6- 0 31.064344
- 6- 4- 0- 1 -53.626323
- 6- 5- 0- 1 56.277112
- 6- 5- 0- 4 -56.194621
- 6- 5- 4- 0 30.558964
- 6- 4- 5- 0 -31.064344
-```
diff --git a/Project#01/hints/step5-solution.md b/Project#01/hints/step5-solution.md
deleted file mode 100644
index 7c437d3..0000000
--- a/Project#01/hints/step5-solution.md
+++ /dev/null
@@ -1,177 +0,0 @@
-Now we've added a new member function to the Molecule class:
-```c++
-// Computes the angle between planes a-b-c and b-c-d
-double Molecule::torsion(int a, int b, int c, int d)
-{
- double eabc_x = (unit(1,b,a)*unit(2,b,c) - unit(2,b,a)*unit(1,b,c));
- double eabc_y = (unit(2,b,a)*unit(0,b,c) - unit(0,b,a)*unit(2,b,c));
- double eabc_z = (unit(0,b,a)*unit(1,b,c) - unit(1,b,a)*unit(0,b,c));
-
- double ebcd_x = (unit(1,c,b)*unit(2,c,d) - unit(2,c,b)*unit(1,c,d));
- double ebcd_y = (unit(2,c,b)*unit(0,c,d) - unit(0,c,b)*unit(2,c,d));
- double ebcd_z = (unit(0,c,b)*unit(1,c,d) - unit(1,c,b)*unit(0,c,d));
-
- double exx = eabc_x * ebcd_x;
- double eyy = eabc_y * ebcd_y;
- double ezz = eabc_z * ebcd_z;
-
- double tau = (exx + eyy + ezz)/(sin(angle(a,b,c)) * sin(angle(b,c,d)));
-
- if(tau < -1.0) tau = acos(-1.0);
- else if(tau > 1.0) tau = acos(1.0);
- else tau = acos(tau);
-
- // Compute the sign of the torsion
- double cross_x = eabc_y * ebcd_z - eabc_z * ebcd_y;
- double cross_y = eabc_z * ebcd_x - eabc_x * ebcd_z;
- double cross_z = eabc_x * ebcd_y - eabc_y * ebcd_x;
- double norm = cross_x*cross_x + cross_y*cross_y + cross_z*cross_z;
- cross_x /= norm;
- cross_y /= norm;
- cross_z /= norm;
- double sign = 1.0;
- double dot = cross_x*unit(0,b,c)+cross_y*unit(1,b,c)+cross_z*unit(2,b,c);
- if(dot < 0.0) sign = -1.0;
-
- return tau*sign;
-}
-```
-
-And we use the new function in the code as follows:
-
-```c++
-#include
-#include
-#include
-#include
-#include
-#include "molecule.h"
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- cout << "\nOut-of-Plane angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int k=0; k < mol.natom; k++) {
- for(int j=0; j < mol.natom; j++) {
- for(int l=0; l < j; l++) {
- if(i!=j && i!=k && i!=l && j!=k && k!=l && mol.bond(i,k) < 4.0 && mol.bond(k,j) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.oop(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- cout << "\nTorsional angles:\n\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- for(int l=0; l < k; l++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.torsion(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- return 0;
-}
-```
-
-The above code produces the following output when applied to the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 0- 1- 2 124.268308
- 0- 1- 3 115.479341
- 0- 4- 5 35.109529
- 0- 4- 6 35.109529
- 0- 5- 6 36.373677
- 1- 2- 3 28.377448
- 4- 5- 6 60.484476
-
-Out-of-plane angles:
- 0- 3- 1- 2 -0.000000
- 0- 6- 4- 5 19.939726
- 0- 6- 5- 4 -19.850523
- 0- 5- 6- 4 19.850523
- 1- 5- 0- 4 53.678778
- 1- 6- 0- 4 -53.678778
- 1- 6- 0- 5 54.977064
- 2- 3- 1- 0 0.000000
- 3- 2- 1- 0 -0.000000
- 4- 5- 0- 1 -53.651534
- 4- 6- 0- 1 53.651534
- 4- 6- 0- 5 -54.869992
- 4- 6- 5- 0 29.885677
- 4- 5- 6- 0 -29.885677
- 5- 4- 0- 1 53.626323
- 5- 6- 0- 1 -56.277112
- 5- 6- 0- 4 56.194621
- 5- 6- 4- 0 -30.558964
- 5- 4- 6- 0 31.064344
- 6- 4- 0- 1 -53.626323
- 6- 5- 0- 1 56.277112
- 6- 5- 0- 4 -56.194621
- 6- 5- 4- 0 30.558964
- 6- 4- 5- 0 -31.064344
-
-Torsional angles:
-
- 3- 2- 1- 0 180.000000
- 6- 5- 4- 0 36.366799
-```
diff --git a/Project#01/hints/step6-solution.md b/Project#01/hints/step6-solution.md
deleted file mode 100644
index 4ea9d7e..0000000
--- a/Project#01/hints/step6-solution.md
+++ /dev/null
@@ -1,163 +0,0 @@
-Note that the header file, `masses.h` is not provided. See the [Hint](./hint6-2.md) to learn how to construct it. Also note that we've made convenient use of our `translate()` member function for the Molecule class.
-
-```c++
-#include "molecule.h"
-#include "masses.h"
-
-#include
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- cout << "\nOut-of-Plane angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int k=0; k < mol.natom; k++) {
- for(int j=0; j < mol.natom; j++) {
- for(int l=0; l < j; l++) {
- if(i!=j && i!=k && i!=l && j!=k && k!=l && mol.bond(i,k) < 4.0 && mol.bond(k,j) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.oop(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- cout << "\nTorsional angles:\n\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- for(int l=0; l < k; l++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.torsion(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- /* find the center of mass (COM) */
- double M = 0.0;
- for(int i=0; i < mol.atom; i++) M += an2masses[(int) mol.zvals[i]];
-
- double xcm=0.0;
- double ycm=0.0;
- double zcm=0.0;
- double mi;
- for(int i=0; i < mol.atom; i++) {
- mi = an2masses[(int) mol.zvals[i]];
- xcm += mi * mol.geom[i][0];
- ycm += mi * mol.geom[i][1];
- zcm += mi * mol.geom[i][2];
- }
- xcm /= M;
- ycm /= M;
- zcm /= M;
- printf("\nMolecular center of mass: %12.8f %12.8f %12.8f\n", xcm, ycm, zcm);
-
- mol.translate(-xcm, -ycm, -zcm);
-
- return 0;
-}
-```
-
-The above code produces the following output when applied to the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 0- 1- 2 124.268308
- 0- 1- 3 115.479341
- 0- 4- 5 35.109529
- 0- 4- 6 35.109529
- 0- 5- 6 36.373677
- 1- 2- 3 28.377448
- 4- 5- 6 60.484476
-
-Out-of-plane angles:
- 0- 3- 1- 2 -0.000000
- 0- 6- 4- 5 19.939726
- 0- 6- 5- 4 -19.850523
- 0- 5- 6- 4 19.850523
- 1- 5- 0- 4 53.678778
- 1- 6- 0- 4 -53.678778
- 1- 6- 0- 5 54.977064
- 2- 3- 1- 0 0.000000
- 3- 2- 1- 0 -0.000000
- 4- 5- 0- 1 -53.651534
- 4- 6- 0- 1 53.651534
- 4- 6- 0- 5 -54.869992
- 4- 6- 5- 0 29.885677
- 4- 5- 6- 0 -29.885677
- 5- 4- 0- 1 53.626323
- 5- 6- 0- 1 -56.277112
- 5- 6- 0- 4 56.194621
- 5- 6- 4- 0 -30.558964
- 5- 4- 6- 0 31.064344
- 6- 4- 0- 1 -53.626323
- 6- 5- 0- 1 56.277112
- 6- 5- 0- 4 -56.194621
- 6- 5- 4- 0 30.558964
- 6- 4- 5- 0 -31.064344
-
-Torsional angles:
-
- 3- 2- 1- 0 180.000000
- 6- 5- 4- 0 36.366799
-
-Molecular center of mass: 0.64494926 0.00000000 2.31663792
-```
diff --git a/Project#01/hints/step7-solution.md b/Project#01/hints/step7-solution.md
deleted file mode 100644
index babca70..0000000
--- a/Project#01/hints/step7-solution.md
+++ /dev/null
@@ -1,232 +0,0 @@
-Note that this is only the code for the `main()` function. The Eigen package, which provides the Matrix class and associated diagonalization capabilities is described in a [hint](./hint7-1.md).
-
-```c++
-#include "molecule.h"
-#include "masses.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Eigen/Dense"
-#include "Eigen/Eigenvalues"
-#include "Eigen/Core"
-
-typedef Eigen::Matrix Matrix;
-typedef Eigen::Matrix Vector;
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- cout << "\nOut-of-Plane angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int k=0; k < mol.natom; k++) {
- for(int j=0; j < mol.natom; j++) {
- for(int l=0; l < j; l++) {
- if(i!=j && i!=k && i!=l && j!=k && k!=l && mol.bond(i,k) < 4.0 && mol.bond(k,j) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.oop(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- cout << "\nTorsional angles:\n\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- for(int l=0; l < k; l++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.torsion(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- /* find the center of mass (COM) */
- double M = 0.0;
- for(int i=0; i < natom; i++) M += an2masses[(int) mol.zvals[i]];
-
- double xcm=0.0;
- double ycm=0.0;
- double zcm=0.0;
- double mi;
- for(int i=0; i < natom; i++) {
- mi = an2masses[(int) mol.zvals[i]];
- xcm += mi * mol.geom[i][0];
- ycm += mi * mol.geom[i][1];
- zcm += mi * mol.geom[i][2];
- }
- xcm /= M;
- ycm /= M;
- zcm /= M;
- printf("\nMolecular center of mass: %12.8f %12.8f %12.8f\n", xcm, ycm, zcm);
-
- mol.translate(-xcm, -ycm, -zcm);
-
- Matrix I(3,3);
-
- for(int i=0; i < mol.natom; i++) {
- mi = masses[(int) mol.zvals[i]];
- I(0,0) += mi * (mol.geom[i][1]*mol.geom[i][1] + mol.geom[i][2]*mol.geom[i][2]);
- I(1,1) += mi * (mol.geom[i][0]*mol.geom[i][0] + mol.geom[i][2]*mol.geom[i][2]);
- I(2,2) += mi * (mol.geom[i][0]*mol.geom[i][0] + mol.geom[i][1]*mol.geom[i][1]);
- I(0,1) -= mi * mol.geom[i][0]*mol.geom[i][1];
- I(0,2) -= mi * mol.geom[i][0]*mol.geom[i][2];
- I(1,2) -= mi * mol.geom[i][1]*mol.geom[i][2];
- }
-
- I(1,0) = I(0,1);
- I(2,0) = I(0,2);
- I(2,1) = I(1,2);
-
- cout << "\nMoment of inertia tensor (amu bohr^2):\n";
- cout << I << endl;
-
- // find the principal moments
- Eigen::SelfAdjointEigenSolver solver(I);
- Matrix evecs = solver.eigenvectors();
- Matrix evals = solver.eigenvalues();
-
- cout << "\nPrincipal moments of inertia (amu * bohr^2):\n";
- cout << evals << endl;
-
- double conv = 0.529177249 * 0.529177249;
- cout << "\nPrincipal moments of inertia (amu * AA^2):\n";
- cout << evals * conv << endl;
-
- conv = 1.6605402E-24 * 0.529177249E-8 * 0.529177249E-8;
- cout << "\nPrincipal moments of inertia (g * cm^2):\n";
- cout << evals * conv << endl;
-
- // classify the rotor
- if(mol.natom == 2) cout << "\nMolecule is diatomic.\n";
- else if(evals(0) < 1e-4) cout << "\nMolecule is linear.\n";
- else if((fabs(evals(0) - evals(1)) < 1e-4) && (fabs(evals(1) - evals(2)) < 1e-4))
- cout << "\nMolecule is a spherical top.\n";
- else if((fabs(evals(0) - evals(1)) < 1e-4) && (fabs(evals(1) - evals(2)) > 1e-4))
- cout << "\nMolecule is an oblate symmetric top.\n";
- else if((fabs(evals(0) - evals(1)) > 1e-4) && (fabs(evals(1) - evals(2)) < 1e-4))
- cout << "\nMolecule is a prolate symmetric top.\n";
- else cout << "\nMolecule is an asymmetric top.\n";
-
- return 0;
-}
-```
-
-The above code produces the following output for the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 0- 1- 2 124.268308
- 0- 1- 3 115.479341
- 0- 4- 5 35.109529
- 0- 4- 6 35.109529
- 0- 5- 6 36.373677
- 1- 2- 3 28.377448
- 4- 5- 6 60.484476
-
-Out-of-plane angles:
- 0- 3- 1- 2 -0.000000
- 0- 6- 4- 5 19.939726
- 0- 6- 5- 4 -19.850523
- 0- 5- 6- 4 19.850523
- 1- 5- 0- 4 53.678778
- 1- 6- 0- 4 -53.678778
- 1- 6- 0- 5 54.977064
- 2- 3- 1- 0 0.000000
- 3- 2- 1- 0 -0.000000
- 4- 5- 0- 1 -53.651534
- 4- 6- 0- 1 53.651534
- 4- 6- 0- 5 -54.869992
- 4- 6- 5- 0 29.885677
- 4- 5- 6- 0 -29.885677
- 5- 4- 0- 1 53.626323
- 5- 6- 0- 1 -56.277112
- 5- 6- 0- 4 56.194621
- 5- 6- 4- 0 -30.558964
- 5- 4- 6- 0 31.064344
- 6- 4- 0- 1 -53.626323
- 6- 5- 0- 1 56.277112
- 6- 5- 0- 4 -56.194621
- 6- 5- 4- 0 30.558964
- 6- 4- 5- 0 -31.064344
-
-Torsional angles:
-
- 3- 2- 1- 0 180.000000
- 6- 5- 4- 0 36.366799
-
-Molecular center of mass: 0.64494926 0.00000000 2.31663792
-
-Moment of inertia tensor (amu bohr^2):
- 156.154091561645 0.000000000000 -52.855584120568
- 0.000000000000 199.371126996236 0.000000000000
- -52.855584120568 0.000000000000 54.459548882464
-
-Principal moments of inertia (amu * bohr^2):
- 31.964078 178.649562 199.371127
-
-Principal moments of inertia (amu * AA^2):
- 8.950855 50.026980 55.829610
-
-Principal moments of inertia (g * cm^2):
- 1.486325e-39 8.307181e-39 9.270731e-39
-
-Molecule is an asymmetric top.
-```
diff --git a/Project#01/hints/step8-solution.md b/Project#01/hints/step8-solution.md
deleted file mode 100644
index f85cabf..0000000
--- a/Project#01/hints/step8-solution.md
+++ /dev/null
@@ -1,252 +0,0 @@
-Note that this is only the code for the `main()` function. The Eigen package, which provides the Matrix class and associated diagonalization capabilities is described in a [hint](./hint7-1.md).
-
-```c++
-#include "molecule.h"
-#include "masses.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Eigen/Dense"
-#include "Eigen/Eigenvalues"
-#include "Eigen/Core"
-
-typedef Eigen::Matrix Matrix;
-typedef Eigen::Matrix Vector;
-
-using namespace std;
-
-int main()
-{
- Molecule mol("geom.dat", 0);
-
- cout << "Number of atoms: " << mol.natom << endl;
- cout << "Input Cartesian coordinates:\n";
- mol.print_geom();
-
- cout << "Interatomic distances (bohr):\n";
- for(int i=0; i < mol.natom; i++)
- for(int j=0; j < i; j++)
- printf("%d %d %8.5f\n", i, j, mol.bond(i,j));
-
- cout << "\nBond angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0)
- printf("%2d-%2d-%2d %10.6f\n", i, j, k, mol.angle(i,j,k)*(180.0/acos(-1.0)));
- }
- }
- }
-
- cout << "\nOut-of-Plane angles:\n";
- for(int i=0; i < mol.natom; i++) {
- for(int k=0; k < mol.natom; k++) {
- for(int j=0; j < mol.natom; j++) {
- for(int l=0; l < j; l++) {
- if(i!=j && i!=k && i!=l && j!=k && k!=l && mol.bond(i,k) < 4.0 && mol.bond(k,j) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.oop(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- cout << "\nTorsional angles:\n\n";
- for(int i=0; i < mol.natom; i++) {
- for(int j=0; j < i; j++) {
- for(int k=0; k < j; k++) {
- for(int l=0; l < k; l++) {
- if(mol.bond(i,j) < 4.0 && mol.bond(j,k) < 4.0 && mol.bond(k,l) < 4.0)
- printf("%2d-%2d-%2d-%2d %10.6f\n", i, j, k, l, mol.torsion(i,j,k,l)*(180.0/acos(-1.0)));
- }
- }
- }
- }
-
- /* find the center of mass (COM) */
- double M = 0.0;
- for(int i=0; i < natom; i++) M += an2masses[(int) mol.zvals[i]];
-
- double xcm=0.0;
- double ycm=0.0;
- double zcm=0.0;
- double mi;
- for(int i=0; i < natom; i++) {
- mi = an2masses[(int) mol.zvals[i]];
- xcm += mi * mol.geom[i][0];
- ycm += mi * mol.geom[i][1];
- zcm += mi * mol.geom[i][2];
- }
- xcm /= M;
- ycm /= M;
- zcm /= M;
- printf("\nMolecular center of mass: %12.8f %12.8f %12.8f\n", xcm, ycm, zcm);
-
- mol.translate(-xcm, -ycm, -zcm);
-
- Matrix I(3,3);
-
- for(int i=0; i < mol.natom; i++) {
- mi = masses[(int) mol.zvals[i]];
- I(0,0) += mi * (mol.geom[i][1]*mol.geom[i][1] + mol.geom[i][2]*mol.geom[i][2]);
- I(1,1) += mi * (mol.geom[i][0]*mol.geom[i][0] + mol.geom[i][2]*mol.geom[i][2]);
- I(2,2) += mi * (mol.geom[i][0]*mol.geom[i][0] + mol.geom[i][1]*mol.geom[i][1]);
- I(0,1) -= mi * mol.geom[i][0]*mol.geom[i][1];
- I(0,2) -= mi * mol.geom[i][0]*mol.geom[i][2];
- I(1,2) -= mi * mol.geom[i][1]*mol.geom[i][2];
- }
-
- I(1,0) = I(0,1);
- I(2,0) = I(0,2);
- I(2,1) = I(1,2);
-
- cout << "\nMoment of inertia tensor (amu bohr^2):\n";
- cout << I << endl;
-
- // find the principal moments
- Eigen::SelfAdjointEigenSolver solver(I);
- Matrix evecs = solver.eigenvectors();
- Matrix evals = solver.eigenvalues();
-
- cout << "\nPrincipal moments of inertia (amu * bohr^2):\n";
- cout << evals << endl;
-
- double conv = 0.529177249 * 0.529177249;
- cout << "\nPrincipal moments of inertia (amu * AA^2):\n";
- cout << evals * conv << endl;
-
- conv = 1.6605402E-24 * 0.529177249E-8 * 0.529177249E-8;
- cout << "\nPrincipal moments of inertia (g * cm^2):\n";
- cout << evals * conv << endl;
-
- // classify the rotor
- if(mol.natom == 2) cout << "\nMolecule is diatomic.\n";
- else if(evals(0) < 1e-4) cout << "\nMolecule is linear.\n";
- else if((fabs(evals(0) - evals(1)) < 1e-4) && (fabs(evals(1) - evals(2)) < 1e-4))
- cout << "\nMolecule is a spherical top.\n";
- else if((fabs(evals(0) - evals(1)) < 1e-4) && (fabs(evals(1) - evals(2)) > 1e-4))
- cout << "\nMolecule is an oblate symmetric top.\n";
- else if((fabs(evals(0) - evals(1)) > 1e-4) && (fabs(evals(1) - evals(2)) < 1e-4))
- cout << "\nMolecule is a prolate symmetric top.\n";
- else cout << "\nMolecule is an asymmetric top.\n";
-
- // compute the rotational constants
- double _pi = acos(-1.0);
- conv = 6.6260755E-34/(8.0 * _pi * _pi);
- conv /= 1.6605402E-27 * 0.529177249E-10 * 0.529177249E-10;
- conv *= 1e-6;
- cout << "\nRotational constants (MHz):\n";
- cout << "\tA = " << conv/evals(0) << "\t B = " << conv/evals(1) << "\t C = " << conv/evals(2) << endl;
-
- conv = 6.6260755E-34/(8.0 * _pi * _pi);
- conv /= 1.6605402E-27 * 0.529177249E-10 * 0.529177249E-10;
- conv /= 2.99792458E10;
- cout << "\nRotational constants (cm-1):\n";
- cout << "\tA = " << conv/evals(0) << "\t B = " << conv/evals(1) << "\t C = " << conv/evals(2) << endl;
-
- return 0;
-}
-```
-
-The above code produces the following output for the acetaldehyde test case:
-
-```
-Number of atoms: 7
-Input Cartesian coordinates:
-6 0.000000000000 0.000000000000 0.000000000000
-6 0.000000000000 0.000000000000 2.845112131228
-8 1.899115961744 0.000000000000 4.139062527233
-1 -1.894048308506 0.000000000000 3.747688672216
-1 1.942500819960 0.000000000000 -0.701145981971
-1 -1.007295466862 -1.669971842687 -0.705916966833
-1 -1.007295466862 1.669971842687 -0.705916966833
-Interatomic distances (bohr):
-1 0 2.84511
-2 0 4.55395
-2 1 2.29803
-3 0 4.19912
-3 1 2.09811
-3 2 3.81330
-4 0 2.06517
-4 1 4.04342
-4 2 4.84040
-4 3 5.87463
-5 0 2.07407
-5 1 4.05133
-5 2 5.89151
-5 3 4.83836
-5 4 3.38971
-6 0 2.07407
-6 1 4.05133
-6 2 5.89151
-6 3 4.83836
-6 4 3.38971
-6 5 3.33994
-
-Bond angles:
- 0- 1- 2 124.268308
- 0- 1- 3 115.479341
- 0- 4- 5 35.109529
- 0- 4- 6 35.109529
- 0- 5- 6 36.373677
- 1- 2- 3 28.377448
- 4- 5- 6 60.484476
-
-Out-of-plane angles:
- 0- 3- 1- 2 -0.000000
- 0- 6- 4- 5 19.939726
- 0- 6- 5- 4 -19.850523
- 0- 5- 6- 4 19.850523
- 1- 5- 0- 4 53.678778
- 1- 6- 0- 4 -53.678778
- 1- 6- 0- 5 54.977064
- 2- 3- 1- 0 0.000000
- 3- 2- 1- 0 -0.000000
- 4- 5- 0- 1 -53.651534
- 4- 6- 0- 1 53.651534
- 4- 6- 0- 5 -54.869992
- 4- 6- 5- 0 29.885677
- 4- 5- 6- 0 -29.885677
- 5- 4- 0- 1 53.626323
- 5- 6- 0- 1 -56.277112
- 5- 6- 0- 4 56.194621
- 5- 6- 4- 0 -30.558964
- 5- 4- 6- 0 31.064344
- 6- 4- 0- 1 -53.626323
- 6- 5- 0- 1 56.277112
- 6- 5- 0- 4 -56.194621
- 6- 5- 4- 0 30.558964
- 6- 4- 5- 0 -31.064344
-
-Torsional angles:
-
- 3- 2- 1- 0 180.000000
- 6- 5- 4- 0 36.366799
-
-Molecular center of mass: 0.64494926 0.00000000 2.31663792
-
-Moment of inertia tensor (amu bohr^2):
- 156.154091561645 0.000000000000 -52.855584120568
- 0.000000000000 199.371126996236 0.000000000000
- -52.855584120568 0.000000000000 54.459548882464
-
-Principal moments of inertia (amu * bohr^2):
- 31.964078 178.649562 199.371127
-
-Principal moments of inertia (amu * AA^2):
- 8.950855 50.026980 55.829610
-
-Principal moments of inertia (g * cm^2):
- 1.486325e-39 8.307181e-39 9.270731e-39
-
-Molecule is an asymmetric top.
-
-Rotational constants (MHz):
- A = 56461.542 B = 10102.130 C = 9052.169
-
-Rotational constants (cm-1):
- A = 1.8834 B = 0.3370 C = 0.3019
-```
diff --git a/Project#01/input/README.md b/Project#01/input/README.md
deleted file mode 100644
index 839c30c..0000000
--- a/Project#01/input/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# TEST
diff --git a/Project#01/project1-instructions.pdf b/Project#01/project1-instructions.pdf
deleted file mode 100644
index e7a7e57..0000000
Binary files a/Project#01/project1-instructions.pdf and /dev/null differ
diff --git a/Project#02/figures/.DS_Store b/Project#02/figures/.DS_Store
deleted file mode 100644
index cbaa184..0000000
Binary files a/Project#02/figures/.DS_Store and /dev/null differ
diff --git a/Project#13/README.md b/Project#13/README.md
deleted file mode 100644
index 54d22da..0000000
--- a/Project#13/README.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# Project #13: The Davidson-Liu Algorithm: CIS
-
-A common problem in quantum chemistry is the need to compute a few eigenvalues
-of a very large matrix -- far too large to store entirely in core memory. In
-1975, Ernest Davidson published a robust algorithm[1](#f1)
-to solve this problem, and it has been used in electronic structure
-software packages ever since. A few years later, Bowen Liu extended the
-algorithm to allow computation of several eigenvalues simultaneously rather
-than one at a time[2](#f2). The
-purpose of this project is to illustrate the use of what is now called the
-Davidson-Liu algorithm in the context of a
-[CIS computation](../Project%2312).
-
-## The Basic Algorithm
-
-This is an outline of the essential aspects of the Davidson-Liu algorithm.
-There are many ways to tweak the approach to improve its rate of convergence or
-efficiency, and for details I recommend David Sherrill's excellent CI review
-article[3](#f3), from which also we take our notation below.
-
-## Step #1: Select Guess Vectors
-
-Compute a set of *L* orthonormal guess eigenvectors, {***b***i} ---
-at least one for every desired root. A simple choice is a set of unit vectors,
-or one can taken them from another level of theory or perhaps the eigenvectors
-from a well-chosen subspace of the full determinantal space.
-
-## Step #2: Build and Diagonalize the Subspace Hamiltonian
-
-Compute a representation of the Hamiltonian within the space of guess vectors,
-
-
-
-and then diagonalize this so-called "subspace Hamiltonian",
-
-
-
-where *M* is the number of roots of interest. The current estimate of each of
-the *M* eigenvectors we want is a linear combination of the guess vectors,
-with the αk subspace eigenvectors providing the
-coefficients, *viz.*
-
-
-
-The dimension of ***G*** is typically very small (perhaps a dozen times the
-number of guess vectors, *L*), so one can used a standard diagonalization
-package (such as DSYEV in LAPACK) for this task. Note that the most expensive
-part of the Davidson-Liu algorithm is the computation of σ,
-the products of the Hamiltonian matrix with the guess vectors. In some of the
-largest CI calculations, the Hamiltonian cannot even be stored on disk and its
-elements must be computed "on the fly" during the computation of each
-σ.
-
-## Step #3: Build the Correction Vectors
-
-Build a set of "correction vectors",
-
-
-
-where the "residual" vectors are defined as
-
-
-
-and *N* is the dimension of the Hamiltonian (i.e. the number of determinants).
-The inverse appearing in the definition of the correction vectors is commonly
-referred to as the "preconditioner". Notice that the residual vectors are so
-named because they would be zero if the guess vectors, ***b***i,
-were the true eigenvectors. Thus, convergence of the algorithm is checked at
-this point, based on the norms of the residual vectors (one for each desired
-root) and the change in the corresponding eigenvalue between each iteration.
-## Step #4: Orthonormalize the Correction Vectors
-
-Normalize each correction vector, fδk,
-then orthogonalize it against the existing set of guesses, **b**i,
-using the [Schmidt Orthogonalization procedure](http://en.wikipedia.org/wiki/Gram–Schmidt_process),
-for example. If the orthonormalized correction vector has a norm larger than some chosen threshold (e.g. 10-3),
-include it in the set of guess vectors. If not, discard it. (Thus, the dimension of the guess space, *L*, gradually increases in each iteration.)
-
-Return to step #2 and continue.
-
-## CIS Sigma Equation
-
-We will focus on the spin-adapted singlet formulation of CIS,
-for which the σ = H c equation was given in
-[Project 12](../Project%2312):
-
-
-
-## Unit Guess Vectors
-
-What should we choose for guess vectors? As noted above, the simplest choice
-is probably a set of unit vectors, one for each eigenvalue you want. But in
-what position of the vector should we put the 1? For a hint, look at the
-structure of the [spin-adapted singlet CIS Hamiltonian](../Project%2312/hints/hint2.md)
-for the H2O STO-3G test case and note that it is
-strongly diagonally dominant. Thus, if the diagonal elements are reasonable
-approximations to the true eigenvalues, and we want to compute only the lowest
-*M* eigenvalues, then our guess unit vectors should have a 1 in the position
-corresponding to the row/column of the smallest elements of the Hamiltonian.
-
-## Subspace Collapse
-
-If the number of guess vectors grows to be too large, we may need to reduce its
-dimension to something more manageable before continuing the Davidson-Liu
-algorithm. A typical choice is to collapse to the current best set of guesses
-using the equation given above for the current final eigenvectors:
-
-
-
-#### References
- - 1: E.R. Davidson, "The iterative calculation of a few of the lowest eigenvalues and corresponding eigenvectors of large real-symmetric matrices," *J. Comput. Phys.* **17**, 87 (1975). [(return to text)](#r1)
- - 2: B.Liu, "The simultaneous expansion method for the iterative solution of several of the lowest eigenvalues and corresponding eigenvectors of large real-symmetric matrices," Technical Report LBL-8158, Lawrence Berkeley Laboratory, University of California, Berkeley, 1978. [(return to text)](#r2)
- - 3: C.D. Sherrill, "The Configuration Interaction Method: Advances in Highly Correlated Approaches," *Adv. Quantum Chem.* **34**, 143 (1998). [(return to text)](#r3)
diff --git a/Project#13/figures/coefficients.png b/Project#13/figures/coefficients.png
deleted file mode 100644
index 09b91cf..0000000
Binary files a/Project#13/figures/coefficients.png and /dev/null differ
diff --git a/Project#13/figures/correction-vectors.png b/Project#13/figures/correction-vectors.png
deleted file mode 100644
index 229b957..0000000
Binary files a/Project#13/figures/correction-vectors.png and /dev/null differ
diff --git a/Project#13/figures/diag-subspace-hamiltonian.png b/Project#13/figures/diag-subspace-hamiltonian.png
deleted file mode 100644
index 41fc305..0000000
Binary files a/Project#13/figures/diag-subspace-hamiltonian.png and /dev/null differ
diff --git a/Project#13/figures/final-eigenvectors.png b/Project#13/figures/final-eigenvectors.png
deleted file mode 100644
index 936621f..0000000
Binary files a/Project#13/figures/final-eigenvectors.png and /dev/null differ
diff --git a/Project#13/figures/guess-vector-hamiltonian.png b/Project#13/figures/guess-vector-hamiltonian.png
deleted file mode 100644
index a4add57..0000000
Binary files a/Project#13/figures/guess-vector-hamiltonian.png and /dev/null differ
diff --git a/Project#13/figures/residual-vectors.png b/Project#13/figures/residual-vectors.png
deleted file mode 100644
index 1438091..0000000
Binary files a/Project#13/figures/residual-vectors.png and /dev/null differ
diff --git a/Project#13/figures/spin-adapted-cis-eqn.png b/Project#13/figures/spin-adapted-cis-eqn.png
deleted file mode 100644
index 726668b..0000000
Binary files a/Project#13/figures/spin-adapted-cis-eqn.png and /dev/null differ
diff --git a/Project#14/README.md b/Project#14/README.md
deleted file mode 100644
index 7d36425..0000000
--- a/Project#14/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# Project #14: Excited Electronic States: EOM-CCSD
diff --git a/Project00/README.md b/Project00/README.md
new file mode 100644
index 0000000..f496cf1
--- /dev/null
+++ b/Project00/README.md
@@ -0,0 +1,90 @@
+# Setting up your programming environment
+
+The purpose of this project is to get you ready to write code. This includes
+having a reasonable version of Rust installed and knowing how to edit and run
+your Rust files.
+
+## Installing Rust
+
+[This page](https://www.rust-lang.org/tools/install) explains how to install
+Rust, but the recommended way to do it is simply to run the following command at
+the command line:
+
+``` shell
+curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+```
+
+This will download an installation script from the Rust website and execute it
+in your shell to download and install `rustup`, a tool for managing the rest of
+your Rust installation. To double-check your installation, run one (or both) of
+the following commands:
+
+``` shell
+cargo --version
+rustc --version
+```
+
+On my machine running (an outdated version of) nightly Rust, the output of these
+commands is
+
+``` shell
+cargo 1.72.0-nightly (5b377cece 2023-06-30)
+rustc 1.72.0-nightly (839e9a6e1 2023-07-02)
+```
+
+As long as you get actual output and not something like `command not found`, you
+should be good to go.
+
+## Choosing an Editor
+
+Now that you have Rust installed, you need a way to edit Rust files, which
+typically end with the extension `.rs`. You can use any editor that can edit
+plain text files, but a few suggestions are [Vim](https://www.vim.org/),
+[Emacs](https://www.gnu.org/software/emacs/), and
+[VSCode](https://code.visualstudio.com/). Of these, VSCode will be the easiest
+to get started with, probably followed by Emacs and then Vim. Emacs has a better
+graphical interface than Vim, but it is also more complicated and consequently
+could be harder to use. Vim is probably the most confusing initially, but as the
+simplest editor you may be able to use it quickly. It will also be installed by
+default on Mac, Linux, and WSL. I use Emacs with Vim editing keybindings and
+would recommend that to everyone, but it would take an entire project on its own
+to get that set up. If you're interested, see my [recent
+video](https://youtu.be/ecXhHc32XPU?t=4246) on setting up Emacs 29 for Rust
+development. You can also use more basic editors like Nano or Notepad,
+especially to start out. It's usually easier to move to more complicated things
+when you are sufficiently frustrated with the simple solution. Just make sure
+you have a way to create and edit text files. As a final note, both Vim and
+Emacs have tutorials, so if you choose Vim try typing `vimtutor` in your
+terminal, and if you choose Emacs, just go through the tutorial it shows when
+you first open it or type `Ctrl+h` followed by `t`.
+
+## Your first program
+
+Now that you have some editor ready, use the `cargo` tool that comes with your
+Rust installation to generate your first project:
+
+``` shell
+cargo new name-of-project
+```
+
+where `name-of-project` is a name of your choice.
+
+As is tradition, our first program will simply print "Hello, World!" to the
+screen. However, `cargo` has already prepared this example for us, so you can
+run
+
+``` shell
+cargo run
+```
+
+at your command line to run the program (assuming you've changed to the project
+directory). To see what code `cargo` generated, open `src/main.rs` in your text
+editor. It should look like
+
+``` rust
+fn main() {
+ println!("Hello, world!");
+}
+```
+
+ If this worked, you should be ready to move on to the rest of the projects!
diff --git a/Project01/README.md b/Project01/README.md
new file mode 100644
index 0000000..f1cb22b
--- /dev/null
+++ b/Project01/README.md
@@ -0,0 +1,704 @@
+# Molecular-Geometry-Analysis
+
+The purpose of this project is to introduce you to fundamental Python
+programming techniques in the context of a scientific problem, namely
+the calculation of the internal coordinates (bond lengths, bond
+angles, dihedral angles), moments of inertia, and rotational constants
+of a polyatomic molecule.
+
+#### Key concepts
+[Opening files](#open)
+[For loops and range](#for)
+[Lists](#lists)
+[Conditionals and booleans](#cond)
+[With statement](#with)
+
+## Part 1: Read the Coordinate Data from Input
+
+The input to the program is the set of Cartesian coordinates of the
+atoms (in bohr) and their associated atomic numbers. A sample molecule
+(acetaldehyde) to use as input to the program is:
+
+```
+7
+6 0.000000000000 0.000000000000 0.000000000000
+6 0.000000000000 0.000000000000 2.845112131228
+8 1.899115961744 0.000000000000 4.139062527233
+1 -1.894048308506 0.000000000000 3.747688672216
+1 1.942500819960 0.000000000000 -0.701145981971
+1 -1.007295466862 -1.669971842687 -0.705916966833
+1 -1.007295466862 1.669971842687 -0.705916966833
+```
+
+The first line is the number of atoms, while the remaining lines
+contain the Z-values (atomic charge) and x-, y-, and z-coordinates of
+each atom. This [input file](./input/acetaldehyde.dat) and the other
+test cases can be found in this repository in the [input
+directory](./input).
+
+Assuming you didn't clone the repository, download the input and
+output directories in the form of a
+[tar](https://en.wikipedia.org/wiki/Tar_(computing)) archive using the command
+
+```
+$ curl -O 'https://raw.githubusercontent.com/ntBre/ProgrammingProjects/master/Project01/files.tar'
+```
+
+you can then extract the files using the command
+
+```
+$ tar xvf files.tar
+```
+
+You can also copy and paste the files manually from GitHub, but the
+`tar` approach will be more convenient when the number of files
+increases in later projects.
+
+After somehow getting the files to your computer, you must a) open the
+file, b) read the data from each line into appropriate variables, and
+c) finally close the file. This sounds pretty straightforward, but it
+will introduce us to some important programming constructs. If you
+know some Python, give this a shot on your own. Otherwise, expand the
+code snippets below and type them into your editor of choice. It may
+be tempting to copy and paste, but writing them out by hand will
+better help you remember them in the future. We'll break the task into
+the steps described above.
+
+### a) Open the file
+
+
+
+Tutorial
+
+The basic way to open a file in Python is to use the 'open' function
+as shown below.
+
+
+
+```python
+infile = open("input/acetaldehyde.dat", "r")
+```
+
+The first argument is the name of the file we want to open, in this
+case, "acetaldehyde.dat" in our "input" directory. The second argument
+is a character describing how we want to open the file. In this case,
+we use an "r" to stand for "reading" since we just want to read the
+file. if instead we wanted to write a file, this second argument would
+be "w".
+
+The open function returns a "file object", the details of which are
+not particularly important for now. What is important is what happens
+to that file object after we call open. If we were to run only the
+right portion of the line above, `open("input/acetaldehyde.dat",
+"r")`, our file would disappear and we couldn't do anything useful
+with it. Instead, we use the `=` **operator** to **assign** the file
+object to a **variable**. We can then refer to the file object later
+in our program by using this variable, `infile`, which is short for
+input file.
+
+If you want, you can try printing the file object using
+
+```python
+print(infile)
+```
+
+but this will not be very helpful since Python will just print a
+fairly useless representation of a file object.
+
+
+
+
+
+Solution
+
+```python
+infile = open("input/acetaldehyde.dat", "r")
+```
+
+
+
+### b) Read the data
+
+
+
+Tutorial
+
+The first thing I usually do when opening a file is just write a
+simple **loop** to print all of the lines in the file. Loops, as the
+name suggests, are a way to repeat an action. As a simple example, we
+can use the Python `for` loop along with the `range` built-in to loop
+5 times and print the number each time.
+
+
+
+```python
+for i in range(5):
+ print(i)
+```
+
+Each time through the loop, the variable `i` will be bound to a value
+from 0 to 4. This is a bit tricky at first since you might think the
+loop would run from 1 to 5, but since arrays, or Python's version
+**lists**, which we will meet shortly, are indexed starting from 0,
+this is actually convenient if unintuitive.
+
+Another convenient fact is that Python file objects are iterable. This
+means you can actually loop over a file directly as shown below.
+
+```python
+for line in infile:
+ print(line)
+```
+
+The choice of name for the variable `line` is arbitrary although
+convenient since we are in fact looping over the lines in the file. If
+you run this code, you will notice that there are extra blank lines
+between each line. This is because Python's default `print` function
+tacks on a newline ('\\n') character to every line of output. To turn
+this off, we can pass the **optional argument**, `end` to the `print`
+function with a value of an empty **string**, giving us
+
+```python
+for line in infile:
+ print(line, end="")
+```
+
+and some nicer output. This brings us to our first mention of **data
+types**. Python does not place a great emphasis on different types of
+data like some languages do, but the different types still exist and
+they have different characteristics. Strings, for example, are
+sequences of characters between quotes. We saw a string with our Hello
+World example, although we did not name it as such. Python refers to
+strings by the abbreviation `str`. Other types of data we will see in
+this project are integers, which are whole numbers without decimal
+parts, such as 1 or 2 or 123456, and floating point numbers, which are
+numbers with decimal parts like 1.0 or 3.14. Python refers to these as
+`int`s and `float`s, respectively.
+
+Something else to note here is a very important aspect of
+Python. Indentation matters, and it matters a lot. Instead of using
+braces to indicate code blocks that are nested inside each other like
+many other languages, Python uses indentation. If you wrote
+
+```python
+# NOTE: WRONG!
+for line in infile:
+print(line)
+```
+
+instead of the correct version we wrote above, you will get an error
+telling you it expected an indented block. More dangerously, if we had
+more than one line that was supposed to be inside the loop, as we will
+later, and you only indented the first line, only that line would be
+printed in the loop. For example,
+
+```python
+for line in infile:
+ print("Hello")
+print(line)
+```
+
+will print the string "Hello" 8 times, followed by the last line of
+the file. Python is also very picky about the type of indentation you
+use. Tabs vs spaces is a so-called "holy war" of computing, much like
+Vim vs Emacs, so I won't tell you which to use. Just pick one and
+stick with it or Python will be very angry with you. A good editor
+will handle the indentation for you, so you may not even know which
+you are using.
+
+Now that you can loop over the lines of the file, we can start trying
+to save the information in the file into a form we can use later. If
+you have some experience programming, you might want to define an Atom
+or Molecule class with charge, x, y, and z fields, but we will stick
+with more basic **data structures** for now.
+
+
+
+There are two data structures that we can use here. The first is the
+most commonly-used way to collect multiple things into one, the
+**list**. Lists in Python are written between brackets with
+**elements** separated by commas like `[1, 2, 3]`. This is a list of
+three elements, the integers 1, 2, and 3. You can assign a list to a
+variable like we did with the file:
+
+```python
+l = [1, 2, 3]
+```
+
+will bind our list to the variable `l` so we can use it later. You can
+grab individual elements of a list by **indexing** into it using
+square brackets like `l[0]`, which will give you the zeroth element in
+the list. Similarly, `l[1]` will give you the first element, and
+`l[2]` will give you the second. `l[3]` will give you an error for
+trying to reach an element that doesn't exist.
+
+Loops and lists are intimately connected, and you can loop over a list
+just like we did with our file using a for loop:
+
+```python
+for i in l:
+ print(i)
+```
+
+This will print each element in our list. Note that this is different
+from looping over the *indices* in the list, which would be 0, 1, and
+2, not 1, 2, and 3. If you need both the indices and the elements at
+those indices, you can either range over the **length** of the list,
+using the built-in `len` function like
+
+```python
+for i in range(len(l)):
+ print(i, l[i])
+```
+
+in which case you have to use `l[i]` to access the element of the
+list, or you can use the `enumerate` keyword to get both at once.
+
+```python
+for i, v in enumerate(l):
+ print(i, v)
+```
+
+This binds `i` to the index and `v` to the element or value at index
+`i`.
+
+Lists can also contain other lists, which we will take advantage of
+shortly. For example,
+
+```python
+l = [6, [0.0, 0.0, 0.0]]
+```
+
+is a list of two elements, where the first is an integer, 6, and the
+second element is itself a list containing three floating point zeros.
+
+With that background on lists in mind, we should be ready to read and
+store our atoms from the file. Since we have an open file object from
+the previous step, we can start by looping over it:
+
+```python
+for line in infile:
+```
+
+Inside the loop, we probably need to **split** the line so we can
+access the individual fields. We can do this with the aptly named
+`split` **method**. For the sake of these projects, method and
+function can be used basically interchangeably, but methods are
+technically functions associated with a particular class of
+object. `split` is a built-in string method, which means it acts on a
+string. "Acting on" takes the form of `thing.action()` in the case of
+methods, instead of functions which just look like `action()`. As an
+example, contrast the `split` example below with the way we called the
+`print` and `enumerate` functions.
+
+```python
+for line in infile:
+ sp = line.split()
+```
+
+Now that we have split the line, we can print it to see what it looks like
+
+```python
+for line in infile:
+ sp = line.split()
+ print(sp)
+```
+
+The quotes around the elements in the printed results mean that all of
+the elements are currently strings, so we're going to need to convert
+them to integers and floats, respectively since we want to do math on
+them eventually. You'll also see that the first line, which needs to
+be treated a bit differently from the others, is also being printed.
+
+
+
+When you need to make a decision in the code, you use what is called a
+**conditional**. Python's conditional statement is called an `if`
+statement. It lets you evaluate a set of expressions only *if* some
+other expression is true. For example,
+
+```python
+if 2 > 1:
+ print("2 is greater than 1")
+```
+
+will print the given message if 2 is in fact greater than 1. This type
+of numerical **comparison** is obviously not particularly interesting
+since it will always be true or false. However, it is useful for
+demonstrating both the comparison operators and introducing another
+data type, the **boolean**. The comparison operators should be pretty
+familiar from algebra, but they are listed in the table below.
+
+| Operator | Definition |
+|----------|-----------------------|
+| > | Greater than |
+| < | Less than |
+| >= | Greater than or equal |
+| <= | Less than or equal |
+| == | Equal |
+| != | Not equal |
+
+Booleans are similarly straightforward as they only have two possible
+values, true or false, which are written as `True` and `False` in
+Python. Boolean expressions that are true evaluate to `True` and those
+that are false evaluate to `False`. 2 > 1 in the example above
+evaluates to `True`, so it is equivalent to writing `if True:`.
+
+For our purposes, we want to check if the length of our split line is
+equal to 4, that is it contains a Z value and 3 Cartesian
+coordinates. We can do that with
+
+```python
+if len(sp) == 4:
+ print(sp)
+```
+
+and combining that with our loop from earlier gives
+
+```python
+for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ print(sp)
+```
+
+Note how the indentation increases with each new block we
+introduce. If you run this code, you should notice that the number of
+atoms line is no longer printed. That line is useful in some (old)
+languages where it is not as easy to write "loop until the end of the
+file" as in Python, but we don't need it. Another way we could have
+gotten rid of it is by counting the number of lines we have read and
+skipping the first one, but this solution has the added benefit of
+skipping blank lines that can sometimes be accidentally introduced
+especially at the end of the file.
+
+The next thing we should do is convert our values to the right
+type. We probably want our Z values to be integers, and we definitely
+want our x, y, and z coordinates to be floats. We can make that change
+using the code below, where you can use the Python type names I
+mentioned earlier as functions to convert values to that type.
+
+```python
+for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ print(t)
+```
+
+Now there should not be any quotes around the values and they are
+ready to do mathematical operations on later. The only thing left is
+to actually save these lines for later use. We can put each of these
+lists into another list to keep them together under one
+variable. First we need to initialize an empty list outside our loop.
+
+```python
+atoms = []
+```
+
+`atoms` is a good name since these numbers represent the atomic charge
+and coordinates of atoms. We make an empty list by writing brackets
+with nothing inside them. Then we can **append** to the list, by using
+the again aptly named `append` method of lists inside our loop.
+
+```python
+atoms = []
+for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+print(atoms)
+```
+
+Running this, you can see that we now have all of our atoms in a list
+called `atoms`. `append` just adds a new element, in our case `t`, to
+the end of a list, turning our initially empty list into a full list
+of atoms.
+
+
+
+
+
+Solution
+
+```python
+atoms = []
+for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+print(atoms)
+```
+
+
+
+### c) Close the file
+
+
+
+Tutorial
+
+There's not going to be much difference between the Tutorial and
+Solution in this case. The only small difference between opening and
+closing the file is that `open` was a built-in function, while `close`
+is a file method. As such, instead of writing `close(infile)`, you
+just write
+
+```python
+infile.close()
+```
+
+
+
+
+
+Solution
+
+```python
+infile.close()
+```
+
+
+
+### d) Refactoring
+
+Refactoring is what you call it when you restructure existing code
+without affecting its functionality. Just like writing or any other
+creative endeavor, the first draft of a program is unlikely to be very
+nice. As such, you usually want to do some refactoring to make it
+easier to use or faster to run. The first of these is our main concern
+now, but the latter will become very important for later projects.
+
+
+
+Tutorial
+
+
+
+Instead of having separate steps for opening and closing the files,
+Python has a useful construct for this exact scenario called the
+`with` construct. Below is the current version of the code with the
+separate open and close
+
+```python
+infile = open("input/acetaldehyde.dat", "r")
+atoms = []
+for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+print(atoms)
+infile.close()
+```
+
+and here is what it looks like with a `with` statement
+
+```python
+atoms = []
+with open("input/acetaldehyde.dat", "r") as infile:
+ for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+print(atoms)
+```
+
+In addition to saving two lines of code, this prevents you from
+forgetting to close the file when you finish and also ensures the file
+is closed even if some kind of error or exception occurs between the
+open and close. This is not that important for our current use case
+since our programs are very short-lived, but if your program runs for
+a long time and opens many files without closing them, the operating
+system can even stop you from opening more.
+
+Another nice thing we could do is refactor our code into a function. I
+have mentioned functions before as built-in features of the language
+that do handy things. We can also define our own functions, which
+allows us to reuse pieces of code. You can think of functions like
+functions in math class, basically serving to convert something into
+something else. For example, the mathematical function `f(x) = 2x`
+takes a single argument, `x` and returns that argument multiplied by
+the number 2. We can write the same function in Python like
+
+```python
+def f(x):
+ return 2*x
+```
+
+Here you can see that we have to use the `def` keyword instead of a
+simple equals sign since the equals sign already handles variable
+assignment in Python. We also have to explicitly write `return` to
+actually send a value back out of our function.
+
+In the case of our current project, our input argument will probably
+be the filename, and the output we return will be a list of
+atoms. This will allow our code to be reused for the different test
+cases without having to change the filename directly in our `open`
+call.
+
+To start, we can just sandwich our current code in between a `def` and
+a return, giving it the name `load_atoms`. In addition to being named
+after a snake, the naming convention in Python is to use lowercase
+function names with words separated by underscores, also known as
+snake case. You don't have to follow this, but I will just to be
+Pythonic.
+
+```python
+def load_atoms():
+ atoms = []
+ with open("input/acetaldehyde.dat", "r") as infile:
+ for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+ print(atoms)
+ return
+```
+
+This version doesn't give us much improvement, but you can achieve the
+same behavior as before by adding a call to the function like
+
+```python
+load_atoms()
+```
+
+below the definition. To complete our refactor, let's make
+`load_atoms` actually take the argument we mentioned above, and
+instead of printing anything inside the function, we'll return our
+list of atoms and let whoever wants to call it print the result if
+they want. This gives us the code below.
+
+```python
+def load_atoms(filename):
+ atoms = []
+ with open(filename, "r") as infile:
+ for line in infile:
+ sp = line.split()
+ if len(sp) == 4:
+ t = [int(sp[0]), float(sp[1]), float(sp[2]), float(sp[3])]
+ atoms.append(t)
+ return atoms
+
+
+print(load_atoms("input/acetaldehyde.dat"))
+```
+
+This may not strike you as much of an improvement, and it did add some
+more lines to type, so it may even seem like a bad thing, but keep in
+mind that you can now load the other two provided input files without
+copying and pasting all your code. Encapsulating functionality in
+functions can also help you test small pieces of your code rather than
+running the whole thing at once, which can be very helpful for
+debugging.
+
+
+
+## Part 2: Bond Lengths
+Calculate the interatomic distances using the expression:
+
+
+
+where x, y, and z are Cartesian coordinates and i and j denote atomic indices.
+
+- [Hint 1](./hints/hint2-1.md): Memory allocation
+- [Hint 2](./hints/hint2-2.md): Loop structure
+- [Hint 3](./hints/hint2-3.md): Printing the results
+- [Hint 4](./hints/hint2-4.md): Extending the Molecule class
+- [Solution](./hints/step2-solution.md)
+
+## Step 3: Bond Angles
+Calculate all possible bond angles. For example, the angle, φijk, between atoms i-j-k, where j is the central atom is given by:
+
+
+
+where the eij are unit vectors between the atoms, e.g.,
+
+
+
+- [Hint 1](./hints/hint3-1.md): Memory allocation for the unit vectors
+- [Hint 2](./hints/hint3-2.md): Avoiding a divide-by-zero
+- [Hint 3](./hints/hint3-3.md): Memory allocation for the bond angles
+- [Hint 4](./hints/hint3-4.md): Smart printing
+- [Hint 5](./hints/hint3-5.md): Trigonometric functions
+- [Solution](./hints/step3-solution.md)
+
+## Step 4: Out-of-Plane Angles
+Calculate all possible out-of-plane angles. For example, the angle θijkl for atom i out of the plane containing atoms j-k-l (with k as the central atom, connected to i) is given by:
+
+
+
+- [Hint 1](./hints/hint4-1.md): Memory allocation?
+- [Hint 2](./hints/hint4-2.md): Cross products
+- [Hint 3](./hints/hint4-3.md): Numerical precision
+- [Hint 4](./hints/hint4-4.md): Smarter printing
+- [Solution](./hints/step4-solution.md)
+
+## Step 5: Torsion/Dihedral Angles
+Calculate all possible torsional angles. For example, the torsional angle τijkl for the atom connectivity i-j-k-l is given by:
+
+
+
+Can you also determine the sign of the torsional angle?
+
+- [Hint 1](./hints/hint5-1.md): Memory allocation?
+- [Hint 2](./hints/hint5-2.md): Numerical precision
+- [Hint 3](./hints/hint5-3.md): Smart printing
+- [Hint 4](./hints/hint5-4.md): Sign
+- [Solution](./hints/step5-solution.md)
+
+## Step 6: Center-of-Mass Translation
+Find the center of mass of the molecule:
+
+
+
+where mi is the mass of atom i and the summation runs over all atoms in the molecule.
+
+Translate the input coordinates of the molecule to the center-of-mass.
+
+- [Hint 1](./hints/hint6-1.md): Atomic masses
+- [Hint 2](./hints/hint6-2.md): Translating between atomic number and atomic mass
+- [Solution](./hints/step6-solution.md)
+
+## Step 7: Principal Moments of Inertia
+Calculate elements of the [moment of inertia tensor](http://en.wikipedia.org/wiki/Moment_of_inertia_tensor).
+
+Diagonal:
+
+
+
+Off-diagonal (add a negative sign):
+
+
+
+Diagonalize the inertia tensor to obtain the principal moments of inertia:
+
+
+
+Report the moments of inertia in amu bohr2, amu Å2, and g cm2.
+
+Based on the relative values of the principal moments, determine the [molecular rotor type](http://en.wikipedia.org/wiki/Rotational_spectroscopy): linear, oblate, prolate, asymmetric.
+
+- [Hint 1](./hints/hint7-1.md): Diagonalization of a 3×3 matrix
+- [Hint 2](./hints/hint7-2.md): Physical constants
+- [Solution](./hints/step7-solution.md)
+
+## Step 8: Rotational Constants
+Compute the rotational constants in cm-1 and MHz:
+
+
+
+- [Solution](./hints/step8-solution.md)
+
+
+## Test Cases
+- Acetaldehyde: [input coordinates](./input/acetaldehyde.dat) | [output](./output/acetaldehyde_out.txt)
+- Benzene: [input coordinates](./input/benzene.dat) | [output](./output/benzene_out.txt)
+- Allene: [input coordinates](./input/allene.dat) | [output](./output/allene_out.txt)
+
+## References
+E.B. Wilson, J.C. Decius, and P.C. Cross, __Molecular Vibrations__, McGraw-Hill, 1955.
diff --git a/Project#01/figures/bond-angle.pdf b/Project01/figures/bond-angle.pdf
similarity index 100%
rename from Project#01/figures/bond-angle.pdf
rename to Project01/figures/bond-angle.pdf
diff --git a/Project#01/figures/bond-angle.png b/Project01/figures/bond-angle.png
similarity index 100%
rename from Project#01/figures/bond-angle.png
rename to Project01/figures/bond-angle.png
diff --git a/Project#01/figures/center-of-mass.pdf b/Project01/figures/center-of-mass.pdf
similarity index 100%
rename from Project#01/figures/center-of-mass.pdf
rename to Project01/figures/center-of-mass.pdf
diff --git a/Project#01/figures/center-of-mass.png b/Project01/figures/center-of-mass.png
similarity index 100%
rename from Project#01/figures/center-of-mass.png
rename to Project01/figures/center-of-mass.png
diff --git a/Project#01/figures/determinant.png b/Project01/figures/determinant.png
similarity index 100%
rename from Project#01/figures/determinant.png
rename to Project01/figures/determinant.png
diff --git a/Project#01/figures/distances.pdf b/Project01/figures/distances.pdf
similarity index 100%
rename from Project#01/figures/distances.pdf
rename to Project01/figures/distances.pdf
diff --git a/Project#01/figures/distances.png b/Project01/figures/distances.png
similarity index 100%
rename from Project#01/figures/distances.png
rename to Project01/figures/distances.png
diff --git a/Project#01/figures/distances2.png b/Project01/figures/distances2.png
similarity index 100%
rename from Project#01/figures/distances2.png
rename to Project01/figures/distances2.png
diff --git a/Project#01/figures/inertia-diag.pdf b/Project01/figures/inertia-diag.pdf
similarity index 100%
rename from Project#01/figures/inertia-diag.pdf
rename to Project01/figures/inertia-diag.pdf
diff --git a/Project#01/figures/inertia-diag.png b/Project01/figures/inertia-diag.png
similarity index 100%
rename from Project#01/figures/inertia-diag.png
rename to Project01/figures/inertia-diag.png
diff --git a/Project#01/figures/inertia-off-diag.pdf b/Project01/figures/inertia-off-diag.pdf
similarity index 100%
rename from Project#01/figures/inertia-off-diag.pdf
rename to Project01/figures/inertia-off-diag.pdf
diff --git a/Project#01/figures/inertia-off-diag.png b/Project01/figures/inertia-off-diag.png
similarity index 100%
rename from Project#01/figures/inertia-off-diag.png
rename to Project01/figures/inertia-off-diag.png
diff --git a/Project#01/figures/oop-angle.pdf b/Project01/figures/oop-angle.pdf
similarity index 100%
rename from Project#01/figures/oop-angle.pdf
rename to Project01/figures/oop-angle.pdf
diff --git a/Project#01/figures/oop-angle.png b/Project01/figures/oop-angle.png
similarity index 100%
rename from Project#01/figures/oop-angle.png
rename to Project01/figures/oop-angle.png
diff --git a/Project#01/figures/principal-mom-of-inertia.pdf b/Project01/figures/principal-mom-of-inertia.pdf
similarity index 100%
rename from Project#01/figures/principal-mom-of-inertia.pdf
rename to Project01/figures/principal-mom-of-inertia.pdf
diff --git a/Project#01/figures/principal-mom-of-inertia.png b/Project01/figures/principal-mom-of-inertia.png
similarity index 100%
rename from Project#01/figures/principal-mom-of-inertia.png
rename to Project01/figures/principal-mom-of-inertia.png
diff --git a/Project#01/figures/rot-const.pdf b/Project01/figures/rot-const.pdf
similarity index 100%
rename from Project#01/figures/rot-const.pdf
rename to Project01/figures/rot-const.pdf
diff --git a/Project#01/figures/rot-const.png b/Project01/figures/rot-const.png
similarity index 100%
rename from Project#01/figures/rot-const.png
rename to Project01/figures/rot-const.png
diff --git a/Project#01/figures/torsion-angle.pdf b/Project01/figures/torsion-angle.pdf
similarity index 100%
rename from Project#01/figures/torsion-angle.pdf
rename to Project01/figures/torsion-angle.pdf
diff --git a/Project#01/figures/torsion-angle.png b/Project01/figures/torsion-angle.png
similarity index 100%
rename from Project#01/figures/torsion-angle.png
rename to Project01/figures/torsion-angle.png
diff --git a/Project#01/figures/unit-vectors.pdf b/Project01/figures/unit-vectors.pdf
similarity index 100%
rename from Project#01/figures/unit-vectors.pdf
rename to Project01/figures/unit-vectors.pdf
diff --git a/Project#01/figures/unit-vectors.png b/Project01/figures/unit-vectors.png
similarity index 100%
rename from Project#01/figures/unit-vectors.png
rename to Project01/figures/unit-vectors.png
diff --git a/Project01/files.tar b/Project01/files.tar
new file mode 100644
index 0000000..28c12ff
Binary files /dev/null and b/Project01/files.tar differ
diff --git a/Project#01/input/acetaldehyde.dat b/Project01/input/acetaldehyde.dat
similarity index 100%
rename from Project#01/input/acetaldehyde.dat
rename to Project01/input/acetaldehyde.dat
diff --git a/Project#01/input/allene.dat b/Project01/input/allene.dat
similarity index 100%
rename from Project#01/input/allene.dat
rename to Project01/input/allene.dat
diff --git a/Project#01/input/benzene.dat b/Project01/input/benzene.dat
similarity index 100%
rename from Project#01/input/benzene.dat
rename to Project01/input/benzene.dat
diff --git a/Project#01/output/acetaldehyde_out.txt b/Project01/output/acetaldehyde_out.txt
similarity index 100%
rename from Project#01/output/acetaldehyde_out.txt
rename to Project01/output/acetaldehyde_out.txt
diff --git a/Project#01/output/allene_out.txt b/Project01/output/allene_out.txt
similarity index 100%
rename from Project#01/output/allene_out.txt
rename to Project01/output/allene_out.txt
diff --git a/Project#01/output/benzene_out.txt b/Project01/output/benzene_out.txt
similarity index 100%
rename from Project#01/output/benzene_out.txt
rename to Project01/output/benzene_out.txt
diff --git a/Project#02/README.md b/Project02/README.md
similarity index 100%
rename from Project#02/README.md
rename to Project02/README.md
diff --git a/Project#02/figures/diag-mass-weighted-hessian.png b/Project02/figures/diag-mass-weighted-hessian.png
similarity index 100%
rename from Project#02/figures/diag-mass-weighted-hessian.png
rename to Project02/figures/diag-mass-weighted-hessian.png
diff --git a/Project#02/figures/hessian-file-format.png b/Project02/figures/hessian-file-format.png
similarity index 100%
rename from Project#02/figures/hessian-file-format.png
rename to Project02/figures/hessian-file-format.png
diff --git a/Project#02/figures/hessian.png b/Project02/figures/hessian.png
similarity index 100%
rename from Project#02/figures/hessian.png
rename to Project02/figures/hessian.png
diff --git a/Project#02/figures/mass-weighted-hessian.png b/Project02/figures/mass-weighted-hessian.png
similarity index 100%
rename from Project#02/figures/mass-weighted-hessian.png
rename to Project02/figures/mass-weighted-hessian.png
diff --git a/Project#02/figures/vib-freq.png b/Project02/figures/vib-freq.png
similarity index 100%
rename from Project#02/figures/vib-freq.png
rename to Project02/figures/vib-freq.png
diff --git a/Project#02/hints/hint1.md b/Project02/hints/hint1.md
similarity index 100%
rename from Project#02/hints/hint1.md
rename to Project02/hints/hint1.md
diff --git a/Project#02/hints/hint2.md b/Project02/hints/hint2.md
similarity index 100%
rename from Project#02/hints/hint2.md
rename to Project02/hints/hint2.md
diff --git a/Project#02/hints/hint3.md b/Project02/hints/hint3.md
similarity index 100%
rename from Project#02/hints/hint3.md
rename to Project02/hints/hint3.md
diff --git a/Project#02/hints/hint4.md b/Project02/hints/hint4.md
similarity index 100%
rename from Project#02/hints/hint4.md
rename to Project02/hints/hint4.md
diff --git a/Project#02/input/3c1b_geom.txt b/Project02/input/3c1b_geom.txt
similarity index 100%
rename from Project#02/input/3c1b_geom.txt
rename to Project02/input/3c1b_geom.txt
diff --git a/Project#02/input/3c1b_hessian.txt b/Project02/input/3c1b_hessian.txt
similarity index 100%
rename from Project#02/input/3c1b_hessian.txt
rename to Project02/input/3c1b_hessian.txt
diff --git a/Project#02/input/benzene_geom.txt b/Project02/input/benzene_geom.txt
similarity index 100%
rename from Project#02/input/benzene_geom.txt
rename to Project02/input/benzene_geom.txt
diff --git a/Project#02/input/benzene_hessian.txt b/Project02/input/benzene_hessian.txt
similarity index 100%
rename from Project#02/input/benzene_hessian.txt
rename to Project02/input/benzene_hessian.txt
diff --git a/Project#02/input/h2o_geom.txt b/Project02/input/h2o_geom.txt
similarity index 100%
rename from Project#02/input/h2o_geom.txt
rename to Project02/input/h2o_geom.txt
diff --git a/Project#02/input/h2o_hessian.txt b/Project02/input/h2o_hessian.txt
similarity index 100%
rename from Project#02/input/h2o_hessian.txt
rename to Project02/input/h2o_hessian.txt
diff --git a/Project#02/output/3c1b_vib_out.txt b/Project02/output/3c1b_vib_out.txt
similarity index 100%
rename from Project#02/output/3c1b_vib_out.txt
rename to Project02/output/3c1b_vib_out.txt
diff --git a/Project#02/output/benzene_vib_out.txt b/Project02/output/benzene_vib_out.txt
similarity index 100%
rename from Project#02/output/benzene_vib_out.txt
rename to Project02/output/benzene_vib_out.txt
diff --git a/Project#02/output/h2o_vib_out.txt b/Project02/output/h2o_vib_out.txt
similarity index 100%
rename from Project#02/output/h2o_vib_out.txt
rename to Project02/output/h2o_vib_out.txt
diff --git a/Project#02/project2-instructions.pdf b/Project02/project2-instructions.pdf
similarity index 100%
rename from Project#02/project2-instructions.pdf
rename to Project02/project2-instructions.pdf
diff --git a/Project#03/README.md b/Project03/README.md
similarity index 100%
rename from Project#03/README.md
rename to Project03/README.md
diff --git a/Project#03/figures/atomic-charge.png b/Project03/figures/atomic-charge.png
similarity index 100%
rename from Project#03/figures/atomic-charge.png
rename to Project03/figures/atomic-charge.png
diff --git a/Project#03/figures/back-transform-coeff.png b/Project03/figures/back-transform-coeff.png
similarity index 100%
rename from Project#03/figures/back-transform-coeff.png
rename to Project03/figures/back-transform-coeff.png
diff --git a/Project#03/figures/canonical-mos.png b/Project03/figures/canonical-mos.png
similarity index 100%
rename from Project#03/figures/canonical-mos.png
rename to Project03/figures/canonical-mos.png
diff --git a/Project#03/figures/compound-index-restrictions.png b/Project03/figures/compound-index-restrictions.png
similarity index 100%
rename from Project#03/figures/compound-index-restrictions.png
rename to Project03/figures/compound-index-restrictions.png
diff --git a/Project#03/figures/compound-index-restrictions2.png b/Project03/figures/compound-index-restrictions2.png
similarity index 100%
rename from Project#03/figures/compound-index-restrictions2.png
rename to Project03/figures/compound-index-restrictions2.png
diff --git a/Project#03/figures/compute-density.png b/Project03/figures/compute-density.png
similarity index 100%
rename from Project#03/figures/compute-density.png
rename to Project03/figures/compute-density.png
diff --git a/Project#03/figures/compute-new-scf-energy.png b/Project03/figures/compute-new-scf-energy.png
similarity index 100%
rename from Project#03/figures/compute-new-scf-energy.png
rename to Project03/figures/compute-new-scf-energy.png
diff --git a/Project#03/figures/convergence-test.png b/Project03/figures/convergence-test.png
similarity index 100%
rename from Project#03/figures/convergence-test.png
rename to Project03/figures/convergence-test.png
diff --git a/Project#03/figures/core-hamiltonian.png b/Project03/figures/core-hamiltonian.png
similarity index 100%
rename from Project#03/figures/core-hamiltonian.png
rename to Project03/figures/core-hamiltonian.png
diff --git a/Project#03/figures/density-matrix.png b/Project03/figures/density-matrix.png
similarity index 100%
rename from Project#03/figures/density-matrix.png
rename to Project03/figures/density-matrix.png
diff --git a/Project#03/figures/diag-fock.png b/Project03/figures/diag-fock.png
similarity index 100%
rename from Project#03/figures/diag-fock.png
rename to Project03/figures/diag-fock.png
diff --git a/Project#03/figures/diag-mw-hessian.png b/Project03/figures/diag-mw-hessian.png
similarity index 100%
rename from Project#03/figures/diag-mw-hessian.png
rename to Project03/figures/diag-mw-hessian.png
diff --git a/Project#03/figures/diag-new-fock.png b/Project03/figures/diag-new-fock.png
similarity index 100%
rename from Project#03/figures/diag-new-fock.png
rename to Project03/figures/diag-new-fock.png
diff --git a/Project#03/figures/electric-dipole-moment.png b/Project03/figures/electric-dipole-moment.png
similarity index 100%
rename from Project#03/figures/electric-dipole-moment.png
rename to Project03/figures/electric-dipole-moment.png
diff --git a/Project#03/figures/eri.pdf b/Project03/figures/eri.pdf
similarity index 100%
rename from Project#03/figures/eri.pdf
rename to Project03/figures/eri.pdf
diff --git a/Project#03/figures/eri.png b/Project03/figures/eri.png
similarity index 100%
rename from Project#03/figures/eri.png
rename to Project03/figures/eri.png
diff --git a/Project#03/figures/index-restrictions.png b/Project03/figures/index-restrictions.png
similarity index 100%
rename from Project#03/figures/index-restrictions.png
rename to Project03/figures/index-restrictions.png
diff --git a/Project#03/figures/initial-fock.png b/Project03/figures/initial-fock.png
similarity index 100%
rename from Project#03/figures/initial-fock.png
rename to Project03/figures/initial-fock.png
diff --git a/Project#03/figures/initial-scf-energy.png b/Project03/figures/initial-scf-energy.png
similarity index 100%
rename from Project#03/figures/initial-scf-energy.png
rename to Project03/figures/initial-scf-energy.png
diff --git a/Project#03/figures/initial-total-energy.png b/Project03/figures/initial-total-energy.png
similarity index 100%
rename from Project#03/figures/initial-total-energy.png
rename to Project03/figures/initial-total-energy.png
diff --git a/Project#03/figures/ioff-compound-index.png b/Project03/figures/ioff-compound-index.png
similarity index 100%
rename from Project#03/figures/ioff-compound-index.png
rename to Project03/figures/ioff-compound-index.png
diff --git a/Project#03/figures/ioff-compound-index2.png b/Project03/figures/ioff-compound-index2.png
similarity index 100%
rename from Project#03/figures/ioff-compound-index2.png
rename to Project03/figures/ioff-compound-index2.png
diff --git a/Project#03/figures/ioff-final-compound-index.png b/Project03/figures/ioff-final-compound-index.png
similarity index 100%
rename from Project#03/figures/ioff-final-compound-index.png
rename to Project03/figures/ioff-final-compound-index.png
diff --git a/Project#03/figures/kinetic-energy.png b/Project03/figures/kinetic-energy.png
similarity index 100%
rename from Project#03/figures/kinetic-energy.png
rename to Project03/figures/kinetic-energy.png
diff --git a/Project#03/figures/lower-triang-numbered-matrix.png b/Project03/figures/lower-triang-numbered-matrix.png
similarity index 100%
rename from Project#03/figures/lower-triang-numbered-matrix.png
rename to Project03/figures/lower-triang-numbered-matrix.png
diff --git a/Project#03/figures/lower-triang-numbered-matrix2.png b/Project03/figures/lower-triang-numbered-matrix2.png
similarity index 100%
rename from Project#03/figures/lower-triang-numbered-matrix2.png
rename to Project03/figures/lower-triang-numbered-matrix2.png
diff --git a/Project#03/figures/mo-fock-matrix-element.png b/Project03/figures/mo-fock-matrix-element.png
similarity index 100%
rename from Project#03/figures/mo-fock-matrix-element.png
rename to Project03/figures/mo-fock-matrix-element.png
diff --git a/Project#03/figures/mo-fock-matrix.png b/Project03/figures/mo-fock-matrix.png
similarity index 100%
rename from Project#03/figures/mo-fock-matrix.png
rename to Project03/figures/mo-fock-matrix.png
diff --git a/Project#03/figures/n-by-n-symmetric-matrix.png b/Project03/figures/n-by-n-symmetric-matrix.png
similarity index 100%
rename from Project#03/figures/n-by-n-symmetric-matrix.png
rename to Project03/figures/n-by-n-symmetric-matrix.png
diff --git a/Project#03/figures/new-fock.png b/Project03/figures/new-fock.png
similarity index 100%
rename from Project#03/figures/new-fock.png
rename to Project03/figures/new-fock.png
diff --git a/Project#03/figures/nuclear-attraction.png b/Project03/figures/nuclear-attraction.png
similarity index 100%
rename from Project#03/figures/nuclear-attraction.png
rename to Project03/figures/nuclear-attraction.png
diff --git a/Project#03/figures/orthog-fock.png b/Project03/figures/orthog-fock.png
similarity index 100%
rename from Project#03/figures/orthog-fock.png
rename to Project03/figures/orthog-fock.png
diff --git a/Project#03/figures/overlap.png b/Project03/figures/overlap.png
similarity index 100%
rename from Project#03/figures/overlap.png
rename to Project03/figures/overlap.png
diff --git a/Project#03/figures/permutational-symmetry.png b/Project03/figures/permutational-symmetry.png
similarity index 100%
rename from Project#03/figures/permutational-symmetry.png
rename to Project03/figures/permutational-symmetry.png
diff --git a/Project#03/figures/symm-orthog-matrix.png b/Project03/figures/symm-orthog-matrix.png
similarity index 100%
rename from Project#03/figures/symm-orthog-matrix.png
rename to Project03/figures/symm-orthog-matrix.png
diff --git a/Project#03/figures/symmetric-integral-matrix.png b/Project03/figures/symmetric-integral-matrix.png
similarity index 100%
rename from Project#03/figures/symmetric-integral-matrix.png
rename to Project03/figures/symmetric-integral-matrix.png
diff --git a/Project#03/figures/transform-coeff.png b/Project03/figures/transform-coeff.png
similarity index 100%
rename from Project#03/figures/transform-coeff.png
rename to Project03/figures/transform-coeff.png
diff --git a/Project#03/hints/hint10-1.md b/Project03/hints/hint10-1.md
similarity index 100%
rename from Project#03/hints/hint10-1.md
rename to Project03/hints/hint10-1.md
diff --git a/Project#03/hints/hint2-1.md b/Project03/hints/hint2-1.md
similarity index 100%
rename from Project#03/hints/hint2-1.md
rename to Project03/hints/hint2-1.md
diff --git a/Project#03/hints/hint3-1.md b/Project03/hints/hint3-1.md
similarity index 100%
rename from Project#03/hints/hint3-1.md
rename to Project03/hints/hint3-1.md
diff --git a/Project#03/hints/hint3-2.md b/Project03/hints/hint3-2.md
similarity index 100%
rename from Project#03/hints/hint3-2.md
rename to Project03/hints/hint3-2.md
diff --git a/Project#03/hints/hint3-3.md b/Project03/hints/hint3-3.md
similarity index 100%
rename from Project#03/hints/hint3-3.md
rename to Project03/hints/hint3-3.md
diff --git a/Project#03/hints/hint4-1.md b/Project03/hints/hint4-1.md
similarity index 100%
rename from Project#03/hints/hint4-1.md
rename to Project03/hints/hint4-1.md
diff --git a/Project#03/hints/hint5-1.md b/Project03/hints/hint5-1.md
similarity index 100%
rename from Project#03/hints/hint5-1.md
rename to Project03/hints/hint5-1.md
diff --git a/Project#03/hints/hint5-2.md b/Project03/hints/hint5-2.md
similarity index 100%
rename from Project#03/hints/hint5-2.md
rename to Project03/hints/hint5-2.md
diff --git a/Project#03/hints/hint5-3.md b/Project03/hints/hint5-3.md
similarity index 100%
rename from Project#03/hints/hint5-3.md
rename to Project03/hints/hint5-3.md
diff --git a/Project#03/hints/hint6-1.md b/Project03/hints/hint6-1.md
similarity index 100%
rename from Project#03/hints/hint6-1.md
rename to Project03/hints/hint6-1.md
diff --git a/Project#03/hints/hint7-1.md b/Project03/hints/hint7-1.md
similarity index 100%
rename from Project#03/hints/hint7-1.md
rename to Project03/hints/hint7-1.md
diff --git a/Project#03/hints/hint7-2.md b/Project03/hints/hint7-2.md
similarity index 100%
rename from Project#03/hints/hint7-2.md
rename to Project03/hints/hint7-2.md
diff --git a/Project#03/input/ch4/STO-3G/enuc.dat b/Project03/input/ch4/STO-3G/enuc.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/enuc.dat
rename to Project03/input/ch4/STO-3G/enuc.dat
diff --git a/Project#03/input/ch4/STO-3G/eri.dat b/Project03/input/ch4/STO-3G/eri.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/eri.dat
rename to Project03/input/ch4/STO-3G/eri.dat
diff --git a/Project#03/input/ch4/STO-3G/geom.dat b/Project03/input/ch4/STO-3G/geom.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/geom.dat
rename to Project03/input/ch4/STO-3G/geom.dat
diff --git a/Project#03/input/ch4/STO-3G/input.dat b/Project03/input/ch4/STO-3G/input.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/input.dat
rename to Project03/input/ch4/STO-3G/input.dat
diff --git a/Project#03/input/ch4/STO-3G/mux.dat b/Project03/input/ch4/STO-3G/mux.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/mux.dat
rename to Project03/input/ch4/STO-3G/mux.dat
diff --git a/Project#03/input/ch4/STO-3G/muy.dat b/Project03/input/ch4/STO-3G/muy.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/muy.dat
rename to Project03/input/ch4/STO-3G/muy.dat
diff --git a/Project#03/input/ch4/STO-3G/muz.dat b/Project03/input/ch4/STO-3G/muz.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/muz.dat
rename to Project03/input/ch4/STO-3G/muz.dat
diff --git a/Project#03/input/ch4/STO-3G/s.dat b/Project03/input/ch4/STO-3G/s.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/s.dat
rename to Project03/input/ch4/STO-3G/s.dat
diff --git a/Project#03/input/ch4/STO-3G/t.dat b/Project03/input/ch4/STO-3G/t.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/t.dat
rename to Project03/input/ch4/STO-3G/t.dat
diff --git a/Project#03/input/ch4/STO-3G/v.dat b/Project03/input/ch4/STO-3G/v.dat
similarity index 100%
rename from Project#03/input/ch4/STO-3G/v.dat
rename to Project03/input/ch4/STO-3G/v.dat
diff --git a/Project#03/input/h2o/DZ/enuc.dat b/Project03/input/h2o/DZ/enuc.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/enuc.dat
rename to Project03/input/h2o/DZ/enuc.dat
diff --git a/Project#03/input/h2o/DZ/eri.dat b/Project03/input/h2o/DZ/eri.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/eri.dat
rename to Project03/input/h2o/DZ/eri.dat
diff --git a/Project#03/input/h2o/DZ/geom.dat b/Project03/input/h2o/DZ/geom.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/geom.dat
rename to Project03/input/h2o/DZ/geom.dat
diff --git a/Project#03/input/h2o/DZ/input.dat b/Project03/input/h2o/DZ/input.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/input.dat
rename to Project03/input/h2o/DZ/input.dat
diff --git a/Project#03/input/h2o/DZ/mux.dat b/Project03/input/h2o/DZ/mux.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/mux.dat
rename to Project03/input/h2o/DZ/mux.dat
diff --git a/Project#03/input/h2o/DZ/muy.dat b/Project03/input/h2o/DZ/muy.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/muy.dat
rename to Project03/input/h2o/DZ/muy.dat
diff --git a/Project#03/input/h2o/DZ/muz.dat b/Project03/input/h2o/DZ/muz.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/muz.dat
rename to Project03/input/h2o/DZ/muz.dat
diff --git a/Project#03/input/h2o/DZ/s.dat b/Project03/input/h2o/DZ/s.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/s.dat
rename to Project03/input/h2o/DZ/s.dat
diff --git a/Project#03/input/h2o/DZ/t.dat b/Project03/input/h2o/DZ/t.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/t.dat
rename to Project03/input/h2o/DZ/t.dat
diff --git a/Project#03/input/h2o/DZ/v.dat b/Project03/input/h2o/DZ/v.dat
similarity index 100%
rename from Project#03/input/h2o/DZ/v.dat
rename to Project03/input/h2o/DZ/v.dat
diff --git a/Project#03/input/h2o/DZP/enuc.dat b/Project03/input/h2o/DZP/enuc.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/enuc.dat
rename to Project03/input/h2o/DZP/enuc.dat
diff --git a/Project#03/input/h2o/DZP/eri.dat b/Project03/input/h2o/DZP/eri.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/eri.dat
rename to Project03/input/h2o/DZP/eri.dat
diff --git a/Project#03/input/h2o/DZP/geom.dat b/Project03/input/h2o/DZP/geom.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/geom.dat
rename to Project03/input/h2o/DZP/geom.dat
diff --git a/Project#03/input/h2o/DZP/input.dat b/Project03/input/h2o/DZP/input.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/input.dat
rename to Project03/input/h2o/DZP/input.dat
diff --git a/Project#03/input/h2o/DZP/mux.dat b/Project03/input/h2o/DZP/mux.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/mux.dat
rename to Project03/input/h2o/DZP/mux.dat
diff --git a/Project#03/input/h2o/DZP/muy.dat b/Project03/input/h2o/DZP/muy.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/muy.dat
rename to Project03/input/h2o/DZP/muy.dat
diff --git a/Project#03/input/h2o/DZP/muz.dat b/Project03/input/h2o/DZP/muz.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/muz.dat
rename to Project03/input/h2o/DZP/muz.dat
diff --git a/Project#03/input/h2o/DZP/s.dat b/Project03/input/h2o/DZP/s.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/s.dat
rename to Project03/input/h2o/DZP/s.dat
diff --git a/Project#03/input/h2o/DZP/t.dat b/Project03/input/h2o/DZP/t.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/t.dat
rename to Project03/input/h2o/DZP/t.dat
diff --git a/Project#03/input/h2o/DZP/v.dat b/Project03/input/h2o/DZP/v.dat
similarity index 100%
rename from Project#03/input/h2o/DZP/v.dat
rename to Project03/input/h2o/DZP/v.dat
diff --git a/Project#03/input/h2o/STO-3G/enuc.dat b/Project03/input/h2o/STO-3G/enuc.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/enuc.dat
rename to Project03/input/h2o/STO-3G/enuc.dat
diff --git a/Project#03/input/h2o/STO-3G/eri.dat b/Project03/input/h2o/STO-3G/eri.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/eri.dat
rename to Project03/input/h2o/STO-3G/eri.dat
diff --git a/Project#03/input/h2o/STO-3G/geom.dat b/Project03/input/h2o/STO-3G/geom.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/geom.dat
rename to Project03/input/h2o/STO-3G/geom.dat
diff --git a/Project#03/input/h2o/STO-3G/input.dat b/Project03/input/h2o/STO-3G/input.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/input.dat
rename to Project03/input/h2o/STO-3G/input.dat
diff --git a/Project#03/input/h2o/STO-3G/mux.dat b/Project03/input/h2o/STO-3G/mux.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/mux.dat
rename to Project03/input/h2o/STO-3G/mux.dat
diff --git a/Project#03/input/h2o/STO-3G/muy.dat b/Project03/input/h2o/STO-3G/muy.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/muy.dat
rename to Project03/input/h2o/STO-3G/muy.dat
diff --git a/Project#03/input/h2o/STO-3G/muz.dat b/Project03/input/h2o/STO-3G/muz.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/muz.dat
rename to Project03/input/h2o/STO-3G/muz.dat
diff --git a/Project#03/input/h2o/STO-3G/s.dat b/Project03/input/h2o/STO-3G/s.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/s.dat
rename to Project03/input/h2o/STO-3G/s.dat
diff --git a/Project#03/input/h2o/STO-3G/t.dat b/Project03/input/h2o/STO-3G/t.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/t.dat
rename to Project03/input/h2o/STO-3G/t.dat
diff --git a/Project#03/input/h2o/STO-3G/v.dat b/Project03/input/h2o/STO-3G/v.dat
similarity index 100%
rename from Project#03/input/h2o/STO-3G/v.dat
rename to Project03/input/h2o/STO-3G/v.dat
diff --git a/Project#03/output/ch4/STO-3G/output.txt b/Project03/output/ch4/STO-3G/output.txt
similarity index 100%
rename from Project#03/output/ch4/STO-3G/output.txt
rename to Project03/output/ch4/STO-3G/output.txt
diff --git a/Project#03/output/h2o/DZ/output.txt b/Project03/output/h2o/DZ/output.txt
similarity index 100%
rename from Project#03/output/h2o/DZ/output.txt
rename to Project03/output/h2o/DZ/output.txt
diff --git a/Project#03/output/h2o/DZP/output.txt b/Project03/output/h2o/DZP/output.txt
similarity index 100%
rename from Project#03/output/h2o/DZP/output.txt
rename to Project03/output/h2o/DZP/output.txt
diff --git a/Project#03/output/h2o/STO-3G/output.txt b/Project03/output/h2o/STO-3G/output.txt
similarity index 100%
rename from Project#03/output/h2o/STO-3G/output.txt
rename to Project03/output/h2o/STO-3G/output.txt
diff --git a/Project#03/project3-instructions.pdf b/Project03/project3-instructions.pdf
similarity index 100%
rename from Project#03/project3-instructions.pdf
rename to Project03/project3-instructions.pdf
diff --git a/Project#04/README.md b/Project04/README.md
similarity index 100%
rename from Project#04/README.md
rename to Project04/README.md
diff --git a/Project#04/figures/eri.png b/Project04/figures/eri.png
similarity index 100%
rename from Project#04/figures/eri.png
rename to Project04/figures/eri.png
diff --git a/Project#04/figures/mp2-energy.png b/Project04/figures/mp2-energy.png
similarity index 100%
rename from Project#04/figures/mp2-energy.png
rename to Project04/figures/mp2-energy.png
diff --git a/Project#04/figures/noddy-transform.png b/Project04/figures/noddy-transform.png
similarity index 100%
rename from Project#04/figures/noddy-transform.png
rename to Project04/figures/noddy-transform.png
diff --git a/Project#04/figures/smart-transform.png b/Project04/figures/smart-transform.png
similarity index 100%
rename from Project#04/figures/smart-transform.png
rename to Project04/figures/smart-transform.png
diff --git a/Project#04/hints/hint1.md b/Project04/hints/hint1.md
similarity index 100%
rename from Project#04/hints/hint1.md
rename to Project04/hints/hint1.md
diff --git a/Project#04/hints/hint2.md b/Project04/hints/hint2.md
similarity index 100%
rename from Project#04/hints/hint2.md
rename to Project04/hints/hint2.md
diff --git a/Project#04/hints/hint3.md b/Project04/hints/hint3.md
similarity index 100%
rename from Project#04/hints/hint3.md
rename to Project04/hints/hint3.md
diff --git a/Project#04/input/ch4/STO-3G/enuc.dat b/Project04/input/ch4/STO-3G/enuc.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/enuc.dat
rename to Project04/input/ch4/STO-3G/enuc.dat
diff --git a/Project#04/input/ch4/STO-3G/eri.dat b/Project04/input/ch4/STO-3G/eri.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/eri.dat
rename to Project04/input/ch4/STO-3G/eri.dat
diff --git a/Project#04/input/ch4/STO-3G/geom.dat b/Project04/input/ch4/STO-3G/geom.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/geom.dat
rename to Project04/input/ch4/STO-3G/geom.dat
diff --git a/Project#04/input/ch4/STO-3G/input.dat b/Project04/input/ch4/STO-3G/input.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/input.dat
rename to Project04/input/ch4/STO-3G/input.dat
diff --git a/Project#04/input/ch4/STO-3G/mux.dat b/Project04/input/ch4/STO-3G/mux.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/mux.dat
rename to Project04/input/ch4/STO-3G/mux.dat
diff --git a/Project#04/input/ch4/STO-3G/muy.dat b/Project04/input/ch4/STO-3G/muy.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/muy.dat
rename to Project04/input/ch4/STO-3G/muy.dat
diff --git a/Project#04/input/ch4/STO-3G/muz.dat b/Project04/input/ch4/STO-3G/muz.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/muz.dat
rename to Project04/input/ch4/STO-3G/muz.dat
diff --git a/Project#04/input/ch4/STO-3G/s.dat b/Project04/input/ch4/STO-3G/s.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/s.dat
rename to Project04/input/ch4/STO-3G/s.dat
diff --git a/Project#04/input/ch4/STO-3G/t.dat b/Project04/input/ch4/STO-3G/t.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/t.dat
rename to Project04/input/ch4/STO-3G/t.dat
diff --git a/Project#04/input/ch4/STO-3G/v.dat b/Project04/input/ch4/STO-3G/v.dat
similarity index 100%
rename from Project#04/input/ch4/STO-3G/v.dat
rename to Project04/input/ch4/STO-3G/v.dat
diff --git a/Project#04/input/h2o/DZ/enuc.dat b/Project04/input/h2o/DZ/enuc.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/enuc.dat
rename to Project04/input/h2o/DZ/enuc.dat
diff --git a/Project#04/input/h2o/DZ/eri.dat b/Project04/input/h2o/DZ/eri.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/eri.dat
rename to Project04/input/h2o/DZ/eri.dat
diff --git a/Project#04/input/h2o/DZ/geom.dat b/Project04/input/h2o/DZ/geom.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/geom.dat
rename to Project04/input/h2o/DZ/geom.dat
diff --git a/Project#04/input/h2o/DZ/input.dat b/Project04/input/h2o/DZ/input.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/input.dat
rename to Project04/input/h2o/DZ/input.dat
diff --git a/Project#04/input/h2o/DZ/mux.dat b/Project04/input/h2o/DZ/mux.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/mux.dat
rename to Project04/input/h2o/DZ/mux.dat
diff --git a/Project#04/input/h2o/DZ/muy.dat b/Project04/input/h2o/DZ/muy.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/muy.dat
rename to Project04/input/h2o/DZ/muy.dat
diff --git a/Project#04/input/h2o/DZ/muz.dat b/Project04/input/h2o/DZ/muz.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/muz.dat
rename to Project04/input/h2o/DZ/muz.dat
diff --git a/Project#04/input/h2o/DZ/s.dat b/Project04/input/h2o/DZ/s.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/s.dat
rename to Project04/input/h2o/DZ/s.dat
diff --git a/Project#04/input/h2o/DZ/t.dat b/Project04/input/h2o/DZ/t.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/t.dat
rename to Project04/input/h2o/DZ/t.dat
diff --git a/Project#04/input/h2o/DZ/v.dat b/Project04/input/h2o/DZ/v.dat
similarity index 100%
rename from Project#04/input/h2o/DZ/v.dat
rename to Project04/input/h2o/DZ/v.dat
diff --git a/Project#04/input/h2o/DZP/enuc.dat b/Project04/input/h2o/DZP/enuc.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/enuc.dat
rename to Project04/input/h2o/DZP/enuc.dat
diff --git a/Project#04/input/h2o/DZP/eri.dat b/Project04/input/h2o/DZP/eri.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/eri.dat
rename to Project04/input/h2o/DZP/eri.dat
diff --git a/Project#04/input/h2o/DZP/geom.dat b/Project04/input/h2o/DZP/geom.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/geom.dat
rename to Project04/input/h2o/DZP/geom.dat
diff --git a/Project#04/input/h2o/DZP/input.dat b/Project04/input/h2o/DZP/input.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/input.dat
rename to Project04/input/h2o/DZP/input.dat
diff --git a/Project#04/input/h2o/DZP/mux.dat b/Project04/input/h2o/DZP/mux.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/mux.dat
rename to Project04/input/h2o/DZP/mux.dat
diff --git a/Project#04/input/h2o/DZP/muy.dat b/Project04/input/h2o/DZP/muy.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/muy.dat
rename to Project04/input/h2o/DZP/muy.dat
diff --git a/Project#04/input/h2o/DZP/muz.dat b/Project04/input/h2o/DZP/muz.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/muz.dat
rename to Project04/input/h2o/DZP/muz.dat
diff --git a/Project#04/input/h2o/DZP/s.dat b/Project04/input/h2o/DZP/s.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/s.dat
rename to Project04/input/h2o/DZP/s.dat
diff --git a/Project#04/input/h2o/DZP/t.dat b/Project04/input/h2o/DZP/t.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/t.dat
rename to Project04/input/h2o/DZP/t.dat
diff --git a/Project#04/input/h2o/DZP/v.dat b/Project04/input/h2o/DZP/v.dat
similarity index 100%
rename from Project#04/input/h2o/DZP/v.dat
rename to Project04/input/h2o/DZP/v.dat
diff --git a/Project#04/input/h2o/STO-3G/enuc.dat b/Project04/input/h2o/STO-3G/enuc.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/enuc.dat
rename to Project04/input/h2o/STO-3G/enuc.dat
diff --git a/Project#04/input/h2o/STO-3G/eri.dat b/Project04/input/h2o/STO-3G/eri.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/eri.dat
rename to Project04/input/h2o/STO-3G/eri.dat
diff --git a/Project#04/input/h2o/STO-3G/geom.dat b/Project04/input/h2o/STO-3G/geom.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/geom.dat
rename to Project04/input/h2o/STO-3G/geom.dat
diff --git a/Project#04/input/h2o/STO-3G/input.dat b/Project04/input/h2o/STO-3G/input.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/input.dat
rename to Project04/input/h2o/STO-3G/input.dat
diff --git a/Project#04/input/h2o/STO-3G/mux.dat b/Project04/input/h2o/STO-3G/mux.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/mux.dat
rename to Project04/input/h2o/STO-3G/mux.dat
diff --git a/Project#04/input/h2o/STO-3G/muy.dat b/Project04/input/h2o/STO-3G/muy.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/muy.dat
rename to Project04/input/h2o/STO-3G/muy.dat
diff --git a/Project#04/input/h2o/STO-3G/muz.dat b/Project04/input/h2o/STO-3G/muz.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/muz.dat
rename to Project04/input/h2o/STO-3G/muz.dat
diff --git a/Project#04/input/h2o/STO-3G/s.dat b/Project04/input/h2o/STO-3G/s.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/s.dat
rename to Project04/input/h2o/STO-3G/s.dat
diff --git a/Project#04/input/h2o/STO-3G/t.dat b/Project04/input/h2o/STO-3G/t.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/t.dat
rename to Project04/input/h2o/STO-3G/t.dat
diff --git a/Project#04/input/h2o/STO-3G/v.dat b/Project04/input/h2o/STO-3G/v.dat
similarity index 100%
rename from Project#04/input/h2o/STO-3G/v.dat
rename to Project04/input/h2o/STO-3G/v.dat
diff --git a/Project#04/output/ch4/STO-3G/output.txt b/Project04/output/ch4/STO-3G/output.txt
similarity index 100%
rename from Project#04/output/ch4/STO-3G/output.txt
rename to Project04/output/ch4/STO-3G/output.txt
diff --git a/Project#04/output/h2o/DZ/output.txt b/Project04/output/h2o/DZ/output.txt
similarity index 100%
rename from Project#04/output/h2o/DZ/output.txt
rename to Project04/output/h2o/DZ/output.txt
diff --git a/Project#04/output/h2o/DZP/output.txt b/Project04/output/h2o/DZP/output.txt
similarity index 100%
rename from Project#04/output/h2o/DZP/output.txt
rename to Project04/output/h2o/DZP/output.txt
diff --git a/Project#04/output/h2o/STO-3G/output.txt b/Project04/output/h2o/STO-3G/output.txt
similarity index 100%
rename from Project#04/output/h2o/STO-3G/output.txt
rename to Project04/output/h2o/STO-3G/output.txt
diff --git a/Project#04/project4-instructions.pdf b/Project04/project4-instructions.pdf
similarity index 100%
rename from Project#04/project4-instructions.pdf
rename to Project04/project4-instructions.pdf
diff --git a/Project#05/README.md b/Project05/README.md
similarity index 100%
rename from Project#05/README.md
rename to Project05/README.md
diff --git a/Project#05/figures/cc-correlation-energy.png b/Project05/figures/cc-correlation-energy.png
similarity index 100%
rename from Project#05/figures/cc-correlation-energy.png
rename to Project05/figures/cc-correlation-energy.png
diff --git a/Project#05/figures/init-t-amps.png b/Project05/figures/init-t-amps.png
similarity index 100%
rename from Project#05/figures/init-t-amps.png
rename to Project05/figures/init-t-amps.png
diff --git a/Project#05/figures/mp2-energy.png b/Project05/figures/mp2-energy.png
similarity index 100%
rename from Project#05/figures/mp2-energy.png
rename to Project05/figures/mp2-energy.png
diff --git a/Project#05/figures/spin-orbital-eri.png b/Project05/figures/spin-orbital-eri.png
similarity index 100%
rename from Project#05/figures/spin-orbital-eri.png
rename to Project05/figures/spin-orbital-eri.png
diff --git a/Project#05/figures/spin-orbital-fock.png b/Project05/figures/spin-orbital-fock.png
similarity index 100%
rename from Project#05/figures/spin-orbital-fock.png
rename to Project05/figures/spin-orbital-fock.png
diff --git a/Project#05/hints/hint1.md b/Project05/hints/hint1.md
similarity index 100%
rename from Project#05/hints/hint1.md
rename to Project05/hints/hint1.md
diff --git a/Project#05/input/ch4/STO-3G/enuc.dat b/Project05/input/ch4/STO-3G/enuc.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/enuc.dat
rename to Project05/input/ch4/STO-3G/enuc.dat
diff --git a/Project#05/input/ch4/STO-3G/eri.dat b/Project05/input/ch4/STO-3G/eri.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/eri.dat
rename to Project05/input/ch4/STO-3G/eri.dat
diff --git a/Project#05/input/ch4/STO-3G/geom.dat b/Project05/input/ch4/STO-3G/geom.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/geom.dat
rename to Project05/input/ch4/STO-3G/geom.dat
diff --git a/Project#05/input/ch4/STO-3G/input.dat b/Project05/input/ch4/STO-3G/input.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/input.dat
rename to Project05/input/ch4/STO-3G/input.dat
diff --git a/Project#05/input/ch4/STO-3G/mux.dat b/Project05/input/ch4/STO-3G/mux.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/mux.dat
rename to Project05/input/ch4/STO-3G/mux.dat
diff --git a/Project#05/input/ch4/STO-3G/muy.dat b/Project05/input/ch4/STO-3G/muy.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/muy.dat
rename to Project05/input/ch4/STO-3G/muy.dat
diff --git a/Project#05/input/ch4/STO-3G/muz.dat b/Project05/input/ch4/STO-3G/muz.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/muz.dat
rename to Project05/input/ch4/STO-3G/muz.dat
diff --git a/Project#05/input/ch4/STO-3G/s.dat b/Project05/input/ch4/STO-3G/s.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/s.dat
rename to Project05/input/ch4/STO-3G/s.dat
diff --git a/Project#05/input/ch4/STO-3G/t.dat b/Project05/input/ch4/STO-3G/t.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/t.dat
rename to Project05/input/ch4/STO-3G/t.dat
diff --git a/Project#05/input/ch4/STO-3G/v.dat b/Project05/input/ch4/STO-3G/v.dat
similarity index 100%
rename from Project#05/input/ch4/STO-3G/v.dat
rename to Project05/input/ch4/STO-3G/v.dat
diff --git a/Project#05/input/h2o/DZ/enuc.dat b/Project05/input/h2o/DZ/enuc.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/enuc.dat
rename to Project05/input/h2o/DZ/enuc.dat
diff --git a/Project#05/input/h2o/DZ/eri.dat b/Project05/input/h2o/DZ/eri.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/eri.dat
rename to Project05/input/h2o/DZ/eri.dat
diff --git a/Project#05/input/h2o/DZ/geom.dat b/Project05/input/h2o/DZ/geom.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/geom.dat
rename to Project05/input/h2o/DZ/geom.dat
diff --git a/Project#05/input/h2o/DZ/input.dat b/Project05/input/h2o/DZ/input.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/input.dat
rename to Project05/input/h2o/DZ/input.dat
diff --git a/Project#05/input/h2o/DZ/mux.dat b/Project05/input/h2o/DZ/mux.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/mux.dat
rename to Project05/input/h2o/DZ/mux.dat
diff --git a/Project#05/input/h2o/DZ/muy.dat b/Project05/input/h2o/DZ/muy.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/muy.dat
rename to Project05/input/h2o/DZ/muy.dat
diff --git a/Project#05/input/h2o/DZ/muz.dat b/Project05/input/h2o/DZ/muz.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/muz.dat
rename to Project05/input/h2o/DZ/muz.dat
diff --git a/Project#05/input/h2o/DZ/s.dat b/Project05/input/h2o/DZ/s.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/s.dat
rename to Project05/input/h2o/DZ/s.dat
diff --git a/Project#05/input/h2o/DZ/t.dat b/Project05/input/h2o/DZ/t.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/t.dat
rename to Project05/input/h2o/DZ/t.dat
diff --git a/Project#05/input/h2o/DZ/v.dat b/Project05/input/h2o/DZ/v.dat
similarity index 100%
rename from Project#05/input/h2o/DZ/v.dat
rename to Project05/input/h2o/DZ/v.dat
diff --git a/Project#05/input/h2o/DZP/enuc.dat b/Project05/input/h2o/DZP/enuc.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/enuc.dat
rename to Project05/input/h2o/DZP/enuc.dat
diff --git a/Project#05/input/h2o/DZP/eri.dat b/Project05/input/h2o/DZP/eri.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/eri.dat
rename to Project05/input/h2o/DZP/eri.dat
diff --git a/Project#05/input/h2o/DZP/geom.dat b/Project05/input/h2o/DZP/geom.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/geom.dat
rename to Project05/input/h2o/DZP/geom.dat
diff --git a/Project#05/input/h2o/DZP/input.dat b/Project05/input/h2o/DZP/input.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/input.dat
rename to Project05/input/h2o/DZP/input.dat
diff --git a/Project#05/input/h2o/DZP/mux.dat b/Project05/input/h2o/DZP/mux.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/mux.dat
rename to Project05/input/h2o/DZP/mux.dat
diff --git a/Project#05/input/h2o/DZP/muy.dat b/Project05/input/h2o/DZP/muy.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/muy.dat
rename to Project05/input/h2o/DZP/muy.dat
diff --git a/Project#05/input/h2o/DZP/muz.dat b/Project05/input/h2o/DZP/muz.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/muz.dat
rename to Project05/input/h2o/DZP/muz.dat
diff --git a/Project#05/input/h2o/DZP/s.dat b/Project05/input/h2o/DZP/s.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/s.dat
rename to Project05/input/h2o/DZP/s.dat
diff --git a/Project#05/input/h2o/DZP/t.dat b/Project05/input/h2o/DZP/t.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/t.dat
rename to Project05/input/h2o/DZP/t.dat
diff --git a/Project#05/input/h2o/DZP/v.dat b/Project05/input/h2o/DZP/v.dat
similarity index 100%
rename from Project#05/input/h2o/DZP/v.dat
rename to Project05/input/h2o/DZP/v.dat
diff --git a/Project#05/input/h2o/STO-3G/enuc.dat b/Project05/input/h2o/STO-3G/enuc.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/enuc.dat
rename to Project05/input/h2o/STO-3G/enuc.dat
diff --git a/Project#05/input/h2o/STO-3G/eri.dat b/Project05/input/h2o/STO-3G/eri.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/eri.dat
rename to Project05/input/h2o/STO-3G/eri.dat
diff --git a/Project#05/input/h2o/STO-3G/geom.dat b/Project05/input/h2o/STO-3G/geom.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/geom.dat
rename to Project05/input/h2o/STO-3G/geom.dat
diff --git a/Project#05/input/h2o/STO-3G/input.dat b/Project05/input/h2o/STO-3G/input.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/input.dat
rename to Project05/input/h2o/STO-3G/input.dat
diff --git a/Project#05/input/h2o/STO-3G/mux.dat b/Project05/input/h2o/STO-3G/mux.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/mux.dat
rename to Project05/input/h2o/STO-3G/mux.dat
diff --git a/Project#05/input/h2o/STO-3G/muy.dat b/Project05/input/h2o/STO-3G/muy.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/muy.dat
rename to Project05/input/h2o/STO-3G/muy.dat
diff --git a/Project#05/input/h2o/STO-3G/muz.dat b/Project05/input/h2o/STO-3G/muz.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/muz.dat
rename to Project05/input/h2o/STO-3G/muz.dat
diff --git a/Project#05/input/h2o/STO-3G/s.dat b/Project05/input/h2o/STO-3G/s.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/s.dat
rename to Project05/input/h2o/STO-3G/s.dat
diff --git a/Project#05/input/h2o/STO-3G/t.dat b/Project05/input/h2o/STO-3G/t.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/t.dat
rename to Project05/input/h2o/STO-3G/t.dat
diff --git a/Project#05/input/h2o/STO-3G/v.dat b/Project05/input/h2o/STO-3G/v.dat
similarity index 100%
rename from Project#05/input/h2o/STO-3G/v.dat
rename to Project05/input/h2o/STO-3G/v.dat
diff --git a/Project#05/output/ch4/STO-3G/output.txt b/Project05/output/ch4/STO-3G/output.txt
similarity index 100%
rename from Project#05/output/ch4/STO-3G/output.txt
rename to Project05/output/ch4/STO-3G/output.txt
diff --git a/Project#05/output/h2o/DZ/output.txt b/Project05/output/h2o/DZ/output.txt
similarity index 100%
rename from Project#05/output/h2o/DZ/output.txt
rename to Project05/output/h2o/DZ/output.txt
diff --git a/Project#05/output/h2o/DZP/output.txt b/Project05/output/h2o/DZP/output.txt
similarity index 100%
rename from Project#05/output/h2o/DZP/output.txt
rename to Project05/output/h2o/DZP/output.txt
diff --git a/Project#05/output/h2o/STO-3G/output.txt b/Project05/output/h2o/STO-3G/output.txt
similarity index 100%
rename from Project#05/output/h2o/STO-3G/output.txt
rename to Project05/output/h2o/STO-3G/output.txt
diff --git a/Project#06/README.md b/Project06/README.md
similarity index 100%
rename from Project#06/README.md
rename to Project06/README.md
diff --git a/Project#06/figures/D.png b/Project06/figures/D.png
similarity index 100%
rename from Project#06/figures/D.png
rename to Project06/figures/D.png
diff --git a/Project#06/figures/connected-triples.png b/Project06/figures/connected-triples.png
similarity index 100%
rename from Project#06/figures/connected-triples.png
rename to Project06/figures/connected-triples.png
diff --git a/Project#06/figures/disconnected-triples.png b/Project06/figures/disconnected-triples.png
similarity index 100%
rename from Project#06/figures/disconnected-triples.png
rename to Project06/figures/disconnected-triples.png
diff --git a/Project#06/figures/t-correction.png b/Project06/figures/t-correction.png
similarity index 100%
rename from Project#06/figures/t-correction.png
rename to Project06/figures/t-correction.png
diff --git a/Project#06/figures/three-index-permutation.png b/Project06/figures/three-index-permutation.png
similarity index 100%
rename from Project#06/figures/three-index-permutation.png
rename to Project06/figures/three-index-permutation.png
diff --git a/Project#06/figures/total-energy.png b/Project06/figures/total-energy.png
similarity index 100%
rename from Project#06/figures/total-energy.png
rename to Project06/figures/total-energy.png
diff --git a/Project#06/input/ch4/STO-3G/enuc.dat b/Project06/input/ch4/STO-3G/enuc.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/enuc.dat
rename to Project06/input/ch4/STO-3G/enuc.dat
diff --git a/Project#06/input/ch4/STO-3G/eri.dat b/Project06/input/ch4/STO-3G/eri.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/eri.dat
rename to Project06/input/ch4/STO-3G/eri.dat
diff --git a/Project#06/input/ch4/STO-3G/geom.dat b/Project06/input/ch4/STO-3G/geom.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/geom.dat
rename to Project06/input/ch4/STO-3G/geom.dat
diff --git a/Project#06/input/ch4/STO-3G/input.dat b/Project06/input/ch4/STO-3G/input.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/input.dat
rename to Project06/input/ch4/STO-3G/input.dat
diff --git a/Project#06/input/ch4/STO-3G/mux.dat b/Project06/input/ch4/STO-3G/mux.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/mux.dat
rename to Project06/input/ch4/STO-3G/mux.dat
diff --git a/Project#06/input/ch4/STO-3G/muy.dat b/Project06/input/ch4/STO-3G/muy.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/muy.dat
rename to Project06/input/ch4/STO-3G/muy.dat
diff --git a/Project#06/input/ch4/STO-3G/muz.dat b/Project06/input/ch4/STO-3G/muz.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/muz.dat
rename to Project06/input/ch4/STO-3G/muz.dat
diff --git a/Project#06/input/ch4/STO-3G/s.dat b/Project06/input/ch4/STO-3G/s.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/s.dat
rename to Project06/input/ch4/STO-3G/s.dat
diff --git a/Project#06/input/ch4/STO-3G/t.dat b/Project06/input/ch4/STO-3G/t.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/t.dat
rename to Project06/input/ch4/STO-3G/t.dat
diff --git a/Project#06/input/ch4/STO-3G/v.dat b/Project06/input/ch4/STO-3G/v.dat
similarity index 100%
rename from Project#06/input/ch4/STO-3G/v.dat
rename to Project06/input/ch4/STO-3G/v.dat
diff --git a/Project#06/input/h2o/DZ/enuc.dat b/Project06/input/h2o/DZ/enuc.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/enuc.dat
rename to Project06/input/h2o/DZ/enuc.dat
diff --git a/Project#06/input/h2o/DZ/eri.dat b/Project06/input/h2o/DZ/eri.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/eri.dat
rename to Project06/input/h2o/DZ/eri.dat
diff --git a/Project#06/input/h2o/DZ/geom.dat b/Project06/input/h2o/DZ/geom.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/geom.dat
rename to Project06/input/h2o/DZ/geom.dat
diff --git a/Project#06/input/h2o/DZ/input.dat b/Project06/input/h2o/DZ/input.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/input.dat
rename to Project06/input/h2o/DZ/input.dat
diff --git a/Project#06/input/h2o/DZ/mux.dat b/Project06/input/h2o/DZ/mux.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/mux.dat
rename to Project06/input/h2o/DZ/mux.dat
diff --git a/Project#06/input/h2o/DZ/muy.dat b/Project06/input/h2o/DZ/muy.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/muy.dat
rename to Project06/input/h2o/DZ/muy.dat
diff --git a/Project#06/input/h2o/DZ/muz.dat b/Project06/input/h2o/DZ/muz.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/muz.dat
rename to Project06/input/h2o/DZ/muz.dat
diff --git a/Project#06/input/h2o/DZ/s.dat b/Project06/input/h2o/DZ/s.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/s.dat
rename to Project06/input/h2o/DZ/s.dat
diff --git a/Project#06/input/h2o/DZ/t.dat b/Project06/input/h2o/DZ/t.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/t.dat
rename to Project06/input/h2o/DZ/t.dat
diff --git a/Project#06/input/h2o/DZ/v.dat b/Project06/input/h2o/DZ/v.dat
similarity index 100%
rename from Project#06/input/h2o/DZ/v.dat
rename to Project06/input/h2o/DZ/v.dat
diff --git a/Project#06/input/h2o/DZP/enuc.dat b/Project06/input/h2o/DZP/enuc.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/enuc.dat
rename to Project06/input/h2o/DZP/enuc.dat
diff --git a/Project#06/input/h2o/DZP/eri.dat b/Project06/input/h2o/DZP/eri.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/eri.dat
rename to Project06/input/h2o/DZP/eri.dat
diff --git a/Project#06/input/h2o/DZP/geom.dat b/Project06/input/h2o/DZP/geom.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/geom.dat
rename to Project06/input/h2o/DZP/geom.dat
diff --git a/Project#06/input/h2o/DZP/input.dat b/Project06/input/h2o/DZP/input.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/input.dat
rename to Project06/input/h2o/DZP/input.dat
diff --git a/Project#06/input/h2o/DZP/mux.dat b/Project06/input/h2o/DZP/mux.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/mux.dat
rename to Project06/input/h2o/DZP/mux.dat
diff --git a/Project#06/input/h2o/DZP/muy.dat b/Project06/input/h2o/DZP/muy.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/muy.dat
rename to Project06/input/h2o/DZP/muy.dat
diff --git a/Project#06/input/h2o/DZP/muz.dat b/Project06/input/h2o/DZP/muz.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/muz.dat
rename to Project06/input/h2o/DZP/muz.dat
diff --git a/Project#06/input/h2o/DZP/s.dat b/Project06/input/h2o/DZP/s.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/s.dat
rename to Project06/input/h2o/DZP/s.dat
diff --git a/Project#06/input/h2o/DZP/t.dat b/Project06/input/h2o/DZP/t.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/t.dat
rename to Project06/input/h2o/DZP/t.dat
diff --git a/Project#06/input/h2o/DZP/v.dat b/Project06/input/h2o/DZP/v.dat
similarity index 100%
rename from Project#06/input/h2o/DZP/v.dat
rename to Project06/input/h2o/DZP/v.dat
diff --git a/Project#06/input/h2o/STO-3G/enuc.dat b/Project06/input/h2o/STO-3G/enuc.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/enuc.dat
rename to Project06/input/h2o/STO-3G/enuc.dat
diff --git a/Project#06/input/h2o/STO-3G/eri.dat b/Project06/input/h2o/STO-3G/eri.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/eri.dat
rename to Project06/input/h2o/STO-3G/eri.dat
diff --git a/Project#06/input/h2o/STO-3G/geom.dat b/Project06/input/h2o/STO-3G/geom.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/geom.dat
rename to Project06/input/h2o/STO-3G/geom.dat
diff --git a/Project#06/input/h2o/STO-3G/input.dat b/Project06/input/h2o/STO-3G/input.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/input.dat
rename to Project06/input/h2o/STO-3G/input.dat
diff --git a/Project#06/input/h2o/STO-3G/mux.dat b/Project06/input/h2o/STO-3G/mux.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/mux.dat
rename to Project06/input/h2o/STO-3G/mux.dat
diff --git a/Project#06/input/h2o/STO-3G/muy.dat b/Project06/input/h2o/STO-3G/muy.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/muy.dat
rename to Project06/input/h2o/STO-3G/muy.dat
diff --git a/Project#06/input/h2o/STO-3G/muz.dat b/Project06/input/h2o/STO-3G/muz.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/muz.dat
rename to Project06/input/h2o/STO-3G/muz.dat
diff --git a/Project#06/input/h2o/STO-3G/s.dat b/Project06/input/h2o/STO-3G/s.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/s.dat
rename to Project06/input/h2o/STO-3G/s.dat
diff --git a/Project#06/input/h2o/STO-3G/t.dat b/Project06/input/h2o/STO-3G/t.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/t.dat
rename to Project06/input/h2o/STO-3G/t.dat
diff --git a/Project#06/input/h2o/STO-3G/v.dat b/Project06/input/h2o/STO-3G/v.dat
similarity index 100%
rename from Project#06/input/h2o/STO-3G/v.dat
rename to Project06/input/h2o/STO-3G/v.dat
diff --git a/Project#06/output/ch4/STO-3G/output.txt b/Project06/output/ch4/STO-3G/output.txt
similarity index 100%
rename from Project#06/output/ch4/STO-3G/output.txt
rename to Project06/output/ch4/STO-3G/output.txt
diff --git a/Project#06/output/h2o/DZ/output.txt b/Project06/output/h2o/DZ/output.txt
similarity index 100%
rename from Project#06/output/h2o/DZ/output.txt
rename to Project06/output/h2o/DZ/output.txt
diff --git a/Project#06/output/h2o/DZP/output.txt b/Project06/output/h2o/DZP/output.txt
similarity index 100%
rename from Project#06/output/h2o/DZP/output.txt
rename to Project06/output/h2o/DZP/output.txt
diff --git a/Project#06/output/h2o/STO-3G/output.txt b/Project06/output/h2o/STO-3G/output.txt
similarity index 100%
rename from Project#06/output/h2o/STO-3G/output.txt
rename to Project06/output/h2o/STO-3G/output.txt
diff --git a/Project#07/README.md b/Project07/README.md
similarity index 100%
rename from Project#07/README.md
rename to Project07/README.md
diff --git a/Project#08/README.md b/Project08/README.md
similarity index 100%
rename from Project#08/README.md
rename to Project08/README.md
diff --git a/Project#08/figures/Bij.png b/Project08/figures/Bij.png
similarity index 100%
rename from Project#08/figures/Bij.png
rename to Project08/figures/Bij.png
diff --git a/Project#08/figures/constraint.png b/Project08/figures/constraint.png
similarity index 100%
rename from Project#08/figures/constraint.png
rename to Project08/figures/constraint.png
diff --git a/Project#08/figures/error-matrix.png b/Project08/figures/error-matrix.png
similarity index 100%
rename from Project#08/figures/error-matrix.png
rename to Project08/figures/error-matrix.png
diff --git a/Project#08/figures/iter-error-matrix.png b/Project08/figures/iter-error-matrix.png
similarity index 100%
rename from Project#08/figures/iter-error-matrix.png
rename to Project08/figures/iter-error-matrix.png
diff --git a/Project#08/figures/new-approx-fock.png b/Project08/figures/new-approx-fock.png
similarity index 100%
rename from Project#08/figures/new-approx-fock.png
rename to Project08/figures/new-approx-fock.png
diff --git a/Project#08/figures/sys-lin-eqn-ci.png b/Project08/figures/sys-lin-eqn-ci.png
similarity index 100%
rename from Project#08/figures/sys-lin-eqn-ci.png
rename to Project08/figures/sys-lin-eqn-ci.png
diff --git a/Project#09/README.md b/Project09/README.md
similarity index 100%
rename from Project#09/README.md
rename to Project09/README.md
diff --git a/Project#09/figures/density-matrix.png b/Project09/figures/density-matrix.png
similarity index 100%
rename from Project#09/figures/density-matrix.png
rename to Project09/figures/density-matrix.png
diff --git a/Project#09/figures/fock-build.png b/Project09/figures/fock-build.png
similarity index 100%
rename from Project#09/figures/fock-build.png
rename to Project09/figures/fock-build.png
diff --git a/Project#09/figures/matrix-product.png b/Project09/figures/matrix-product.png
similarity index 100%
rename from Project#09/figures/matrix-product.png
rename to Project09/figures/matrix-product.png
diff --git a/Project#09/figures/point-group-rule.png b/Project09/figures/point-group-rule.png
similarity index 100%
rename from Project#09/figures/point-group-rule.png
rename to Project09/figures/point-group-rule.png
diff --git a/Project#09/hints/hint1.md b/Project09/hints/hint1.md
similarity index 100%
rename from Project#09/hints/hint1.md
rename to Project09/hints/hint1.md
diff --git a/Project#10/README.md b/Project10/README.md
similarity index 100%
rename from Project#10/README.md
rename to Project10/README.md
diff --git a/Project#10/figures/Bij.png b/Project10/figures/Bij.png
similarity index 100%
rename from Project#10/figures/Bij.png
rename to Project10/figures/Bij.png
diff --git a/Project#10/figures/error-vector.png b/Project10/figures/error-vector.png
similarity index 100%
rename from Project#10/figures/error-vector.png
rename to Project10/figures/error-vector.png
diff --git a/Project#10/figures/new-t-amps.png b/Project10/figures/new-t-amps.png
similarity index 100%
rename from Project#10/figures/new-t-amps.png
rename to Project10/figures/new-t-amps.png
diff --git a/Project#10/figures/sys-lin-eqn-ci.png b/Project10/figures/sys-lin-eqn-ci.png
similarity index 100%
rename from Project#10/figures/sys-lin-eqn-ci.png
rename to Project10/figures/sys-lin-eqn-ci.png
diff --git a/Project#11/README.md b/Project11/README.md
similarity index 100%
rename from Project#11/README.md
rename to Project11/README.md
diff --git a/Project#11/figures/compound-indices.png b/Project11/figures/compound-indices.png
similarity index 100%
rename from Project#11/figures/compound-indices.png
rename to Project11/figures/compound-indices.png
diff --git a/Project#11/figures/fock-contribution-1.png b/Project11/figures/fock-contribution-1.png
similarity index 100%
rename from Project#11/figures/fock-contribution-1.png
rename to Project11/figures/fock-contribution-1.png
diff --git a/Project#11/figures/fock-contribution-2.png b/Project11/figures/fock-contribution-2.png
similarity index 100%
rename from Project#11/figures/fock-contribution-2.png
rename to Project11/figures/fock-contribution-2.png
diff --git a/Project#11/figures/fock-contribution-3.png b/Project11/figures/fock-contribution-3.png
similarity index 100%
rename from Project#11/figures/fock-contribution-3.png
rename to Project11/figures/fock-contribution-3.png
diff --git a/Project#11/figures/fock-matrix.png b/Project11/figures/fock-matrix.png
similarity index 100%
rename from Project#11/figures/fock-matrix.png
rename to Project11/figures/fock-matrix.png
diff --git a/Project#11/figures/index-restrictions.png b/Project11/figures/index-restrictions.png
similarity index 100%
rename from Project#11/figures/index-restrictions.png
rename to Project11/figures/index-restrictions.png
diff --git a/Project#12/README.md b/Project12/README.md
similarity index 100%
rename from Project#12/README.md
rename to Project12/README.md
diff --git a/Project#12/figures/A-matrix.png b/Project12/figures/A-matrix.png
similarity index 100%
rename from Project#12/figures/A-matrix.png
rename to Project12/figures/A-matrix.png
diff --git a/Project#12/figures/B-matrix.png b/Project12/figures/B-matrix.png
similarity index 100%
rename from Project#12/figures/B-matrix.png
rename to Project12/figures/B-matrix.png
diff --git a/Project#12/figures/excited-det-schrod-eqn.png b/Project12/figures/excited-det-schrod-eqn.png
similarity index 100%
rename from Project#12/figures/excited-det-schrod-eqn.png
rename to Project12/figures/excited-det-schrod-eqn.png
diff --git a/Project#12/figures/four-possible-determinants.png b/Project12/figures/four-possible-determinants.png
similarity index 100%
rename from Project#12/figures/four-possible-determinants.png
rename to Project12/figures/four-possible-determinants.png
diff --git a/Project#12/figures/guess-vector-hamiltonian.png b/Project12/figures/guess-vector-hamiltonian.png
similarity index 100%
rename from Project#12/figures/guess-vector-hamiltonian.png
rename to Project12/figures/guess-vector-hamiltonian.png
diff --git a/Project#12/figures/identical-ci-coeff.png b/Project12/figures/identical-ci-coeff.png
similarity index 100%
rename from Project#12/figures/identical-ci-coeff.png
rename to Project12/figures/identical-ci-coeff.png
diff --git a/Project#12/figures/inverse-ci-coeff.png b/Project12/figures/inverse-ci-coeff.png
similarity index 100%
rename from Project#12/figures/inverse-ci-coeff.png
rename to Project12/figures/inverse-ci-coeff.png
diff --git a/Project#12/figures/matrix-eigenvalue-problem.png b/Project12/figures/matrix-eigenvalue-problem.png
similarity index 100%
rename from Project#12/figures/matrix-eigenvalue-problem.png
rename to Project12/figures/matrix-eigenvalue-problem.png
diff --git a/Project#12/figures/matrix-elements.png b/Project12/figures/matrix-elements.png
similarity index 100%
rename from Project#12/figures/matrix-elements.png
rename to Project12/figures/matrix-elements.png
diff --git a/Project#12/figures/simpler-hamiltonian.png b/Project12/figures/simpler-hamiltonian.png
similarity index 100%
rename from Project#12/figures/simpler-hamiltonian.png
rename to Project12/figures/simpler-hamiltonian.png
diff --git a/Project#12/figures/singlet-combinations.png b/Project12/figures/singlet-combinations.png
similarity index 100%
rename from Project#12/figures/singlet-combinations.png
rename to Project12/figures/singlet-combinations.png
diff --git a/Project#12/figures/singlet-triplet-combinations.png b/Project12/figures/singlet-triplet-combinations.png
similarity index 100%
rename from Project#12/figures/singlet-triplet-combinations.png
rename to Project12/figures/singlet-triplet-combinations.png
diff --git a/Project#12/figures/singly-excited-determinant.png b/Project12/figures/singly-excited-determinant.png
similarity index 100%
rename from Project#12/figures/singly-excited-determinant.png
rename to Project12/figures/singly-excited-determinant.png
diff --git a/Project#12/figures/smarter-tdhf-1.png b/Project12/figures/smarter-tdhf-1.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-1.png
rename to Project12/figures/smarter-tdhf-1.png
diff --git a/Project#12/figures/smarter-tdhf-2.png b/Project12/figures/smarter-tdhf-2.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-2.png
rename to Project12/figures/smarter-tdhf-2.png
diff --git a/Project#12/figures/smarter-tdhf-3.png b/Project12/figures/smarter-tdhf-3.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-3.png
rename to Project12/figures/smarter-tdhf-3.png
diff --git a/Project#12/figures/smarter-tdhf-4.png b/Project12/figures/smarter-tdhf-4.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-4.png
rename to Project12/figures/smarter-tdhf-4.png
diff --git a/Project#12/figures/smarter-tdhf-5.png b/Project12/figures/smarter-tdhf-5.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-5.png
rename to Project12/figures/smarter-tdhf-5.png
diff --git a/Project#12/figures/smarter-tdhf-6.png b/Project12/figures/smarter-tdhf-6.png
similarity index 100%
rename from Project#12/figures/smarter-tdhf-6.png
rename to Project12/figures/smarter-tdhf-6.png
diff --git a/Project#12/figures/spatial-orbital-expression.png b/Project12/figures/spatial-orbital-expression.png
similarity index 100%
rename from Project#12/figures/spatial-orbital-expression.png
rename to Project12/figures/spatial-orbital-expression.png
diff --git a/Project#12/figures/spin-factored-eqn.png b/Project12/figures/spin-factored-eqn.png
similarity index 100%
rename from Project#12/figures/spin-factored-eqn.png
rename to Project12/figures/spin-factored-eqn.png
diff --git a/Project#12/figures/tdhf-eqn.png b/Project12/figures/tdhf-eqn.png
similarity index 100%
rename from Project#12/figures/tdhf-eqn.png
rename to Project12/figures/tdhf-eqn.png
diff --git a/Project#12/figures/triplet-combinations.png b/Project12/figures/triplet-combinations.png
similarity index 100%
rename from Project#12/figures/triplet-combinations.png
rename to Project12/figures/triplet-combinations.png
diff --git a/Project#12/hints/hint1.md b/Project12/hints/hint1.md
similarity index 100%
rename from Project#12/hints/hint1.md
rename to Project12/hints/hint1.md
diff --git a/Project#12/hints/hint2.md b/Project12/hints/hint2.md
similarity index 100%
rename from Project#12/hints/hint2.md
rename to Project12/hints/hint2.md
diff --git a/Project#12/hints/hint3.md b/Project12/hints/hint3.md
similarity index 100%
rename from Project#12/hints/hint3.md
rename to Project12/hints/hint3.md
diff --git a/Project#12/input/ch4/STO-3G/enuc.dat b/Project12/input/ch4/STO-3G/enuc.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/enuc.dat
rename to Project12/input/ch4/STO-3G/enuc.dat
diff --git a/Project#12/input/ch4/STO-3G/eri.dat b/Project12/input/ch4/STO-3G/eri.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/eri.dat
rename to Project12/input/ch4/STO-3G/eri.dat
diff --git a/Project#12/input/ch4/STO-3G/geom.dat b/Project12/input/ch4/STO-3G/geom.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/geom.dat
rename to Project12/input/ch4/STO-3G/geom.dat
diff --git a/Project#12/input/ch4/STO-3G/input.dat b/Project12/input/ch4/STO-3G/input.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/input.dat
rename to Project12/input/ch4/STO-3G/input.dat
diff --git a/Project#12/input/ch4/STO-3G/mux.dat b/Project12/input/ch4/STO-3G/mux.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/mux.dat
rename to Project12/input/ch4/STO-3G/mux.dat
diff --git a/Project#12/input/ch4/STO-3G/muy.dat b/Project12/input/ch4/STO-3G/muy.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/muy.dat
rename to Project12/input/ch4/STO-3G/muy.dat
diff --git a/Project#12/input/ch4/STO-3G/muz.dat b/Project12/input/ch4/STO-3G/muz.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/muz.dat
rename to Project12/input/ch4/STO-3G/muz.dat
diff --git a/Project#12/input/ch4/STO-3G/s.dat b/Project12/input/ch4/STO-3G/s.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/s.dat
rename to Project12/input/ch4/STO-3G/s.dat
diff --git a/Project#12/input/ch4/STO-3G/t.dat b/Project12/input/ch4/STO-3G/t.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/t.dat
rename to Project12/input/ch4/STO-3G/t.dat
diff --git a/Project#12/input/ch4/STO-3G/v.dat b/Project12/input/ch4/STO-3G/v.dat
similarity index 100%
rename from Project#12/input/ch4/STO-3G/v.dat
rename to Project12/input/ch4/STO-3G/v.dat
diff --git a/Project#12/input/h2o/DZ/enuc.dat b/Project12/input/h2o/DZ/enuc.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/enuc.dat
rename to Project12/input/h2o/DZ/enuc.dat
diff --git a/Project#12/input/h2o/DZ/eri.dat b/Project12/input/h2o/DZ/eri.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/eri.dat
rename to Project12/input/h2o/DZ/eri.dat
diff --git a/Project#12/input/h2o/DZ/geom.dat b/Project12/input/h2o/DZ/geom.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/geom.dat
rename to Project12/input/h2o/DZ/geom.dat
diff --git a/Project#12/input/h2o/DZ/input.dat b/Project12/input/h2o/DZ/input.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/input.dat
rename to Project12/input/h2o/DZ/input.dat
diff --git a/Project#12/input/h2o/DZ/mux.dat b/Project12/input/h2o/DZ/mux.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/mux.dat
rename to Project12/input/h2o/DZ/mux.dat
diff --git a/Project#12/input/h2o/DZ/muy.dat b/Project12/input/h2o/DZ/muy.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/muy.dat
rename to Project12/input/h2o/DZ/muy.dat
diff --git a/Project#12/input/h2o/DZ/muz.dat b/Project12/input/h2o/DZ/muz.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/muz.dat
rename to Project12/input/h2o/DZ/muz.dat
diff --git a/Project#12/input/h2o/DZ/s.dat b/Project12/input/h2o/DZ/s.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/s.dat
rename to Project12/input/h2o/DZ/s.dat
diff --git a/Project#12/input/h2o/DZ/t.dat b/Project12/input/h2o/DZ/t.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/t.dat
rename to Project12/input/h2o/DZ/t.dat
diff --git a/Project#12/input/h2o/DZ/v.dat b/Project12/input/h2o/DZ/v.dat
similarity index 100%
rename from Project#12/input/h2o/DZ/v.dat
rename to Project12/input/h2o/DZ/v.dat
diff --git a/Project#12/input/h2o/DZP/enuc.dat b/Project12/input/h2o/DZP/enuc.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/enuc.dat
rename to Project12/input/h2o/DZP/enuc.dat
diff --git a/Project#12/input/h2o/DZP/eri.dat b/Project12/input/h2o/DZP/eri.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/eri.dat
rename to Project12/input/h2o/DZP/eri.dat
diff --git a/Project#12/input/h2o/DZP/geom.dat b/Project12/input/h2o/DZP/geom.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/geom.dat
rename to Project12/input/h2o/DZP/geom.dat
diff --git a/Project#12/input/h2o/DZP/input.dat b/Project12/input/h2o/DZP/input.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/input.dat
rename to Project12/input/h2o/DZP/input.dat
diff --git a/Project#12/input/h2o/DZP/mux.dat b/Project12/input/h2o/DZP/mux.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/mux.dat
rename to Project12/input/h2o/DZP/mux.dat
diff --git a/Project#12/input/h2o/DZP/muy.dat b/Project12/input/h2o/DZP/muy.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/muy.dat
rename to Project12/input/h2o/DZP/muy.dat
diff --git a/Project#12/input/h2o/DZP/muz.dat b/Project12/input/h2o/DZP/muz.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/muz.dat
rename to Project12/input/h2o/DZP/muz.dat
diff --git a/Project#12/input/h2o/DZP/s.dat b/Project12/input/h2o/DZP/s.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/s.dat
rename to Project12/input/h2o/DZP/s.dat
diff --git a/Project#12/input/h2o/DZP/t.dat b/Project12/input/h2o/DZP/t.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/t.dat
rename to Project12/input/h2o/DZP/t.dat
diff --git a/Project#12/input/h2o/DZP/v.dat b/Project12/input/h2o/DZP/v.dat
similarity index 100%
rename from Project#12/input/h2o/DZP/v.dat
rename to Project12/input/h2o/DZP/v.dat
diff --git a/Project#12/input/h2o/STO-3G/enuc.dat b/Project12/input/h2o/STO-3G/enuc.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/enuc.dat
rename to Project12/input/h2o/STO-3G/enuc.dat
diff --git a/Project#12/input/h2o/STO-3G/eri.dat b/Project12/input/h2o/STO-3G/eri.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/eri.dat
rename to Project12/input/h2o/STO-3G/eri.dat
diff --git a/Project#12/input/h2o/STO-3G/geom.dat b/Project12/input/h2o/STO-3G/geom.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/geom.dat
rename to Project12/input/h2o/STO-3G/geom.dat
diff --git a/Project#12/input/h2o/STO-3G/input.dat b/Project12/input/h2o/STO-3G/input.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/input.dat
rename to Project12/input/h2o/STO-3G/input.dat
diff --git a/Project#12/input/h2o/STO-3G/mux.dat b/Project12/input/h2o/STO-3G/mux.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/mux.dat
rename to Project12/input/h2o/STO-3G/mux.dat
diff --git a/Project#12/input/h2o/STO-3G/muy.dat b/Project12/input/h2o/STO-3G/muy.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/muy.dat
rename to Project12/input/h2o/STO-3G/muy.dat
diff --git a/Project#12/input/h2o/STO-3G/muz.dat b/Project12/input/h2o/STO-3G/muz.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/muz.dat
rename to Project12/input/h2o/STO-3G/muz.dat
diff --git a/Project#12/input/h2o/STO-3G/s.dat b/Project12/input/h2o/STO-3G/s.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/s.dat
rename to Project12/input/h2o/STO-3G/s.dat
diff --git a/Project#12/input/h2o/STO-3G/t.dat b/Project12/input/h2o/STO-3G/t.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/t.dat
rename to Project12/input/h2o/STO-3G/t.dat
diff --git a/Project#12/input/h2o/STO-3G/v.dat b/Project12/input/h2o/STO-3G/v.dat
similarity index 100%
rename from Project#12/input/h2o/STO-3G/v.dat
rename to Project12/input/h2o/STO-3G/v.dat
diff --git a/Project#12/output/ch4/STO-3G/output_cis.txt b/Project12/output/ch4/STO-3G/output_cis.txt
similarity index 100%
rename from Project#12/output/ch4/STO-3G/output_cis.txt
rename to Project12/output/ch4/STO-3G/output_cis.txt
diff --git a/Project#12/output/ch4/STO-3G/output_rpa1.txt b/Project12/output/ch4/STO-3G/output_rpa1.txt
similarity index 100%
rename from Project#12/output/ch4/STO-3G/output_rpa1.txt
rename to Project12/output/ch4/STO-3G/output_rpa1.txt
diff --git a/Project#12/output/ch4/STO-3G/output_rpa2.txt b/Project12/output/ch4/STO-3G/output_rpa2.txt
similarity index 100%
rename from Project#12/output/ch4/STO-3G/output_rpa2.txt
rename to Project12/output/ch4/STO-3G/output_rpa2.txt
diff --git a/Project#12/output/h2o/DZ/output_cis.txt b/Project12/output/h2o/DZ/output_cis.txt
similarity index 100%
rename from Project#12/output/h2o/DZ/output_cis.txt
rename to Project12/output/h2o/DZ/output_cis.txt
diff --git a/Project#12/output/h2o/DZ/output_rpa1.txt b/Project12/output/h2o/DZ/output_rpa1.txt
similarity index 100%
rename from Project#12/output/h2o/DZ/output_rpa1.txt
rename to Project12/output/h2o/DZ/output_rpa1.txt
diff --git a/Project#12/output/h2o/DZ/output_rpa2.txt b/Project12/output/h2o/DZ/output_rpa2.txt
similarity index 100%
rename from Project#12/output/h2o/DZ/output_rpa2.txt
rename to Project12/output/h2o/DZ/output_rpa2.txt
diff --git a/Project#12/output/h2o/DZP/output_cis.txt b/Project12/output/h2o/DZP/output_cis.txt
similarity index 100%
rename from Project#12/output/h2o/DZP/output_cis.txt
rename to Project12/output/h2o/DZP/output_cis.txt
diff --git a/Project#12/output/h2o/DZP/output_rpa1.txt b/Project12/output/h2o/DZP/output_rpa1.txt
similarity index 100%
rename from Project#12/output/h2o/DZP/output_rpa1.txt
rename to Project12/output/h2o/DZP/output_rpa1.txt
diff --git a/Project#12/output/h2o/DZP/output_rpa2.txt b/Project12/output/h2o/DZP/output_rpa2.txt
similarity index 100%
rename from Project#12/output/h2o/DZP/output_rpa2.txt
rename to Project12/output/h2o/DZP/output_rpa2.txt
diff --git a/Project#12/output/h2o/STO-3G/output_cis.txt b/Project12/output/h2o/STO-3G/output_cis.txt
similarity index 100%
rename from Project#12/output/h2o/STO-3G/output_cis.txt
rename to Project12/output/h2o/STO-3G/output_cis.txt
diff --git a/Project#12/output/h2o/STO-3G/output_rpa1.txt b/Project12/output/h2o/STO-3G/output_rpa1.txt
similarity index 100%
rename from Project#12/output/h2o/STO-3G/output_rpa1.txt
rename to Project12/output/h2o/STO-3G/output_rpa1.txt
diff --git a/Project#12/output/h2o/STO-3G/output_rpa2.txt b/Project12/output/h2o/STO-3G/output_rpa2.txt
similarity index 100%
rename from Project#12/output/h2o/STO-3G/output_rpa2.txt
rename to Project12/output/h2o/STO-3G/output_rpa2.txt
diff --git a/README.md b/README.md
index d2ad75d..959fa54 100644
--- a/README.md
+++ b/README.md
@@ -1,64 +1,85 @@
-# C++ Programming Tutorial in Chemistry
-This tutorial is intended to touch on many, but certainly not all, of the fundamentals of C++ programming with an emphasis on quantum chemistry. Although I hope this section will get you started, it is not a substitute for a more complete reference manual. For more C++ language details, you may find the standard text by Josuttis [buy it](http://www.amazon.com/C-Standard-Library-Tutorial-Reference/dp/0201379260) useful or, for VT users, get it [on-line from the campus library](http://proquest.safaribooksonline.com/0201379260) or a decent on-line tutorial such as [this one](http://www.cplusplus.com/doc/tutorial/) or [this one](http://www.cprogramming.com/tutorial.html).
+# Programming Tutorial in Chemistry
-If you are new to programming, one way to approach this tutorial is to read through "The Fundamentals" list on the [wiki](https://github.com/CrawfordGroup/ProgrammingProjects/wiki) first, then proceed with Project #1, using the earlier material as a reference. If you are already experienced with programming, you may be able to start immediately with Project #1. If you already have experience with electronic structure theory programs, then you may be ready for the Hartee-Fock programming project or even more advanced topics.
+This is a fork of the [Crawford Programming
+Projects](https://github.com/CrawfordGroup/ProgrammingProjects) that seeks to
+place more emphasis on learning to program in general. In contrast to the
+originals, which are written in C++, this version also uses the
+[Rust](https://www.rust-lang.org/) programming language. The original projects
+are a great resource, but some of the instructions can be a bit vague, and C++
+itself is not the easiest language to begin with. As such, this version will
+give fuller instructions for the chemistry problems as well as embed more
+language information directly in the tutorial. One of the difficulties of
+learning to program is that the best way to learn is by working on a concrete
+project. The goal of this tutorial then is to offer a substantial, quantum
+chemistry-flavored project to help people learn to program in general and to
+learn Rust in particular.
# Getting Started
+
This repository is organized into several projects, each with its own directory.
-In each one you will find a `README.md` file like this one with instructions,
-and output for you to check your implementation against.
-These projects will also require some input files that will be discussed
-in each project as they become relevant.
-These input files can be found in the `inputs` directory.
-Within `input` there are directories for several different molecule/basis-set
-combinations where you will find integrals, molecular geometries and other files to use as input to your programs.
+In each one you will find a `README.md` file like this one with instructions and
+output for you to check your implementation against. These projects will also
+require some input files that will be discussed in each project as they become
+relevant. These input files can be found in the `input` subdirectory of each
+project. Within `input` there are directories for several different
+molecule/basis-set combinations where you will find integrals, molecular
+geometries and other files to use as input to your programs. There is also a
+tarball of the inputs and outputs in each project directory to make it more
+convenient to download all of the files you need. At least this is the case in
+the Projects I have at least started working on. If you don't see a .tar file
+and you want the updated Rust version of the project, you probably need to wait.
+Downloading and extracting these is covered in [Project 1](Project01/README.md).
+Before Project 1 is [Project 0](Project00/README.md), which will help you get
+set up to write and run Rust programs. If you already know how to do that, skip
+ahead to Project 1.
+
+# Typographical Conventions
+
+Following the conventions of many other programming tutorials, code snippets
+will be written in `monospace` font, while new keywords will be presented in
+**bold**. Part of being a good programmer is knowing how to look for help on the
+internet and in documentation, so these will try to help you know what terms to
+search for. There will also be a Table of Contents below the Summary of each
+project providing quick links to the important concepts introduced in that
+project to make it easier to refer to them later. Commands that should be typed
+at the command line are prefaced with a `$`, such as `$ pwd`.
-The wiki for this repository has some discussion of useful topics.
-Reading over the topics in the [wiki](addlink) is a good way to familiarize yourself with concepts you will use to complete these projects.
-The Fundamentals list below has links to pages within the wiki.
+Code snippets are divided into two types: Tutorial and Solution. As you might
+guess, the Tutorial blocks include full explanations of the code and build up to
+the final solutions, introducing new concepts as needed. In contrast, the
+Solution blocks only include the code required to get the desired output. If you
+are learning Rust for the first time, you will obviously want to read the
+Tutorials, but programming experts (hopefully including the future selves of
+current beginners!) may want to refer directly to the Solutions. New concepts
+are primarily introduced in the early projects, so that is where most of the
+Tutorials are found. Similarly, the original versions of these projects did not
+provide full solutions to later projects. In an effort to keep these projects
+usable as class assignments, I have also limited the full solutions to those in
+the original version.
-To begin work on the projects you can create a `clone` of this repository.
-First navigate to the directory where you would like to keep your programming projects. Then create the clone by this command
-```shell
-git clone git@github.com:CrawfordGroup/ProgrammingProjects.git
-```
-Now you should see a directory called `ProgrammingProjects` inside you will find all of the files that you can see on github.
+The available solutions may not be the shortest or most efficient. I usually
+like playing [code golf](https://en.wikipedia.org/wiki/Code_golf) , but for the
+sake of teaching I have sought to write in a more verbose style, including
+defining some (strictly) unnecessary intermediate variables . If you know how to
+do something faster, please feel free to do it that way. If an instructor one
+day chooses to use this version of the projects and tries to grade your code
+based on similarity to mine instead of on the correctness of the output, please
+show them this sentence telling them not to.
-# The Fundamentals
- - [An Initial Example](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/An-Initial-Example)
- - [What is a "Compilation"](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/What-is-a-%22Compilation%22%3F)
- - [Code Comments](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Code-Comments)
- - [Data Types and Variables](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Data-Types-and-Variables)
- - [Operators](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Operators)
- - [Control Statements](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Control-Statements)
- - [Input/Output](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Input-Output)
- - [Functions](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Functions)
- - [Variable Scope and Reference Types](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Variable-Scope-and-Reference-Types)
- - [Memory Allocation](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Memory-Allocation)
- - [Classes and Objects](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Classes-and-Objects)
- - [Overloading and Templates](https://github.com/CrawfordGroup/ProgrammingProjects/wiki/Overloading-and-Templates)
+# Quantum Chemistry Programming Projects
+ - [Project #0](Project00/README.md): Setting up your programming environment
+
+
+
+
+
+
+
+
+
+
+
+
-# Quantum Chemistry Programming Projects
- - [Project #1](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2301): Molecular Geometry/rotational constant analysis
- - [Project #2](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2302): Harmonic Vibrational analysis
- - [Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303): The Hartree-Fock self-consistent field (SCF) procedure.
- - [Project #4](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2304): The second-order Moller-Plesset perturbation (MP2) energy.
- - [Project #5](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305): The coupled cluster singles and doubles (CCSD) energy.
- - [Project #6](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2306): A perturbative triples correction to CCSD [CCSD(T)].
- - [Project #7](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2307): Connecting your code to PSI4.
- - [Project #8](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2308): DIIS extrapolation for the SCF procedure.
- - [Project #9](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2309): Using symmetry in the SCF procedure.
- - [Project #10](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2310): DIIS extrapolation for solving the CC amplitude equations.
- - [Project #11](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2311): An "out of core" SCF procedure.
- - [Project #12](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312): Excited Electronic States: CIS and TDHF/RPA
- - [Project #13](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2313): the Davidson-Liu Algorithm: CIS
- - [Project #14](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2314): Excited Electronic States: EOM-CCSD (*In Preparation*)
-
# Possible Future Projects
- - Some Future Projects
- - SCF Analytic Energy Gradients
- - MP2 Analytic Energy Gradients
- - Integral-direct SCF
- - Response properties: Hartree-Fock dipole-polarizabilities
- - Response properties: CCSD dipole-polarizabilities
- - Local MP2
+ - Loading basis sets and computing integrals
diff --git a/scripts/maketar.sh b/scripts/maketar.sh
new file mode 100755
index 0000000..aba1ffe
--- /dev/null
+++ b/scripts/maketar.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+tar -cvf files.tar input output