Esempio n. 1
0
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
Esempio n. 2
0
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()
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
def zernike_noll(j, X, Y):

    (n, m) = aotools.zernIndex(j)
    return zernike_nm(n, m, X, Y)
Esempio n. 6
0
    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