All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
clear all close all clc %% Defining the problem domain n_points = 101; % no_of_points dom_length = 1; h = dom_length/(n_points-1); x = 0:h:dom_length; %X domain span y = 0:h:dom_length; %Y domain span dt = 0.05; %Time advancement tau = 0.001; %Dual timestep Re = 100; %Reynolds number delta = 10; %Artificial…
Amith Ganta
updated on 26 May 2021
clear all
close all
clc
%% Defining the problem domain
n_points = 101; % no_of_points
dom_length = 1;
h = dom_length/(n_points-1);
x = 0:h:dom_length; %X domain span
y = 0:h:dom_length; %Y domain span
dt = 0.05; %Time advancement
tau = 0.001; %Dual timestep
Re = 100; %Reynolds number
delta = 10; %Artificial compressibility
omega = pi/6;
time_val = 0;
final_time = 2*pi/omega;
%% Initializing the variables
%Final collocated variables
u_unsteady=0;
v_unsteady=0;
p_unsteady=1;
%Staggered variables
u(n_points+1,n_points)=0;
v(n_points,n_points+1)=0;
p(n_points+1,n_points+1)=1;
u(1,:)=2;
u_new(n_points+1,n_points)=0;
v_new(n_points,n_points+1)=0;
p_new(n_points+1,n_points+1)=1;
u_new(1,:)=2;
u_physical_old(n_points+1,n_points)=0;
v_physical_old(n_points,n_points+1)=0;
u_physical_old(1,:)=2;
%% Solving the governing equations
sol_index = 1;
iterations = 0;
error_req = 1e-6; %final required error residual
while time_val < final_time
disp(['Solving for time = ' num2str(time_val) 's'])
error = 1;
while error > 1e-6
% x-momentum eq. - Interior
for i = 2:n_points
for j = 2:n_points - 1
unsteady = (u(i,j) - u_physical_old(i,j))/dt;
pressure = -(p(i,j+1) - p(i,j))/h;
diffusion = (1/Re)*((u(i+1,j) - 2*u(i,j) + u(i-1,j))/(h*h) + (u(i,j+1) - 2*u(i,j) + u(i,j-1))/(h*h));
advection_x = ((0.5*(u(i,j)+u(i,j+1)))^2 - (0.5*(u(i,j)+u(i,j-1)))^2)/h;
advection_y = ((0.25*(u(i,j)+u(i-1,j))*(v(i-1,j)+v(i-1,j+1))) - (0.25*(u(i,j)+u(i+1,j))*(v(i,j)+v(i,j+1))))/h;
u_new(i,j) = u(i,j) + tau*(-unsteady + diffusion - advection_x - advection_y + pressure);
end
end
% x-momentum eq. - Boundary
u_new(1,:) = 2*cos(omega*time_val) - u_new(2,:);
u_new(n_points + 1,:) = -u_new(n_points,:);
u_new(2:n_points,1) = 0;
u_new(2:n_points,n_points) = 0;
% y-momentum eq. - Interior
for i = 2:n_points - 1
for j = 2:n_points
unsteady = (v(i,j) - v_physical_old(i,j))/dt;
pressure = -(p(i,j) - p(i+1,j))/h;
diffusion = (1/Re)*((v(i+1,j) - 2*v(i,j) + v(i-1,j))/(h*h) + (v(i,j+1) - 2*v(i,j) + v(i,j-1))/(h*h));
advection_y = ((0.5*(v(i,j)+v(i-1,j)))^2 - (0.5*(v(i,j)+v(i+1,j)))^2)/h;
advection_x = ((0.25*(u(i,j)+u(i+1,j))*(v(i,j)+v(i,j+1))) - (0.25*(u(i,j-1)+u(i+1,j-1))*(v(i,j)+v(i,j-1))))/h;
v_new(i,j) = v(i,j) + tau*(-unsteady + diffusion - advection_x - advection_y + pressure);
end
end
% y-momentum eq. - Boundary
v_new(:,1) = -v_new(:,2);
v_new(:,n_points + 1) = -v_new(:,n_points);
v_new(1,2:n_points) = 0;
v_new(n_points,2:n_points) = 0;
% Continuity eq. - Interior
for i = 2:n_points
for j = 2:n_points
p_new(i,j) = p(i,j) - delta*tau*(u_new(i,j) - u_new(i,j-1) + v_new(i-1,j) - v_new(i,j))/h;
end
end
% Continuity eq. - Boundary
p_new(1,:) = p_new(2,:);
p_new(n_points + 1,:) = p_new(n_points,:);
p_new(:,1) = p_new(:,2);
p_new(:,n_points + 1) = p_new(:,n_points);
% Continuity residual as error measure
error = 0;
for i = 2:n_points - 1
for j = 2:n_points - 1
error = error + abs((u_new(i,j) - u_new(i,j-1) + v_new(i-1,j) - v_new(i,j))/h);
end
end
% Finishing the iteration
u = u_new;
v = v_new;
p = p_new;
iterations = iterations + 1;
end
% Assigning the old physical time step to be newer one
u_physical_old = u_new;
v_physical_old = v_new;
time_val = time_val + dt;
% Saving the solution after every dt
for i = 1:n_points
for j = 1:n_points
u_unsteady(sol_index,i,j) = 0.5*(u(i,j) + u(i+1,j));
v_unsteady(sol_index,i,j) = 0.5*(v(i,j) + v(i,j+1));
p_unsteady(sol_index,i,j) = 0.25*(p(i,j) + p(i,j+1) + p(i+1,j) + p(i+1,j+1));
end
end
sol_index = sol_index + 1;
end
%% Unsteady contour plot
figure;
startx = 0.01:0.01:1;
starty = 0.5.*ones(length(startx),1);
count = 1;
for i = 20:20:180
subplot(3,3,count)
u_sample = u_unsteady(i,:,:);
u_sample = reshape(u_sample, [size(u_sample,2) size(u_sample,3)]);
x_dom = ((1:n_points)-1).*h;
y_dom = 1-((1:n_points)-1).*h;
[X,Y] = meshgrid(x_dom,y_dom);
contourf(X,Y,u_sample, 21, 'LineStyle', 'none')
caxis([-1 1])
colorbar
colormap('jet')
xlabel('x')
ylabel('y')
count = count + 1;
% streamline(X, Y, u_sample, v_sample, startx, starty)
end
Results:
Leave a comment
Thanks for choosing to leave a comment. Please keep in mind that all the comments are moderated as per our comment policy, and your email will not be published for privacy reasons. Please leave a personal & meaningful conversation.
Other comments...
Quater car modelling using Matlab
Quarter Car model …
25 Sep 2023 03:07 PM IST
Pacjeka combined slip
Pacjeka Magic Tyre model Pacjeka Magic Tyre model was developed by Prof.Hans Bastiaan Pacejka and it is widely used to represent empirically and interpolate previously measured…
05 Jun 2023 02:04 PM IST
Longitudinal and Lateral brush tyre model using Matlab
Tyre Modeling A tyre model is a mathematical or an empirical representation of the mechanism…
16 May 2023 07:14 PM IST
Related Courses
0 Hours of Content
Skill-Lync offers industry relevant advanced engineering courses for engineering students by partnering with industry experts.
© 2025 Skill-Lync Inc. All Rights Reserved.