MYTE

mail@pastecode.io avatar
unknown
matlab
2 years ago
1.1 kB
5
Indexable
Never
clear all; close all; clc;

%% Define a random velocity field
[X,Y] = meshgrid(-3*pi:pi/4:3*pi,-3*pi:pi/4:3*pi);
U = sin(Y);
V = cos(X);

%% Plot the velocity field
figure(1),
quiver(X,Y,U,V,0,'autoscale','off'); 
title('Vector Field with Particle Trajectory starting from point (x,y)', 'fontsize',20)
axis equal; grid on; hold on

%%  Initial
% 
%   for x = 1:10
%       disp(x)
%   end
% 
%   for x = 1:10
%       disp(x)
%   end
% 
% 
a = [0 0; 5 5;];
%% For loop ALL
tF_test = [15, 5];
for i = 1:2
    % Solving with ODE
    p0(1) = a(i,1);
    p0(2) = a(i,2);
    f = @(t,p) odefun_p(t,p,U,V,X,Y);
    tspan = [0,tF_test(i)];

    % assign options for solver
    options = odeset('RelTol',1e-5,'AbsTol',1e-5);
    [t,p] = ode45(f,tspan,p0, options);

    % overlay the particle track
    plot(p(:,1),p(:,2),'b-','LineWidth',4,'MarkerSize',10)
    i;
end

%% Function: PARTICLE 1
function dpdt = odefun_p(~,p,U,V,X,Y,extrap)

xq = p(1);
yq = p(2);

% interpolate to get velocity components at query points
u = interp2(X,Y,U,xq,yq,"cubic");
v = interp2(X,Y,V,xq,yq,"cubic");

% assign derivative vector
dpdt = [u;v];
end