mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
All of these code samples currently are mis-identified in my repositories. I'm donating them to the cause.
50 lines
1.6 KiB
Matlab
50 lines
1.6 KiB
Matlab
clear all
|
|
tic
|
|
% initialize integration time T, f(x,t), discretization size n ----------------
|
|
T = 8;
|
|
x_min=0;
|
|
x_max=2;
|
|
y_min=0;
|
|
y_max=1;
|
|
n=50; % how many points per one measure unit (both in x and in y)
|
|
ds=1/(n-1);
|
|
x_res=(x_max-x_min)*n;
|
|
y_res=(y_max-y_min)*n;
|
|
grid_x=linspace(x_min,x_max,x_res);
|
|
grid_y=linspace(y_min,y_max,y_res);
|
|
|
|
advected_x=zeros(x_res,y_res);
|
|
advected_y=zeros(x_res,y_res);
|
|
% integrate all initial points for t in [0,T] --------------------------------
|
|
parfor i = 1:x_res
|
|
for j = 1:y_res
|
|
[t,X] = ode45(@dg,[0,T],[grid_x(i),grid_y(j)]);
|
|
% store advected positions as they would appear in (x,y) coords ------
|
|
advected_x(i,j) = X(length(X(:,1)),1);
|
|
advected_y(i,j) = X(length(X(:,2)),2);
|
|
end
|
|
end
|
|
%% Compute FTLE
|
|
sigma=zeros(x_res,y_res);
|
|
% at each point in interior of grid, store FTLE ------------------------------
|
|
for i = 2:x_res-1
|
|
for j = 2:y_res-1
|
|
% compute Jacobian phi -----------------------------------------------
|
|
phi(1,1) = (advected_x(i+1,j)-advected_x(i-1,j))/(2*ds);
|
|
phi(1,2) = (advected_x(i,j-1)-advected_x(i,j+1))/(2*ds);
|
|
phi(2,1) = (advected_y(i+1,j)-advected_y(i-1,j))/(2*ds);
|
|
phi(2,2) = (advected_y(i,j-1)-advected_y(i,j+1))/(2*ds);
|
|
% find max eigenvalue of phi'*phi ------------------------------------
|
|
lambda_max = max(abs(eig(phi'*phi)));
|
|
% store FTLE ---------------------------------------------------------
|
|
sigma(i,j) = log(lambda_max)/abs(2*T);
|
|
end
|
|
end
|
|
toc
|
|
%% plot FTLE field ------------------------------------------------------------
|
|
figure
|
|
contourf(grid_x,grid_y,sigma');
|
|
colorbar('location','EastOutside');
|
|
axis equal
|
|
shading flat
|