int main(){ ccell *psf; int nsim=5000; for(int iwfs=6; iwfs<64; iwfs++){ zfarr *ca=zfarr_init(nsim,1,"psfout_wfs%d.bin",iwfs); for(int isim=0; isim<nsim; isim++){ if(isim%100==0) info("iwfs=%d, isim=%d\n",iwfs,isim); psf=ccellread("psfout/psfout_wfs%d_isim%d.bin",iwfs,isim); zfarr_ccell(ca, isim, psf); ccellfree(psf); } zfarr_close(ca); } }
static void test_stfun(){ rand_t rstat; int seed=4; double r0=0.2; double dx=1./16; long N=32; long nx=N; long ny=N; long nframe=500; seed_rand(&rstat, seed); if(L0<9000){ dmat *rr=dlinspace(0, N*dx, N); dmat *covvk=turbcov(rr, sqrt(2)*N*dx, r0, L0); writebin(covvk, "cov_vk"); dfree(rr); dfree(covvk); } /* return; */ { map_t *atm=mapnew(nx+1, ny+1, dx, dx,NULL); stfun_t *data=stfun_init(nx, ny, NULL); zfarr *save=zfarr_init(nframe, 1, "fractal_atm.bin"); for(long i=0; i<nframe; i++){ for(long j=0; j<(nx+1)*(ny+1); j++){ atm->p[j]=randn(&rstat); } fractal_do((dmat*)atm, dx, r0,L0,ninit); stfun_push(data, (dmat*)atm); zfarr_dmat(save, i, (dmat*)atm); if(i%100==0) info("%ld of %ld\n", i, nframe); } zfarr_close(save); dmat *st=stfun_finalize(data); writebin(st, "stfun_fractal.bin"); ddraw("fractal", st, NULL,NULL, "Atmosphere","x","y","stfun"); } /*exit(0); */ { stfun_t *data=stfun_init(nx, ny, NULL); dmat *spect=turbpsd(nx, ny, dx, r0, 100, 0, 0.5); cmat *atm=cnew(nx, ny); //cfft2plan(atm, -1); dmat *atmr=dnew(atm->nx, atm->ny); dmat *atmi=dnew(atm->nx, atm->ny); spect->p[0]=0; for(long ii=0; ii<nframe; ii+=2){ for(long i=0; i<atm->nx*atm->ny; i++){ atm->p[i]=COMPLEX(randn(&rstat), randn(&rstat))*spect->p[i]; } cfft2(atm, -1); for(long i=0; i<atm->nx*atm->ny; i++){ atmr->p[i]=creal(atm->p[i]); atmi->p[i]=cimag(atm->p[i]); } stfun_push(data, atmr); stfun_push(data, atmi); if(ii%100==0) info("%ld of %ld\n", ii, nframe); } dmat *st=stfun_finalize(data); writebin(st, "stfun_fft.bin"); ddraw("fft", st, NULL,NULL, "Atmosphere","x","y","stfun"); } }