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

Function getC

dscribe/ext/soapGeneral.cpp:1699–1724  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1697 return summed;
1698}
1699void 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
1702 memset(C, 0.0, 2*(lMax+1)*(lMax+1)*gnsize*sizeof(double));
1703
1704 for (int n = 0; n < gnsize; n++) {
1705 // For atoms at the center we add a precalculated constant value
1706 // because the numerical integration cannot handle them
1707 if (nCenters > 0) {
1708 double weight = weights[nNeighbours];
1709 for (int iCenter = 0; iCenter < nCenters; ++iCenter) {
1710 for (int rw = 0; rw < rsize; rw++) {
1711 C[2*(lMax+1)*(lMax+1)*n] += weight * 0.5*0.564189583547756*rw2[rw]*ws[rw]*gns[rsize*n + rw]*exp(-eta*rw2[rw]);
1712 }
1713 }
1714 }
1715 for (int l = 0; l < lMax+1; l++) {
1716 for (int m = 0; m < l+1; m++) {
1717 for (int rw = 0; rw < rsize; rw++) {
1718 C[2*(lMax+1)*(lMax+1)*n + l*2*(lMax+1) + 2*m ] += rw2[rw]*ws[rw]*gns[rsize*n + rw]*summed[2*(lMax+1)*l*rsize + 2*m*rsize + 2*rw ]; // Re
1719 C[2*(lMax+1)*(lMax+1)*n + l*2*(lMax+1) + 2*m + 1] += rw2[rw]*ws[rw]*gns[rsize*n + rw]*summed[2*(lMax+1)*l*rsize + 2*m*rsize + 2*rw + 1]; //Im
1720 }
1721 }
1722 }
1723 }
1724}
1725
1726void accumC(double* Cs, double* C, int lMax, int nMax, int typeI, int i, int nCoeffs)
1727{

Callers 1

soapGeneralFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected