在FiPy包中选择的扫描dt改变了解决方案的时域



我目前正在尝试解决一个具有18个偏微分方程和常微分方程的大型偏微分方程系统(这就是为什么我使用FiPy而不是scipy中的odeint(。其中一个方程很简单:dROS/dt=0.06,我实现如下:

eqn_ROS = ( TransientTerm(var=ROS) == 0.06 )

所需的时间范围是从o到3650,所以我用这种方式求解,使用扫描(我在这里只为一个方程写更新(:

for t in range(3650): 
ROS.updateOld()
res = 1e10 
while res > 0.1:
res = eqn_ROS.sweep(var=ROS, dt=1e-5)

由于我希望得到ROS=0.06t的图,当我绘制ROS与t的图时(在从用TSVviewr创建的tsv文件中产生正确的值之后(,t轴确实是从0到3650,然而,ROS值比预期的要小得多,并且与想要的值36500.06不匹配。

我必须补充一点,我曾尝试用相同的扫描dt单独求解这个方程,但值是错误的。

这个问题会因为我为扫描选择的dt而发生吗?或者可能是我完全误解了什么?

提前感谢!

[在GitHub上回答。请在一个位置或另一个位置询问,但不能同时询问]

你正在进行3650个1e-5大小的步骤,总持续时间为3.65e-2,所以我预计最终ROS为0.00219,这就是实际情况。

这个方程在ROS中是线性的,所以没有必要扫过它

相关内容

最新更新