资讯详情

格子玻尔兹曼方法(LBM)python程序提速

研究生开学已经两周了,一直在学习LBM相关编程知识。因为我的数值传热基础不是很好,为了快速融入现有的工作,我专注于编程,而不是学习相关的模型和边界条件。我的主要参考书是:

中文名称:格子玻尔兹曼法-基础与工程应用(附计算机代码)

英文名:Lattice Boltzmann Method -- Fundamentals and Engineering Applications with Computer Codes

这本书的一个优点是书后有相关案例对应Fortran代码可以参考,可以节省很多时间可以节省很多时间,而不需要自己思考。但与此同时,我不得不说,这本书的代码中仍然存在一些问题。由于作者的能力仍然有限,无法完全识别相关代码的正确性,因此暂时不整理相关的错误点。

以下是前一阶段的进度分类和后一阶段的计划:熟悉基础理论和简单模型

读懂书后的Fortran并修改代码Python(扩散、对流-扩散、等温不可压缩、非等温不可压缩)基本上每章都有1-2个完整的案例,但与书中的结果有一定的差距。一般来说,它是成功的。估计细节要仔细考虑比较。

数据可视化处理(Tecplot,真的很累,学习资料不多)

Python代码加速(开始写完)python代码很慢,几乎崩溃,可能是因为python它是一种解释性语言,如C是一种编译语言,在计算速度上差距太大。幸运的是,它现在已经解决了,这也是本文需要详细说明的地方)

可视化动画的生成仍然依赖于计算过程Tecplot)

----------------------------------(TODAY)----------------------------------

说说之前计划安排的原因。1. 首先,我之前说过,我的优势在于编程。接触新领域需要先建立自信,所以一定要从我擅长的地方入手。2.其次,我不熟悉数值传热。如果计算效率不高,后期计算模型的测试肯定会减缓整体学习节奏,所以首先要提高计算速度。3. 计算过程生成可视化动画也是我的想法。对于一些较长的计算过程,很可能在计算开始时是错误的,如果每次都等待完全计算知道程序问题往往太晚,所以如果你可以迭代1万次在操作大程序之前看到视觉过程,而不是一堆密集的数据将有很大的帮助学习。

----------------------------------(FUTURE)----------------------------------

将面向过程型程序改为面向对象(制作自己的模型库,方便扩展)

实现书中的案例(包括正确性分析和不同代码之间的比较)

代码再加速(优化算法和并行计算)

补充数值传热知识点(一切准备就绪,理论知识开始丰富)

然后开始敲重点!!!怎么给!python代码提速

使用第三方的东西叫做pypy,这是一种使用Just In Time 即JIT技术解释器。使用相同的代码pypy执行和普通python执行时的差距在10-100倍左右(因为我当时看到了)pypy速度太快了,没有统计到底有多快。但敲重点!实验室师兄师姐们用的matplab当同一算例格子数和迭代次数相同时pypy执行时间是matlab十分之一(我没有亲自写程序验证,口头确认是同一个案例)很吸引人。

科技是一把双刃剑,又快又快,但也有一些问题。由于pypy可能刚出现所以对于一些包还不是很支持。例如,在第一次使用时,使用numpy库会导致速度下降,所以我基本上把一切都放在一边numpy所有代码都被替换了。第二个缺点是我想在计算过程中实时生成图像,但我发现了pypy不能pip matplotlib这个包(支持哪些库官网可以找到)只能想另一种方法来解决问题。但现在,速度是第一生产力。除非我有更好的方法,否则我不应该在短期内放弃使用pypy。

标签: lb32lbm船舱液位传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台