ceo 0.1.0

CUDA Engined Optics
Documentation
%% 
% gpuDevice([])

nLenslet_ = [20 40 64 84 150];
D_        = [3.6 8 5 42 30];
    
r0 = 15e-2;
L0 = 30;
atm = atmosphere(photometry.V,r0,L0,'windSpeed',10,'windDirection',0);
lambda = atm.wavelength;
phase2nm = 1e9;%*lambda/2/pi;
    
D = 42;

%  atm = atmosphere(photometry.V,r0,L0,...
%      'altitude',[0, 500, 1000, 2000, 5000, 8000. 13000],...
%      'fractionnalR0',[0.2, 0.1, 0.1, 0.3, 0.2, 0.05, 0.05],...
%      'windSpeed',[10, 5, 7.5, 5, 10, 12, 15],...
%      'windDirection',[0, 0.25, 0.5, 1, 1.5, 1.75, 2]);
% atm = gmtAtmosphere(1);
% r0 = atm.r0;
% L0 = atm.L0;

nLenslet = 84;
d = D/nLenslet;
nPxLenslet = 16;
cxy0 = 0.5*(nPxLenslet-1);
nxy = nLenslet*nPxLenslet;

ne = nLenslet+1;

compile = true;

%%
ceodir = '~/CEO';
if compile
cd([ceodir,'/include'])
unix(['sed -i ',...
    '-e ''s/#define N_SIDE_LENSLET [0-9]*/#define N_SIDE_LENSLET ',num2str(nLenslet),'/g'' ',...
    '-e ''s/#define _N_PX_PUPIL_ [0-9]*/#define _N_PX_PUPIL_ ',num2str(nPxLenslet),'/g'' ',...
    '-e ''s/#define _N_PIXEL_ [0-9]*/#define _N_PIXEL_ ',...
    num2str((nLenslet*nPxLenslet)^2),'/g'' definitions.h']);
unix('cat definitions.h');
cd(ceodir)
unix('make clean all')
% unix('make imaging.mex')
% clear ceo_imaging
% mex -largeArrayDims -I../include -L../lib -lceo -o ceo_imaging imaging.mex.cu
end
%%
nIt = 100;
cd([ceodir,'/iterativeSolvers'])
unix('make iterativeSolvers.bin')
% fprintf(' ==>>> CG (N=%d)\n',nLenslet)
% tic
% unix(sprintf('./a.out %3.1f CG > CG_%03d_%03d.log',D,nIt,nLenslet));
% toc
%%
fprintf(' ==>>> MINRES (N=%d)\n',nLenslet)
tic
unix(sprintf('./a.out %3.1f MINRES > MINRES_%03d_%03d.log',D,nIt,nLenslet));
toc
%%
% ps = loadBin('phaseScreen',[nxy,nxy]);
% pup = logical( loadBin('A_mask','map','type','char') );
pup = tools.piston(ne,'type','logical','shape','square');
ps = loadBin('phaseScreenLowRes','map','scaling',1e9);
ps = pup.*(ps - mean(ps(pup(:))));
figure(102)
% subplot(2,3,[1,2])
% imagesc(ps)
% axis square
% xlabel(colorbar('location','northOutside'),'[nm]')

c = loadBin('centroids',[nLenslet,nLenslet*2]);
subplot(3,4,[9,12])
imagesc(c)
axis equal tight
colorbar('location','north')

%ps_e = phase2nm*loadBin('phaseScreenEst',[ne,ne]);
%ps_e = phase2nm*loadBin(sprintf('CG_phaseEst_%3d_%2d',nIt,nLenslet),[ne*ne,nIt]);
ps_e = phase2nm*loadBin(sprintf('MINRES_phaseEst_%d',nIt),'map');
ps_e = pup.*bsxfun( @minus, ps_e, mean(ps_e(pup(:)),1) );
ps_e_k = reshape(ps_e,[ne,ne]);
subplot(3,4,[1,6])
imagesc([ps,ps_e_k])
axis equal tight
xlabel(colorbar('location','northOutside'),'[nm]')

ps_err = bsxfun( @minus, ps(:), ps_e(:));
rms_ps_err = std(ps_err);
ps_err_k = reshape(ps_err,[ne,ne]);
subplot(3,4,[3,8])
imagesc(ps_err_k)
axis equal tight
title(sprintf('wfe=%6.2fnm',rms_ps_err))
xlabel(colorbar('location','southOutside'),'[nm]')