首页 文章

乘坐波浪双曲线偏微分方程的数值方案,lorena barba课程,需要帮助

提问于
浏览
1

我是一名初学python用户,他试图了解计算机科学,我一直在学习如何使用它来研究我已经熟悉的概念/科目,例如计算流体力学和有限元分析 . 我获得了机械工程学位,所以CS背景不多 .

我正在研究Lorena Barba关于jupyter笔记本查看器,实用数值方法的系列文章,我正在寻求一些帮助,希望有人熟悉CFD和FEA的主题 .

如果你点击下面的链接并转到下面的输出行,你会发现我在下面的内容 . 对在定义的函数内操作的这段代码感到非常困惑 .

无论如何 . 如果有人在那里,有任何关于如何解决学习python的建议,请帮助

[9]中

rho_hist = [rho0.copy()]
rho = rho0.copy()            **# im confused by the role of this variable here**
for n in range(nt):

    # Compute the flux.

    F = flux(rho, *args)

    # Advance in time using Lax-Friedrichs scheme.

    rho[1:-1] = (0.5 * (rho[:-2] + rho[2:]) -
                 dt / (2.0 * dx) * (F[2:] - F[:-2]))

    # Set the value at the first location.

    rho[0] = bc_values[0]

    # Set the value at the last location.

    rho[-1] = bc_values[1]

    # Record the time-step solution.

    rho_hist.append(rho.copy())

return rho_hist

http://nbviewer.jupyter.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/03_wave/03_02_convectionSchemes.ipynb

1 回答

  • 0

    前两行的目的是保留 rho0 并为历史记录提供它的副本(复制以便 rho0 中的后续更改不会反映在此处)以及作为在此期间使用和修改的"working"变量 rho 的初始值 . 计算 .

    背景是python列表和数组变量始终是对相关对象的引用 . 通过分配变量,您可以生成引用的副本,对象的地址,而不是对象本身 . 两个变量都指向相同的内存区域 . 因此,不使用 .copy() 将更改 rho0 .

    a = [1,2,3]
    b = a
    b[2] = 5
    print a
    #>>> [1, 2, 5]
    

    本身包含结构化数据对象的复合对象需要 deepcopy 来复制所有级别的数据 .

相关问题