Can anyone please help ?

16 views (last 30 days)
Mohamed on 2 Oct 2022
Commented: Samson on 7 Nov 2022 at 3:06
im trying to compute the steady solutions for the stream function and scalar vorticity for a 2d flow around an infinite cylinder at RE = 10
here is the question:
Here is the code:
function [psi, omega] = flow_around_cylinder_steady
%%%%% define the grid %%%%%
n=101; m=101; % number of grid points
N=n-1; M=m-1; % number of grid intervals
h=pi/M; % grid spacing based on theta variable
xi=(0:N)*h; theta=(0:M)*h; % xi and theta variables on the grid
%%%%% Initialize the flow fields %%%%%
psi(n,:)=exp(xi(n)) * sin(theta(:));
%%%%% Set relax params, tol, extra variables %%%%%
delta=1.e-08; % error tolerance
error=2*delta; % initialize error variable
%%%%% Add any additional variable definitions here %%%%%
%%%%% Main SOR Loop %%%%%
while (error > delta)
psi_old = psi; omega_old = omega;
for i=2:n-1
for j=2:m-1
psi(i,j)=exp(xi(i)) * sin(theta(j));
omega(1,:)= (psi(3,j) - 8*psi(2,j)) * 1/(2*h^2);
for i=2:n-1
for j=2:m-1
omega_old(1,j)= (psi(3,j) - 8*psi(2,j)) * 1/(2*h^2);
error=max(error_psi, error_omega);
The code to call the function is:
[psi, omega] = flow_around_cylinder_steady;
But i get this:
The server timed out while running your solution. Potential reasons include inefficient code, an infinite loop, and excessive output. Try to improve your solution.
is there any way to improve it ?
Samson on 7 Nov 2022 at 3:06
omega_old seems to be one of the issue.. and my SOR doesnt seem to work /:

Sign in to comment.

Answers (1)

Cris LaPierre
Cris LaPierre on 3 Oct 2022
Edited: Cris LaPierre on 3 Oct 2022
This error message means your code is taking too long to execute. This is usually caused by accidentally creating an infinite loop.
As a side note this appears to be an assignment. Are you aware and ok with posting this here knowing that it can't be deleted?
The gray lines in your screenshot are locked lines, meaning they are lines your instructor has written for you. You can't (and likely shouldn't) change those. That means you are left with what you have written for psi(i,j), omega(1,:), and omega_old(1,j). I'm assuming your equations are correct but just contain a syntax error somewhere.
A quick inspection leads me to believe your for loops should be calculating omega, and not omega_old. It also seems odd to be hardcoding the row to 1 inside nested for loops. Perhaps you should be indexing the same as you did for psi?
Cris LaPierre
Cris LaPierre on 13 Oct 2022
That wasn't as helpful as I was hoping.
Are you sure you are using the correct equations for psi and omega? For help with fluids, I suggest turning to your instructor. Once you have the correct equations, we can certainly help you with implementing them in MATLAB.

Sign in to comment.


Find more on Graphics Performance in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by