求解具有状态和时间相关边界条件的 PDE

计算科学 matlab pde 有限差分 边界条件
2021-12-23 19:27:44

我有兴趣解决以下 PDE(热方程): 为了解决它,我将空间均匀地离散为段并将 PDE 转换为 ODE: 我可以使用任何 ODE 例程(例如 MATLAB 中的 ode45 或 ode15s)求解。对于我的问题的特殊情况,PDE 的 Neumann 边界条件取决于 u_k 本身的值 在哪里

ut=κ2ux2
NN+1
dukdt=κuk+1+uk12uk(Δx)2k=0,1.N
uk
dubdx={αub<ucritical,γububucritical
α是常数并且γb={0,N}

假设我正在使用一些数值 ODE 求解器(例如 MATLAB 中的 ode45)解决上述问题,并且有两个例程:odefun(我提供给求解器)来评估我定义的导数和odestep,求解器称之为在每个成功的集成步骤之后,我应该在哪里检查边界条件是否需要更改,在odefunodestep 中我问这个是因为求解器内部可能会使用odefun例程来评估 jacobian、错误等,理想情况下,我们不应该在集成步骤的中间更改边界条件,对吗?

1个回答

您不应该在将条件边界条件编码到odefun时遇到任何问题,就像您在问题陈述中定义的那样。

只需使用最后一个时间步的值ub做条件语句并获取正确的边界条件值。

而现实情况是,如果你的问题需要在积分过程中改变边界条件,那么它就必须这样做。这就是在您的案例中模拟物理的方式。鉴于这些动态是可以的,理想情况下,您应该在需要合并边界条件的变化。