我正在使用pde工具箱解决两个耦合时间相关的PDE方程。模拟框大小为x = 6和y = 10.当前我正确解决它并使用以下方法访问解决方案数据 results = solvepde(model,tlist); u = results.NodalSolution(:,1,:);
现在我需要做的是当解决方案u沿y轴不稳定时停止代码。这意味着我想在运行代码的同时监视u沿y轴的解决方案,并在符合条件时停止它我想要。(例如,我想在u沿y的解决方案等于0时停止代码。)我怎样才能使用pde工具箱?
这是我到目前为止所尝试的。在代码运行时是否有简单的方法来访问结果?。我想访问每个时间步的解决方案。
%calculate solutions
n=4000;
tlist = linspace(0,200,n);
partial=zeros(49,1);
for i=1:n
results = solvepde(model,tlist(i:i+1));
u = results.NodalSolution(:,1,1);
v=results.NodalSolution(:,2,1);
u1=results.NodalSolution(113:161,1,1);
u2=results.NodalSolution(1,1,1);
u3=results.NodalSolution(4,1,1);
for j=1:49
partial(j)=u1(j)-0.5*u2-0.5*u3;
end
sigma=sum(partial);
if sigma>1e-4
disp('verified')
return
end
end
答案 0 :(得分:0)
有几种方法可以在执行期间停止代码:
keyboard
使用此功能可以停止执行并让您访问键盘,以便查看所有值。
warning('Solution is unstable')
这实际上不会停止代码,但会给你一个警告,说明解决方案不稳定。
error('Solution is unstable')
这实际上会停止代码,给出错误,解决方案不稳定。
break
这不会给你任何反馈,但会停止for循环,然后继续其余的代码。
在所有情况下,您都包括在if语句中停止代码的方式,例如
if (all(u==0))
*statement from above*
end