diff --git a/Project#03/figures/compound-index-restrictions2.png b/Project#03/figures/compound-index-restrictions2.png index ccb74c9..2b9fc7d 100644 Binary files a/Project#03/figures/compound-index-restrictions2.png and b/Project#03/figures/compound-index-restrictions2.png differ diff --git a/Project#03/figures/eri.png b/Project#03/figures/eri.png index 65810d8..a8e8dd6 100644 Binary files a/Project#03/figures/eri.png and b/Project#03/figures/eri.png differ diff --git a/Project#04/README.md b/Project#04/README.md index 775a9ec..fabf300 100644 --- a/Project#04/README.md +++ b/Project#04/README.md @@ -1,77 +1,57 @@ # Project #4: The second-order Moller-Plesset perturbation (MP2) energy Unlike the Hartree-Fock energy, correlation energies like the MP2 energy are usually expressed in terms of MO-basis quantities (integrals, MO energies). -The most expensive part of the calculation is the transformation of the two-electron integrals from the AO to the MO basis representation. -The purpose of this project is to understand this transformation and fundamental techniques for its efficient implementation. -The theoretical background and a concise set of instructions for this project may be found [[http://sirius.chem.vt.edu/~crawdad/programming/mp2.pdf|here]]. +The most expensive part of the calculation is the transformation of the two-electron integrals from the AO to the MO basis representation. +The purpose of this project is to understand this transformation and fundamental techniques for its efficient implementation. +The theoretical background and a concise set of instructions for this project may be found [here](./project4-instructions.pdf). ## Step #1: Read the Two-Electron Integrals The Mulliken-ordered integrals are defined as: -``` -EQUATION -(\mu \nu|\lambda \sigma) \equiv \int \phi_\mu({\mathbf r_1}) -\phi_\nu({\mathbf r_1}) r_{12}^{-1} \phi_\lambda({\mathbf r_2}) -\phi_\sigma({\mathbf r_2}) d{\mathbf r_1} d{\mathbf r_2} -``` + -Concise instructions for this step can be found in -[Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303) +Concise instructions for this step can be found in [Project #3](../Project%2303). ## Step #2: Obtain the MO Coefficients and MO Energies -Use the values you computed in the Hartree-Fock program of -[Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303) +Use the values you computed in the Hartree-Fock program of [Project #3](../Project%2303). ## Step #3: Transform the Two-Electron Integrals to the MO Basis ### The Noddy Algorithm The most straightforward expression of the AO/MO integral transformation is -``` -EQUATION -(pq|rs) = \sum_\mu \sum_\nu \sum_\lambda \sum_\sigma C_\mu^p C_\nu^q -(\mu \nu|\lambda \sigma) C_\lambda^r C_\sigma^s -``` + -This approach is easy to implement (hence the word "[noddy](http://www.hackerslang.com/noddy.html)" above), but is expensive due to its N8 computational order. -Nevertheless, you should start with this algorithm to get your code working, and run timings (use the UNIX "time" command) -for the test cases below to get an idea of its computational cost. +This approach is easy to implement (hence the word "[noddy](http://www.hackerslang.com/noddy.html)" above), but is expensive due to its N8 computational order. Nevertheless, you should start with this algorithm to get your code working, and run timings (use the UNIX "time" command) for the test cases below to get an idea of its computational cost. - * Hint 1: Noddy transformation code + * [Hint 1](./hints/hint1.md): Noddy transformation code ### The Smarter Algorithm Notice that none of the *C* coefficients in the above expression have any indices in common. Thus, the summation could be rearranged such that: -``` -EQUATION -(pq|rs) = \sum_\mu C_\mu^p \left[ \sum_\nu C_\nu^q \left[ \sum_\lambda C_\lambda^r \left[ \sum_\sigma C_\sigma^s (\mu \nu|\lambda \sigma) \right] \right] \right]. -``` + + This means that each summation within brackets could be carried out separately, -starting from the innermost summation over σ, if we store the results at each step. -This reduces the N8 algorithm above to four N5 steps. +starting from the innermost summation over σ, if we store the results at each step. This reduces the N8 algorithm above to four N5 steps. Be careful about the permutational symmetry of the integrals and intermediates at each step: while the AO-basis integrals have eight-fold permutational symmetry, the partially transformed integrals have much less symmetry. After you have the noddy algorithm working and timed, modify it to use this smarter algorithm and time the test cases again. Enjoy! - * Hint 2: Smarter transformation code + * [Hint 2](./hints/hint2.md): Smarter transformation code ## Step #4: Compute the MP2 Energy -``` -EQUATION -E_{\rm MP2} = \sum_{ij} \sum_{ab} \frac{(ia|jb) \left[ 2 (ia|jb) - -(ib|ja) \right]}{\epsilon_i + \epsilon_j - \epsilon_a - \epsilon_b}, -``` + where *i* and *j* denote doubly-occupied orbitals and *a* and *b* unoccupied orbitals, and the denominator involves the MO energies. - * Hint 3: Occupied versus unoccupied orbitals + * [Hint 3](./hints/hint3.md): Occupied versus unoccupied orbitals ## Test Cases -The input structures, integrals, etc. for these examples are found in the [input directory](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2304/input). +The input structures, integrals, etc. for these examples are found in the [input directory](./input). -* STO-3G Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2304/output/h2o/STO-3G/output.txt) -* DZ Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2304/output/h2o/DZ/output.txt) -* DZP Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2304/output/h2o/DZP/output.txt) -* STO-3G Methane | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2304/output/ch4/STO-3G/output.txt) +* STO-3G Water | [output](./output/h2o/STO-3G/output.txt) +* DZ Water | [output](./output/h2o/DZ/output.txt) +* DZP Water | [output](./output/h2o/DZP/output.txt) +* STO-3G Methane | [output](./output/ch4/STO-3G/output.txt) diff --git a/Project#04/figures/eri.png b/Project#04/figures/eri.png new file mode 100644 index 0000000..337967e Binary files /dev/null and b/Project#04/figures/eri.png differ diff --git a/Project#04/figures/mp2-energy.png b/Project#04/figures/mp2-energy.png new file mode 100644 index 0000000..1003c08 Binary files /dev/null and b/Project#04/figures/mp2-energy.png differ diff --git a/Project#04/figures/noddy-transform.png b/Project#04/figures/noddy-transform.png new file mode 100644 index 0000000..ecf954c Binary files /dev/null and b/Project#04/figures/noddy-transform.png differ diff --git a/Project#04/figures/smart-transform.png b/Project#04/figures/smart-transform.png new file mode 100644 index 0000000..4432a91 Binary files /dev/null and b/Project#04/figures/smart-transform.png differ diff --git a/Project#04/hints/hint1.md b/Project#04/hints/hint1.md new file mode 100644 index 0000000..01221e1 --- /dev/null +++ b/Project#04/hints/hint1.md @@ -0,0 +1,37 @@ +Here's a code block that demonstrates how to carry out the AO to MO two-electron integral transformation using a single N8 step. Note that the original AO- and transformed MO-basis integrals are stored in a one-dimensional array taking full advantage of their eight-fold permutational symmetry, as described in [Project #3](../../Project%2303). + +Note how the loop structure in the MO-indices (*i*, *j*, *k*, and *l*) automatically takes into account the permutational symmetry of the fully transformed integrals. + +```c++ + #define INDEX(i,j) ((i>j) ? (((i)*((i)+1)/2)+(j)) : (((j)*((j)+1)/2)+(i))) + ... + double *TEI_AO, *TEI_MO; + int i, j, k, l, ijkl; + int p, q, r, s, pq, rs, pqrs; + ... + + for(i=0,ijkl=0; i < nao; i++) { + for(j=0; j <= i; j++) { + for(k=0; k <= i; k++) { + for(l=0; l <= (i==k ? j : k); l++,ijkl++) { + + for(p=0; p < nao; p++) { + for(q=0; q < nao; q++) { + pq = INDEX(p,q); + for(r=0; r < nao; r++) { + for(s=0; s < nao; s++) { + rs = INDEX(r,s); + pqrs = INDEX(pq,rs); + + TEI_MO[ijkl] += C[p][i] * C[q][j] * C[r][k] * C[s][l] * TEI_AO[pqrs]; + + } + } + } + } + + } + } + } + } +``` diff --git a/Project#04/hints/hint2.md b/Project#04/hints/hint2.md new file mode 100644 index 0000000..79a46dd --- /dev/null +++ b/Project#04/hints/hint2.md @@ -0,0 +1,59 @@ +Here's a code block that demonstrates how to carry out the AO to MO two-electron integral transformation using four N5 steps. Note that the original AO- and transformed MO-basis integrals are stored in a one-dimensional array taking advantage of their eight-fold permutational symmetry, as described in [Project #3](../../Project%2303). However, the half-transformed integrals, which lack bra-ket permutational symmetry, are stored in a two-dimensional array. + +A number of convenient functions [`mmult()`, `init_matrix()`, etc.] used in this code block can be found in the [diag.cc](http://sirius.chem.vt.edu/~crawdad/programming/diag.cc) discussed in [Project #1](../../Project%2301). + +```c++ + #define INDEX(i,j) ((i>j) ? (((i)*((i)+1)/2)+(j)) : (((j)*((j)+1)/2)+(i))) + ... + double **X, **Y, **TMP, *TEI; + int i, j, k, l, ij, kl, ijkl, klij; + + ... + X = init_matrix(nao, nao); + Y = init_matrix(nao, nao); + + TMP = init_matrix((nao*(nao+1)/2),(nao*(nao+1)/2)); + for(i=0,ij=0; i < nao; i++) + for(j=0; j <= i; j++,ij++) { + for(k=0,kl=0; k < nao; k++) + for(l=0; l <= k; l++,kl++) { + ijkl = INDEX(ij,kl); + X[k][l] = X[l][k] = TEI[ijkl]; + } + zero_matrix(Y, nao, nao); + mmult(C, 1, X, 0, Y, nao, nao, nao); + zero_matrix(X, nao, nao); + mmult(Y, 0, C, 0, X, nao, nao, nao); + for(k=0, kl=0; k < nao; k++) + for(l=0; l <= k; l++, kl++) + TMP[kl][ij] = X[k][l]; + } + + zero_array(TEI, (nao*(nao+1)/2)*((nao*(nao+1)/2)+1)/2); + + for(k=0,kl=0; k < nao; k++) + for(l=0; l <= k; l++,kl++) { + zero_matrix(X, nao, nao); + zero_matrix(Y, nao, nao); + for(i=0,ij=0; i < nao; i++) + for(j=0; j <=i; j++,ij++) + X[i][j] = X[j][i] = TMP[kl][ij]; + zero_matrix(Y, nao, nao); + mmult(C, 1, X, 0, Y, nao, nao, nao); + zero_matrix(X, nao, nao); + mmult(Y, 0, C, 0, X, nao, nao, nao); + for(i=0, ij=0; i < nao; i++) + for(j=0; j <= i; j++,ij++) { + klij = INDEX(kl,ij); + TEI[klij] = X[i][j]; + } + } + + ... + + free_matrix(X, nao); + free_matrix(Y, nao); + free_matrix(TMP, (nao*(nao+1)/2)); + +``` + diff --git a/Project#04/hints/hint3.md b/Project#04/hints/hint3.md new file mode 100644 index 0000000..d6ae3ab --- /dev/null +++ b/Project#04/hints/hint3.md @@ -0,0 +1,20 @@ +The following code block illustrates a simple-minded MP2 energy calculation with the two-electron integrals stored in a one-dimensional array. The molecular orbitals are assumed to be ordered with all doubly-occupied orbitals first, followed by the unoccupied/virtual orbitals. Notice the difference in limits of the loops over *i* and *a*: + +```c++ + Emp2 = 0.0; + for(i=0; i < ndocc; i++) { + for(a=ndocc; a < nao; a++) { + ia = INDEX(i,a); + for(j=0; j < ndocc; j++) { + ja = INDEX(j,a); + for(b=ndocc; b < nao; b++) { + jb = INDEX(j,b); + ib = INDEX(i,b); + iajb = INDEX(ia,jb); + ibja = INDEX(ib,ja); + Emp2 += TEI[iajb] * (2 * TEI[iajb] - TEI[ibja])/(eps[i] + eps[j] - eps[a] - eps[b]); + } + } + } + } +``` diff --git a/Project#04/project4-instructions.pdf b/Project#04/project4-instructions.pdf new file mode 100644 index 0000000..6a8da0b Binary files /dev/null and b/Project#04/project4-instructions.pdf differ diff --git a/Project#05/README.md b/Project#05/README.md index 2d3a74a..d4ee632 100644 --- a/Project#05/README.md +++ b/Project#05/README.md @@ -3,56 +3,33 @@ The coupled cluster model provides a higher level of accuracy beyond the MP2 app ## Step #1: Preparing the Spin-Orbital Basis Integrals Each term in the equations given in the above paper by Stanton et al. depends on the T1 or T2 amplitudes as well as Fock-matrix elements and antisymmetrized, Dirac-notation two-electron integrals, all given in the molecular spin-orbital basis -(as opposed to the spatial-orbital basis used in the earlier [MP2 Project](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2304). +(as opposed to the spatial-orbital basis used in the earlier [MP2 Project](../Project%2304). Thus, the transformation of the AO-basis integrals into the spatial-MO basis must also include their translation into the spin-orbital basis: -``` -EQUATION -\begin{eqnarray*} -\langle p q | r s \rangle & \equiv & \int d{\mathbf r}_1 d{\mathbf r}_2 d\omega_1 d\omega_1 \phi_p({\mathbf r}_1)\sigma_p(\omega_1) \phi_q({\mathbf r}_2)\sigma_q(\omega_2) \frac{1}{{\mathbf r}_{12}} \phi_r({\mathbf r}_1)\sigma_r(\omega_1) \phi_s({\mathbf r}_2)\sigma_s(\omega_2) \\ -& \equiv & \int d{\mathbf r}_1 d{\mathbf r}_2 \phi_p({\mathbf r}_1) \phi_q({\mathbf r}_2) \frac{1}{{\mathbf r}_{12}} \phi_r({\mathbf r}_1) \phi_s({\mathbf r}_2) \int d\omega_1 d\omega_1 \sigma_p(\omega_1) \sigma_q(\omega_2) \sigma_r(\omega_1) \sigma_s(\omega_2) \\ -& \equiv & (p r | q s) \int d\omega_1 d\omega_1 \sigma_p(\omega_1) \sigma_q(\omega_2) \sigma_r(\omega_1) \sigma_s(\omega_2) -\end{eqnarry*} -``` + - -Thus, if you know the ordering of the orbitals (e.g. all occupied orbitals before virtual orbitals, perhaps alternating between alpha and beta spins), it is straightforward to carry out the integration over the spin components (the sigmas) in the above expression. Thus, each spatial-orbital MO-basis two-electron integral translates to 16 possible spin-orbital integrals, only four of which are non-zero. +Thus, if you know the ordering of the orbitals (e.g. all occupied orbitals before virtual orbitals, perhaps alternating between alpha and beta spins), it is straightforward to carry out the integration over the spin components (the σ's) in the above expression. Thus, each spatial-orbital MO-basis two-electron integral translates to 16 possible spin-orbital integrals, only four of which are non-zero. Don't forget that you must also create the spin-orbital Fock matrix: -``` -EQUATION -f_{pq} = h_{pq} + \sum_m^{\rm occ} \langle pm || qm \rangle -``` + Suggestion: For simplicity, store the two-electron integrals in a four-dimensional array. This will greatly facilitate debugging of the complicated CCSD equations. - * Hint: Sample spatial- to spin-orbital translation code. + * [Hint 1](./hints/hint1.md): Sample spatial- to spin-orbital translation code. ## Step #2: Build the Initial-Guess Cluster Amplitudes For Hartree-Fock reference determinants, the most common initial guess for the cluster amplitudes are the Moller-Plesset first-order perturbed wave function: -``` -EQUATION -t_i^a = 0 -``` - -``` -EQUATION -t_{ij}^{ab} = \frac{\langle ij || ab \rangle}{\epsilon_i + \epsilon_j - \epsilon_a - \epsilon_b} -``` + Note that if you have constructed the Fock matrix, two-electron integrals, and initial-guess amplitudes correctly at this point, -you should be able to compute the MP2 correlation energy using the simple spin-orbital expression and get identical results to those from -[Project #4] (https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2304): +you should be able to compute the MP2 correlation energy using the simple spin-orbital expression and get identical results to those from [Project #4](../Project%2304): -``` -EQUATION -E_{\rm MP2} = \frac{1}{4} \sum_{ijab} \langle ij||ab\rangle t_{ij}^{ab} -``` + ## Step #3: Calculate the CC Intermediates -Use the spin-orbital Eqs. 3-13 from Stanton's paper to build the two-index (F) and four-index (W) intermediates, as well as the effective doubles (labelled with the Greek letter tau). +Use the spin-orbital Eqs. 3-13 from Stanton's paper to build the two-index (F) and four-index (W) intermediates, as well as the effective doubles (labelled with the Greek letter τ). ## Step #4: Compute the Updated Cluster Amplitudes Use Eqs. 1 and 2 from Stanton's paper to compute the updated T1 and T2 cluster amplitudes. @@ -60,18 +37,16 @@ Use Eqs. 1 and 2 from Stanton's paper to compute the updated T1 and T ## Step #5: Check for Convergence and Iterate Calculate the current CC correlation energy: -``` -EQUATION -E_{\rm CC} = \sum_{ia} f_{ia} t_i^a + \frac{1}{4} \sum_{ijab} \langle ij||ab\rangle t_{ij}^{ab} + \frac{1}{2} \sum_{ijab} \langle ij||ab\rangle t_i^a t_j^b -``` -Compare energies and cluster amplitudes (using RMS differences) between iterations to check for convergence to some specified cutoff. + + +Compare energies and cluster amplitudes (using RMS differences) between iterations to check for convergence to some specified cutoff. If convergence is reached, you're done; if not, return to Step #3 and continue. ## Test Cases The input structures, integrals, etc. for these examples are found in the -[input directory](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305/input). +[input directory](./input). -* STO-3G Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2305/output/h2o/STO-3G/output.txt) -* DZ Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2305/output/h2o/DZ/output.txt) -* DZP Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2305/output/h2o/DZP/output.txt) -* STO-3G Methane | [output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2305/output/ch4/STO-3G/output.txt) +* STO-3G Water | [output](./output/h2o/STO-3G/output.txt) +* DZ Water | [output](./output/h2o/DZ/output.txt) +* DZP Water | [output](./output/h2o/DZP/output.txt) +* STO-3G Methane | [output](./output/ch4/STO-3G/output.txt) diff --git a/Project#05/figures/cc-correlation-energy.png b/Project#05/figures/cc-correlation-energy.png new file mode 100644 index 0000000..0be10b2 Binary files /dev/null and b/Project#05/figures/cc-correlation-energy.png differ diff --git a/Project#05/figures/init-t-amps.png b/Project#05/figures/init-t-amps.png new file mode 100644 index 0000000..9d8e797 Binary files /dev/null and b/Project#05/figures/init-t-amps.png differ diff --git a/Project#05/figures/mp2-energy.png b/Project#05/figures/mp2-energy.png new file mode 100644 index 0000000..cae007a Binary files /dev/null and b/Project#05/figures/mp2-energy.png differ diff --git a/Project#05/figures/spin-orbital-eri.png b/Project#05/figures/spin-orbital-eri.png new file mode 100644 index 0000000..5ae01a5 Binary files /dev/null and b/Project#05/figures/spin-orbital-eri.png differ diff --git a/Project#05/figures/spin-orbital-fock.png b/Project#05/figures/spin-orbital-fock.png new file mode 100644 index 0000000..69e8771 Binary files /dev/null and b/Project#05/figures/spin-orbital-fock.png differ diff --git a/Project#05/hints/hint1.md b/Project#05/hints/hint1.md new file mode 100644 index 0000000..6483590 --- /dev/null +++ b/Project#05/hints/hint1.md @@ -0,0 +1,19 @@ +This block of code takes the one-dimensional array of MO-basis spatial-orbital two-electron integrals we've been using thus far and translates it to a four-dimensional array of antisymmetrized integrals over spin-orbitals. Note that alpha and beta spin functions alternate here, with even-numbered orbitals corresponding to alpha, and odd-numbered to beta. The variable `nmo` is the number of spin orbitals, and the `INDEX` function is the same as that [used before](../../Project%2303/hints/hint7-2.md). + +```c++ + /* Translate integrals to spin-orbital basis */ + for(p=0; p < nmo; p++) + for(q=0; q < nmo; q++) + for(r=0; r < nmo; r++) + for(s=0; s < nmo; s++) { + pr = INDEX(p/2,r/2); + qs = INDEX(q/2,s/2); + prqs = INDEX(pr,qs); + value1 = TEI[prqs] * (p%2 == r%2) * (q%2 == s%2); + ps = INDEX(p/2,s/2); + qr = INDEX(q/2,r/2); + psqr = INDEX(ps,qr); + value2 = TEI[psqr] * (p%2 == s%2) * (q%2 == r%2); + ints[p][q][r][s] = value1 - value2; + } +``` diff --git a/Project#06/README.md b/Project#06/README.md index 7fd07b3..effecf3 100644 --- a/Project#06/README.md +++ b/Project#06/README.md @@ -1,60 +1,37 @@ # Project #6: A perturbative triples correction to CCSD: CCSD(T) The CCSD(T) method is often referred to as the "gold standard" of quantum chemistry for its high accuracy and reliability. The purpose of this project is to illustrate the fundamental aspects of an efficient implementation of the (T) energy correction. This project builds upon the results of -[Project #5](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305). +[Project #5](../Project%2305). The spin-orbital expression for the (T) correction, using the same notation as in -[Project #5](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305), is: - -``` -EQUATION -E_{\rm (T)} = \frac{1}{36} \sum_{ijkabc} t_{ijk}^{abc}(c) D_{ijk}^{abc} \left[ t_{ijk}^{abc}(c) + t_{ijk}^{abc}(d) \right], -``` +[Project #5](../Project%2305), is: + where -``` -EQUATION -D_{ijk}^{abc} = f_{ii} + f_{jj} + f_{kk} - f_{aa} - f_{bb} - f_{cc}, -``` - + the "disconnected" triples are defined as -``` -EQUATION -D_{ijk}^{abc} t_{ijk}^{abc}(d) = P(i/jk) P(a/bc) t_i^a \langle jk || bc \rangle, -``` - + and the "connected" triples as -``` -EQUATION -D_{ijk}^{abc} t_{ijk}^{abc}(c) = P(i/jk) P(a/bc) \left[ \sum_e t_{jk}^{ae} \langle ei||bc \rangle - \sum_m t_{im}^{bc} \langle ma||jk \rangle \right]. -``` - + The three-index permutation operator is defined by its action on an algebraic function as -``` -EQUATION -P(p/qr) f(pqr) = f(pqr) - f(qpr) - f(rqp). -``` - + The total energy is -``` -EQUATION -E_{\rm total} = E_{\rm SCF} + E_{\rm CCSD} + E_{\rm (T)}. -``` - + ## Algorithm #1: Full Storage of Triples The most straightforward approach to evaluation of the (T) energy correction is to compute and store explicitly the connected and disconnected triples and plug them into the energy expression above. Store the triples amplitudes as six-dimensional arrays over occupied and virtual spin orbitals. + ## Algorithm #2: Avoided Storage of Triples Note that each T3 amplitude depends on all the T1 and T2 amplitudes, **not** on other triples. This suggests that the calculation of the T3 amplitudes appearing in the energy expression could proceed one amplitude at a time: @@ -95,13 +72,13 @@ This algorithm reduces the storage (memory and disk) requirements of the (T) cor End i loop ``` -This approach requires more storage (on the order v3) than the one-at-a-time approach, but can be considerably faster of modern high-performance computers. A good discussion of the most efficient algorithm can be found in A. P. Rendell, T. J. Lee, A. Komornicki, //Chem. Phys. Lett.// **178**, 462-470 (1991). +This approach requires more storage [O(v3)] than the one-at-a-time approach, but can be considerably faster for modern high-performance computers. A good discussion of the most efficient algorithm can be found in A. P. Rendell, T. J. Lee, A. Komornicki, //Chem. Phys. Lett.// **178**, 462-470 (1991). ## Test Cases -The input structures, integrals, etc. for these examples may be found in the [input](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2306/input) -directory, the CCSD Energies can be found in [Project #5](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305). +The input structures, integrals, etc. for these examples may be found in the [input](./input) +directory, the CCSD Energies can be found in [Project #5](../Project%2305). -* STO-3G Water | [Output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2306/output/h2o/STO-3G/output.txt) -* DZ Water | [Output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2306/output/h2o/DZ/output.txt) -* DZP Water | [Output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2306/output/h2o/DZP/output.txt) -* STO-3G Methane | [Output](https://github.com/CrawfordGroup/ProgrammingProjects/blob/master/Project%2306/output/ch4/STO-3G/output.txt) +* STO-3G Water | [Output](./output/h2o/STO-3G/output.txt) +* DZ Water | [Output](./output/h2o/DZ/output.txt) +* DZP Water | [Output](./output/h2o/DZP/output.txt) +* STO-3G Methane | [Output](./output/ch4/STO-3G/output.txt) diff --git a/Project#06/figures/D.png b/Project#06/figures/D.png new file mode 100644 index 0000000..b2dd664 Binary files /dev/null and b/Project#06/figures/D.png differ diff --git a/Project#06/figures/connected-triples.png b/Project#06/figures/connected-triples.png new file mode 100644 index 0000000..a8ca008 Binary files /dev/null and b/Project#06/figures/connected-triples.png differ diff --git a/Project#06/figures/disconnected-triples.png b/Project#06/figures/disconnected-triples.png new file mode 100644 index 0000000..6e421ef Binary files /dev/null and b/Project#06/figures/disconnected-triples.png differ diff --git a/Project#06/figures/t-correction.png b/Project#06/figures/t-correction.png new file mode 100644 index 0000000..1461dd7 Binary files /dev/null and b/Project#06/figures/t-correction.png differ diff --git a/Project#06/figures/three-index-permutation.png b/Project#06/figures/three-index-permutation.png new file mode 100644 index 0000000..e922a5d Binary files /dev/null and b/Project#06/figures/three-index-permutation.png differ diff --git a/Project#06/figures/total-energy.png b/Project#06/figures/total-energy.png new file mode 100644 index 0000000..3aab6c0 Binary files /dev/null and b/Project#06/figures/total-energy.png differ diff --git a/Project#08/README.md b/Project#08/README.md index a26270b..dc85873 100644 --- a/Project#08/README.md +++ b/Project#08/README.md @@ -1,6 +1,6 @@ # Project #8: DIIS extrapolation for the SCF procedure -The convergence of the self-consistent field (SCF) algorithm presented in Project #3 is rather slow. +The convergence of the self-consistent field (SCF) algorithm presented in [Project #3](../Project%2303) is rather slow. Even the STO-3G H2O example requires more than 20 iterations to converge the RMS density difference to a relatively loose threshold of 10-8. One of the most effective methods for speeding up such iterative sequences is the "Direct Inversion in the Iterative Subspace (DIIS)" approach, which was @@ -11,110 +11,64 @@ a new guess may be constructed as a simple linear combination of the previous fe where the coefficients of such an extrapolation are determined from Lagrangian minimization procedure. The purpose of this programming project is to implement the Pulay DIIS procedure within the SCF algorithm from -[Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303). +[Project #3](../Project%2303). ## Working Equations Given a series of Fock matrices, Fi (expressed in the AO basis set), a new approximation to the converged solution may be written as -``` -EQUATION -{\mathbf F}' = \sum_i c_i {\mathbf F}_i -``` - + by requiring that the corresponding extrapolated "error" matrix -``` -EQUATION -{\mathbf e}' = \sum_i c_i {\mathbf e}_i \approx {\mathbf 0} -``` - + is approximately the zero matrix in a least-squares sense. The error matrix for each iteration is given by -``` -EQUATION -{\mathbf e_i} \equiv {\mathbf F}_i {\mathbf D}_i {\mathbf S} - {\mathbf S} {\mathbf D}_i {\mathbf F}_i, -``` - + where Di is the AO-basis density matrix used to construct -Fi, and ** *S* ** is the AO-basis overlap matrix. Minimization of ** *e'* ** under the constraint that - -``` -EQUATION -\sum_i c_i = 1 -``` +Fi, and S is the AO-basis overlap matrix. Minimization of e' under the constraint that + leads to the following system of linear equations for the ci: -``` -EQUATION -\left( -\begin{array}{ccccc} -B_{11} & B_{12} & \ldots & B_{1m} & -1 \\ -B_{21} & B_{22} & \ldots & B_{2m} & -1 \\ -\ldots & \ldots & \ldots & \ldots & -1 \\ -B_{m1} & B_{m2} & \ldots & B_{mm} & -1 \\ --1 & -1 & \ldots & -1 & 0 \\ -\end{array} -\right) \left( -\begin{array}{c} -c_1 \\ -c_2 \\ -\ldots \\ -c_m \\ -\lambda -\end{array} -\right) = \left( -\begin{array}{c} -0 \\ -0 \\ -\ldots \\ -0 \\ --1 \\ -\end{array} -\right), -``` - -where lambda is a Lagrangian multiplier and the elements Bij are computed as dot products of error matrices: + -``` -EQUATION -B_{ij} \equiv {\mathbf e}_i \cdot {\mathbf e}_j. -``` +where lambda is a Lagrangian multiplier and the elements Bij are computed as dot products of error matrices: + ## Step #1: Compute the Error Matrix in Each Iteration -Compute the error matrix for the current iteration using the matrix equation for **e**i given above. -Note that the density matrix you use must be the same one used to construct the corresponding Fock matrix. +Compute the error matrix for the current iteration using the matrix equation for ei given above. +Note that the density matrix you use must be the same one used to construct the corresponding Fock matrix. If you print the error matrix in each iteration, you should be able to note that it gradually falls to zero as the SCF procedure converges. ## Step #2: Build the B Matrix and Solve the Linear Equations -After you have computed at least two error matrices, it is possible to begin the DIIS extrapolation procedure. +After you have computed at least two error matrices, it is possible to begin the DIIS extrapolation procedure. Compute the B matrix above for all of the current error matrices. (Note that the matrix is symmetric, so one need only compute the lower triangle to get the entire matrix). Next, use a standard linear-equation solver (such as the DGESV function in the LAPACK library, to which PSI4 has an interface named C_DGESV) to compute the ci coefficients. (NB: If you use the LAPACK solver, or any LAPACK or BLAS function for that matter, you must use matrices allocated as contiguous memory, -as discussed in [Project #7](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2307#usefulPsiFeatures)). +as discussed in [Project #7](../Project%2307)). ## Step #3: Compute the New Fock Matrix -Build a new Fock matrix using the equation for ** *F'* ** above and continue with the SCF procedure as usual. -This implies that one must store all of the Fock matrices corresponding to each of the error matrices used in constructing the B matrix above. Note: +Build a new Fock matrix using the equation for F' above and continue with the SCF procedure as usual. +This implies that one must store all of the Fock matrices corresponding to each of the error matrices used in constructing the B matrix above. +Note: * Do **not** use the extrapolated Fock matrix to compute error matrices for subsequent DIIS steps. * Keep only a relatively small number of error matrices; six to eight are reasonable for closed-shell SCF calculations. When the chosen number of error matrices is exceeded delete the oldest error matrix. -Once the procedure is complete and working correctly, you should notice a considerable reduction in the number of SCF cycles required to achieve convergence. -For example, for the STO-3G/H2O test case from [Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303), +Once the procedure is complete and working correctly, you should notice a considerable reduction in the number of SCF cycles required to achieve convergence. +For example, for the STO-3G/H2O test case from [Project #3](../Project%2303), the simple SCF algorithm converges to 10-12 in the density in 39 iterations: ``` Iter E(elec) E(tot) Delta(E) RMS(D) diff --git a/Project#08/figures/Bij.png b/Project#08/figures/Bij.png new file mode 100644 index 0000000..e8e0a7b Binary files /dev/null and b/Project#08/figures/Bij.png differ diff --git a/Project#08/figures/constraint.png b/Project#08/figures/constraint.png new file mode 100644 index 0000000..72230eb Binary files /dev/null and b/Project#08/figures/constraint.png differ diff --git a/Project#08/figures/error-matrix.png b/Project#08/figures/error-matrix.png new file mode 100644 index 0000000..3d70a7b Binary files /dev/null and b/Project#08/figures/error-matrix.png differ diff --git a/Project#08/figures/iter-error-matrix.png b/Project#08/figures/iter-error-matrix.png new file mode 100644 index 0000000..f29a1df Binary files /dev/null and b/Project#08/figures/iter-error-matrix.png differ diff --git a/Project#08/figures/new-approx-fock.png b/Project#08/figures/new-approx-fock.png new file mode 100644 index 0000000..abd7c12 Binary files /dev/null and b/Project#08/figures/new-approx-fock.png differ diff --git a/Project#08/figures/sys-lin-eqn-ci.png b/Project#08/figures/sys-lin-eqn-ci.png new file mode 100644 index 0000000..9bdf555 Binary files /dev/null and b/Project#08/figures/sys-lin-eqn-ci.png differ diff --git a/Project#09/README.md b/Project#09/README.md index f3a37a7..1a01dbd 100644 --- a/Project#09/README.md +++ b/Project#09/README.md @@ -3,11 +3,11 @@ The use of point-group symmetry in quantum chemical calculations can lead to exceptionally efficient programs, both in terms of their memory/disk usage and their computing times. If a molecule has even one element of symmetry, for example, this can reduce the number of wave function parameters that must be stored by up to a factor of two (the order of the point group) -and the computing effort by up to a factor of four (the square of the order of the point group). +and the computing effort by up to a factor of four (the square of the order of the point group). Most quantum chemical programs can take advantage of Abelian symmetry -- more accurately, D2h and its subgroups -- which means that higher symmetry structures can yield up to a factor of 64 reduction in the computational costs. -The purpose of this project is to take advantage of basic point-group symmetry in an SCF calculation. +The purpose of this project is to take advantage of basic point-group symmetry in an SCF calculation. While the most efficient programs will store only the symmetry-allowed sets of two-electron integrals, for the purposes of this project we'll deal only with the one-electron (two-index) components. @@ -15,22 +15,19 @@ for the purposes of this project we'll deal only with the one-electron (two-inde The vanishing integral rule of point-group theory may be stated as follows for Abelian groups: -``` -EQUATION -\langle \phi_i | \hat{A} |\phi_j \rangle = 0 \ \ \ \ {\rm if} \ \ \ \ \Gamma_A \neq \Gamma_{\phi_i} \otimes \Gamma_{\phi_j}, -``` + -where ΓX denotes the irreducible representation (irrep) of entity X. +where ΓX denotes the irreducible representation (irrep) of entity X. That is, unless the direct product of the irreps of the functions or operators in the integrand contains the totally symmetric irrep, the integral must be zero. The vanishing integral rule of group theory may be readily applied to the various integrals and wave-function parameters in the SCF procedure -** *if* ** the AO-basis functions over which the they are evaluated have been properly symmetrized +if the AO-basis functions over which the they are evaluated have been properly symmetrized [i.e. used to form symmetry-adapted linear combinations, normally referred to as symmetry orbitals (SOs)]. -For example, consider the H2O test case with the STO-3G basis set as given in Project #3. The AO +For example, consider the H2O test case with the STO-3G basis set as given in [Project #3](../Project%2303). The AO ([contracted Gaussian](http://sirius.chem.vt.edu/wiki/lib/exe/fetch.php?media=basis_sets.pdf)) basis functions on the oxygen atom consist of 1s, 2s, 2px, 2py, and 2pz orbitals, -which those for each hydrogen atom consist of only the 1s, giving a total of seven AOs. +which those for each hydrogen atom consist of only the 1s, giving a total of seven AOs. If we take oxygen to be the first atom and ignore the C2v point group symmetry of the molecule, the resulting overlap integral matrix looks like: @@ -48,20 +45,20 @@ the resulting overlap integral matrix looks like: The first five row/column indices correspond to the basis functions on the oxygen (in the order listed above), while rows/columns six and seven correspond to the basis functions on each hydrogen. Thus, the 1-2 element is the overlap integral between the 1s and 2s orbitals on the oxygen, -while element 3-7 is the overlap integral between the oxygen 2px orbital and the second hydrogen 1s orbital. +while element 3-7 is the overlap integral between the oxygen 2px orbital and the second hydrogen 1s orbital. Points to note about this matrix: - - The 1s and 2s orbitals on oxygen are not orthogonal to one another, but both are orthogonal to all three p-type orbitals. + - The 1s and 2s orbitals on oxygen are not orthogonal to one another, but both are orthogonal to all three p-type orbitals. This occurs because, in Cartesian Gaussian basis sets, orthogonality is generally obtained only between functions of different angular momenta on the same atomic center. - The 1s orbitals on the hydrogens have the same overlap integral (to within a sign) - with all the orbitals on the oxygen because they are ** *symmetry equivalent* ** . + with all the orbitals on the oxygen because they are symmetry equivalent. However, the 1s orbitals alone do not transform as irreps of the C2v point group. - - The hydrogen 1s orbitals are orthogonal to the 2pz orbital on the oxygen (cf. elements 5-6 and 5-7). + - The hydrogen 1s orbitals are orthogonal to the 2pz orbital on the oxygen (cf. elements 5-6 and 5-7). This is because the water molecule was arbitrarily oriented in the xy-plane to compute the above integrals; thus the 2pz orbital is perpendicular to the molecular plane containing the hydrogen 1s orbitals. -What happens if we turn on symmetry, i.e. take linear combinations of the AO to obtain SOs? +What happens if we turn on symmetry, i.e. take linear combinations of the AO to obtain SOs? If we orient the molecule oriented in the yz-plane, so that the z-axis corresponds to the C2 rotation axis, we find that the AOs transform as the following irreps: @@ -75,7 +72,7 @@ we find that the AOs transform as the following irreps: | H1 1s + H2 1s | A1 | | H1 1s - H2 1s | B2 | -Thus, after symmetrization, there are four A1 SOs, one B1 SO, and two B2 SOs. +Thus, after symmetrization, there are four A1 SOs, one B1 SO, and two B2 SOs. (The STO-3G basis set contains no A2 orbitals. One must include at least d-type functions on the oxygen and/or p-type functions on the hydrogens to obtain A2 orbitals.) Note that a normalization factor of 1/sqrt(2) should be included for the H 1s SOs above. @@ -107,13 +104,13 @@ The PSI checkpoint file contains a great deal of useful symmetry information. To ## Storing One-Electron Integrals with Symmetry -The block-diagonal structure above implies that one need only store and use the sub-matrices of the integrals rather than the full matrix. +The block-diagonal structure above implies that one need only store and use the sub-matrices of the integrals rather than the full matrix. One way of doing this is to store the one-electron integrals as an array of smaller matrices, the size of which is dictated by the number of SOs per irrep. For example, here's a code snippet that will extract the one-electron integrals -from the appropriate file (as was done in [Project #7](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2307) ), +from the appropriate file (as was done in [Project #7](../Project%2307) ), but stores them in an array of matrices: -```cpp +```c++ int ntri, nirreps; double *scratch; double ***S; @@ -138,9 +135,9 @@ but stores them in an array of matrices: ``` Notice how S is now a `double ***` -- i.e. an array of matrices. This code uses the same `INDEX()` function found in -[Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303), -and the sopi array is the integer array of SOs per irrep obtained using the `chkpt_rd_sopi()` function. -The `symm_offset` array is useful for converting between ** *relative* ** orbital indices and ** *absolute* ** orbital indices. +[Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303), +and the sopi array is the integer array of SOs per irrep obtained using the `chkpt_rd_sopi()` function. +The `symm_offset` array is useful for converting between relative orbital indices and absolute orbital indices. (For example, orbital 0 in the B2 irrep block corresponds to orbital 5 in the full list of orbitals; the first number is the relative index, the second is the absolute index.) @@ -149,28 +146,23 @@ in the full list of orbitals; the first number is the relative index, the second If we store the integral, MO coefficient, density, and Fock matrices in the block-diagonal structure described above, we may compute matrix products of these quantities separately for each diagonal block. For example, the matrix product may be written as: -``` -EQUATION -{\mathbf C} = {\mathbf A} {\mathbf B} = \bigoplus_h {\mathbf C}_h = \bigoplus_h {\mathbf A}_h {\mathbf B}_h, -``` + -where *h* denotes a particular irrep of the point group and Ch denotes the *h*-th irrep subblock of the full matrix ** *C* ** . +where *h* denotes a particular irrep of the point group and Ch denotes the *h*-th irrep subblock of the full matrix C. (The notation of the large plus with a circle around it indicates a direct sum.) ## Occupied Orbitals and the Density Matrix The calculation of the density matrix requires information about the number of occupied orbitals: -``` -EQUATION -D_{\mu\nu} = \sum_m^{\rm occ.} \left( {\mathbf C} \right)_\mu^m \left( {\mathbf C} \right)_\nu^m -``` + + In a calculation without symmetry, one need only know the number of electrons (equivalently, the atomic numbers of the atoms and the overall molecular charge) to evaluate this expression. However, if the density and MO coefficient matrices are stored in symmetry-blocked form, -as above, one needs to know the number of occupied MOs in each irrep. +as above, one needs to know the number of occupied MOs in each irrep. For the case of the C2v water molecule, which has two σ O-H bonds, two oxygen lone pairs, -and one oxygen core orbital, the orbital occupations are not difficult to determine, given the above information about the number of SOs in each irrep. +and one oxygen core orbital, the orbital occupations are not difficult to determine, given the above information about the number of SOs in each irrep. Since the MOs are constructed as linear combinations of the SOs, and only SOs of the same irrep can combine, we may rationalize the occupied orbitals of H2O as follows: @@ -184,9 +176,9 @@ H2O as follows: Thus, for the water molecule, there are 3 A1, 1 B1, and 1 B2 occupied orbitals. -Determining the occupations automatically is sometimes a difficult task, especially for molecules with unusual bonding patterns. +Determining the occupations automatically is sometimes a difficult task, especially for molecules with unusual bonding patterns. Many SCF programs will simply take the core Hamiltonian matrix (often used as the initial guess for the Fock matrix), -diagonalize it (in the othogonal AO basis) in each irrep block, and identify the lowest eigenvalues in each irrep as occupied. +diagonalize it (in the othogonal AO basis) in each irrep block, and identify the lowest eigenvalues in each irrep as occupied. However, this approach often fails for many molecules (especially those with open shells) because of near-degeneracies that may not be adequately described by the simple core Hamiltonian. Thus, some programs will make use of more sophisticated guesses at the Fock matrix, e.g. Hueckel orbitals or other (semi)empirical forms. @@ -195,12 +187,9 @@ sophisticated guesses at the Fock matrix, e.g. Hueckel orbitals or other (semi)e The only portion of the SCF procedure involving two-electron integrals is the Fock-matrix build: -``` -EQUATION -F_{\mu\nu} = H^{\rm core}_{\mu\nu} + \sum_{\lambda\sigma}^{\rm AO} D^{i-1}_{\lambda\sigma} \left[ 2 (\mu\nu | \lambda\sigma) - (\mu\lambda|\nu\sigma) \right], -``` + -where the notation used in [Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303) is retained above. +where the notation used in [Project #3](../Project%2303) is retained above. If the Fock matrix and density matrix are stored in a symmetry-blocked manner similar to the overlap matrix above, then one may limit the corresponding loops only to the symmetry-allowed combinations, e.g. the irreps of μ and ν must match for Fμν to be non-zero and the irreps of λ @@ -208,4 +197,4 @@ and σ must match for Dλσ Note, however, that, because of the symmetries in the two-electron integrals, the irrep of λ and σ do not necessarily have to match that of μ and ν. - * Hint: Fock-Build Code + * [Hint](./hints/hint1.md): Fock-Build Code diff --git a/Project#09/figures/density-matrix.png b/Project#09/figures/density-matrix.png new file mode 100644 index 0000000..7a81c07 Binary files /dev/null and b/Project#09/figures/density-matrix.png differ diff --git a/Project#09/figures/fock-build.png b/Project#09/figures/fock-build.png new file mode 100644 index 0000000..90eb475 Binary files /dev/null and b/Project#09/figures/fock-build.png differ diff --git a/Project#09/figures/matrix-product.png b/Project#09/figures/matrix-product.png new file mode 100644 index 0000000..aaa4ff7 Binary files /dev/null and b/Project#09/figures/matrix-product.png differ diff --git a/Project#09/figures/point-group-rule.png b/Project#09/figures/point-group-rule.png new file mode 100644 index 0000000..a4ae26b Binary files /dev/null and b/Project#09/figures/point-group-rule.png differ diff --git a/Project#09/hints/hint1.md b/Project#09/hints/hint1.md new file mode 100644 index 0000000..670bf7d --- /dev/null +++ b/Project#09/hints/hint1.md @@ -0,0 +1,28 @@ +```c++ + for(h=0; h < nirreps; h++) { + for(i=0; i < sopi[h]; i++) { + I = symm_offset[h] + i; + for(j=0; j < sopi[h]; j++) { + J = symm_offset[h] + j; + F[h][i][j] = H[h][i][j]; + + for(g=0; g < nirreps; g++) { + for(k=0; k < sopi[g]; k++) { + K = symm_offset[g] + k; + for(l=0; l < sopi[g]; l++) { + L = symm_offset[g] + l; + + ij = INDEX(I,J); kl = INDEX(K,L); + ijkl = INDEX(ij,kl); + ik = INDEX(I,K); jl = INDEX(J,L); + ikjl = INDEX(ik,jl); + + F[h][i][j] += D[g][k][l] * (2.0 * TEI[ijkl] - TEI[ikjl]); + } + } + + } + } + } + } +``` diff --git a/Project#10/README.md b/Project#10/README.md index 808e9f7..48e85fe 100644 --- a/Project#10/README.md +++ b/Project#10/README.md @@ -12,10 +12,7 @@ zero as the equations converge. In the SCF procedure, we use the atomic-orbital representation of the occupied-virtual block of the Fock matrix. In the CC method, we could choose the difference between successive sets of cluster amplitudes: -``` -EQUATION -{\mathbf e}_i = {\mathbf T}_{i+1} - {\mathbf T}_i, -``` + where Ti represents a vector containing all the cluster amplitudes for the *i*-th iteration. @@ -23,8 +20,8 @@ There are three important points to note about this choice of error vector: * Defining the error vectors as differences between successive sets of amplitudes implies that one cannot begin the DIIS extrapolation until at least three iterations are complete. - * Just as in the SCF DIIS procedure, error vectors should only be computed using * - **non-extrapolated** * sets of cluster amplitudes. + * Just as in the SCF DIIS procedure, error vectors should only be computed using + non-extrapolated sets of cluster amplitudes. * The set of cluster amplitudes can require substantial memory for larger molecules; hence, the choice of the number of error vectors used in the CC DIIS procedure is potentially dependent on the available storage (disk and memory). @@ -32,48 +29,15 @@ There are three important points to note about this choice of error vector: ## Extrapolation Given the above definition of the error vectors, the set of linear equations to be solved is the same as that for the SCF DIIS procedure: -``` -EQUATION -\left( -\begin{array}{ccccc} -B_{11} & B_{12} & \ldots & B_{1m} & -1 \\ -B_{21} & B_{22} & \ldots & B_{2m} & -1 \\ -\ldots & \ldots & \ldots & \ldots & -1 \\ -B_{m1} & B_{m2} & \ldots & B_{mm} & -1 \\ --1 & -1 & \ldots & -1 & 0 \\ -\end{array} -\right) \left( -\begin{array}{c} -c_1 \\ -c_2 \\ -\ldots \\ -c_m \\ -\lambda -\end{array} -\right) = \left( -\begin{array}{c} -0 \\ -0 \\ -\ldots \\ -0 \\ --1 \\ -\end{array} -\right), -``` + -where lambda is a Lagrangian multiplier and the elements Bij are computed as dot products of error matrices: +where λ is a Lagrangian multiplier and the elements Bij are computed as dot products of error matrices: -``` -EQUATION -B_{ij} \equiv {\mathbf e}_i \cdot {\mathbf e}_j. -``` + A new set of cluster amplitudes is then obtained as a linear combinations of older amplitudes using the coefficients from the linear equations above: -``` -EQUATION -{\mathbf T}_{\rm new} = \sum_i c_i {\mathbf T}_i -``` + Again: The extrapolated cluster amplitudes should be used only in the CC amplitude equations, not to compute subsequent error vectors. @@ -81,8 +45,7 @@ Again: The extrapolated cluster amplitudes should be used only in the CC amplitu Once the procedure is working, you should observe a considerable reduction in the number of iterations required to converge the CC amplitude equations to a given tolerance. For example, without DIIS extrapolation, the STO-3G H2O test -case from [Project #5](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305) -converges in 38 iterations to a +case from [Project #5](../Project%2305) converges in 38 iterations to a precision of 10-12: ``` diff --git a/Project#10/figures/Bij.png b/Project#10/figures/Bij.png new file mode 100644 index 0000000..e8e0a7b Binary files /dev/null and b/Project#10/figures/Bij.png differ diff --git a/Project#10/figures/error-vector.png b/Project#10/figures/error-vector.png new file mode 100644 index 0000000..2c54b20 Binary files /dev/null and b/Project#10/figures/error-vector.png differ diff --git a/Project#10/figures/new-t-amps.png b/Project#10/figures/new-t-amps.png new file mode 100644 index 0000000..8782089 Binary files /dev/null and b/Project#10/figures/new-t-amps.png differ diff --git a/Project#10/figures/sys-lin-eqn-ci.png b/Project#10/figures/sys-lin-eqn-ci.png new file mode 100644 index 0000000..9bdf555 Binary files /dev/null and b/Project#10/figures/sys-lin-eqn-ci.png differ diff --git a/Project#11/README.md b/Project#11/README.md index e963872..944698a 100644 --- a/Project#11/README.md +++ b/Project#11/README.md @@ -26,22 +26,18 @@ physical memory available on workstations or supercomputer nodes. The purpose of this project is to consider and implement an "out-of-core" SCF algorithm, that is, an approach that minimizes the core-memory requirements of the program by reading the two-electron repulsion integrals from disk in -batches when only they are needed.((An alternative approach is the so-called +batches when only they are needed (An alternative approach is the so-called "direct" SCF, in which the two-electron integrals are re-computed in each SCF -iteration rather than stored on disk.)) +iteration rather than stored on disk) ## The Fock Matrix Build At the heart of the SCF procedure is the expensive Fock-matrix term: -``` -EQUATION -F_{ij} = H^{\rm core}_{ij} + \sum_{kl}^{\rm AO} D_{kl} \left[ 2 (ij|kl) - (ik|jl) \right], -``` + where we use *i*, *j*, *k*, and *l* to denote AO-basis indices. As described -in [Project #3](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2303), a simple algorithm for -evaluating this matrix is: +in [Project #3](../Project%2303), a simple algorithm for evaluating this matrix is: ```cpp for(i=0; i < nao; i++) @@ -63,10 +59,9 @@ for(i=0; i < nao; i++) This algorithm hinges on the fact that all the two-electron integrals are immediately available in the TEI array (which takes advantage of permutational -symmetry). In -[Project #7](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2307) -you made use of the following code, which reads the integrals into the TEI -array in batches (sometimes referred to in PSI as "buffers"): +symmetry). In [Project #7](../Project%2307) you made use of the following code, +which reads the integrals into the TEI array in batches (sometimes referred to +in PSI as "buffers"): ```cpp iwl_buf_init(&InBuf, PSIF_SO_TEI, 1e-14, 1, 0); @@ -117,47 +112,36 @@ each individual integral to the Fock matrix: iwl_buf_close(&InBuf, 1); ``` -Thus a given integral, (ij|kl), would contribute to **//at least two//** Fock matrix elements as: +Thus a given integral, (ij|kl), would contribute to at least two Fock matrix elements as: + + -``` -EQUATION -F_{ij} \leftarrow +2 * D_{kl} (ij|kl) -``` and -``` -EQUATION -F_{ik} \leftarrow - D_{jl} (ij|kl). -``` + ## Handling Permutational Symmetry The most difficult aspect of the out-of-core algorithm is the fact that file contains only the permutationally unique integrals, *(ij|kl)*, such that: -``` -EQUATION -i \geq j,\ \ \ \ \ k \geq l,\ \ \ \ \ \ {\rm and}\ \ \ \ \ \ ij \geq kl, -``` + + + where -``` -EQUATION -ij \equiv i(i+1)/2 + j\ \ \ \ \ \ {\rm and} \ \ \ \ \ \ kl \equiv k(k+1)/2 + l. -``` + + Thus, when determining the contribution of a given integral to various elements of the Fock matrix, one must consider all possible unique permutations of the indices, *i*, *j*, *k*, and *l*. Note, however, that coincidences among the indices can limit the number of possibilities. For example, if one encountered -the integral *(22|11)*, it would contribute to a total of * **four** * Fock +the integral *(22|11)*, it would contribute to a total of four Fock matrix elements, viz. -``` -EQUATION -F_{22} \leftarrow 2 D_{11} (22|11),\ \ \ F_{21} \leftarrow - D_{21} (22|11),\ \ \ F_{11} \leftarrow 2 D_{22} (22|11),\ \ \ {\rm and}\ \ \ F_{12} \leftarrow -D_{12} (22|11). -``` + All such cases must be included in the algorithm to obtain a correct Fock matrix. ## Additional Reading - * J. Almlof, K. Faegri, and K. Korsell, "Principles for a Direct SCF Approach to LCAO-MO //Ab Initio// Calculations," //J. Comp. Chem.// **3**, 385-399 (1982). + * J. Almlof, K. Faegri, and K. Korsell, "Principles for a Direct SCF Approach to LCAO-MO *Ab Initio* Calculations," *J. Comp. Chem.* **3**, 385-399 (1982). diff --git a/Project#11/figures/compound-indices.png b/Project#11/figures/compound-indices.png new file mode 100644 index 0000000..714c307 Binary files /dev/null and b/Project#11/figures/compound-indices.png differ diff --git a/Project#11/figures/fock-contribution-1.png b/Project#11/figures/fock-contribution-1.png new file mode 100644 index 0000000..4e7a2a2 Binary files /dev/null and b/Project#11/figures/fock-contribution-1.png differ diff --git a/Project#11/figures/fock-contribution-2.png b/Project#11/figures/fock-contribution-2.png new file mode 100644 index 0000000..5c69e70 Binary files /dev/null and b/Project#11/figures/fock-contribution-2.png differ diff --git a/Project#11/figures/fock-contribution-3.png b/Project#11/figures/fock-contribution-3.png new file mode 100644 index 0000000..3234c8a Binary files /dev/null and b/Project#11/figures/fock-contribution-3.png differ diff --git a/Project#11/figures/fock-matrix.png b/Project#11/figures/fock-matrix.png new file mode 100644 index 0000000..82afe61 Binary files /dev/null and b/Project#11/figures/fock-matrix.png differ diff --git a/Project#11/figures/index-restrictions.png b/Project#11/figures/index-restrictions.png new file mode 100644 index 0000000..d9cfed7 Binary files /dev/null and b/Project#11/figures/index-restrictions.png differ diff --git a/Project#12/README.md b/Project#12/README.md index 2725558..c0e76cd 100644 --- a/Project#12/README.md +++ b/Project#12/README.md @@ -6,7 +6,7 @@ and time-dependent Hartree-Fock (TDHF), which is also known as the random-phase approximation (RPA). The purpose of this project is to develop simple implementations of these two methods and to understand the basic differences between them. This project assumes you have completed at least the -[CCSD programming project](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2305). +[CCSD programming project](../Project%2305). You can read more about these methods in [J.B. Foresman, M. Head-Gordon, J.A. Pople, and M.J. Frisch, J. Phys. Chem. 96, 135-141 (1992)](http://pubs.acs.org/doi/pdf/10.1021/j100180a030) (CIS) @@ -18,39 +18,27 @@ The fundamental idea behind CIS is the representation of the excited-state wave functions as linear combinations of singly excited determinants relative to the Hartree-Fock reference wave function, *viz.* -``` -EQUATION -\[ |\Psi(m)\rangle = \sum_{jb} c_j^b(m) \{ a^+_b a_j \} |\Phi_0\rangle = \sum_{jb} c_j^b(m) |\phi_j^b\rangle, \] -``` + where *m* identifies the various excited states, and we will use *i* and *j* (*a* and *b*) to denote occupied (unoccupied) spin-orbitals. Inserting this into the Schrödinger equation and left-projecting onto a particular singly excited determinant gives -``` -EQUATION -\sum_{jb} \langle \phi_i^a|H|\phi_j^b\rangle c_j^b(m) = E(m) c_i^a(m). -``` + If we recognize that we have one of these equations for every combination of *i* and *a* spin-orbitals, then this equation may be viewed as a matrix eigenvalue problem: -``` -EQUATION -\[ {\mathbf {\underline{\underline H}}}\ {\mathbf {\underline c}}(m) = E(m) {\mathbf {\underline c}}(m). \] -``` + To solve this equation, we need an expression for the matrix elements in terms of things we already know, i.e. Fock matrix elements and two-electron integrals. This can be done using either algebraic or diagrammatic techniques to obtain (in the spin-orbital notation of previous projects): -``` -EQUATION -\langle \phi_i^a | H | \phi_j^b \rangle = H_{ia,jb} = f_{ab} \delta_{ij} - f_{ij} \delta_{ab} + \langle aj || ib \rangle. -``` + Our task is then relatively simple: Build the Hamiltonian matrix (expressed in the basis of all singly excited determinants) using the above expression and @@ -60,7 +48,7 @@ occupied orbitals times the number of unoccupied orbitals. For our STO-3G/H2O test case, with its ten occupied and four unoccupied spin-orbitals, the matrix will be 40 x 40. - * Hint: CIS Hamiltonian for STO-3G H2O + * [Hint](./hints/hint1.md): CIS Hamiltonian for STO-3G H2O Make sure you can compute the correct CIS excitation energies for each of the four test cases provided at the end of the page. Before you move on to the @@ -84,121 +72,29 @@ from a simple two-electron/two-orbital example (such as the *1s 2s* excited state configuration of the He atom). One can easily show that the four possible determinants arising from this configuration, -``` -EQUATION -\[ \left| -\begin{array}{cc} -\uparrow & \\ -\hline -\uparrow & \\ -\hline -\end{array} -\right\rangle,\ \ -\left| -\begin{array}{cc} -& \downarrow \\ -\hline -& \downarrow \\ -\hline -\end{array} -\right\rangle,\ \ -\left| -\begin{array}{cc} -\uparrow & \\ -\hline -& \downarrow\\ -\hline -\end{array} -\right\rangle,\ \ -\left| -\begin{array}{cc} - & \downarrow \\ -\hline -\uparrow & \\ -\hline -\end{array} -\right\rangle,\ \ \] -``` + are components of one singlet and one triplet in the following combinations: -``` -EQUATION -\[ |\Phi^3_1\rangle = \left| -\begin{array}{cc} -\uparrow & \\ -\hline -\uparrow & \\ -\hline -\end{array} -\right\rangle,\ \ -|\Phi^3_{-1}\rangle = \left| -\begin{array}{cc} -& \downarrow \\ -\hline -& \downarrow\\ -\hline -\end{array} -\right\rangle,\ \ -|\Phi^3_{0}\rangle = -\frac{1}{\sqrt{2}}\left\{ -\left| -\begin{array}{cc} -\uparrow & \\ -\hline -& \downarrow\\ -\hline -\end{array} -\right\rangle - -\left| -\begin{array}{cc} -& \downarrow \\ -\hline -\uparrow & \\ -\hline -\end{array} -\right\rangle\right\},\ \ {\rm and}\ \ -|\Phi^1_{0}\rangle = -\frac{1}{\sqrt{2}}\left\{ -\left| -\begin{array}{cc} -\uparrow & \\ -\hline -& \downarrow\\ -\hline -\end{array} -\right\rangle + -\left| -\begin{array}{cc} -& \downarrow \\ -\hline -\uparrow & \\ -\hline -\end{array} -\right\rangle\right\}, \] -``` + + + where the superscript is the spin multiplicity (*2S+1*) and the subscript is the *MS* value of the wave function. So, if we wanted to compute only the eigenvalues and eigenfunctions corresponding spin singlets in our CIS -calculation, we could introduce the restriction on our CIS coefficients that -α and β excitations involving the same -*spatial* orbitals must be identical (including the sign). Similarly, if we -wanted only triplets, we could require that the α and -β excitations have the same magnitude but opposite signs. +calculation, we could introduce the restriction on our CIS coefficients that α +and β excitations involving the same spatial orbitals +must be identical (including the sign). Similarly, if we wanted only triplets, +we could require that the α and β excitations +have the same magnitude but opposite signs. Let's begin with the singlets. Starting from the spin-orbital eigenvalue expression and the equation for the CIS Hamiltonian matrix elements in the -previous section, we may write a spin-factored equation for the -α coefficients as +previous section, we may write a spin-factored equation for the α +coefficients as -``` -EQUATION -c_{i_\alpha}^{a_\alpha}(m) E(m) = \sum_{j_\alpha b_\alpha} -\left[ f_{a_\alpha b_\alpha} \delta_{i_\alpha j_\alpha} - f_{i_\alpha j_\alpha} \delta_{a_\alpha b_\alpha} + \langle a_\alpha j_\alpha || i_\alpha b_\alpha \rangle \right] -c_{j_\alpha}^{b_\alpha}(m) + \sum_{j_\beta b_\beta} \langle a_\alpha j_\beta || -i_\alpha b_\beta \rangle c_{j_\beta}^{b_\beta}(m). -``` + Note that the mix-spin cases (where *j=*α and *b=*β or *vice versa*) do not contribute since the Fock @@ -207,39 +103,27 @@ carry out spin integration on the integrals in the above expression and assume that the α and β CI coefficients are identical for the same spatial orbitals, i.e., -``` -EQUATION -c_{i_\alpha}^{a_\alpha}(m) = c_{i_\beta}^{a_\beta}(m). -``` + -we obtain the ***spatial orbital*** expression +we obtain the spatial orbital expression -``` -EQUATION -c_i^a(m) E(m) = \sum_{jb} \left[ f_{ab} \delta_{ij} - f_{ij} \delta_{ab} + 2 - \right] c_j^b(m). -``` + The part in brackets above is an expression for the spatial-orbital CIS Hamiltonian, spin-adapted for singlet excited states, and diagonalization of this matrix will yield only the singlet eigenvalues you obtained from your spin-orbital matrix earlier. - * Hint: Spin-adapted CIS singlet Hamiltonian for STO-3G H2O + * [Hint](./hints/hint2.md): Spin-adapted CIS singlet Hamiltonian for STO-3G H2O How about the triplets? We use exactly the same spin-factorization, but instead require -``` -EQUATION -c_{i_\alpha}^{a_\alpha}(m) = -c_{i_\beta}^{a_\beta}(m). -``` + This yields a slightly simpler Hamiltonian: -``` -EQUATION -c_i^a(m) E(m) = \sum_{jb} \left[ f_{ab} \delta_{ij} - f_{ij} \delta_{ab} - \right] c_j^b(m), -``` + which, upon diagonalization, will yield only the triplet eigenvalues (but each only occurring once) from your earlier diagonalziation. @@ -266,47 +150,23 @@ TDHF/RPA wave function expansion in terms of orbital rotations instead of Slater determinants, but that's a discussion for another day.) The TDHF/RPA eigenvalue equations take the form -``` -EQUATION -\left( -\begin{array}{cc} -{\mathbf {\underline{\underline A}}} & {\mathbf {\underline{\underline B}}} \\ --{\mathbf {\underline{\underline B}}} & - {\mathbf {\underline{\underline A}}} \\ -\end{array} -\right) \left( -\begin{array}{c} -{\mathbf {\underline X}} \\ -{\mathbf {\underline Y}} \\ -\end{array} -\right) = E \left( -\begin{array}{c} -{\mathbf {\underline X}} \\ -{\mathbf {\underline Y}} \\ -\end{array} -\right). -``` + The definition of the ***A*** matrix is just the CIS matrix itself, *viz.* -``` -EQUATION -A_{ia,jb} \equiv \langle \phi_i^a | H | \phi_j^b \rangle = f_{ab} \delta_{ij} - f_{ij} \delta_{ab} + \langle aj || ib \rangle, -``` + while **X** and **Y** are the parameters of single excitations and de-excitations, respectively, and the ***B*** matrix is simply -``` -EQUATION -B_{ia,jb} \equiv \langle ab || ij \rangle. -``` + Thus, the row/column dimension of the TDHF/RPA Hamiltonian is twice that of the CIS Hamiltonian, and the matrix is non-symmetric (so you must be careful about the diagonalization function you choose). Do you obtain twice as many excitation energies? - * Hint: TDHF/RPA Hamiltonian for STO-3G H2O + * [Hint](./hints/hint3.md): TDHF/RPA Hamiltonian for STO-3G H2O ## A Better Approach to Solving the TDHF/RPA Eigenvalue Equations @@ -316,57 +176,28 @@ Hamiltonian storage cost), one can rearrange the eigenvalue equations. First write eigenvalue equation two separate equations, each in terms of the submatrices **A** and **B**: -``` -EQUATION -\[ {\mathbf {\underline{\underline A}}} {\mathbf {\underline X}} + {\mathbf {\underline{\underline B}}} {\mathbf {\underline Y}} = E {\mathbf {\underline X}} \] -``` + and -``` -EQUATION -\[ --{\mathbf {\underline{\underline B}}} {\mathbf {\underline X}} - {\mathbf {\underline{\underline A}}} {\mathbf {\underline Y}} = E {\mathbf {\underline Y}}. \] -``` + Now take +/- combinations of these equations to obtain -``` -EQUATION -\[ -({\mathbf {\underline{\underline A}}} - {\mathbf {\underline{\underline B}}}) -({\mathbf {\underline X}} - {\mathbf {\underline Y}}) -= E ({\mathbf {\underline X}} + {\mathbf {\underline Y}}) \] -``` + and -``` -EQUATION -\[ ({\mathbf {\underline{\underline A}}} + {\mathbf {\underline{\underline B}}}) -({\mathbf {\underline X}} + {\mathbf {\underline Y}}) -= E ({\mathbf {\underline X}} - {\mathbf {\underline Y}}). \] -``` + Solve for ***(X+Y)*** in the second equation: -``` -EQUATION -\[ ({\mathbf {\underline X}} + {\mathbf {\underline Y}}) -= E ({\mathbf {\underline{\underline A}}} + {\mathbf {\underline{\underline B}}})^{-1} -({\mathbf {\underline X}} - {\mathbf {\underline Y}}). \] -``` + Insert this result into the first equation, rearrange a bit, and finally obtain: -``` -EQUATION -\[ ({\mathbf {\underline{\underline A}}} + {\mathbf {\underline{\underline B}}}) -({\mathbf {\underline{\underline A}}} - {\mathbf {\underline{\underline B}}}) -({\mathbf {\underline X}} - {\mathbf {\underline Y}}) -= E^2 ({\mathbf {\underline X}} - {\mathbf {\underline Y}}). \] -``` + This is an eigenvalue equation of the same dimension as the CIS eigenvalue equation (number of occupied orbitals times number of unoccupied orbitals), @@ -379,12 +210,12 @@ approach, for all four test cases below. ## Test Cases The input structures, integrals, etc. for these examples may be found in the -[input directory](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/input). +[input directory](./input). | Test Case | CIS | RPA (Method 1) | RPA (Method 2) | |-----------|-----|----------------|----------------| -| STO-3G Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/STO-3G/output_cis.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/STO-3G/output_rpa1.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/STO-3G/output_rpa2.txt) | -| DZ Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZ/output_cis.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZ/output_rpa1.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZ/output_rpa2.txt) | -| DZP Water | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZP/output_cis.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZP/output_rpa1.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/h2o/DZP/output_rpa2.txt) | -| STO-3G Methane | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/ch4/STO-3G/output_cis.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/ch4/STO-3G/output_rpa1.txt) | [output](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/output/ch4/STO-3G/output_rpa2.txt) | +| STO-3G Water | [output](./output/h2o/STO-3G/output_cis.txt) | [output](./output/h2o/STO-3G/output_rpa1.txt) | [output](./output/h2o/STO-3G/output_rpa2.txt) | +| DZ Water | [output](./output/h2o/DZ/output_cis.txt) | [output](./output/h2o/DZ/output_rpa1.txt) | [output](./output/h2o/DZ/output_rpa2.txt) | +| DZP Water | [output](./output/h2o/DZP/output_cis.txt) | [output](./output/h2o/DZP/output_rpa1.txt) | [output](./output/h2o/DZP/output_rpa2.txt) | +| STO-3G Methane | [output](./output/ch4/STO-3G/output_cis.txt) | [output](./output/ch4/STO-3G/output_rpa1.txt) | [output](./output/ch4/STO-3G/output_rpa2.txt) | diff --git a/Project#12/figures/A-matrix.png b/Project#12/figures/A-matrix.png new file mode 100644 index 0000000..12867fa Binary files /dev/null and b/Project#12/figures/A-matrix.png differ diff --git a/Project#12/figures/B-matrix.png b/Project#12/figures/B-matrix.png new file mode 100644 index 0000000..9201e19 Binary files /dev/null and b/Project#12/figures/B-matrix.png differ diff --git a/Project#12/figures/excited-det-schrod-eqn.png b/Project#12/figures/excited-det-schrod-eqn.png new file mode 100644 index 0000000..3549206 Binary files /dev/null and b/Project#12/figures/excited-det-schrod-eqn.png differ diff --git a/Project#12/figures/four-possible-determinants.png b/Project#12/figures/four-possible-determinants.png new file mode 100644 index 0000000..aa4e9a6 Binary files /dev/null and b/Project#12/figures/four-possible-determinants.png differ diff --git a/Project#12/figures/guess-vector-hamiltonian.png b/Project#12/figures/guess-vector-hamiltonian.png new file mode 100644 index 0000000..acc08d2 Binary files /dev/null and b/Project#12/figures/guess-vector-hamiltonian.png differ diff --git a/Project#12/figures/identical-ci-coeff.png b/Project#12/figures/identical-ci-coeff.png new file mode 100644 index 0000000..709e5d7 Binary files /dev/null and b/Project#12/figures/identical-ci-coeff.png differ diff --git a/Project#12/figures/inverse-ci-coeff.png b/Project#12/figures/inverse-ci-coeff.png new file mode 100644 index 0000000..b661cac Binary files /dev/null and b/Project#12/figures/inverse-ci-coeff.png differ diff --git a/Project#12/figures/matrix-eigenvalue-problem.png b/Project#12/figures/matrix-eigenvalue-problem.png new file mode 100644 index 0000000..ce945d0 Binary files /dev/null and b/Project#12/figures/matrix-eigenvalue-problem.png differ diff --git a/Project#12/figures/matrix-elements.png b/Project#12/figures/matrix-elements.png new file mode 100644 index 0000000..704a04e Binary files /dev/null and b/Project#12/figures/matrix-elements.png differ diff --git a/Project#12/figures/simpler-hamiltonian.png b/Project#12/figures/simpler-hamiltonian.png new file mode 100644 index 0000000..f368415 Binary files /dev/null and b/Project#12/figures/simpler-hamiltonian.png differ diff --git a/Project#12/figures/singlet-combinations.png b/Project#12/figures/singlet-combinations.png new file mode 100644 index 0000000..103ec87 Binary files /dev/null and b/Project#12/figures/singlet-combinations.png differ diff --git a/Project#12/figures/singlet-triplet-combinations.png b/Project#12/figures/singlet-triplet-combinations.png new file mode 100644 index 0000000..07c78a9 Binary files /dev/null and b/Project#12/figures/singlet-triplet-combinations.png differ diff --git a/Project#12/figures/singly-excited-determinant.png b/Project#12/figures/singly-excited-determinant.png new file mode 100644 index 0000000..e09503a Binary files /dev/null and b/Project#12/figures/singly-excited-determinant.png differ diff --git a/Project#12/figures/smarter-tdhf-1.png b/Project#12/figures/smarter-tdhf-1.png new file mode 100644 index 0000000..7be0f60 Binary files /dev/null and b/Project#12/figures/smarter-tdhf-1.png differ diff --git a/Project#12/figures/smarter-tdhf-2.png b/Project#12/figures/smarter-tdhf-2.png new file mode 100644 index 0000000..104bd2d Binary files /dev/null and b/Project#12/figures/smarter-tdhf-2.png differ diff --git a/Project#12/figures/smarter-tdhf-3.png b/Project#12/figures/smarter-tdhf-3.png new file mode 100644 index 0000000..87d60d3 Binary files /dev/null and b/Project#12/figures/smarter-tdhf-3.png differ diff --git a/Project#12/figures/smarter-tdhf-4.png b/Project#12/figures/smarter-tdhf-4.png new file mode 100644 index 0000000..70c4d7d Binary files /dev/null and b/Project#12/figures/smarter-tdhf-4.png differ diff --git a/Project#12/figures/smarter-tdhf-5.png b/Project#12/figures/smarter-tdhf-5.png new file mode 100644 index 0000000..e3bbf51 Binary files /dev/null and b/Project#12/figures/smarter-tdhf-5.png differ diff --git a/Project#12/figures/smarter-tdhf-6.png b/Project#12/figures/smarter-tdhf-6.png new file mode 100644 index 0000000..55b221a Binary files /dev/null and b/Project#12/figures/smarter-tdhf-6.png differ diff --git a/Project#12/figures/spatial-orbital-expression.png b/Project#12/figures/spatial-orbital-expression.png new file mode 100644 index 0000000..f6576a2 Binary files /dev/null and b/Project#12/figures/spatial-orbital-expression.png differ diff --git a/Project#12/figures/spin-factored-eqn.png b/Project#12/figures/spin-factored-eqn.png new file mode 100644 index 0000000..f0167ff Binary files /dev/null and b/Project#12/figures/spin-factored-eqn.png differ diff --git a/Project#12/figures/tdhf-eqn.png b/Project#12/figures/tdhf-eqn.png new file mode 100644 index 0000000..318b921 Binary files /dev/null and b/Project#12/figures/tdhf-eqn.png differ diff --git a/Project#12/figures/triplet-combinations.png b/Project#12/figures/triplet-combinations.png new file mode 100644 index 0000000..e533875 Binary files /dev/null and b/Project#12/figures/triplet-combinations.png differ diff --git a/Project#12/hints/hint1.md b/Project#12/hints/hint1.md new file mode 100644 index 0000000..a05b2d7 --- /dev/null +++ b/Project#12/hints/hint1.md @@ -0,0 +1,174 @@ +Here is the CIS matrix for the same H2O STO-3G test case we've been using throughout these projects. Note that the row/column ordering follows *i* and *a* combinations with *a* as the faster-running index (i.e., *a* indexes the inner loop). Thus the first row/column corresponds to *i=0* and *a=0* and the second row/column to *i=0* and *a=1*. Notice that the matrix is diagonally dominant --- that is, the largest element on any row/column combination is the diagonal entry --- and that all the diagonal elements are positive. +``` + 1 2 3 4 5 6 7 8 9 10 + + 1 19.9847006 0.0000000 0.0000000 0.0000000 0.0000000 0.0261967 0.0000000 -0.0000000 0.0172405 0.0000000 + 2 0.0000000 19.9585039 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0074145 + 3 0.0000000 0.0000000 20.0308559 0.0000000 0.0000000 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 20.0113341 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 5 0.0000000 0.0000000 0.0000000 0.0000000 19.9585039 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0261967 0.0000000 -0.0000000 0.0000000 0.0000000 19.9847006 0.0000000 0.0000000 0.0098259 0.0000000 + 7 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 20.0113341 0.0000000 0.0000000 0.0000000 + 8 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 0.0000000 0.0000000 20.0308559 0.0000000 0.0000000 + 9 0.0172405 0.0000000 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 1.1883321 0.0000000 + 10 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.0931793 + 11 0.0000000 0.0000000 0.0280239 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 + 12 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 14 0.0098259 0.0000000 0.0000000 0.0000000 0.0000000 0.0172405 0.0000000 0.0000000 0.0951527 0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 + 16 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0280239 -0.0000000 0.0000000 + 17 -0.0000000 0.0000000 -0.0046225 0.0000000 0.0000000 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 + 18 0.0000000 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 19 -0.0134310 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0057699 0.0000000 0.0000000 -0.0178319 0.0000000 + 20 0.0000000 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0867137 + 21 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 + 22 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0046225 0.0000000 0.0000000 + 23 0.0000000 0.0000000 0.0000000 0.0000000 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 24 -0.0057699 0.0000000 0.0000000 0.0000000 0.0000000 -0.0134310 0.0000000 -0.0000000 0.0688817 0.0000000 + 25 0.0197793 0.0000000 -0.0000000 0.0000000 0.0000000 0.0017709 0.0000000 0.0000000 -0.0117148 0.0000000 + 26 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 + 27 0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 + 28 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 29 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 30 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0197793 0.0000000 -0.0000000 -0.0602520 0.0000000 + 31 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 0.0000000 + 32 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 + 33 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 34 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 + + 11 12 13 14 15 16 17 18 19 20 + + 1 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0134310 0.0000000 + 2 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0076611 + 3 0.0280239 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 -0.0046225 0.0000000 -0.0000000 0.0000000 + 4 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0076611 0.0000000 -0.0000000 + 5 0.0000000 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 0.0000000 0.0172405 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0057699 0.0000000 + 7 0.0000000 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 8 0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0280239 0.0030386 0.0000000 0.0000000 0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0951527 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0178319 0.0000000 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0867137 + 11 1.2566569 0.0000000 0.0000000 -0.0000000 0.0000000 0.0678165 -0.0564572 0.0000000 0.0000000 0.0000000 + 12 0.0000000 1.1888405 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 + 13 0.0000000 0.0000000 1.0931793 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 14 -0.0000000 0.0000000 0.0000000 1.1883321 0.0000000 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 1.1888405 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0678165 0.0000000 0.0000000 0.0000000 0.0000000 1.2566569 0.0302565 0.0000000 -0.0000000 0.0000000 + 17 -0.0564572 0.0000000 0.0000000 0.0000000 0.0000000 0.0302565 0.5507646 0.0000000 0.0000000 0.0000000 + 18 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.4757743 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 -0.0000000 0.0000000 0.0000000 0.7122157 0.0000000 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.5527668 + 21 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 -0.0564572 0.0749902 0.0000000 0.0000000 0.0000000 + 23 0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 24 -0.0000000 0.0000000 0.0000000 -0.0178319 0.0000000 0.0000000 0.0000000 0.0000000 0.1594489 0.0000000 + 25 0.0000000 0.0000000 0.0000000 -0.0602520 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0383679 0.0000000 + 26 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 + 27 -0.0011401 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0073884 0.0000000 -0.0000000 0.0000000 + 28 0.0000000 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 -0.0000000 + 29 0.0000000 0.0000000 0.0485372 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 -0.0117148 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0998933 0.0000000 + 31 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 32 0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 -0.0011401 -0.0541371 0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + + 21 22 23 24 25 26 27 28 29 30 + + 1 0.0000000 -0.0000000 0.0000000 -0.0057699 0.0197793 0.0000000 0.0000000 0.0000000 0.0000000 0.0017709 + 2 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 + 5 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 + 6 0.0000000 -0.0000000 0.0000000 -0.0134310 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0197793 + 7 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 8 0.0000000 -0.0046225 0.0000000 -0.0000000 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 -0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0688817 -0.0117148 0.0000000 0.0000000 0.0000000 0.0000000 -0.0602520 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 0.0000000 -0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0302565 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0011401 0.0000000 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0183287 0.0000000 0.0000000 + 13 -0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 0.0000000 + 14 0.0000000 0.0000000 0.0000000 -0.0178319 -0.0602520 0.0000000 0.0000000 0.0000000 0.0000000 -0.0117148 + 15 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 16 0.0000000 -0.0564572 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 + 17 0.0000000 0.0749902 0.0000000 0.0000000 -0.0000000 0.0000000 0.0073884 0.0000000 0.0000000 -0.0000000 + 18 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.1594489 -0.0383679 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0998933 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 -0.0000000 0.0000000 0.0000000 + 21 0.4757743 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0000000 0.5507646 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0541371 0.0000000 0.0000000 -0.0000000 + 23 0.0000000 0.0000000 0.5527668 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 + 24 0.0000000 0.0000000 0.0000000 0.7122157 -0.0998933 0.0000000 0.0000000 0.0000000 0.0000000 -0.0383679 + 25 0.0000000 -0.0000000 0.0000000 -0.0998933 0.4658980 0.0000000 0.0000000 0.0000000 0.0000000 0.0955699 + 26 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3703281 0.0000000 -0.0000000 0.0000000 0.0000000 + 27 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 0.0000000 0.5152458 0.0000000 0.0000000 0.0000000 + 28 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.4442931 0.0000000 0.0000000 + 29 0.0000000 0.0000000 0.0615255 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3703281 0.0000000 + 30 0.0000000 -0.0000000 0.0000000 -0.0383679 0.0955699 0.0000000 0.0000000 0.0000000 0.0000000 0.4658980 + 31 0.0615255 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 32 0.0000000 0.0073884 0.0000000 -0.0000000 0.0000000 0.0000000 0.0709527 0.0000000 0.0000000 0.0000000 + 33 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 35 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 37 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 39 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + + 31 32 33 34 35 36 37 38 39 40 + + 1 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 2 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0112477 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 5 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 7 0.0037402 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 8 0.0000000 0.0149879 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 13 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 14 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 15 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0000000 -0.0011401 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 17 0.0000000 -0.0541371 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 18 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 19 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 21 0.0615255 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0000000 0.0073884 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 23 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 24 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 25 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 26 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 27 0.0000000 0.0709527 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 28 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 29 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 31 0.4442931 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 32 0.0000000 0.5152458 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.3218586 0.0000000 0.0000000 0.0000000 0.0000000 0.0346031 0.0000000 -0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.2872555 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 0.0000000 0.3910304 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3659890 0.0000000 0.0000000 0.0000000 0.0000000 + 37 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.2872555 0.0000000 0.0000000 0.0000000 + 38 0.0000000 -0.0000000 0.0346031 0.0000000 -0.0000000 0.0000000 0.0000000 0.3218586 0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3659890 0.0000000 + 40 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 0.0000000 0.0000000 0.0000000 0.0000000 0.3910304 +``` diff --git a/Project#12/hints/hint2.md b/Project#12/hints/hint2.md new file mode 100644 index 0000000..f14b3fc --- /dev/null +++ b/Project#12/hints/hint2.md @@ -0,0 +1,15 @@ +Here is the CIS spin-adapted singlet matrix for the H2O STO-3G test case. Note that the row/column ordering follows *i* and *a* combinations with *a* as the faster-running index (i.e., *a* indexes the inner loop). Thus the first row/column corresponds to *i=0* and *a=0* and the second row/column to *i=0* and *a=1*. Notice that the matrix is diagonally dominant --- that is, the largest element on any row/column combination is the diagonal entry --- and that all the diagonal elements are positive. +``` + 1 2 3 4 5 6 7 8 9 10 + + 1 19.9585039 0.0000000 0.0074145 -0.0000000 -0.0000000 -0.0076611 0.0180084 -0.0000000 -0.0000000 0.0000000 + 2 0.0000000 20.0113341 -0.0000000 0.0089205 -0.0076611 -0.0000000 -0.0000000 0.0037402 0.0000000 -0.0000000 + 3 0.0074145 -0.0000000 1.0931793 0.0000000 -0.0000000 -0.0867137 0.0485372 -0.0000000 0.0000000 0.0000000 + 4 -0.0000000 0.0089205 0.0000000 1.1888405 -0.0867137 0.0000000 -0.0000000 -0.0183287 0.0000000 0.0000000 + 5 -0.0000000 -0.0076611 -0.0000000 -0.0867137 0.4757743 0.0000000 0.0000000 0.0615255 -0.0000000 0.0000000 + 6 -0.0076611 -0.0000000 -0.0867137 0.0000000 0.0000000 0.5527668 0.0615255 -0.0000000 0.0000000 -0.0000000 + 7 0.0180084 -0.0000000 0.0485372 -0.0000000 0.0000000 0.0615255 0.3703281 -0.0000000 0.0000000 -0.0000000 + 8 -0.0000000 0.0037402 -0.0000000 -0.0183287 0.0615255 -0.0000000 -0.0000000 0.4442931 -0.0000000 0.0000000 + 9 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.2872555 0.0000000 + 10 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 0.3659890 +``` diff --git a/Project#12/hints/hint3.md b/Project#12/hints/hint3.md new file mode 100644 index 0000000..13b0e43 --- /dev/null +++ b/Project#12/hints/hint3.md @@ -0,0 +1,666 @@ +Here is the TDHF/RPA version of the H2O STO-3G Hamitlonian. The row/column ordering is the same as for CIS above, but there two blocks of *i/a* pairs, one for each of the ***A*** and ***B*** submatrices. This matrix is also diagonally dominant, but not all the diagonal elements are positive. +``` + 1 2 3 4 5 6 7 8 9 10 + + 1 19.9847006 0.0000000 0.0000000 0.0000000 0.0000000 0.0261967 0.0000000 -0.0000000 0.0172405 0.0000000 + 2 0.0000000 19.9585039 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0074145 + 3 0.0000000 0.0000000 20.0308559 0.0000000 0.0000000 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 20.0113341 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 5 0.0000000 0.0000000 0.0000000 0.0000000 19.9585039 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0261967 0.0000000 -0.0000000 0.0000000 0.0000000 19.9847006 0.0000000 0.0000000 0.0098259 0.0000000 + 7 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 20.0113341 0.0000000 0.0000000 0.0000000 + 8 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 0.0000000 0.0000000 20.0308559 0.0000000 0.0000000 + 9 0.0172405 0.0000000 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 1.1883321 0.0000000 + 10 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 1.0931793 + 11 0.0000000 0.0000000 0.0280239 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 + 12 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 14 0.0098259 0.0000000 0.0000000 0.0000000 0.0000000 0.0172405 0.0000000 0.0000000 0.0951527 0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 + 16 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0280239 -0.0000000 0.0000000 + 17 -0.0000000 0.0000000 -0.0046225 0.0000000 0.0000000 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 + 18 0.0000000 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 19 -0.0134310 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0057699 0.0000000 0.0000000 -0.0178319 0.0000000 + 20 0.0000000 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0867137 + 21 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 + 22 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0046225 0.0000000 0.0000000 + 23 0.0000000 0.0000000 0.0000000 0.0000000 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 24 -0.0057699 0.0000000 0.0000000 0.0000000 0.0000000 -0.0134310 0.0000000 -0.0000000 0.0688817 0.0000000 + 25 0.0197793 0.0000000 -0.0000000 0.0000000 0.0000000 0.0017709 0.0000000 0.0000000 -0.0117148 0.0000000 + 26 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 + 27 0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 + 28 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 29 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 30 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0197793 0.0000000 -0.0000000 -0.0602520 0.0000000 + 31 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 0.0000000 + 32 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 + 33 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 34 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 + 41 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0261967 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 42 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0261967 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 43 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0195218 -0.0000000 -0.0000000 + 44 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0195218 -0.0000000 -0.0000000 -0.0000000 + 45 -0.0000000 0.0261967 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0098259 + 46 -0.0261967 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0098259 -0.0000000 + 47 -0.0000000 -0.0000000 -0.0000000 0.0195218 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 48 0.0000000 -0.0000000 -0.0195218 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0098259 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 50 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0098259 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 51 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0191033 -0.0000000 -0.0000000 + 52 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0191033 -0.0000000 -0.0000000 -0.0000000 + 53 -0.0000000 0.0098259 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0951527 + 54 -0.0098259 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0951527 -0.0000000 + 55 -0.0000000 0.0000000 -0.0000000 0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 56 -0.0000000 -0.0000000 -0.0191033 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 57 -0.0000000 -0.0000000 -0.0088085 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0030386 -0.0000000 -0.0000000 + 58 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0057699 -0.0000000 -0.0000000 -0.0000000 + 59 0.0088085 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0057699 -0.0000000 -0.0000000 -0.0386252 -0.0000000 + 60 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 61 -0.0000000 -0.0000000 -0.0000000 -0.0057699 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 62 0.0000000 -0.0000000 -0.0030386 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0088085 -0.0000000 -0.0000000 + 63 0.0000000 0.0030386 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0302565 + 64 0.0057699 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0088085 -0.0000000 -0.0000000 -0.0688817 -0.0000000 + 65 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0017709 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 66 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0017709 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 67 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0112477 0.0000000 -0.0000000 + 68 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0112477 -0.0000000 -0.0000000 -0.0000000 + 69 -0.0000000 0.0017709 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0602520 + 70 -0.0017709 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0602520 -0.0000000 + 71 -0.0000000 0.0000000 -0.0000000 0.0112477 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 72 -0.0000000 -0.0000000 -0.0112477 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 74 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 77 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 78 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + + 11 12 13 14 15 16 17 18 19 20 + + 1 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0134310 0.0000000 + 2 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0076611 + 3 0.0280239 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 -0.0046225 0.0000000 -0.0000000 0.0000000 + 4 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0076611 0.0000000 -0.0000000 + 5 0.0000000 0.0000000 0.0074145 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 0.0000000 0.0172405 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0057699 0.0000000 + 7 0.0000000 0.0000000 -0.0000000 0.0000000 0.0089205 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 8 0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0280239 0.0030386 0.0000000 0.0000000 0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0951527 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0178319 0.0000000 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0867137 + 11 1.2566569 0.0000000 0.0000000 -0.0000000 0.0000000 0.0678165 -0.0564572 0.0000000 0.0000000 0.0000000 + 12 0.0000000 1.1888405 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 + 13 0.0000000 0.0000000 1.0931793 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 14 -0.0000000 0.0000000 0.0000000 1.1883321 0.0000000 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 1.1888405 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0678165 0.0000000 0.0000000 0.0000000 0.0000000 1.2566569 0.0302565 0.0000000 -0.0000000 0.0000000 + 17 -0.0564572 0.0000000 0.0000000 0.0000000 0.0000000 0.0302565 0.5507646 0.0000000 0.0000000 0.0000000 + 18 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.4757743 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 -0.0000000 0.0000000 0.0000000 0.7122157 0.0000000 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.5527668 + 21 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 -0.0564572 0.0749902 0.0000000 0.0000000 0.0000000 + 23 0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 24 -0.0000000 0.0000000 0.0000000 -0.0178319 0.0000000 0.0000000 0.0000000 0.0000000 0.1594489 0.0000000 + 25 0.0000000 0.0000000 0.0000000 -0.0602520 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0383679 0.0000000 + 26 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 + 27 -0.0011401 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0073884 0.0000000 -0.0000000 0.0000000 + 28 0.0000000 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 -0.0000000 + 29 0.0000000 0.0000000 0.0485372 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 -0.0117148 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0998933 0.0000000 + 31 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 32 0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 -0.0011401 -0.0541371 0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 41 0.0000000 -0.0000000 -0.0000000 -0.0098259 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0088085 0.0000000 + 42 -0.0000000 -0.0000000 0.0098259 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 43 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0191033 -0.0088085 -0.0000000 -0.0000000 -0.0000000 + 44 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 45 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0030386 + 46 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0057699 0.0000000 + 47 -0.0000000 0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0057699 -0.0000000 0.0000000 + 48 -0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0030386 -0.0000000 -0.0000000 -0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0951527 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0386252 -0.0000000 + 50 -0.0000000 -0.0000000 0.0951527 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 51 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0678165 0.0386252 -0.0000000 -0.0000000 -0.0000000 + 52 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0678165 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 53 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0302565 + 54 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0688817 -0.0000000 + 55 -0.0000000 0.0678165 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0688817 -0.0000000 -0.0000000 + 56 -0.0678165 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0302565 -0.0000000 0.0000000 -0.0000000 + 57 0.0386252 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0302565 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 58 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0688817 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 -0.0000000 -0.0688817 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 60 -0.0000000 -0.0000000 0.0302565 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 61 -0.0000000 0.0688817 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0749902 -0.0000000 0.0000000 + 62 -0.0302565 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0386252 -0.0749902 -0.0000000 -0.0000000 -0.0000000 + 63 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.1594489 + 64 0.0000000 -0.0000000 -0.0000000 -0.0386252 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.1594489 -0.0000000 + 65 -0.0000000 -0.0000000 -0.0000000 0.0602520 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0457562 -0.0000000 + 66 -0.0000000 -0.0000000 -0.0602520 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 67 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0171886 -0.0457562 -0.0000000 -0.0000000 -0.0000000 + 68 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 69 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0541371 + 70 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0998933 -0.0000000 + 71 -0.0000000 0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0998933 -0.0000000 0.0000000 + 72 -0.0171886 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0541371 -0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 74 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 77 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 78 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 79 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + + 21 22 23 24 25 26 27 28 29 30 + + 1 0.0000000 -0.0000000 0.0000000 -0.0057699 0.0197793 0.0000000 0.0000000 0.0000000 0.0000000 0.0017709 + 2 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 -0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 0.0000000 0.0149879 0.0000000 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0037402 0.0000000 0.0000000 + 5 -0.0000000 0.0000000 -0.0076611 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0180084 0.0000000 + 6 0.0000000 -0.0000000 0.0000000 -0.0134310 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0197793 + 7 -0.0076611 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 8 0.0000000 -0.0046225 0.0000000 -0.0000000 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 -0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0688817 -0.0117148 0.0000000 0.0000000 0.0000000 0.0000000 -0.0602520 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 0.0000000 -0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0302565 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0011401 0.0000000 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0183287 0.0000000 0.0000000 + 13 -0.0000000 0.0000000 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0485372 0.0000000 + 14 0.0000000 0.0000000 0.0000000 -0.0178319 -0.0602520 0.0000000 0.0000000 0.0000000 0.0000000 -0.0117148 + 15 -0.0867137 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 16 0.0000000 -0.0564572 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 + 17 0.0000000 0.0749902 0.0000000 0.0000000 -0.0000000 0.0000000 0.0073884 0.0000000 0.0000000 -0.0000000 + 18 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.1594489 -0.0383679 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0998933 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 -0.0000000 0.0000000 0.0000000 + 21 0.4757743 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0000000 0.5507646 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0541371 0.0000000 0.0000000 -0.0000000 + 23 0.0000000 0.0000000 0.5527668 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0615255 0.0000000 + 24 0.0000000 0.0000000 0.0000000 0.7122157 -0.0998933 0.0000000 0.0000000 0.0000000 0.0000000 -0.0383679 + 25 0.0000000 -0.0000000 0.0000000 -0.0998933 0.4658980 0.0000000 0.0000000 0.0000000 0.0000000 0.0955699 + 26 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3703281 0.0000000 -0.0000000 0.0000000 0.0000000 + 27 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 0.0000000 0.5152458 0.0000000 0.0000000 0.0000000 + 28 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.4442931 0.0000000 0.0000000 + 29 0.0000000 0.0000000 0.0615255 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3703281 0.0000000 + 30 0.0000000 -0.0000000 0.0000000 -0.0383679 0.0955699 0.0000000 0.0000000 0.0000000 0.0000000 0.4658980 + 31 0.0615255 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 32 0.0000000 0.0073884 0.0000000 -0.0000000 0.0000000 0.0000000 0.0709527 0.0000000 0.0000000 0.0000000 + 33 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 35 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 37 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 39 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 41 -0.0000000 0.0000000 0.0000000 0.0057699 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0017709 + 42 -0.0000000 -0.0000000 0.0030386 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0017709 -0.0000000 + 43 -0.0000000 -0.0030386 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 44 -0.0057699 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 45 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0017709 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 46 -0.0000000 -0.0000000 0.0000000 0.0088085 -0.0017709 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 47 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0112477 -0.0000000 -0.0000000 + 48 -0.0000000 -0.0088085 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0112477 -0.0000000 -0.0000000 0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0688817 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0602520 + 50 0.0000000 -0.0000000 0.0302565 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0602520 -0.0000000 + 51 -0.0000000 -0.0302565 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 52 0.0688817 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 53 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0602520 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 54 -0.0000000 -0.0000000 -0.0000000 -0.0386252 0.0602520 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 55 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0171886 -0.0000000 -0.0000000 + 56 -0.0000000 0.0386252 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0171886 -0.0000000 -0.0000000 -0.0000000 + 57 -0.0000000 -0.0749902 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0457562 -0.0000000 -0.0000000 0.0000000 + 58 0.0749902 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 -0.0000000 -0.1594489 0.0457562 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0998933 + 60 0.0000000 -0.0000000 0.1594489 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0541371 -0.0000000 + 61 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0998933 -0.0000000 -0.0000000 + 62 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0541371 -0.0000000 -0.0000000 -0.0000000 + 63 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0541371 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 64 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0998933 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0457562 + 65 -0.0000000 0.0000000 -0.0000000 0.0998933 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0955699 + 66 -0.0000000 -0.0000000 -0.0541371 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0955699 -0.0000000 + 67 -0.0000000 0.0541371 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 68 -0.0998933 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 69 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0955699 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 70 -0.0000000 -0.0000000 -0.0000000 0.0457562 -0.0955699 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 71 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0709527 -0.0000000 -0.0000000 + 72 -0.0000000 -0.0457562 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0709527 -0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 74 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 75 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 77 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 78 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + + 31 32 33 34 35 36 37 38 39 40 + + 1 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 2 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0112477 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 5 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 7 0.0037402 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 8 0.0000000 0.0149879 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 10 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 13 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 14 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 15 -0.0183287 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0000000 -0.0011401 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 17 0.0000000 -0.0541371 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 18 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 19 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 20 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 21 0.0615255 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0000000 0.0073884 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 23 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 24 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 25 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 26 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 27 0.0000000 0.0709527 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 28 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 29 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 31 0.4442931 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 32 0.0000000 0.5152458 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.3218586 0.0000000 0.0000000 0.0000000 0.0000000 0.0346031 0.0000000 -0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.2872555 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 0.0000000 0.3910304 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3659890 0.0000000 0.0000000 0.0000000 0.0000000 + 37 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.2872555 0.0000000 0.0000000 0.0000000 + 38 0.0000000 -0.0000000 0.0346031 0.0000000 -0.0000000 0.0000000 0.0000000 0.3218586 0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.3659890 0.0000000 + 40 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 0.0000000 0.0000000 0.0000000 0.0000000 0.3910304 + 41 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 42 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 43 -0.0000000 -0.0112477 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 44 0.0112477 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 45 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 46 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 47 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 48 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 50 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 51 -0.0000000 -0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 52 0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 53 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 54 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 55 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 56 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 57 -0.0000000 0.0541371 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 58 -0.0998933 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 60 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 61 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 62 -0.0000000 -0.0457562 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 63 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 64 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 65 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 66 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 67 -0.0000000 -0.0709527 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 68 0.0709527 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 69 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 70 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 71 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 72 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0346031 -0.0000000 0.0000000 + 74 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0346031 -0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0250414 + 76 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0250414 -0.0000000 + 77 -0.0000000 -0.0000000 -0.0000000 0.0346031 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 78 -0.0000000 0.0000000 -0.0346031 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0250414 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0250414 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + + 41 42 43 44 45 46 47 48 49 50 + + 1 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0261967 0.0000000 -0.0000000 0.0000000 0.0000000 + 2 0.0000000 0.0000000 0.0000000 0.0000000 -0.0261967 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 + 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0195218 0.0000000 0.0000000 0.0000000 + 5 0.0000000 -0.0261967 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0098259 + 6 0.0261967 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 + 7 0.0000000 0.0000000 0.0000000 -0.0195218 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 8 -0.0000000 0.0000000 0.0195218 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 0.0000000 0.0000000 + 10 0.0000000 0.0000000 0.0000000 0.0000000 -0.0098259 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 11 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0191033 0.0000000 0.0000000 0.0000000 + 13 0.0000000 -0.0098259 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0951527 + 14 0.0098259 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0951527 0.0000000 + 15 0.0000000 -0.0000000 0.0000000 -0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0000000 0.0000000 0.0191033 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 17 0.0000000 0.0000000 0.0088085 0.0000000 0.0000000 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 + 18 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0057699 0.0000000 0.0000000 0.0000000 + 19 -0.0088085 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0057699 0.0000000 0.0000000 0.0386252 0.0000000 + 20 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0030386 -0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 21 0.0000000 0.0000000 0.0000000 0.0057699 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 22 -0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 0.0000000 0.0000000 0.0088085 0.0000000 0.0000000 + 23 -0.0000000 -0.0030386 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0302565 + 24 -0.0057699 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0088085 0.0000000 0.0000000 0.0688817 0.0000000 + 25 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 + 26 0.0000000 0.0000000 0.0000000 0.0000000 -0.0017709 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 27 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0112477 -0.0000000 0.0000000 + 28 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0112477 0.0000000 0.0000000 0.0000000 + 29 0.0000000 -0.0017709 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0602520 + 30 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0602520 0.0000000 + 31 0.0000000 -0.0000000 0.0000000 -0.0112477 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 32 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 34 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 37 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 41 -19.9847006 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0261967 -0.0000000 0.0000000 -0.0172405 -0.0000000 + 42 -0.0000000 -19.9585039 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0074145 + 43 -0.0000000 -0.0000000 -20.0308559 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0195218 -0.0000000 -0.0000000 + 44 -0.0000000 -0.0000000 -0.0000000 -20.0113341 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 45 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -19.9585039 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 46 -0.0261967 -0.0000000 0.0000000 -0.0000000 -0.0000000 -19.9847006 -0.0000000 -0.0000000 -0.0098259 -0.0000000 + 47 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -20.0113341 -0.0000000 -0.0000000 -0.0000000 + 48 0.0000000 -0.0000000 -0.0195218 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -20.0308559 -0.0000000 -0.0000000 + 49 -0.0172405 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0098259 -0.0000000 -0.0000000 -1.1883321 -0.0000000 + 50 -0.0000000 -0.0074145 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -1.0931793 + 51 -0.0000000 -0.0000000 -0.0280239 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0191033 -0.0000000 -0.0000000 + 52 -0.0000000 0.0000000 -0.0000000 -0.0089205 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 53 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0074145 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 54 -0.0098259 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0172405 -0.0000000 -0.0000000 -0.0951527 -0.0000000 + 55 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0089205 -0.0000000 -0.0000000 -0.0000000 + 56 -0.0000000 -0.0000000 -0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0280239 0.0000000 -0.0000000 + 57 0.0000000 -0.0000000 0.0046225 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0030386 -0.0000000 -0.0000000 + 58 -0.0000000 0.0000000 -0.0000000 0.0076611 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 59 0.0134310 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0057699 -0.0000000 -0.0000000 0.0178319 -0.0000000 + 60 -0.0000000 0.0076611 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0867137 + 61 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0076611 -0.0000000 -0.0000000 -0.0000000 + 62 0.0000000 -0.0000000 -0.0030386 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0046225 -0.0000000 -0.0000000 + 63 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0076611 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 64 0.0057699 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0134310 -0.0000000 0.0000000 -0.0688817 -0.0000000 + 65 -0.0197793 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0017709 -0.0000000 -0.0000000 0.0117148 -0.0000000 + 66 -0.0000000 -0.0180084 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0485372 + 67 -0.0000000 -0.0000000 -0.0149879 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0112477 -0.0000000 -0.0000000 + 68 -0.0000000 0.0000000 -0.0000000 -0.0037402 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 69 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0180084 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 70 -0.0017709 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0197793 -0.0000000 0.0000000 0.0602520 -0.0000000 + 71 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0037402 -0.0000000 -0.0000000 -0.0000000 + 72 -0.0000000 -0.0000000 -0.0112477 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0149879 -0.0000000 -0.0000000 + 73 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 74 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 77 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 78 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 + + 51 52 53 54 55 56 57 58 59 60 + + 1 -0.0000000 0.0000000 0.0000000 0.0098259 0.0000000 0.0000000 0.0000000 0.0000000 -0.0088085 -0.0000000 + 2 0.0000000 0.0000000 -0.0098259 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 + 3 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0191033 0.0088085 0.0000000 0.0000000 0.0000000 + 4 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 5 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0030386 + 6 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0057699 -0.0000000 + 7 0.0000000 -0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0057699 0.0000000 -0.0000000 + 8 0.0191033 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0030386 0.0000000 0.0000000 0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0951527 0.0000000 -0.0000000 0.0000000 0.0000000 0.0386252 0.0000000 + 10 0.0000000 0.0000000 -0.0951527 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0678165 -0.0386252 0.0000000 0.0000000 0.0000000 + 12 0.0000000 0.0000000 0.0000000 0.0000000 -0.0678165 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0302565 + 14 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 + 15 0.0000000 -0.0678165 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0688817 0.0000000 0.0000000 + 16 0.0678165 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0302565 0.0000000 -0.0000000 0.0000000 + 17 -0.0386252 0.0000000 0.0000000 0.0000000 0.0000000 0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 + 18 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0688817 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 20 0.0000000 0.0000000 -0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 21 0.0000000 -0.0688817 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0749902 0.0000000 -0.0000000 + 22 0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 -0.0386252 0.0749902 0.0000000 0.0000000 0.0000000 + 23 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.1594489 + 24 -0.0000000 0.0000000 0.0000000 0.0386252 0.0000000 0.0000000 0.0000000 0.0000000 0.1594489 0.0000000 + 25 0.0000000 0.0000000 0.0000000 -0.0602520 0.0000000 0.0000000 0.0000000 0.0000000 -0.0457562 0.0000000 + 26 0.0000000 0.0000000 0.0602520 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 27 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0457562 0.0000000 0.0000000 0.0000000 + 28 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 29 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0541371 + 30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0998933 0.0000000 + 31 0.0000000 -0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0998933 0.0000000 -0.0000000 + 32 0.0171886 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 39 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 41 -0.0000000 -0.0000000 -0.0000000 -0.0098259 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0134310 -0.0000000 + 42 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0076611 + 43 -0.0280239 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0191033 0.0046225 -0.0000000 0.0000000 -0.0000000 + 44 -0.0000000 -0.0089205 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0076611 -0.0000000 0.0000000 + 45 -0.0000000 -0.0000000 -0.0074145 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 46 -0.0000000 -0.0000000 -0.0000000 -0.0172405 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0057699 -0.0000000 + 47 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0089205 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 48 -0.0191033 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0280239 -0.0030386 -0.0000000 -0.0000000 -0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0951527 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0178319 -0.0000000 + 50 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0867137 + 51 -1.2566569 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0678165 0.0564572 -0.0000000 -0.0000000 -0.0000000 + 52 -0.0000000 -1.1888405 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0867137 -0.0000000 -0.0000000 + 53 -0.0000000 -0.0000000 -1.0931793 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 54 0.0000000 -0.0000000 -0.0000000 -1.1883321 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0688817 -0.0000000 + 55 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -1.1888405 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 56 -0.0678165 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -1.2566569 -0.0302565 -0.0000000 0.0000000 -0.0000000 + 57 0.0564572 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0302565 -0.5507646 -0.0000000 -0.0000000 -0.0000000 + 58 -0.0000000 0.0867137 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.4757743 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 -0.0000000 -0.0688817 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.7122157 -0.0000000 + 60 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.5527668 + 61 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0867137 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 62 -0.0302565 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0564572 -0.0749902 -0.0000000 -0.0000000 -0.0000000 + 63 -0.0000000 -0.0000000 0.0867137 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 64 0.0000000 -0.0000000 -0.0000000 0.0178319 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.1594489 -0.0000000 + 65 -0.0000000 -0.0000000 -0.0000000 0.0602520 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0383679 -0.0000000 + 66 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0615255 + 67 0.0011401 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0171886 -0.0073884 -0.0000000 0.0000000 -0.0000000 + 68 -0.0000000 0.0183287 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0615255 -0.0000000 0.0000000 + 69 -0.0000000 -0.0000000 -0.0485372 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 70 -0.0000000 -0.0000000 -0.0000000 0.0117148 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0998933 -0.0000000 + 71 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0183287 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 72 -0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0011401 0.0541371 -0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 74 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 77 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 78 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + + 61 62 63 64 65 66 67 68 69 70 + + 1 0.0000000 -0.0000000 -0.0000000 -0.0057699 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0017709 + 2 0.0000000 0.0000000 -0.0030386 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0017709 0.0000000 + 3 0.0000000 0.0030386 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 4 0.0057699 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 5 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0017709 0.0000000 -0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 -0.0000000 -0.0088085 0.0017709 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 7 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0112477 0.0000000 0.0000000 + 8 0.0000000 0.0088085 0.0000000 0.0000000 0.0000000 0.0000000 0.0112477 0.0000000 0.0000000 -0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0688817 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0602520 + 10 -0.0000000 0.0000000 -0.0302565 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0602520 0.0000000 + 11 0.0000000 0.0302565 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 12 -0.0688817 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0602520 0.0000000 -0.0000000 0.0000000 0.0000000 + 14 0.0000000 0.0000000 0.0000000 0.0386252 -0.0602520 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0171886 0.0000000 0.0000000 + 16 0.0000000 -0.0386252 0.0000000 0.0000000 0.0000000 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 + 17 0.0000000 0.0749902 0.0000000 0.0000000 0.0000000 0.0000000 0.0457562 0.0000000 0.0000000 -0.0000000 + 18 -0.0749902 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 19 0.0000000 0.0000000 0.0000000 0.1594489 -0.0457562 0.0000000 0.0000000 0.0000000 0.0000000 -0.0998933 + 20 -0.0000000 0.0000000 -0.1594489 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0541371 0.0000000 + 21 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0998933 0.0000000 0.0000000 + 22 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 + 23 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0541371 0.0000000 -0.0000000 0.0000000 0.0000000 + 24 0.0000000 0.0000000 0.0000000 0.0000000 -0.0998933 0.0000000 0.0000000 0.0000000 0.0000000 -0.0457562 + 25 0.0000000 -0.0000000 0.0000000 -0.0998933 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0955699 + 26 0.0000000 0.0000000 0.0541371 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0955699 0.0000000 + 27 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 28 0.0998933 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 29 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0955699 0.0000000 -0.0000000 0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 -0.0457562 0.0955699 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0709527 0.0000000 0.0000000 + 32 0.0000000 0.0457562 0.0000000 0.0000000 0.0000000 0.0000000 0.0709527 0.0000000 0.0000000 0.0000000 + 33 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 + 34 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 35 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 36 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 37 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 38 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 41 -0.0000000 0.0000000 -0.0000000 0.0057699 -0.0197793 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0017709 + 42 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0180084 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 43 -0.0000000 -0.0030386 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0149879 -0.0000000 -0.0000000 -0.0000000 + 44 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0037402 -0.0000000 -0.0000000 + 45 0.0000000 -0.0000000 0.0076611 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0180084 -0.0000000 + 46 -0.0000000 0.0000000 -0.0000000 0.0134310 -0.0017709 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0197793 + 47 0.0076611 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 48 -0.0000000 0.0046225 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0112477 -0.0000000 -0.0000000 0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0688817 0.0117148 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0602520 + 50 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0485372 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 51 -0.0000000 -0.0302565 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0011401 -0.0000000 -0.0000000 -0.0000000 + 52 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0183287 -0.0000000 -0.0000000 + 53 0.0000000 -0.0000000 0.0867137 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0485372 -0.0000000 + 54 -0.0000000 -0.0000000 -0.0000000 0.0178319 0.0602520 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0117148 + 55 0.0867137 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 56 -0.0000000 0.0564572 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0171886 -0.0000000 -0.0000000 -0.0000000 + 57 -0.0000000 -0.0749902 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0073884 -0.0000000 -0.0000000 0.0000000 + 58 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0615255 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 -0.0000000 -0.1594489 0.0383679 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0998933 + 60 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0615255 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 61 -0.4757743 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 62 -0.0000000 -0.5507646 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0541371 -0.0000000 -0.0000000 0.0000000 + 63 -0.0000000 -0.0000000 -0.5527668 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0615255 -0.0000000 + 64 -0.0000000 -0.0000000 -0.0000000 -0.7122157 0.0998933 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0383679 + 65 -0.0000000 0.0000000 -0.0000000 0.0998933 -0.4658980 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0955699 + 66 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3703281 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 67 -0.0000000 0.0541371 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.5152458 -0.0000000 -0.0000000 -0.0000000 + 68 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.4442931 -0.0000000 -0.0000000 + 69 -0.0000000 -0.0000000 -0.0615255 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3703281 -0.0000000 + 70 -0.0000000 0.0000000 -0.0000000 0.0383679 -0.0955699 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.4658980 + 71 -0.0615255 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 72 -0.0000000 -0.0073884 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0709527 -0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 74 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 77 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 78 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 80 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + + 71 72 73 74 75 76 77 78 79 80 + + 1 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 2 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 3 0.0000000 0.0112477 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 4 -0.0112477 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 5 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 6 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 7 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 8 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 0.0000000 + 9 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 10 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 11 0.0000000 0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 12 -0.0171886 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 + 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 14 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 + 15 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 16 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 17 0.0000000 -0.0541371 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 18 0.0998933 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 19 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 + 20 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 21 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 22 0.0000000 0.0457562 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 23 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 24 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 25 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 26 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 27 0.0000000 0.0709527 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 28 -0.0709527 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 29 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 31 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 32 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0000000 + 33 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0346031 0.0000000 -0.0000000 + 34 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0346031 0.0000000 0.0000000 0.0000000 + 35 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 + 36 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0250414 0.0000000 + 37 0.0000000 0.0000000 0.0000000 -0.0346031 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 38 0.0000000 -0.0000000 0.0346031 0.0000000 -0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 39 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.0250414 0.0000000 0.0000000 0.0000000 0.0000000 + 40 0.0000000 0.0000000 -0.0000000 0.0000000 0.0250414 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 + 41 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 42 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 43 -0.0000000 -0.0112477 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 44 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 45 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 46 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 47 -0.0037402 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 48 -0.0000000 -0.0149879 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 + 49 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 50 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 51 -0.0000000 -0.0171886 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 52 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 53 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 54 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 55 0.0183287 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 56 -0.0000000 0.0011401 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 57 -0.0000000 0.0541371 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 58 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 59 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 60 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 61 -0.0615255 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 62 -0.0000000 -0.0073884 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 63 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 64 -0.0000000 0.0000000 0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 0.0000000 + 65 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 66 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 67 -0.0000000 -0.0709527 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 68 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 69 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 + 70 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 71 -0.4442931 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.0000000 + 72 -0.0000000 -0.5152458 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0000000 + 73 -0.0000000 -0.0000000 -0.3218586 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0346031 -0.0000000 0.0000000 + 74 -0.0000000 -0.0000000 -0.0000000 -0.2872555 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 75 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3910304 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0250414 + 76 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3659890 -0.0000000 -0.0000000 -0.0000000 -0.0000000 + 77 0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.2872555 -0.0000000 -0.0000000 -0.0000000 + 78 -0.0000000 0.0000000 -0.0346031 -0.0000000 0.0000000 -0.0000000 -0.0000000 -0.3218586 -0.0000000 -0.0000000 + 79 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3659890 -0.0000000 + 80 -0.0000000 -0.0000000 0.0000000 -0.0000000 -0.0250414 -0.0000000 -0.0000000 -0.0000000 -0.0000000 -0.3910304 +``` diff --git a/Project#13/README.md b/Project#13/README.md index 1b5532e..27d1be7 100644 --- a/Project#13/README.md +++ b/Project#13/README.md @@ -9,7 +9,7 @@ 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](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312). +[CIS computation](../Project%2312). ## The Basic Algorithm @@ -29,26 +29,19 @@ from a well-chosen subspace of the full determinantal space. Compute a representation of the Hamiltonian within the space of guess vectors, -``` -EQUATION -G_{ij} \equiv \langle {\mathbf b}_i | H | {\mathbf b}_j \rangle = -\langle {\mathbf b}_i | H {\mathbf b}_j \rangle = \langle {\mathbf b}_i | {\mathbf \sigma}_j \rangle,\ \ 1\leq i,j \leq L -``` + + and then diagonalize this so-called "subspace Hamiltonian", -``` -EQUATION -{\mathbf G} \alpha^k = \lambda^k \alpha^k,\ \ k=1,2,\cdots,M -``` + + 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.* -``` -EQUATION -{\mathbf c}^k = \sum_i^L \alpha_i^k {\mathbf b}_i. -``` + + 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 @@ -62,16 +55,12 @@ elements must be computed "on the fly" during the computation of each Build a set of "correction vectors", -``` -EQUATION -\delta^k_I \equiv \left(\lambda^k - H_{II}\right)^{-1} r_I^k, \ \ I=1,2,\cdots,N -``` + + where the "residual" vectors are defined as -``` -EQUATION -{\mathbf r}^k \equiv \sum_{i=1}^L \alpha^k_i\left( {\mathbf H} - \lambda^k \right) {\mathbf b}_i, -``` + + 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 @@ -92,21 +81,17 @@ Return to step #2 and continue. ## CIS Sigma Equation We will focus on the spin-adapted singlet formulation of CIS, -for which the σ = H cequation was given in -[Project 12](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312): +for which the σ = H c equation was given in +[Project 12](../Project%2312): -``` -EQUATION -\sigma(m)_{ia} = \sum_{jb} H_{ia,jb} c_j^b(m) = \sum_{jb} \left[ f_{ab} \delta_{ij} - f_{ij} \delta_{ab} + 2 - \right] c_j^b(m). -``` + ## 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](https://github.com/CrawfordGroup/ProgrammingProjects/tree/master/Project%2312/hints/hint1.2) +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 @@ -120,13 +105,9 @@ 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: -``` -EQUATION -{\mathbf c}^k = \sum_i^L \alpha_i^k {\mathbf b}_i. -``` - + #### 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).[up](#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.[up](#r2) - - 3: C.D. Sherrill, "The Configuration Interaction Method: Advances in Highly Correlated Approaches," *Adv. Quantum Chem.* **34**, 143 (1998). [up](#r3) + - 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 new file mode 100644 index 0000000..09b91cf Binary files /dev/null and b/Project#13/figures/coefficients.png differ diff --git a/Project#13/figures/correction-vectors.png b/Project#13/figures/correction-vectors.png new file mode 100644 index 0000000..229b957 Binary files /dev/null and b/Project#13/figures/correction-vectors.png differ diff --git a/Project#13/figures/diag-subspace-hamiltonian.png b/Project#13/figures/diag-subspace-hamiltonian.png new file mode 100644 index 0000000..41fc305 Binary files /dev/null and b/Project#13/figures/diag-subspace-hamiltonian.png differ diff --git a/Project#13/figures/final-eigenvectors.png b/Project#13/figures/final-eigenvectors.png new file mode 100644 index 0000000..936621f Binary files /dev/null and b/Project#13/figures/final-eigenvectors.png differ diff --git a/Project#13/figures/guess-vector-hamiltonian.png b/Project#13/figures/guess-vector-hamiltonian.png new file mode 100644 index 0000000..a4add57 Binary files /dev/null and b/Project#13/figures/guess-vector-hamiltonian.png differ diff --git a/Project#13/figures/residual-vectors.png b/Project#13/figures/residual-vectors.png new file mode 100644 index 0000000..1438091 Binary files /dev/null and b/Project#13/figures/residual-vectors.png differ diff --git a/Project#13/figures/spin-adapted-cis-eqn.png b/Project#13/figures/spin-adapted-cis-eqn.png new file mode 100644 index 0000000..726668b Binary files /dev/null and b/Project#13/figures/spin-adapted-cis-eqn.png differ