25年夏季零基础CFD课程/免费代码
是的,学CFD就像找人理发。一样的脑袋,每个理发师剪出来的效果不一样。高级的理发师,脑袋看的多,知道适合什么样的发型。初级的理发师,只能剪短,最后变成一个鸭蛋。
所有的CFD老师都是Tony,有人学了3年开讲,有人搞了20年也在讲。Tony功力浅的,讲的拓展性不好无法贯通。Tony功力深的,学完之后你会感觉左右逢源、打开命脉。 CFD很难,甚至让人意识到什么是CFD领域的左右逢源融会贯通,都需要一定的功力。
有关岳子的CFD课,I have a lot to say.
这个课做了15次,岳子每次都是用心准备,不吃老本。每次都更新最新得算法编程内容。年年出新。且顺应新形势。前几年做课程的时候,我自己还想,何德何能去教别人。在最近几年,我觉得岳子就值这个价。因为我明显感觉自己CFD功力的长进,我的CFD项目可以卖到7位数。我达到了教别人CFD的层次。
有干货是最低等级的描述。不是我追求的目标。我这个课线下的强度非常高,你需要自己去写代码。写不出来可以问我。在编程的过程中,所有代码问题我都手到擒来给你们处理。咱这面的编程是真编程。不是口头说说,忽悠忽悠拉倒。你不需要担心没有干货,你要做好干翻大脑CPU的准备。
这面所有的课程资料,都是我自己设计。《无痛苦ns方程笔记》我写了300多页,还在一直更新着。有很多人做CFD有一阵子了,一直都在看我写的资料,但是从来没线下体验过一起推方程、一些编程的畅快淋漓,CFD不仅仅是应用,CFD算法和编程更有意思。诗酒趁年华!
LCO课程我直接自己负责,我自己给自己干活,不存在给别人干活,糊弄糊弄的情况。这个课我有很多要说,就像CFD算法一样,没有2天根本说不完。但我到此为止,LCO课程,是你整个CFD的生涯中,最高强度的线下编程盛宴。
LCO课程不养闲人
岳子的零基础CFD课程名字为Lets Code OpenFOAM (LCO)。从2023年起,每次课程变化非常大。LCO主要面向零基础,帮助你想在短期强力集训,迅速拔高CFD水平,想植入算法的人。
线下CFD算法编程课,是真正的CFD高端局! 在线下,所有人在教室里一起干OpenFOAM,这是一个强制集中学习的一个环境。编程不会了,我还能随时解答你。去哪都找不到这个氛围。LCO课程 不养闲人! 不管你如何零基础,你都要在现场跟我一起写代码,这就是带你磨破皮的过程!不破茧,不成蝶。不要跟我要代码,请自己写代码。写不出来你可以问啊!
在我这个课,如果你不亲自写代码,等于钱白花了。
2025年9月 北京 LCO算法编程课 |
|
---|---|
日期 |
9月22日-26日、地点北京,全程5天 |
时间 |
|
经典CFD |
CFD算法+编程,低至6699元,单人7999元 |
数驱CFD |
libtorch+数驱CFD,1500元/人,无折扣 ,仅限参加过的学员报名 |
全部参加 |
低至7199元,单人8499元 |
2人团报有优惠,5人(含)以上团报有单独的优惠
上述最低价格为4人团报且早鸟(7月11日之前报名)
报名免费送OpenFOAM线上应用,课程安排在7月底(看情况)和9月中旬(肯定有),2-3个下午,如果熟悉CFD应用可以不参加
优惠政策请咨询我助理,报名可以直接扫码加我助理微信 (或添加:A17302302839,或短信/电话17302302839,或邮箱lilly@dyfluid.com),报名截止至9月5日。

举办时间 |
课程历年有大量的变化 |
---|---|
17-18 |
OF4,应用70%算法25%编程5%。全程靠看、效果不好 |
18-21 |
OF6,应用60%↓算法25%编程15%↑。首次手推方程、demo式编程(实操基本没有) |
21-22 |
OF9,应用60%算法25%。疫情原因线下编程课停办 |
22-23 |
OF10,应用50%↓算法25%编程25%↑。首次让学生自己编程 |
23-24 |
OF10,应用30%↓算法35%↑编程35%↑。增加数驱CFD、学生全程自己编程 |
24-25 |
OF12+10,应用20%↓算法35%编程45%↑。适配OF12、增加课程总天数 |
最新一期 |
算法与编程增加一些新的程序,数据驱动CFD部分线上、部分线下 |
CFD算法库/免费代码
Warning
从2025年9月开始,每一次的LCO零基础CFD算法编程课,将会从下面的CFD算法文章库中进行筛选,并在课堂上现场介绍并植入。
下面标注号✰的算法,拍脑袋来讲,对于一个普通博士生来说(CFD从业4-5年),植入需要2个月左右,大概率可能3-4个月也不能收敛。对于一个博士后来说(CFD从业6-7年),植入且收敛需要最少2-3周左右。如果不收敛,CFD博士后能力不达标。对于CFD初学者,从开始学习到植入成功,应该按年计。
岳子的算法编程课,就是让你在 5天 时间里面,把算法梳理清楚,同时进行植入。还不是一个求解器,是多个算法!
Note
LCO零基础CFD算法编程课不会介绍类似这种的课程要点:volScalarField的使用,geometricField的使用,Time类型,静态函数虚拟化函数,库文件结构…等。这不是我的风格。
植入算法不是目的,目的是当做范例,通过植入一些有意思的算法,你自然而然会学到相应的编程技巧。
音速与低速流全域求解器✰
OpenFOAM中现存的速度压力耦合算法主要是SIMPLE/PISO系列。历史上还存在各种变种。CFD算法编程课有一个必讲内容就是植入瞬态投影法、植入超音速求解器。这些是每次的基本内容。如果进一步向可压缩领域,OpenFOAM同样可以用来求解气动噪声。在一些情况下,声场中的压力可以看做一种小扰动。反过来,对于流体存在一种弱可压缩的连续介质,其中密度与压力的关系是线性变化的。在这种情况下,气动噪声的模拟不需要考虑温度方程,弱可压缩流体的模拟也不需要考虑温度方程,但同样也可以预测压力波的传递。该算法的强项在于其不仅可以预测通过音速传递的压力波,还可以预测低速流场结构。该算法主要调用的模型为 以及正压法则:
其中\(c\)表示音速。将该方程在OpenFOAM中植入看起来是有意思的并且可以帮助理解速度压力耦合的策略。该算法可以模拟音速传播的声场,且同时可以模拟低速流。注意:该求解器存在两个特征时间,一个是音速传输特征时间尺度,一个是流场的特征时间尺度。

上图中是模拟的声场传播,左侧为无反射边界条件,很明显在第4个图中压力很好的传输出去。下图是用同样的求解器模拟的pitzDaily测试算例的低速流(速度10米每秒)密度场。在该求解器中如果添加噪声源(也可以人工通过setFields进行添加一次性的初始声源),可以很简单的求解低速流场中的气动噪声。

大统一的流体固体控制方程✰
目前的流固耦合问题,都是在流体域求解NS方程,固体计算域求解固体方程。两套网格、两套PDE,在边界处进行耦合求解。如果能将流体与固体的控制方程写成大统一的形式,是否可以在一套网格上同时进行流固耦合的求解?在2020年刊发在JCP的一篇文章中[YK20],开创性的将流体固体处理成大统一的控制方程,这样只需要求解一套速度方程,就可以同时获得流体计算域的速度,固体计算域的位移。理论上,针对线弹性固体,存在线弹性控制方程以及边界条件:
问题是如何将其写成速度方程?固体方程不存在压力怎么办?如何考虑流体固体大统一模型的边界条件?另外,固体线弹性PDE的收敛性非常差,如何保证大统一模型的收敛性?提示,相关的方程植入可以参考CFD: 线弹性方程。其实在OpenFOAM中,存在原生的求解\(\bfD\)的方程。但目的是将其修改成速度的方程,并且进一步的处理成大统一的速度压力方程。

如何保证高时间精度同时加快计算效率?✰
该相关算法爆了大量JCP[AF20, ATF23, KS23, KSS21, LM91]。或者说该方面研究已经可以单分一块。不可压NS方程求解最耗费时间的是压力方程。常规有限体积法求解充其量获得的是空间二阶、时间一阶的瞬态结果。龙格库塔(RK)时间步推进可以获得关于时间的高精度结果。大名鼎鼎的Moin以及Le看起来最早做了相关的尝试并发表在1991年的JCP上[LM91],全文非常短,引用文献只有6个。单多步的RK推进需要求解更多的压力方程导致效率低下。一些文章力图实现的就是在多步RK推进下,仅仅推进一次压力方程来增加计算速度[AF20]。在OpenFOAM中植入RK算法并提升计算效率,看起来非常简单并且可以用于各种不同的工况验证(多篇sci就这样水出来了)。
在练手阶段,植入瞬态投影法、稳态SIMPLE算法、普适性密度基可压缩算法是比较合适的。通过这些经典算法,你会透彻的了解NS方程速度压力耦合求解的思想。侧重算法的理解与编程。此部分内容是编程课的热身内容。3个求解器都是先从算法讲解开始,然后手搓求解器。另外,下图中红圈处会发现震荡。课堂上需要通过算法处理这个问题。

什么样的数值格式是动能守恒的?✰
考虑\(\frac{\p\frac{\phi^2}{2}}{\p t}\),有:
将\(\frac{\p\rho\phi}{\p t}\)写为\(-\mathcal{C}\),如果\(\frac{\p\rho\phi}{\p t}=-\mathcal{C}=-\nabla\cdot(\rho\phi\bfU)\)是成立的,同时定义中间变量\(\mathcal{M}\):\(\frac{\p\rho}{\p t}=\mathcal{M}=-\nabla\cdot(\rho\bfU)\),上式可以写为:
也即
这表明了如果\(\mathcal{C}\)和\(\mathcal{M}\)具有满足散度形式的方程,那么对于二次变量\(\phi^2\)也存在一个散度形式的守恒方程。这通常意味着整个系统是能量守恒的(\(\bfU^2\)能量相关)。相关的恒等关系在Coppola等发表在JCP的文章中被认为是二次变量恒等式[CCPdL19]。对于NS方程系统,所有的对流项都可以被认为是满足二次变量恒等(能量守恒)。但粘性项以及压力梯度项会导致能量的耗散。问题是,二次变量恒等在推导过程中,使用了散度的链条法则,这对于连续形式是没有问题的,但是在离散过程中并不适用。因此,对流项离散后往往不能保证二次变量恒等(能量守恒)。同样的,对于\(\mathcal{C}\)同样也具有不同的形式,例如其可以写为\(\nabla\cdot(\rho\phi\bfU)\),也可以写成\(\phi\nabla\cdot(\rho\bfU)+\rho\bfU\cdot\nabla\phi\)。这里面牵涉的概念是使用什么样的变量形式去进行离散求解。Coppola等的文章中的公式7-11将其写成5种形式[CCPdL19],并推导出满足能量守恒的系数法则。在后人的工作中被称之为动能守恒类方法(KEP)。Michele等在KEP方法基础之上进行改进,新的方法在2023年发表在JCP上[DMC23]。Ranocha等人在2022年发表文章,标题很有意思:如果你使用基于熵的高阶格式,即使压力不震荡,也不能解决局部不稳定问题[RG21],也是基于该方法,对该方法进行植入并测试看起来是有意思的。
稀疏气固跨音速算法?✰
欧拉方程比较有意思,是因为欧拉方程存在间断。多维的欧拉方程求解存在激波,结果看起来也非常酷炫。在单相欧拉方程的基础上继续考虑颗粒,如果假定颗粒是稀疏的,变构成了跨音速的稀疏气固流动系统。在使用这一套方法用于经典激波管案例时候,变量的型线与单相欧拉方程存在区别[SMT03]:
进一步的考虑方程系统,有:
由于固相颗粒是稀疏的因此并不存在固相的压力。这个看起来很有意思因为稀疏气固激波管的流动型线看起来很特别,值得植入研究一下。
如何用有限体积法求解经典hyperbolic方程✰
Hyperbolic双曲系统包含了单线性双曲方程、线性双曲系统、非线性双曲系统等。CFD大佬Leveque在其引用超过10000次的教材中说到[LeV02]:
The mathematical theory of nonlinear hyperbolic problems is also quite beautiful.
双曲系统最引人入胜的是其可能会存在激波间断。现存的一些方程如Burgers方程、Buckley-Leverett方程都可以用于研究双曲系统的间断解。对于非线性双曲系统,由于特征线的重叠,会形成激波以及稀疏波。针对特征线二阶导数的大小,还有可能会导致激波和稀疏波的叠加。下图中左图是一个真实的波浪表面,其出现经典的三值现象,导致方程不存在经典解。通过引入激波间断,可以求得其弱解。通过间断获得合理的数值解的部分引人入胜,very beautiful。下图中的右图为一个特别简单的Buckley-Leverett方程,如下:
乍一看该方程在OpenFOAM中的植入特别简单,一个简单的标量\(\rho\)的传输方程。但初学CFD植入后的结果大概率不符合解析解,其中的激波速度错误,并且存在一个\(\rho\)的平滑区。正确的代码应该合理的对其进行预测,正确的结果存在一个前端的间断,以及一个稀疏波的组合(如右图)。
尝试写一个高精度、相场法的多相流求解器?✰
多相流的计算方法可以从NS方程进行简单的拓展。最简单的多相流计算方法就是直接模拟,在CFD领域,单相流的直接模拟也简单,因为不需要附加湍流模型。简单的模型的缺点就是比较贵。OpenFOAM目前显存了VOF方法。但植入一个新的方法看起来是有意思的,也比较适合练手。因此通过本算例植入的代码,主要研究1)相场法的思想、2)FVM的高精度格式、3)解的有界性、4)upwind与downwind等。如下图,采用不同的方法来计算zalesak disk的情况下,不同的格式会预测不同的结果。即使使用TVD格式也会产生数值耗散。对于普通的标量数值耗散并没有太大的问题。但某些情况下我们需要非常明晰的界面。这就需要不同的数值方法来处理。算法的难点在于:1)使用高精度算法如何保证有界性?2)如何保证界面的尖锐?3)不会产生一些奇怪的结果(如下图第三个,解的分布有点奇怪) 。
随后,可以尝试句许植入一个两相流耦合求解器,算法主要考虑体积力对速度压力耦合的影响。CFD中的体积力有3种植入方式:1)隐性、2)显性、3)压力方程。可以对比不同的方法预测的结果。下面的结果就是计算出来的多相流不稳定性。经验来看,在入门CFD的过程中,很多人植入的算法都会发生数值震荡。

下面可以进一步的进行拓展。很明显上图的结果是比较耗散的。下一步可以尝试把两相流算法和高精度相场方法相结合,制定一个新的求解器。新的求解器求解后的结果如下图。可以很明显的看出求解的结果非常尖锐!在这个基础上,如果附加上表面张力,既可以形成一个全新的VOF求解器。
隐藏流体力学?
数据驱动CFD里面独树一帜的是PINN。通过PINN来练手看起来是个很好的选择,并且可以用来测试全连接网络、残差神经网络植入、以及新的激活函数等。使用PINN求解cavity flow的代码已经开源。不得不承认的是,PINN作为一个新兴的计算方法,用来计算流场实在是太慢了。因此使用PINN来计算流场,不像是走正常的套路。因此应该尝试将PINN用于正道,也即使用PINN来处理病态问题,用其处理经典CFD方法不能处理的问题,这个应该才是PINN真正的用处。这种应用也即之前刊发在Science正刊上的隐藏流体力学。否则用PINN来硬钢经典FVM,PINN必输无疑,太慢了,基本用不上。本案例的设计理念,就是把PINN用在正道上。在下图中,求解的ODE是未知的,但是PINN成功的发现了未知的ODE,并且数据与解析解完美吻合。

植入一个全新的湍流模型
从NASA收录的湍流模型来看,NASA认为最近10年能打的只有2个湍流模型,一个是2018年提出的代数应力模型k-kl,一个是2015年的Wray-Agarwal。2018年的代数应力模型引用少的可怜,应该是NASA自家的模型,因此被自家收录。因此,最近10年,能打的应该就是Wray-Agarwal湍流模型。把Wray-Agarwal湍流模型进行植入看起来挺有意思。相关的方程如下:
植入数据驱动湍流模型✰
数据驱动湍流模型是目前国际的研究顶流。所有的课题组都对这个蠢蠢欲动。然而其实这是个非常简单的研究领域。如果说在OpenFOAM里面植入MULES算法可能需要一个博士,但植入数据驱动LES模型一个硕士生完全没问题。比如咱们进行的这个算例,采用经典神经网络架构,共训练2000个批次的数据,由于训练量比较小,使用CPU就可以进行训练。但是结果相当好。在下图中,数据驱动LES与经典CFD-LES预测的数据云图一致(局部差异基本可忽略)。在观测时间平均变量时候,结果非常完美。对于比较难预测的雷诺应力相关量,数据驱动LES预测的结果与经典CFD-LES吻合度非常高。类似的文章在2023年,2024年都刊发在了JFM。本算例的结果足以支撑一篇sci的数据。该算例部分代码开源在datadrivenles.md
,该算例是以后LCO课程的教学案例。
数据驱动前沿热点
经典CFD经历了60多年的发展后,同位网格SIMPLE类算法在不可压缩领域统一江湖,可压缩领域通通都是密度基。数据驱动CFD目前的发展状况类似CFD在1970年代的情况,群魔乱舞百家齐放。目前还没有一个大统一的寡头算法出现。目前的态势是每家都有自己的特色,那么在10年后20年后数据驱动CFD,哪个算法会统一江湖目前还不确定。目前这一块研究的特色是杂!尤其在结合各种机器学习的网络后,更杂!但可以简单的进行归类。在《无痛苦NS方程笔记》里面,机器学习与CFD相应的结合点主要分为
流场重组(卷积网络、Unet、解码器、超分辨率、扩散模型与GAN)
求解加速(全连接网络、卷积网络、残差网络等)
数据驱动湍流模型(全连接网络、卷积网络、极限学习机等)
数据驱动多相流
循环神经网络与瞬态流场(循环神经网络、LSTM)
正向逆向PINN、隐藏流体力学
POD、DMD、流场降阶预测方法(不需要神经网络)
强化学习与过程控制
上述内容全部在《无痛苦NS方程笔记》里面有介绍,课堂上也会进一步的进行介绍。
数驱CFD免费代码
最终,在这里放出一些免费的数据驱动CFD的代码。岳子的课程定位是让大家自己在课堂写代码。但还是需要将两类代码免费放出,这些代码都是岳子自己亲自写的(岳子从来不在网上复制代码然后给你们)。这两类代码的特点是:
要么太简单,现场教学没啥意思;
要么太难,现场教学一教一个不吱声;
简单的代码现场教是拼凑内容。复杂的代码现场教大家消化不了。岳子注重教学效果、同时不拼凑教学内容。
参考文献
Abhiram B Aithal and Antonino Ferrante. A fast pressure-correction method for incompressible flows over curved walls. Journal of Computational Physics, 421:109693, 2020.
Abhiram B Aithal, Mira Tipirneni, and Antonino Ferrante. Temporal accuracy of fastrk3. Journal of Computational Physics, 475:111853, 2023.
Gennaro Coppola, Francesco Capuano, Sergio Pirozzoli, and Luigi de Luca. Numerically stable formulations of convective terms for turbulent compressible flows. Journal of Computational Physics, 382:86–104, 2019.
Carlo De Michele and Gennaro Coppola. Asymptotically entropy-conservative and kinetic-energy preserving numerical fluxes for compressible euler equations. Journal of Computational Physics, 492:112439, 2023.
Mokbel Karam and Tony Saad. On the theory of fast projection methods for high-order navier-stokes solvers. Journal of Computational Physics, 495:112557, 2023.
Mokbel Karam, James C Sutherland, and Tony Saad. Low-cost runge-kutta integrators for incompressible flow simulations. Journal of Computational Physics, 443:110518, 2021.
Hung Le and Parviz Moin. An improvement of fractional step methods for the incompressible navier-stokes equations. Journal of computational physics, 92(2):369–379, 1991.
R.J. LeVeque. Finite volume methods for hyperbolic problems. Cambridge university press, 2002.
Hendrik Ranocha and Gregor J Gassner. Preventing pressure oscillations does not fix local linear stability issues of entropy-based split-form high-order schemes. Communications on Applied Mathematics and Computation, pages 1–24, 2021.
Tsutomu Saito, M Marumoto, and K Takayama. Numerical investigations of shock waves in gas-particle mixtures: evaluation of numerical methods for dusty-gas shock wave phenomena. Shock Waves, 13(4):299–322, 2003.
H. Yeo and H. Ki. Unified momentum equation approach for fluid–structure interaction problems involving linear elastic structures. Journal of Computational Physics, 415:109482, 2020.