function wfcube2, dim, length, L0, r0, lambda, n_wf, filewf

;+
; example of use:
; dim       = 128L			; [px] wf dimension
; length    = 2.        	; [m] wf physical dimension
; L0        = 27.       	; [m] outerscale of turbulence
; r0        = .1        	; [m] Fried parameter
; lambda    = 500E-9    	; [m] r0 wavelength
; n_wf      = 100L      	; nb of generated wf
; filewf    = 'cube.sav'	; cube of wf filename
;
; print, wfcube2(128L, 2., 27., .1, 500E-9, 100L, 'wf_r0=10cm_L0=10m.sav')*1E9
; -> compute the cube of wf, save it, and print the rms value in nm
;
; sub-routines needed:
; wfgeneration.pro, compute_rms.pro
;
; Marcel Carbillet [marcel.carbillet@unice.fr],
; lab. Lagrange (UCA, OCA, CNRS), Feb. 2018.
; Last modification: 11th March 2024
;-

; preliminary
cube = fltarr(dim,dim,n_wf)	; initialize cube of wf

; compute and save cube of wf
for i=0, n_wf/2-1 do begin	; generate wf 
	wf = wfgeneration(dim, length, L0, r0, lambda, SEED=seed)
	cube[*,*,2*i]   = float(wf)
	cube[*,*,2*i+1] = imaginary(wf)
endfor
save, cube, FILE=filewf		; save cube of wf to disk

; compute mean rms
rms = compute_rms(cube)		; compute rms

return, rms					; return back
end