code: def ScreenGenerator(nfft, r0, nx, ny):
      
      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]
docs: 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