2 views (last 30 days)

function main

A=0.5; pr=1; a=1; phi=0.1;rhos=997.1;Cps=4179;ks=0.613;rhof=8933;Cpf=385;kf=401;

a1=(1-phi)^-2.5*((1-phi)+phi*(rhos/rhof)); Knf=(ks+2*kf-2*phi*(kf-ks))/(ks+2*kf+phi*(kf-ks));

a2=((1-phi)+phi*((rhos*Cps)/(rhof*Cpf)))*Knf;

xa = 0;xb = 5;solinit=bvpinit(linspace(xa,xb,101),[0 1 0 a 1 0 0 0]);

sol = bvp4c(@ode,@bc,solinit); x = linspace(xa,xb,101);S = deval(sol,x);

function res = bc(ya,yb)

res = [ya(1); ya(2)-1; ya(4); ya(5)-a; ya(7)-1; yb(2); yb(5); yb(7)];

end

function dydx = ode(~,y)

dydx = [y(2); y(3); 2*a1*y(2)*(y(2)+y(5))-a1*y(3)*(y(1)+y(4));

y(5); y(6); 2*a1*y(5)*(y(2)+y(5))-a1*y(6)*(y(1)+y(4));

y(8); A*pr*a2*y(7)*(y(2)+y(5))-pr*a2*y(8)*(y(1)+y(4))];

end

figure(14)

f1 = @(x,y) S(2);

fsurf(f1)

xlabel '\bfx';ylabel '\bfy';zlabel '\bff^\prime(\eta)'

hold on

end

%% The graph is not obeying Boundary Condition

%% I am trying graphs like Fig. (14) and another is contour (Attached)

Star Strider
on 26 Aug 2020

Using fsurf is not appropriate here.

Try this instead:

figure(14)

hs = surf(S);

grid on

xlabel '\bfx';ylabel '\bfy';zlabel '\bff^\prime(\eta)'

% shading('interp') % Optional

% hs.EdgeColor = 'none'; % Optional

That produces this plot:

I am not certain what the reference to ‘S(2)’ is suposed to do, beccause ‘S’ is a matrix. This plots the entire matrix.

.

Star Strider
on 26 Aug 2020

Create a second loop for ‘a’:

function main

A = 0.5; pr = 1; %%a = 1; phi = 0.1;

rhos = 997.1;Cps=4179;ks=0.613;rhof=8933;Cpf=385;kf=401;

phiv = linspace (0,0.15,101);

av = [0 0.2 0.5 1];

for k = 1:numel(av)

a = av(k);

for i = 1:length(phiv)

phi = phiv(i);

a1=(1-phi)^2.5*((1-phi)+phi*(rhos/rhof)); Knf=(ks+2*kf-2*phi*(kf-ks))/(ks+2*kf+phi*(kf-ks));

a2 =((1-phi)+phi*((rhos*Cps)/(rhof*Cpf)))*Knf;

BCres = @(ya,yb)[ya(1); ya(2)-1; ya(4); ya(5)-a; ya(7)-1; yb(2); yb(5); yb(7)];

fODE = @(x,y)[y(2); y(3); 2*a1*y(2)*(y(2)+y(5))-a1*y(3)*(y(1)+y(4));

y(5); y(6); 2*a1*y(5)*(y(2)+y(5))-a1*y(6)*(y(1)+y(4));

y(8); A*pr*a2*y(7)*(y(2)+y(5))-pr*a2*y(8)*(y(1)+y(4))];

xa = 0;xb = 5;solinit=bvpinit(linspace(xa,xb,101),[0 1 0 a 1 0 0 0]);

sol = bvp4c(fODE,BCres,solinit);x = linspace(xa,xb,101);S = deval(sol,x);

Sk(i,k) = S(3,1)/((1-phi)^2.5); Nu(i,1) = - Knf * S(5,1);

end

end

figure(10)

surf(av, phiv, Sk)

% % title '(b)'

xlabel('a')

ylabel('\bf\phi');

zlabel('\bfSk_{r}')

view(40,40)

end

Also, put the surf call after both loops.

This then creates a matrix for ‘Sk’ that you can use with surf.

.

Star Strider
on 27 Aug 2020

Thank you!

Your ccode does not produce the plot in the .PDF file. I have no idea what you are doing.

You can use essentially the same code to create the contour plot as the surf plot. Just call contour instead of surf, and remove the zlabel and view calls.

As always, my pleasure!

Opportunities for recent engineering grads.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/576634-wrong-graph-is-coming-with-this-code#comment_967198

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/576634-wrong-graph-is-coming-with-this-code#comment_967198

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/576634-wrong-graph-is-coming-with-this-code#comment_986543

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/576634-wrong-graph-is-coming-with-this-code#comment_986543

Sign in to comment.