def cone_p_noll(N, j, XX, YY, ZZ): ''' Same as before, but input coordinates are not factorized ''' n, m = aotools.zernIndex(j) cj = cone_jacobi(N, n, ZZ) zz = zk.zernike_noll(j, XX, YY) return cj * zz
def cone_polynomial_noll(N, j, X, Y, t): ''' same as before, but Noll index instead of (n,m) ''' n, m = aotools.zernIndex(j) cj = cone_jacobi(N, n, t) zz = zk.zernike_noll(j, X, Y) return np.outer(cj, zz).flatten()
def compute_j_list(nmax, mmax_in): ''' Construct a list of Noll indices with n<=nmax, abs(m)<=mmax ''' l = [] mmax = np.min((mmax_in, nmax)) (n, m) = (0, 0) j = 1 while (n <= nmax): (n, m) = aotools.zernIndex(j) if (abs(m) <= mmax and n <= nmax): l.append(j) j += 1 return (l)
def compute_j_N_list(nmax, mmax): ''' Computes the list of quantum numbers N,n,m such that abs(m)<=min(n,mmax) 0<=n<=N<=nmax ''' ll = [] for n in range(nmax + 1): jlistn = zk.compute_j_list_n(n, mmax) # For each element of jlistn corresponding to a different m, we have # nmax+1-n cone jacobi terms for j in jlistn: n, m = aotools.zernIndex(j) for N in range(n, nmax + 1): ll.append((j, N)) return ll
def zernike_noll(j, X, Y): (n, m) = aotools.zernIndex(j) return zernike_nm(n, m, X, Y)
for ilayer in range(nLayers): plt.plot(windSpeedFunction[ilayer]) plt.plot(windDirectionFunction[ilayer]) plt.plot(r0Function[ilayer]) plt.draw() raw_input() # telescope zerns = aotools.zernikeArray(nZerns,npix) pupil = zerns[0] subapertureMap = aotools.pupil.circle(nsubx/2,nsubx) subapertureMap -= aotools.pupil.circle(2,nsubx) # magic WFS magicSlopes=MagicSHslopes(npix,nsubx,pupil,subapertureMap) gammas = aotools.makegammas(aotools.zernIndex(nZerns)[0]) subGrads = zernikeSubapSlopes(zerns,gammas[0][:nZerns,:nZerns],gammas[1][:nZerns,:nZerns],nsubx) z=subGrads.reshape(nZerns,2*nsubx*nsubx) zmat=numpy.linalg.pinv(z).transpose() # initiate arrays phsLayers = numpy.zeros((nLayers,npix,npix),numpy.float) coeffs = numpy.zeros((zerns.shape[0]),numpy.float) centroidArray = numpy.zeros((nsteps,2*int(subapertureMap.sum())),numpy.float) totalMoved = numpy.zeros((nLayers)) demandMoved = numpy.zeros((nLayers)) DMphs = numpy.zeros((npix,npix)) longImg = numpy.zeros((2*npix,2*npix)) longResImg = numpy.zeros((2*npix,2*npix)) # initiate lists