% Perturbation align with vector field

% domain size
m = 50;
n = 50;

% grid resolution
dx = 200e3/(m-1);
dy = dx;
[x,y] = ndgrid(dx*[0:m-1],dy*[0:n-1]);

% land-sea mask (true: sea, false: land)
mask = true(m,n);

% metric
pm = ones(m,n)/dx;
pn = ones(m,n)/dy;

% number of ensemble perturbations
Nens = 1;

% number of EOFs retained
k = 100;

% correlation length
len =  20e03;

% velocity field
a = 10 / (dx*(m-1));
u =  a * y;
v = -a * x;

% create ensemble perturbations
[Ep] = wce_simple(mask,{pm,pn},len,Nens,k,'velocity',{u,v});

hold on
contourf(x/1e3,y/1e3,Ep,50)
shading flat
l = 5;
quiver(x(1:l:end,1:l:end)/1e3,y(1:l:end,1:l:end)/1e3,...
       u(1:l:end,1:l:end),v(1:l:end,1:l:end),10 / max(u(:)),'k')
xlabel('x (km)');
ylabel('y (km)');
axis([min(x(:)) max(x(:)) min(y(:)) max(y(:))]/1e3)
title('Perturbation align with vector field');
hold off
