def ScreenGenerator(nfft, r0, nx, ny):
    """Generate an infinite series of rectangular phase screens
    Uses an FFT screen generator to make a large screen and then
    returns non-overlapping subsections of it"""
    while 1:
        layers = GenerateTwoScreens(nfft, r0)
        for iLayer in range(2):
            for iy in range(int(nfft/ny)):
                for ix in range(int(nfft/nx)):
                    yield layers[iLayer][iy*ny:iy*ny+ny, ix*nx:ix*nx+nx]
Generate an infinite series of rectangular phase screens
    Uses an FFT screen generator to make a large screen and then
    returns non-overlapping subsections of it