1. 用Python作流场计算时的后处理问题

    由于我现在正试图用Numpy来实现 Lattice Boltzmann method 的算法,也会涉及到一些简单的后处理功能。这里的后处理具体的说是输出一些关于流场的图像问题,因为输出单点的信息没有任何难度。而图像输出主要是依靠 Matplotlib 这个强大的库来完成。后续如果要做进一步的后处理的话,应该还是要学一学如何导出数据到专业后处理软件中,但就调试过程而言,能及时输出一些直观的图像是十分必要的。

    我现在采用的办法是把关于流场的属性存储于数组中(rho[nx_ny]、u[nx_ny*2] 等),用 node 编号来索引具体的数值。这种情况,因为还不涉及格子单位和物理单位的转换,后处理的逻辑还是比较简单的。一般地说来,会用到的图像可分为两类,一类是标量场,主要是云图,另一类是矢量场,主要是矢量图(vector graph)和流线图。这两类图形的绘制方法都很接近,掌握一种的话,通过查询官方在线文档,基本都可以很快找到另外几种的用法。

    例如,对于标量场,如密度场 rho[nx*ny],可以用 matplotlib.pyplot …

    read more
  2. 编程两三事

    学期末的时候有一些数据处理的任务,花了很长时间按部就班地以常规办法解决,基本上是在excel、Wolfram Alpha和origin中倒腾数据,在数据量少且源数据不变的时候,可以比较轻松地应付,但偏偏我的问题两个条件都不符合。后来按《你早该这样玩excel》里提的源数据表原则,排成了一个统一并大量冗余的源数据表,全部数据处理用公式完成,效率提高了不少,但依然不够满意。主要还是excel里批量处理的数据不能及时转为图像(不会啊。。。),它的公式处理也不够灵活,也缺少「拟合」这样的高级功能。

    后来其中某个小问题由于需要不停地迭代试算,实在伤脑筋,就干脆请身边的某matlab达人 ^[没错,就是传说中的鸡爷!] 帮忙编写了一个自动解决其中一部分问题的小程序,当时惊为天人。当然,没过多久,又开始对这个小程序不满足了,但这种提前告诉程序需要做什么事,然后具体的任务由它完成的思想给了我很好的启发。这个小程序解决的只是一部分需要迭代的小部分(甚至它都没实现迭代本身,只是自动实现了迭代的过程),而如果能由程序完成尽可能多的问题呢?

    刚好此前在室友的推荐下看过《用python作科学计算》,知道python的开源包一定程度上可以实现matlab的常用功能,又由于python本身是一个全功能的编程语言,因此就决定在暑假学一学python。

    说一下编程的两大罪状:

    1. 会不断地碰到小问题,不断地通过google、查文档解决,于是如果堆代码的过程比较顺利的话,就是一个不断地产生小成就感的过程。这种小成就感给人一种幻觉,让人觉得似乎完成了很大的成就 …
    read more

« Page 3 / 3

links

social