| 1674 | return Ylmi; |
| 1675 | } |
| 1676 | double* getIntegrand(double* Flir, double* Ylmi, int rsize, int icount, int lMax, double* weights) |
| 1677 | { |
| 1678 | double* summed = (double*) malloc(2*sd*(lMax+1)*rsize*(lMax+1)); |
| 1679 | double realY; |
| 1680 | double imagY; |
| 1681 | |
| 1682 | // Initialize to zero |
| 1683 | memset(summed, 0.0, 2*(lMax+1)*rsize*(lMax+1)*sizeof(double)); |
| 1684 | |
| 1685 | for (int l = 0; l < lMax+1; l++) { |
| 1686 | for (int m = 0; m < l+1; m++) { |
| 1687 | for (int i = 0; i < icount; i++) { |
| 1688 | realY = Ylmi[2*(lMax+1)*icount*l + 2*icount*m + 2*i]; |
| 1689 | imagY = Ylmi[2*(lMax+1)*icount*l + 2*icount*m + 2*i + 1]; |
| 1690 | for (int rw = 0; rw < rsize; rw++) { |
| 1691 | summed[2*(lMax+1)*l*rsize + 2*m*rsize + 2*rw ] += weights[i]*Flir[l*rsize*icount + rsize*i + rw] * realY; |
| 1692 | summed[2*(lMax+1)*l*rsize + 2*m*rsize + 2*rw + 1] += weights[i]*Flir[l*rsize*icount + rsize*i + rw] * imagY; |
| 1693 | } |
| 1694 | } |
| 1695 | } |
| 1696 | } |
| 1697 | return summed; |
| 1698 | } |
| 1699 | void getC(double* C, double* ws, double* rw2, double * gns, double* summed, double rCut, int lMax, int rsize, int gnsize, int nCenters, int nNeighbours, double eta, double* weights) |
| 1700 | { |
| 1701 | // Initialize to zero |