Surface plot of PDE numeric solution
显示 更早的评论
Hello, I'm solving the system of 2 PDE's, each function depends on 3 variables(radius, angle and time). I'm using explicit difference scheme. As a result I've got two 3D matrices (one for each function). To visualise the results, I want to plot surface plots for each function with fixed t(time). For example: In a moment t=0.5 the surface for u(:,:,0.5): X-axis will be the radius, Y-axis will be the angle and Z-axis will be the function value in in this point (x,y). Will be glad for any advices. Thanks.
Here is the code, if it's difficult to understand my English.
if true
% code
clc;
clear all;
%grid for r
n=100;
r_min=0.01;
r_max=1;
hr=(r_max-r_min)/(n-1)
r=r_min:hr:r_max
nr=max(size(r))
%grid for theta
m=100;
th_min=0;
th_max=2*pi;
hth=(th_max-th_min)/(m-1)
theta=th_min:hth:th_max
nth=max(size(theta))
%grid for t
l=10000;
t_min=0;
t_max=1;
ht=(t_max-t_min)/(l-1)
time=t_min:ht:t_max
nt=max(size(time))
u = zeros(nr,nth,nt);
v = zeros(nr,nth,nt);
%Inititalization
u0=0;
for i=1:nr
for j=1:nth
if (r(i)<r0)
u0=0;
elseif ((r(i)>=r0) &&(r(i)<r1))
u0=(r(i)-r0)/(r1-r0);
elseif ((r(i)>=r1)&&(r(i)<r2))
u0=1;
elseif ((r(i)>=r2)&&(r(i)<r3))
u0=(r(i)-r3)/(r2-r3);
else
u0=0;
end
u(i,j,1)=u0;
end
end
u(:,:,1)
v0=0;
for i=1:nr
for j=1:nth
if(r(i)<r1)
v0=1;
elseif ((r(i)>=r1)&&(r(i)<r3))
v0=(r(i)-r3)/(r1-r3);
else
v0=0;
end
v(i,j,1)=v0;
end
end
v(:,:,1)
for t=1:nt-1
for i=2:nr-1
for j=2:nth-1
%derivatives
d2udr2= (u(i+1,j,t)-2*u(i,j,t)+u(i-1,j,t))/hr^2;
dudr=(u(i+1,j,t)-u(i-1,j,t))/(2*hr);
d2udth2=(u(i,j+1,t)-2*u(i,j,t)+u(i,j-1,t))/hth^2;
d2vdr2= (v(i+1,j,t)-2*v(i,j,t)+v(i-1,j,t))/hr^2;
dvdr=(v(i+1,j,t)-v(i,j,t))/hr;
d2vdth2=(v(i,j+1,t)-2*v(i,j,t)+v(i,j-1,t))/hth^2;
%centre nodes
u(i,j,t+1)=u(i,j,t)+ht*(d2udr2+(1/r(i))*dudr+(1/r(i)^2)*d2udth2);%+u(i,j,t)*(1-u(i,j,t)-c*v(i,j,t)));
v(i,j,t+1)=v(i,j,t)+ht*mu*(d2vdr2+(1/r(i))*dvdr+(1/r(i)^2)*d2vdth2);%+a*v(i,j,t)*(1-c*u(i,j,t)-b*v(i,j,t)));
end
%derivatives for left boundary
d2udr2= (u(i+1,1,t)-2*u(i,1,t)+u(i-1,1,t))/hr^2;
dudr=(u(i+1,1,t)-u(i-1,1,t))/(2*hr);
d2udth2=(u(i,2,t)-2*u(i,1,t)+u(i,nth,t))/hth^2;
d2vdr2= (v(i+1,1,t)-2*v(i,1,t)+v(i-1,1,t))/hr^2;
dvdr=(v(i+1,1,t)-v(i-1,1,t))/(2*hr);
d2vdth2=(v(i,2,t)-2*v(i,1,t)+v(i,nth,t))/hth^2;
uleft=u(i,1,t)+ht*(d2udr2+(1/r(i))*dudr+(1/r(i)^2)*d2udth2);%+u(i,1,t)*(1-u(i,1,t)-c*v(i,1,t)));
vleft=v(i,1,t)+ht*mu*(d2vdr2+(1/r(i))*dvdr+(1/r(i)^2)*d2vdth2);%+a*v(i,1,t)*(1-c*u(i,1,t)-b*v(i,1,t)));
%derivatives for right boundary
d2udr2= (u(i+1,nth,t)-2*u(i,nth,t)+u(i-1,nth,t))/hr^2;
dudr=(u(i+1,nth,t)-u(i-1,nth,t))/(2*hr);
d2udth2=(u(i,1,t)-2*u(i,nth,t)+u(i,nth-1,t))/hth^2;
d2vdr2= (v(i+1,nth,t)-2*v(i,nth,t)+v(i-1,nth,t))/hr^2;
dvdr=(v(i+1,nth,t)-v(i-1,nth,t))/(2*hr);
d2vdth2=(v(i,1,t)-2*v(i,nth,t)+v(i,nth-1,t))/hth^2;
uright=u(i,nth,t)+ht*(d2udr2+(1/r(i))*dudr+(1/r(i)^2)*d2udth2);%+u(i,nth,t)*(1-u(i,nth,t)-c*v(i,nth,t)));
vright=v(i,nth,t)+ht*mu*(d2vdr2+(1/r(i))*dvdr+(1/r(i)^2)*d2vdth2);%+a*v(i,nth,t)*(1-c*u(i,nth,t)-b*v(i,nth,t)));
%filling boundaries for theta
u(i,1,t+1)=uleft;
v(i,1,t+1)=vleft;
u(i,nth,t+1)=uright;
v(i,nth,t+1)=vright;
end
%boundaries for r
for j=1:nth
u(1,j,t+1)=u(2,j,t+1);
u(nr,j,t+1)=u(nr-1,j,t+1);
v(1,j,t+1)=v(2,j,t+1);
v(nr,j,t+1)=v(nr-1,j,t+1);
end
end
end
surf(r,theta,?)
1 个评论
T K
2021-8-27
Could you please send me a picture of the second degree system of equations with boundary conditions?
采纳的回答
更多回答(1 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Eigenvalue Problems 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!