Source code for svcco.implicit.kernel.kernel_functions.grad

import numpy as np
import numba as nb

[docs]@nb.jit(nopython=True,parallel=True,fastmath=True,nogil=True) def grad(x,H_0,n=0): n = H_0.shape[0]//3 #changing to test shape[0] should be the number of points n g = np.zeros(2*n) for i in nb.prange(n): for j in nb.prange(n): g[i*2] += (np.sin(x[i*2+1])*np.cos(x[i*2])*H_0[i+n,j]-np.sin(x[i*2])*H_0[i+2*n,j]+np.cos(x[i*2+1])*np.cos(x[i*2])*H_0[i,j])*\ (np.sin(x[j*2])*np.cos(x[j*2+1]))+\ (np.sin(x[i*2+1])*np.cos(x[i*2])*H_0[i+n,j+n]-np.sin(x[i*2])*H_0[i+2*n,j+n]+np.cos(x[i*2+1])*np.cos(x[i*2])*H_0[i,j+n])*\ (np.sin(x[j*2+1])*np.sin(x[j*2]))+\ (np.sin(x[i*2+1])*np.cos(x[i*2])*H_0[i+n,j+n*2]-np.sin(x[i*2])*H_0[i+2*n,j+n*2]+np.cos(x[i*2+1])*np.cos(x[i*2])*H_0[i,j+n*2])*\ (np.cos(x[j*2]))+\ (np.sin(x[j*2+1])*np.sin(x[j*2])*H_0[j+n,i]+np.sin(x[j*2])*np.cos(x[j*2+1])*H_0[j,i]+np.cos(x[j*2])*H_0[j+2*n,i])*\ (np.cos(x[i*2+1])*np.cos(x[i*2]))+\ (np.sin(x[j*2+1])*np.sin(x[j*2])*H_0[j+n,i+n]+np.sin(x[j*2])*np.cos(x[j*2+1])*H_0[j,i+n]+np.cos(x[j*2])*H_0[j+2*n,i+n])*\ (np.sin(x[i*2+1])*np.cos(x[i*2]))-\ (np.sin(x[j*2+1])*np.sin(x[j*2])*H_0[j+n,i+n*2]+np.sin(x[j*2])*np.cos(x[j*2+1])*H_0[j,i+n*2]+np.cos(x[j*2])*H_0[j+2*n,i+n*2])*\ (np.sin(x[i*2])) g[i*2+1] += (-np.sin(x[i*2+1])*np.sin(x[i*2])*H_0[i,j]+np.sin(x[i*2])*np.cos(x[i*2+1])*H_0[i+n,j])*(np.sin(x[j*2])*np.cos(x[j*2+1]))+\ (-np.sin(x[i*2+1])*np.sin(x[i*2])*H_0[i,j+n]+np.sin(x[i*2])*np.cos(x[i*2+1])*H_0[i+n,j+n])*(np.sin(x[j*2])*np.sin(x[j*2+1]))+\ (-np.sin(x[i*2+1])*np.sin(x[i*2])*H_0[i,j+n*2]+np.sin(x[i*2])*np.cos(x[i*2+1])*H_0[i+n,j+n*2])*(np.cos(x[j*2]))-\ (np.sin(x[j*2+1])*np.sin(x[j*2])*H_0[j+n,i]+np.sin(x[j*2])*np.cos(x[j*2+1])*H_0[j,i]+np.cos(x[j*2])*H_0[j+2*n,i])*\ (np.sin(x[i*2+1])*np.sin(x[i*2]))+\ (np.sin(x[j*2+1])*np.sin(x[j*2])*H_0[j+n,i+n]+np.sin(x[j*2])*np.cos(x[j*2+1])*H_0[j,i+n]+np.cos(x[j*2])*H_0[j+2*n,i+n])*\ (np.sin(x[i*2])*np.cos(x[i*2+1])) return g
#GENERALIZE HYPERSPHERE GRADIENT
[docs]@nb.jit(nopython=True,parallel=True,fastmath=True,nogil=True,cache=True,boundscheck=False) def nhs_grad(x,H_0): pass