600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python可以应用lbm_格子玻尔兹曼方法(LBM)python程序提速

python可以应用lbm_格子玻尔兹曼方法(LBM)python程序提速

时间:2024-04-11 18:45:29

相关推荐

python可以应用lbm_格子玻尔兹曼方法(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. 计算过程生成可视化动画这件事也是我得一个想法。对于一些时间比较长的计算过程,很可能在刚开始计算就是错的,如果每次都等完全算完才知道程序的问题往往太晚了,所以运行大程序之前如果能先迭代10000次看看可视化的过程情况而不是一堆密密麻麻的数据会对学习有很大的帮助。

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

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

实现书上的案例(包括正确性分析以及不同代码之间的对比)

代码再提速(优化算法以及并行计算)

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。