注意:
OpenFOAM-11在2023年7月11号推出,代码进行了大量的改变,彻底的模块化。由于推出时间太短,本次课程仅仅进行小幅度适配。主要还是介绍OpenFOAM-10. 同时简要介绍OpenFOAM-11的使用方法。
CFD课,报名开始
本次课程定位:
加速你的CFD学习进度,针对OpenFOAM零基础,但是需要进行预习;
重算法、轻应用;
激发你一下学习CFD的兴趣,CFD不是鼠标点点点;
第11届OKS课程信息 |
|
---|---|
日期 |
2023年9月25-29日,不需早起、择情压堂! |
地点 |
北京 |
内容 |
CFD算法(30%)+OpenFOAM应用(40%)+OpenFOAM编程(30%) |
收费 |
8000元/人(含增值税电子发票),可对公转账 |
折扣 |
参考报名表。最低至6500元/人 |
人员 |
本次报名的人(全程) + 第9、10届报名的人(编程部分,28-29号) |
预习 |
请务必预习无痛苦NS方程笔记的1、2、3章 |
发票 |
可开培训费、会议费、国际交流会议费、测试费、租赁费、材料费等 |
报名截止日期:2023年9月13日 ,可以先提交报名表,在截止日期之前缴费。
请点击下载报名表,直接发给我助理 nabla@dyfluid.com,然后我助理会协助你走流程。
在报名之前,大家可以看一下课程买家秀1,课程买家秀2。这是之前上课大家亲笔写的。2022年的线上课程评价缺失。都将在这次线下补齐。
谁适合参加
你们用CFD,嗷嗷嗷一顿操作,是跑起来了。到了写文章分析结果阶段,自己问自己,有没有感觉乏力?到深一点需要从理论做解释的时候,还是懵逼的状态?高端一点的CFD都需要开发算法或者编程,感觉好像这个活干不了,但是还想挣高端CFD的钱?那么我这个课比较适合:
对CFD算法感兴趣的人;
用了多年商软,感觉还是很懵逼,不知道后面咋回事,比较好奇的人;
初学OpenFOAM的人,有偏向方程/代码研究的人;
算法课框架
这些年来,蜗没有提出太多算法,但是蜗植入了很多算法。一些算法很流弊,也发了顶刊。一些算法不流弊,但是适合练手。考虑到大家的水平,我会挑选一些易于接受的算法给大家讲讲。另一方面,我还会找一些算法类文章,介绍介绍这一类文章的研究思路。不管是以后去业界做算法开发,还是在学校做科研。能看懂算法并且会自己编程,是核心硬实力。
Tip
课程关键词有一些可能会觉得跟自己没什么关系,但是未必!在面上做广的拓展,才能融会贯通,做到大而统一!比如,如果我说NS方程就是矩方法,你们是不是很惊奇?
控制方程部分:
看懂各种CFD方程,看懂\(\tau\),dev(twoSymm(gradU)),dev2(tau),symm(tau),看懂形变率,剪切应力,Boussinesq近似,交叉扩散项,相变流反应流的数学体现等;
拆解NS方程,拆解Horgue2014算法中的控制方程,拆解Carrillo2019算法中的控制方程;
从\(k-\varepsilon\)模型推导至\(k-\omega\)模型,从NS方程手推RANS方程,从NS方程手推LES方程;零方程、一方程、两方程模型,Smagorinsky模型,低雷诺数模型;
VOF方法、Front-tracking、多流体模型、介尺度欧拉拉格朗日、EMMS;
NS方程失效,稀薄气体、CE展开、非平衡流、颗粒轨迹交叉、n阶矩与欧拉方程、气体玻尔兹曼分布、5矩模型、10矩模型;
离散部分:
一重、二重、三重积分,通量的积分形式,连续性方程|动量方程的积分形式以及物理意义,散度定律,源项的存在?为什么有压力项?为什么求解守恒变量?
一阶、二阶导数,有限差分、有限体积,DNS直接模拟,时间项、对流项、扩散性、源项离散,常微分ODE、刚性反应流,无条件不稳定?局部Lax以及全局Lax方法;
积分方程离散,为什么解是exact的?limiter,TVD,Minmod,对流项为什么要指定梯度离散格式?变量有界性;
Godunov方法,REA方法,高分辨率格式,可压缩黎曼扇,双曲系统;
skewness与非正交网格,面法向梯度非正交修正;
稀疏线性系统,Partition方法与并行加速,renumberMesh,高斯赛德尔,正向Sweep以及对称Sweep,场松弛与方程松弛,PBiCG以及PBiCGStab,流动方向对收敛的影响?谱半径;
算法部分:
手推不可压缩投影法;压力泊松方程、压力修正方程;
手推不可压缩SIMPLE算法;手推可压缩密度基方法;
如何处理附加的体积力?如何离散VOF方程?各种模型的速度压力离散框架统一性?
OpenFOAM部分:
边界条件;初始条件;SIMPLE、PISO、PIMPLE;可压缩流算法,浮力驱动流,多相流算法,动网格算法;
fvScheme详解、fvSolution详解;
编程课框架
编程课我们首先是看代码。书读百遍其义自见。不先看代码,直接上手写,这是在开玩笑。所以我要带你们看代码,如何看代码,怎么看代码,看什么代码。我们要干这个事。
看完了代码要看算法,不看算法,直接写代码,这也是开玩笑。所以我要带你们看算法,看sci,如何理解sci里面的算法,怎么看sci,怎么扒算法。
做了基本的铺垫之后,上手写代码。我们要一行一行自己写。复制粘贴可以搞,但是也要自己写。编程课不自己写代码,那更是开玩笑,对不起编程课这3个字的意义。
因为CFD应用课high点比较低,也没什么挑战性,就没往外写目录。然而我在这里会陆续更新一些编程课程的内容。蜗强调:具体什么算法不重要,重要的是要拿几个算法当例子来练手。蜗带大家植入多相流算法,对做地震模拟的同学同样具有意义。学习的尽头是举一反三,大家都要有这个能力。
Tip
作为讲课老师要做的,就是如何1)把内容做的有深度,2)同时让大家吸收。太难的东西大家吸收不了不行。太简单的东西也不行。这是我要在课程设计阶段要干的事情。
求解下述方程:
\[ \nabla\cdot\left(\frac{K}{\mu}(\nabla p -\rho\bfg) \right)=0 \]\[ \bfU=\frac{K}{\mu}(\nabla p -\rho\bfg) \]在无重力的情况下变为:
\[ \nabla\cdot\left(\frac{K}{\mu}\nabla p \right)=0 \]\[ \bfU=\frac{K}{\mu}\nabla p \]上述方程非常简单,先从无重力方程开始植入,然后把重力的影响植入进去。编程是一方面,算法也需要思考一下。这个重力\(\bfg\)在散度符号内,所以是植入\(\nabla\cdot\rho\bfg\)就可以了么?\(\nabla\cdot\rho\bfg\)是个什么项?好像没见过这么植入的。那要怎么植入?另外重力对不可压缩流体的影响,如何在结果上体现?
另外就是压力方程边界条件的问题,如果给定零法向梯度,会出现不相容问题,如何处理?
植入密度基速度压力耦合算法,计算超音速流动:
\[ \frac{\p\rho}{\p t}+\nabla\cdot\rho\bfU=0 \]\[ \frac{\p\rho\bfU}{\p t}+\nabla \cdot (\rho\mathbf{U} \mathbf{U})=-\nabla p \]\[ \frac{\p \rho e}{\p t}+\nabla\cdot(\rho \bfU e) -\nabla\cdot(\alpha_{eff}\nabla e)+\nabla\cdot(p\bfU) =0 \]问题是上述方程应该显性离散还是隐性离散?求解守恒变量还是原始变量?用什么离散格式?
通过投影法对下述方程进行离散,并计算基本的流动;
\[ \nabla\cdot\bfU=0 \]\[ \frac{\partial \mathbf{U}}{\partial t}+\nabla \cdot (\mathbf{U}\mathbf{U})=-\nabla \frac{p}{\rho}+\nabla \cdot(\nu \nabla \mathbf{U}) \]植入一个多计算域求解器,一部分求解海绵多孔区域,一部分求解正常的流体流动。流固耦合也是类似思想。多计算域求解器全部都是这个思路,植入的算法思路框架如下:
如果求解器不做多计算域划分。那么就属于一种Zonal模型,类似DES模型,在边界层处求解RANS模型,在核心区求解LES模型。
将OpenFOAM老版本的求解器,移植到OpenFOAM-10;这是一场常规操作,在编译的过程中会出现几十个error,都需要一步一步处理掉。这样大家在网上找到一些老的求解器,可以移植到新版的OpenFOAM上。
写一个可以模拟泥沙两相流的求解器,这是一个两相流求解器,参考的文章为Nasr-Azadani et al, “TURBINS: an immersed boundary, Navier–Stokes code for the simulation of gravity and turbidity currents interacting with complex topographies.” Computers & Fluids。采用该求解器可以计算下图的不稳定性。大家在课堂上要自己1)搞清楚方程,2)植入算法,3)写代码,4)做算例出结果
不过写出来的求解器算出来的结果大概率是这样的,看起来震荡了,咋办?这可不是简单更改离散格式就能处理掉的。
经过数值处理后的结果应该是这样的,这个要在课堂上一起debug:
自己植入一个造波的边界条件,同时植入一个无反射的边界条件,要不然出口的波会往回走,如下图第一行是无反射的,第二行很明显的有反射波
在这个算例里面,我们测试各种湍流模型预测的壁面\(y^+\),但是发现LaunderSharma模型预测的总是不对,并且高度依赖于网格,网格变大变小都会导致结果不一样,但这并不是模型本身的问题,并且RANS模型应该与网格是无关的。这需要怎么处理?到底哪里出了问题?
植入一些项,来模拟地转风。地转风是一种科氏力和气压梯度力巧妙平衡下产生的一种风。地转风的方向和等压线平行。相关的方程主要是
\[ \frac{\p\bfU}{\p t}+...=\mathbf{F}\times\bfU+... \]深入扒一下这两个方程的算法。这两个方程从多相渗透率方程而来,是一套强非线性方程,那我们要采用牛顿迭代法求解么?No,我们要采用压力隐性离散、速度显性离散的方法进行计算。参考文献:Horgue et al. “An open-source toolbox for multiphase flow in porous media.” Computer Physics Communications 187 (2015): 217-226