Return a generator for atmospheric wavefront perturbations across
    a set of *numTelescope* telescopes, each of size *pupilSize* and
    with Fried parameter *r0*. The perturbations are modelled as being
    uncorrelated between telescopes. The number of realisations is given
    by *numRealisation*, but if *numRealisation* is negative then an 
    infinite sequence of realisations is generated.

def PhaseScreens(numTelescope,r0,pupilSize,screenSize=1024,numRealisation=-1):
    """Return a generator for atmospheric wavefront perturbations across
    a set of *numTelescope* telescopes, each of size *pupilSize* and
    with Fried parameter *r0*. The perturbations are modelled as being
    uncorrelated between telescopes. The number of realisations is given
    by *numRealisation*, but if *numRealisation* is negative then an 
    infinite sequence of realisations is generated.
    """
    screenGenerators=[ScreenGenerator(screenSize,r0,pupilSize,pupilSize)
                      for i in range(numTelescope)]
    iter=0
    while numRealisation<0 or iter<numRealisation:
        iter+=1
        yield np.array([next(screen) for screen in screenGenerators])