Code of the Week #1: div(phi,U)

我们现在讨论一下这一行程序

fvm::div(phi, U);

这个经常出现在动量方程,表示左边第二项 $$ \frac{\partial U}{\partial t} + \nabla\cdot(UU) = -\nabla p + \nabla\cdot\tau $$

为了求解这个方程,需要经过一些推导,并对 $p$ 和 $U$ 进行解耦。但是,今天我们暂时不要讨论如何对解耦 $p$ 和 $U$。只讨论一下如何把 $\nabla\cdot(UU)$ 变成可进行计算的一小段程序。

实际上,动量方程是一个非线性的方程,但是直接求解这样一个非线性的方程,是很困难的。

因此,我们考虑将其中一个 $U$ 当成已知的 $U^* $,则 $$ \nabla\cdot(UU) = \nabla\cdot(U^* U) $$

利用 paraview 查找网格位置

在 CFD 计算中,生成网格难免会出现一些问题。 利用 OpenFOAM 中的 checkMesh 工具,可以提供一些信息, 但仍不具体。

如下是 checkMesh 的部分输出结果,可以看出有 4 个网格出现零/负体积, 还有开放网格,非正交网格。

foam-extend 社区版本的来历

很多人都有关于 OpenFOAM 及其分支版本的问题,其中有两个版本是 OpenFOAM 和 foam-extend。 在ExtendProjectPreamble 中有关于 foam-extend 社区版本来历的说明。 Henry Weller 和 Hrvoje Jasak 之间的一些通信记录显示了 OpenFOAM 版本之间的分歧。 现将其中的部分通信翻译如下,让大家了解一下 FOAM 的前世今生。


09/30/2004 01:45 PM

Dear Dr. Jasak,

我建议将 FOAM 开源并关闭 Nabla 公司,这样的话,我们都可以自由地追求我们各个希望的未来(译注:FOAM 的未来)。

Henry G. Weller
Managing Director
Nabla Ltd

controlDict 解析

controlDict 是 OpenFOAM 使用中控制计算步长、写数据频率等重要的文件。

OpenFOAM 并行计算

现在,大多数研究生使用的工作电脑或笔记本都是多核多线程的 CPU,在 OpenFOAM 中使用并行计算也非常方便。

Step 1: 拷贝一个网格分割文件到你的工作文件夹:

$ cp $FOAMRUN/tutorials/multiphase/interFoam/laminar/damBreak/system/decomposeParDict ./system/

Step 2: 根据你的 CPU 和网格的情况进行分割,需要留出一部分 CPU 资源进行系统处理或其他工作。各区块网格数尽量平均化。

blockMesh 彩蛋 -- 指定网格集合(块)

在 OpenFOAM 的运用中,时常会使用 cellSet,faceSet 等来操作网格。在网格生成后往往有诸多不变,特别是当网格的复杂度增加时,不一定能准确锁定需要操作的网格。

如果是用 blockMesh 来生成网格,则可用在 blocks(); 内直接指定 set 的名称。如:

blocks
(
    hex ( 0 1 2 3 4 5 6 7 ) set1 ( 10 20 1) simpleGrading ( 1 1 1 )
    hex ( 4 5 6 7 8 9 10 11 ) set1 ( 10 10 1) simpleGrading ( 1 1 1 )
);

表示以 0,1,2,3,4,5,6,7 为顶点,生成 10x20x1 的网格,其集合的名字为 set1;以 4,5,6,7,8,9,10,11 为顶点,生成 10x10x1 的网格,并合到上一个 set1 的集合中。 因此,set1 有 300 个网格。

Kuchemann 的故事

Kuchemann,一看这名字就知道是德国人,全名 Dietrich Küchemann。1930 年,19 岁的他进入了当时世界上最 NB 的大学 Goettingen 大学。起初,他不是学流体的,而是理论物理的,他的导师就是大牛 M. Born。如果希特勒不上台,也许他会沿着理论物理学的道路走下去。然而 1933 年希特勒上台,推行歧视犹太人政策改变了这一切,Goettingen 大学里面同犹太人沾亲带故的人纷纷远走他乡,这也包括了 Born。为此,Kuchemann 郁闷坏了,因为他找不到一个他看得上眼的大师级的导师。于是他翻开 G 大的研究生招生手册,翻来翻去,终于找到了一个没有走的大牛——近代流体力学大师 Prandtl。于是他就拜 Prandtl 为师,改学空气动力学起来。在 Prandtl 和 Tollmien(发现 T-S 波的那个大牛)的指导下,25岁就获得了博士学位。

欧一直怀疑Kuchemann是个种族主义者,即使不是,也肯定是欧洲至上主义者。这家伙特别瞧不起美国这个暴发户。二战后随着美国的崛起和欧洲的衰落,欧洲科学家纷纷踏上移民美国的之路,美国屡次三番的邀请他去,他就是不去,他说他是欧洲人,他要呆在欧洲,于是他宁可去了英国,也不去美国。他在英国一直呆到1976年去世。

blockMeshDict 文件解析及格式

blockMeshDict 文件是 OpenFOAM 生成网格的方法之一 blockMesh 所需要使用的配置文件,位于 constant/polyMesh/。 以 cavity 为例,其基本结构如下:

von Neumann的故事

von Neumann是天才里面的天才。据说他6岁能心算8位数除法,8岁时已掌握了微积分,12岁时能读波莱尔的著作《函数论》……。

有一次,冯·诺伊曼对他的朋友说:"我能背诵《双城记》"。人家就挑了几章作试验,果然他-一背诵如流。他对于圆周率π的小数位数,自然对数的底e的数值以及多位数的平方数和立方数……

Batchelor 的故事

Batchelor 是GI Taylor之后,剑桥学派的领袖。不过他其实并不是英国人,而是澳大利亚人。他从小在墨尔本长大。第二次世界大战其间,在从事了一个航空相关的课题研究中,他对湍流研究产生了浓厚的兴趣,尤其是GI Taylor三十年代关于湍流研究的工作。于是他就给Taylor写信,想做他的research student。Taylor很快同意了。Batchelor是一个很跋扈的人,说话颇有些像黑社会的老大的风范。他有一个死党和跟屁虫。他非常想让这个跟屁虫跟他一块到英国去研究湍流,省得他一个人寂寞。这个死党呢,大学学的是跟湍流八竿子打不着的核物理。这并不要紧,Batchelor充分发挥了他黑社会老大般的威严对他说,“跟我到英国找Taylor研究湍流去吧!”这个铁杆兄弟也不含糊,立刻说,好,跟老大走。不过走前,你回答我两个问题:谁是 G.I. Taylor? 湍流是什么玩艺?前一个问题好回答,后一个问题,Batchelor究竟是怎么回答的,是威逼利诱,还是晓之以理动之以情说服的,大家一直为这个问题争论了几十年。总之,最后两人都去了英国。见了Taylor呢,两人都失望了,原来Taylor已经不搞湍流了,全力搞什么水下爆炸之类的跟军事有关的课题(估计这个来钱)。好在大师就是大师,让这两个年轻人自编自导自己去折腾,在旁边指导指导。最后两人都成为大师。

Pages

Subscribe to rheo.works RSS