;Generate_PhaseScreen
;
;PURPOSE:
;	This code will generate an NDimxNDim two-dimensional phase screen with 
;	Kolmogorov properties.
;INDimPUTS:
;  NDim:
;	The number of pixels along a dimension.  Total screen is NDimxNDim
;  DeltaX:
;	The number of meters per pixel
;  Lo:
;	The length of the outer scale in meters
;  ro:
;	The Fried Parameter.  Determines the strength of turbulence, i.e. 
;	the rms of the phase about zero mean.
;	
function generate_phasescreen, NDim, DeltaX, Lo, r0, Seed, Spacing

NDim=long(NDim)
TotalLength=NDim*DeltaX	;Total Length of Screen in meters
FreqSpacing=1/(NDim*Spacing)

stop
;Generate KValues for the phase screen
Ks=(1/(-float(NDim)/2+findgen(NDim))
KInd=lindgen(NDim*NDim)
KArr=fltarr(NDim,NDim)
KArr(Kind mod NDim,Kind/NDim)=Ks(Kind mod NDim)^2+Ks(Kind/NDim)^2
KArr(floor(NDim/2),floor(NDim/2))=1

PhaseFFT=randomn(Seed,NDim,NDim)+complex(0,1)*randomn(Seed,NDim,NDim)
;PhaseFFT(0,*)=0
;PhaseFFT(*,0)=0
PhaseFFt(floor(NDim/2),floor(NDim/2))=0
Spectrum=PhaseFFT/(KArr+(TotalLength/Lo)^2)^(11./12)

;INDDEX REARRANDGINDG
KMax=NDim/2
KRe=shift(Karr,NDim/2,NDim/2)
KReRe=shift(KRe,-NDim/2,-NDim/2)
SpectrumRe=shift(Spectrum,NDim/2,NDim/2)
Phase=fft(SpectrumRe,/inverse)
return,real_part(Phase)

end


