MCPcopy Create free account
hub / github.com/SINGROUP/dscribe / getYlmi

Function getYlmi

dscribe/ext/soapGeneral.cpp:1639–1675  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1637 }
1638}
1639double* getYlmi(double* x, double* y, double* z, double* oOri, double* cf, int icount, int lMax)
1640{
1641 double* Ylmi = (double*) malloc(2*sd*(lMax+1)*(lMax+1)*icount);
1642 double* legPol = (double*) malloc(sd*(lMax+1)*(lMax+1)*icount);
1643 double* ChiCos= (double*) malloc(sd*(lMax+1)*icount);
1644 double* ChiSin= (double*) malloc(sd*(lMax+1)*icount);
1645 double myAtan2;
1646
1647 for (int i = 0; i < icount; i++) {
1648 for (int l = 0; l < lMax + 1; l++) {
1649 for (int m = 0; m < l+1; m++) {
1650 legPol[icount*(lMax+1)*l + icount*m + i] = legendre_poly(l,m,z[i]*oOri[i]);
1651 }
1652 }
1653 for (int m = 0; m < lMax+1; m++) {
1654 myAtan2 = m*atan2(y[i],x[i]);
1655 ChiCos[m*icount + i] = cos(myAtan2);
1656 ChiSin[m*icount + i] = sin(myAtan2);
1657 }
1658 }
1659
1660 for (int l = 0; l < lMax+1; l++) {
1661 for (int m = 0; m < l+1; m++) {
1662 for (int i = 0; i < icount; i++) {
1663 Ylmi[2*(lMax+1)*icount*l + 2*icount*m + 2*i]
1664 = factorY(l,m,cf)*legPol[icount*(lMax+1)*l + icount*m + i]*ChiCos[m*icount + i];
1665 Ylmi[2*(lMax+1)*icount*l + 2*icount*m + 2*i + 1]
1666 = factorY(l,m,cf)*legPol[icount*(lMax+1)*l + icount*m + i]*ChiSin[m*icount + i];
1667 }
1668 }
1669 }
1670 free(legPol);
1671 free(ChiCos);
1672 free(ChiSin);
1673
1674 return Ylmi;
1675}
1676double* 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));

Callers 1

soapGeneralFunction · 0.85

Calls 2

legendre_polyFunction · 0.85
factorYFunction · 0.85

Tested by

no test coverage detected