我来让你极度自信:

算法课紧跟我的思路,编程课精神紧绷不放松。5天之后,你一定会极度自信,过度膨胀,恨不得手撕JCP的PDE,晚上不睡觉也要写个求解器出来!

杭州第12届CFD课开始报名

  • 针对OpenFOAM零基础,加速你的CFD学习进度,但是需要进行预习;

  • 重算法、轻应用;

  • 激发你一下学习CFD的兴趣,CFD不是鼠标点点点;

第12届OKS课程信息

日期

24年3月25日至29日,周一至周五,不需早起、择情压堂

地点

杭州

内容

30%CFD算法、30%OpenFOAM应用、40%OpenFOAM编程

收费

8000元/人(含发票),可对公

折扣

参考报名表。最低至7000元/人

预习

请务必预习无痛苦NS方程笔记的1、2、3章

发票

可开培训费、会议费、国际交流会议费、测试费、租赁费、材料费等

报名截止日期为24年3月8日,可以先提交报名表,在截止日期之前缴费。 在报名之前,大家可以看一下课程买家秀1课程买家秀2

请点击下载报名表,发送至我助理邮箱 lilly@dyfluid.com 。然后我助理会协助你走流程。在课程报名后,我会跟大家直接邮件联系通知各种培训事宜。

谁适合参加

你们用CFD,嗷嗷嗷一顿操作,是跑起来了。到了写文章分析结果阶段,自己问自己,有没有感觉乏力?到深一点需要从理论做解释的时候,还是懵逼的状态?CFD高端局绝对需要开发算法或者编程,不会算法跟编程绝对混不了CFD高端场?那么我这个课比较适合:

  • 已经觉悟了,已经对CFD算法感兴趣了的人;

  • 自学了一年,还是很懵,下不去手,写代码不自信的人;

  • 用了多年商软,感觉还是很懵逼,不知道后面咋回事,比较好奇的人;

  • 初学OpenFOAM的人,有偏向方程/代码研究的人;

相关问题与内容

Tip

我的CFD课程中的算法课以及编程课每年都有不同点。我的CFD课程年年出新。24年3月份的课程主要玩哪些新奇的玩意,将会在本节持续更新。

Question:传输方程有守恒形式以及非守恒形式,下面的方程被认为是一种守恒形式的方程:

(1)\[\begin{equation}\label{consever} \frac{\p \alpha}{\p t}+\nabla\cdot(\bfU\alpha)=0 \end{equation}\]

请将上述方程改写为非守恒形式。重要的是,什么是通量函数?为什么非守恒形式的方程不具备通量函数?上述守恒方程的通量函数是什么?

Question:我们说现在CFD求解的是NS方程。那么NS方程都说要遵守连续性假设。请结合网格上速度的定义,从数学的角度或者从物理现象的角度来解释为什么NS方程要满足连续性?同样从数学的角度解释在真空情况下,为什么我们不能使用NS方程?对于真空情况,需要使用什么样的方程?

Question:Smagorinsky模型在一些文献里面的公式为

(2)\[\begin{equation}\label{Smagorinsky1} \nu_t=(C_s\Delta)^2\sqrt{2\bfS:\bfS} \end{equation}\]

在OpenFOAM里面植入的为:

(3)\[\begin{equation}\label{Smagorinsky2} \nu_t=C_k\Delta\sqrt{k_{sgs}} \end{equation}\]

第一种方法不需要定义\(k_{sgs}\),那么如何定义\(k_{sgs}\)且如何在OpenFOAM中植入?

Question:在多相流以及涉及到多域耦合求解问题的情况下, 不同的场存在耦合。针对下述方程

(4)\[\begin{equation}\label{PEA1} \begin{split} a^P_1\phi^P_1=\sum a^N_1\phi^N_1+K(\phi^P_2-\phi^P_1) \\ a^P_2\phi^P_2=\sum a^N_2\phi^N_2+K(\phi^P_1-\phi^P_2) \end{split} \end{equation}\]

在系数\(K\)趋向于很大的情况下,方程趋向于

(5)\[\begin{equation}\label{PEA3} \begin{split} K\phi^P_1\approx K\phi^P_2 \\ K\phi^P_2\approx K\phi^P_1 \end{split} \end{equation}\]

进而导致迭代停止。在给出上面两个方程,你需要首先能一眼就看出来这两个方程干嘛用,为什么是耦合的,进而理解为什么会迭代停止,以及如何处理?

Question:在一些PDE方程中,比如下述多相kEpsilon方程:

(6)\[\begin{equation}\label{ke} \frac{\p \alpha k}{\p t} + \nabla\cdot \left( \alpha \bfU k \right) - \nabla\cdot \left( \alpha D_k \nabla k \right) = \alpha G - \frac{2}{3}\alpha (\nabla\cdot\bfU) k - \alpha \frac{\varepsilon }{k} k \end{equation}\]

其存在若干问题。1)为什么最后一项要除掉一个\(k\)同时乘上一个\(k\)?2)\( \frac{2}{3} \alpha (\nabla\cdot\bfU) k\)的作用是什么?如果\(\alpha=0\),会出现方程奇异问题,怎么处理?

Question:都说LES需要滤波,但是怎么没有见LES植入滤波函数,滤波函数在哪里?在哪里?

  • 持续更新中

编程课框架

  • 在OpenFOAM中植入Wray-Agarwal湍流模型。相关模型请参考NASA的链接。需要采用2种方式进行植入,一种为采用库的形式植入,一种为在求解器层面植入。

  • 在单相NS方程基础上,附加相传输方程:

    (7)\[\begin{equation} \frac{\p \alpha}{\p t}+\nabla\cdot(\alpha\bfU)=0 \end{equation}\]
    (8)\[\begin{equation} \frac{\partial \alpha\mathbf{U}}{\partial t}+\nabla \cdot (\alpha\mathbf{U}\mathbf{U}) -\nabla \cdot(\alpha\nu \nabla \mathbf{U}) =-\alpha\nabla \frac{p}{\rho} \end{equation}\]

    你应该推导附加相分数的速度压力耦合求解算法,并在OpenFOAM中植入进去。

  • 植入这个文章中的非牛顿流体模型,这个模型可以很好的处理形变率趋向于0的时候表观粘度趋向于无穷大的数值问题;Ref: Non-Newtonian fluids with a yield stress

  • SpalartAllmaras模型通过将方程中的壁面距离变更为滤波尺度\(\Delta\)相关函数可以实现DES模拟。那么针对另外一个RANS模型如kEpsilon湍流模型,请尝试从湍流尺度的角度将kEpsilon湍流模型与LES模型相结合,实现kEpsilon-DES模拟。请将该模型在OpenFOAM中进行植入并验证。

  • 求解下述方程:

    \[ \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:

  • 持续更新中

算法课框架

这些年来,蜗没有提出太多算法,但是蜗植入了很多算法。一些算法很流弊,也发了顶刊。一些算法不流弊,但是适合练手。考虑到大家的水平,我会挑选一些易于接受的算法给大家讲讲。另一方面,我还会找一些算法类文章,介绍介绍这一类文章的研究思路。不管是以后去业界做算法开发,还是在学校做科研。能看懂算法并且会自己编程,是核心硬实力。

Tip

课程关键词有一些可能会觉得跟自己没什么关系,但是未必!在面上做广的拓展,才能融会贯通,做到大而统一!比如,如果我说NS方程就是矩方法,你们是不是很惊奇?

  • 方程部分:

    • 为什么\(\boldsymbol{\tau}\)在模化的时候要处理成偏应力的形式?看懂各种CFD方程,看懂dev(twoSymm(gradU)),dev2(tau),symm(tau),看懂形变率,剪切应力,Boussinesq近似,交叉扩散项,相变流反应流的数学体现等;

    • 拆解NS方程,拆解Horgue2014算法中的控制方程,拆解Carrillo2019算法中的控制方程;

    • VOF方法、Front-tracking、多流体模型、介尺度欧拉拉格朗日、EMMS;

  • 不可压缩部分:

    • 从NS方程手推RANS方程,手推隐性滤波LES方程,手推动态Smagorinsky方程;

    • \(k-\varepsilon\)模型推导至\(k-\omega\)模型,零方程、一方程、两方程模型,低雷诺数模型;

    • LES的滤波函数在哪里?LES中\(k_{sgs}\)与RANS中的\(k\)的区别?如何进行DNS计算?LES中的\(\boldsymbol{\tau}_{sgs}\)与RANS中的\(\boldsymbol{\tau}_{t}\)的区别是?

  • 可压缩部分:

    • NS方程失效,稀薄气体、CE展开、非平衡流、颗粒轨迹交叉、n阶矩与欧拉方程、气体玻尔兹曼分布、5矩模型、10矩模型;

    • 积分方程离散,为什么解是exact的?limiter,TVD,Minmod,对流项为什么要指定梯度离散格式?变量有界性;

    • Godunov方法,REA方法,高分辨率格式,可压缩黎曼扇,双曲系统;

  • 离散部分:

    • 一重、二重、三重积分,通量的积分形式,连续性方程|动量方程的积分形式以及物理意义,散度定律,源项的存在?为什么有压力项?为什么求解守恒变量?

    • 一阶、二阶导数,有限差分、有限体积,DNS直接模拟,时间项、对流项、扩散性、源项离散,常微分ODE、刚性反应流,无条件不稳定?局部Lax以及全局Lax方法;

    • skewness与非正交网格,面法向梯度非正交修正;

    • 稀疏线性系统,Partition方法与并行加速,renumberMesh,高斯赛德尔,正向Sweep以及对称Sweep,场松弛与方程松弛,PBiCG以及PBiCGStab,流动方向对收敛的影响?谱半径;

  • 算法部分:

    • 手推不可压缩投影法;压力泊松方程、压力修正方程;

    • 手推不可压缩SIMPLE算法;手推可压缩密度基方法;

    • 如何处理附加的体积力?如何离散VOF方程?各种模型的速度压力离散框架统一性?

  • OpenFOAM部分:

    • 边界条件;初始条件;SIMPLE、PISO、PIMPLE;可压缩流算法,浮力驱动流,多相流算法,动网格算法;

    • fvScheme详解、fvSolution详解;

  • 持续更新中