;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