Python引领CFD学习之旅:初级理论系列开篇

1 模块简介

CFD Python,也就是12 steps to Navier-Stokes,是一个学习计算流体动力学基础的实用模块,通过编制计算机程序求解描述流体流动物理的基本偏微分方程。该模块是波士顿大学机械工程系Lorena Barba教授2009年至2013年期间所教授课程的一部分(Barba教授后来搬到乔治华盛顿大学)。

该模块假设学习者只有基本的编程知识(任何语言)和一些偏微分方程和流体力学的背景。

这些“步骤”的灵感来自于里约热内卢Yokota博士的想法,他在Barba教授的实验室做博士后研究,直到2011年,Barba教授和她的学生在CFD课程的几个学期中对课程进行了改进。2013年,我们编写了这套Jupyter笔记本,在阿根廷门多萨教授为期两天的密集课程。

通过这些步骤(不跳过任何步骤!)指导学生,他们学习了许多有价值的课程。练习的渐进性意味着他们在每次作业结束时都能获得成就感,而且他们觉得自己学习起来很轻松。随着他们的进步,他们自然地练习代码重用,并且逐渐地学习编程和绘图技术。当他们分析结果时,他们能够了解数值扩散、精度和收敛性。在大约4周的定期课程中,他们会成为中等熟练的程序员,并有动力开始讨论更多的理论问题。

2 摘要

CFD Python学习模块是一组Jupyter笔记本,由12个核心课程、3个额外课程以及一个Python数值计算的简短介绍课程组成。

该课程模块通过12个步骤来介绍CFD程序设计,在课程结束时,利用有限差分法编程求解二维Navier-Stokes方程。

这些步骤包括:

步骤1-4为一维:(I)具有阶跃函数初始条件(IC)和适当边界条件(BC)的线性对流;具有相同的IC/BC的及具有锯齿IC和周期BC的:(II)非线性对流,(III)仅扩散;(IV)Burgers方程。

步骤5-10为二维:(V)具有平方函数IC和适当BC的线性对流;相同的IC/BC的:(VI)非线性对流,(VII)仅扩散;(VIII)Burgers方程;(IX)具有零IC和Neumann和Dirichlet BC的Laplace方程;(X)二维Poisson方程。

步骤11-12在2D中求解Navier-Stokes方程:(Xi)空腔流动;(Xii)沟道流动.

指导学生完成这些步骤(不跳过任何步骤),他们学到了许多有价值的课程。

练习的递增性意味着他们在每次作业结束时都会有成就感。随着他们的进步,他们自然地练习代码重用,并逐渐学习编程和绘图技术。当他们分析计算结果时,能够了解数值扩散,准确性和收敛性的概念。大约经过四个星期后,他们能够成为中等水平的程序员,并有动力开始讨论更深层次的理论问题。

3 说明

许多大学课程的计算流体力学(CFD)遵循类似的顺序的主题。正如各种教科书所反映的那样,这门课程通常从插值开始,接着是常微分方程的数值积分,然后是关于偏微分方程的标准材料。学生们在学习过程中遇到了稳定性理论、收敛性理论和数值扩散理论,但他们往往没有获得太多的编程经验。

本学习单元强调实践经验。编程可以表示流体行为的基本数学模型的解。它独特的方法是以一步的方式让初学者完成一个相当复杂的数值问题的解:利用有限差分离散求解二维腔流Navier-Stokes方程。

12 steps to Navier-Stokes课程已经证明是有效的。他们连续四年在课堂上被用作大学课程的一部分(波士顿大学,2009年至2013年),指导几十名学生开发他们的Navier-Stokes解决方案。该模块是作为一套jupyter笔记本编写的。

该模块是完整的,可以很容易地被其他希望使用实用方法教授CFD的教官采用。教师可以通过简短的演示、课堂讨论和阅读来补充课程。例如,在前两个步骤中,学生实验了不同的参数值后,由于数值不稳定,当解发生爆炸时,他们会遇到一些情况。当他们对这种行为感到困惑时,教师可以使用关于Courant-Friedrichs-Lewy(CFL)稳定性标准的“额外”课程,并以关于一致性、稳定性和收敛性的简短讲座作为补充。

我们知道,世界各地的教师已经采纳了这些教训:他们中的许多人写信给我们表达感激之情(或提出改进建议)。该模块于2015年由一名志愿者(Fran Navarro)翻译成了西班牙文,另一个用户(Manuel Ramsaier)用Matlab版本制作了视频,新加坡的一位教授(克劳斯-迪特尔·奥尔)将这些课程纳入了他的CFD课程。巴尔巴离开波士顿大学后,接过CFD课程的讲师继续使用该模块。她写道:“这12个步骤对于构建学生的计算工具箱、建立她对数值方法的理解以及为验证完整的CFD模拟提供一些基准解决方案都是很棒的。我在每年的研究生CFD课程的开始几个星期使用这12个步骤,为他们进一步分析和使用现有的CFD工具奠定了良好的基础。“(Sheryl Grace教授,2018)

在类似CFD-Online网站上的帖子中,也经常提到这些经验教训。模块的一部分被翻译成使用Devito包(一种基于SymPy的有限差分代码生成工具),并作为它们的一部分教程。可以在网上找到将这些课程翻译成其他编程语言的各种译文。

4 教学设计的几点注记

根据作者在开发“cfd Python”学习模块和遵循类似方法的其他模块后的经验,我们采用了以下基本设计模式来创建课程:

  • 把它分解成小的步骤
  • 将小步骤分成更多的步骤
  • 增加叙述和连接
  • 链接到文档
  • 充满挑战的问题/任务
  • 公开在线发布

注:本系列教程来自国外一个使用Python进行CFD初级理论学习的项目

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空