
openfoam
文章平均质量分 70
Kino Chan
这个作者很懒,什么都没留下…
展开
-
OpenFOAM一种批量修改参数计算算例的方法
在需要大量修改参数计算算例的时候,脚本能帮我们省下很多功夫。参考一篇知乎文章的做法,并作出改进。现在可以编辑特定的文件名字,而不是用参数来作为文件名了,这样在后期批量后处理的时候会更方便。原创 2022-04-15 11:00:59 · 1667 阅读 · 0 评论 -
OpenFOAM写代码用并行时出错的一种解决办法
OpenFOAM自己写程序,在只有单核计算时,寻址不会有什么问题。但如果改用并行,就会报错。一种解决办法就是用for循环。原创 2022-04-11 12:27:24 · 1949 阅读 · 0 评论 -
OpenFOAM找指定点的Cell label
OpenFOAM中,每个Cell都能找到对应的位置信息(mesh.C()[celli]),但是对于一个特定的位置点,无法直接与某个Cell进行直接的联系。因为Cell是离散的一个个点,其对应位置是有限的集合;而整个空间的位置点个数是无限的,是连续的。所以它俩只能是单射的关系。原创 2022-04-11 11:38:08 · 1240 阅读 · 0 评论 -
OpenFOAM动网格的壁面边界通量修正
OpenFOAM使用动网格时,壁面速度边界条件要换成movingWallVelocity类型。这个边界类型是如何实现壁面运动时通量的计算和修正的?上一篇学习了内场网格变化时通量的修正,这一篇学习这一movingWallVelocity类型的实现原理。原创 2022-04-08 20:08:25 · 1683 阅读 · 0 评论 -
OpenFOAM动网格的通量修正
OpenFOAM处理动网格的思路很简单,就是在网格变形(mesh.controledUpdate())之后,对速度通量进行修正。其中包括:correctPhi.H,fvc::makeRelative(phi,U)。下面一个个进行学习并记录。原创 2022-04-08 10:23:21 · 2290 阅读 · 3 评论 -
OpenFOAM实用脚本之cat和管道命令grep提取文本信息
本文介绍使用cat和grep等命令构造脚本,提取log文件中的信息,方便CFD的后处理。原创 2022-04-06 23:02:13 · 1800 阅读 · 0 评论 -
OpenFOAM的fvVectorMatrix——ldu矩阵学习(一)
因为研究需要,学习OpenFOAM里的fvVectorMatrix中的ldu矩阵。先用Info的方式输出一些信息,得到浅层的认识。原创 2022-03-31 21:29:20 · 2440 阅读 · 0 评论 -
OpenFOAM的fvc::reconstruct(phi)
体元的值U是包围其体的所有面上的流量之和除以所有面的面积总和求得的。原创 2022-03-30 18:15:54 · 1734 阅读 · 1 评论 -
OpenFOAM的面法向向量指向
OpenFOAM对网格的拓扑有着严格的要求。其中,每一个单一的面(face)都会有其对应的owner和neighbour。在考虑某一面的面法向向量时,方向应该是朝哪一边?下面用一个简单的网格测试一下。原创 2022-03-27 11:31:25 · 1554 阅读 · 0 评论 -
OpenFOAM常用头文件(一)——createPhi.H
createPhi.H文件内容,方便查看。原创 2022-03-26 20:11:13 · 1665 阅读 · 1 评论 -
OpenFOAM的泊肃叶流动算例
泊肃叶流动是流体力学里面一个基本算例,排在库埃特流动后面。其应用很广(管道流动),有理论解,经常被用来验证算例、测试算法等。本文介绍如何用OpenFOAM复现泊肃叶流动。原创 2022-03-25 10:14:27 · 3115 阅读 · 0 评论 -
借助matlab批量处理OpenFOAM-CFD数据
在后处理的过程中,我们要提取数据,并进行一定的处理(取平均、均方根),然后作图,和其他结果比较等。这些操作相对机械简单,但如果数据一多,处理起来就很繁琐了。这时候,运用程序或脚本来帮我们处理就显得非常重要,就能省下很多时间喝茶了!原创 2022-02-28 20:26:22 · 2216 阅读 · 1 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(八)walkFront函数
总的来看,这个walkFront函数的主角是面元face,而我们要进行标记的是cell。每一个face都会对应两个cell分别是own和nei,判断其是否要进行插值运算,则是根据allStencil是否有大小。而allStencil是在markDonors进行定义的。在markDonors里,如果两层网格里的两个单元相互有映射关系且其中任何一个都不是HOLE类型,那么就会有一个donor,也就是说allStencil就会有大小,在这里加上isFront的条件,使得这一个单元会被标记为INTERPOLATE原创 2022-02-08 16:02:19 · 1434 阅读 · 0 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(七)markDonors函数
allDonor这一个labelList(下标列表)就记录了各体元的贡献单元所在的zone。因而markDonors并非只是记录个体元的贡献单元,而是这些贡献单元所在的zone,因为在多层网格重叠的情况下,系统必须判断要用哪一层的单元来作贡献插值。原创 2022-02-05 22:28:39 · 1085 阅读 · 2 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(六)markBoundary函数
综合来说,markBoundary这一函数是先将各部分网格边界上的体元进行一次标记,在这一过程中,即使是内部网格(与边界不接壤),如果它和某一层网格的特定边界相重合,那么这个网格也会别标记。需要注意的是,这是对于patchType进行的,和markHole的cellPatchType是不一样的。前面...原创 2022-02-03 15:29:17 · 1375 阅读 · 1 评论 -
OpenFOAM不可压求解器pimpleFoam研究(一)粘度实现
本文讲解pimpleFoam等有处理湍流粘度的不可压求解器的粘度项,并给出引用nu的一个写法。原创 2022-01-26 21:41:39 · 6370 阅读 · 0 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(五)总结
以boundBox为中介,来判定背景网格的单元是否与壁面相接触,首先根据该单元的范围来调取对应的圆柱层单元,节省了很多比较坐标位置的处理的时间。试想,如果每一个背景网格的单元都和圆柱层的每一个单元进行坐标的判断,那么可想而知会浪费多少时间。原创 2022-01-16 21:44:36 · 2036 阅读 · 1 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(四)i1遍历范围
结合上一篇,可以知道,i1的范围对应的是一个体元所在的nDivs的一个boundBox,其maxId和minId就是这个体元对应的index范围。再结合前面的内容,可以知道这一版overset的挖洞机制了:如果在一个体元的boundBox内,与另一层网格的PATCH所对应的boundBox有重合的地方,那么这个体元就会被判定为hole。它的原理绕开了繁琐的坐标位置判定,利用每个体元都有的位置框作为中介,来判定不同网格之间的位置关系,真是妙哉!我想,重叠网格的精髓就是boundBox吧。原创 2022-01-15 11:47:14 · 889 阅读 · 1 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及修正——网上有相同问题的同行以及他们的解决办法
今天上google,登了cfdonline看到有人提出相同的问题:Hole cutting problem using overset of OF1812一些人有提出解决办法,但好像都不能解决这个问题,额外收获一篇overset的解析文档。在帖子的最后,有同行通过编程解决了这个问题:allow overset hole to be further away from the wall patch效果是这样的:红色是HOLE的区域,这时已经远离了壁面,效果也不错。他的做法是这样的.原创 2022-01-14 22:03:17 · 1081 阅读 · 2 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(三)vals是什么?
可以知道patchParts就是一个nZone x nDivisions的列表,vals就是其中一个zone的nDivisions列表,其中存放了nDivisions个网格量,且可以读取type进行判定。左图是overlaps的输入,右边是markPatchesAsHole的传参。对应如下:const boundBox& bb —— srcPatchBbconst labelVecto原创 2022-01-13 21:57:45 · 2004 阅读 · 1 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(二)PATCH是什么类型的patch?
综上,PATCH对应于除了overset、empty之外的patch,在圆柱绕流这个算例中,wall被指定为PATCH,overset被指定为OVERSET,empty默认为OTHER。原创 2022-01-13 18:36:00 · 1612 阅读 · 1 评论 -
OpenFOAM-v2006重叠网格挖洞问题研究以及overset代码解析(一)整体函数框架结构
前言使用OpenFOAM-v2006版本的重叠网格时,其挖洞只能挖出壁面以及壁面附近区域的网格,而离重叠区边缘(fringe)还有一定距离,如下图所示:经研究,其和挖洞策略有关系,修改需要动源代码,十分费工夫。foam-extend-4.1版本有比较好的重叠网格功能,挖洞也很完善,能挖到边缘,是比较标准的,但extend比较大杂烩,也没有其他一些我需要的功能,所以只好作罢。我只好以extend版本为参考,修改2006版本的挖洞相关的代码来修正这一问题。这个过程需要深入地读取源码,特此记录。原创 2022-01-13 16:02:25 · 5479 阅读 · 1 评论 -
OpenFOAM的圆柱绕流算例记录
圆柱绕流是流体力学里最经典的算例之一,受到众多学者的“喜爱”。初学CFD的人除了空腔、管道流之外,最先接触的莫过于圆柱绕流了。圆柱绕流能反映流体流过障碍物时的各种情况:层流向湍流的转捩、流体的剪切与分离、边界层、卡门涡街现象等等,是深入理解流动机理的重要算例。因为经常要算圆柱绕流,在这里做一些记录,记录一些细节,以防以后忘掉。这次做Re=200时的圆柱绕流算例,画网格用ICEM,CFD软件用开源软件OpenFOAM,后处理用tecplot。1. 前处理:画网格用ICEM画网格。圆柱直径D=1m,计算原创 2021-09-08 23:58:13 · 17121 阅读 · 9 评论 -
OpenFOAM无反射边界条件源码学习
求解流声分解法的shen方程时,需要对变量的边界作无反射处理。OpenFOAM提供的无反射边界条件有advective和waveTransmissive这两种,但这两种似乎都不能满足笔者的需要,可能要进行某些修改。在这之前,先来学习一下这两种无反射边界条件的代码以及它俩的区别,这对自己的运用起到帮助。这里会参考日本博主的博文。他用的是英文,而且只起了个开头,后面重要的没写(等他好久了都没补上)。我写点中国人看得懂的,顺便把后面的内容也补上。无反射边界条件基于有限体积法,OpenFOAM的边界条件就是原创 2021-09-07 21:00:09 · 4751 阅读 · 0 评论 -
“cannot be called for a calculatedFvPatchField“——OpenFOAM中实现ρU(rhoU)边界条件的源码学习
因研究需要,特写一篇非单一变量(ρU, rhoU)边界条件的实现过程。在解可压NS方程时,rhoCentralFoam(解析)对动量方程的ρU进行直接的插值求解。换句话说,以ρU作为一个守恒变量,在方程中先进行求解,再分别更新ρ和U来。我们知道, 有限体积法的边界条件就是计算边界面上的通量。在OpenFOAM中单一变量ρ和U的边界条件都必须要分别设置好,这意味着它们边界面上的通量如何计算将由我们来进行决定,其中最常用的有fixedValue(第一类边界条件)和zeroGradient(第二类边界条件)。*原创 2021-09-03 16:58:15 · 1992 阅读 · 3 评论 -
OpenFOAM的周期性边界条件设置——ICEM画圆柱绕流网格为例
参考博文OpenFOAM中循环边界条件(cyclic)设置,我按步骤做了一遍,结果用checkMesh检查会有error(一些面不匹配之类的),然后再加上博文OpenFOAM中CreatePatch的用法上面的步骤,就成功了!由此记录一下。...原创 2021-05-23 10:55:42 · 4978 阅读 · 0 评论 -
OpenFOAM自带网格软件——基于snappyHexMesh的圆柱网格画法
0.前言最近在研究OpenFOAM自带的网格生成软件——snappyHexMesh,并准备拿圆柱绕流算例试试手。主要参考:京东手机的博客和刘楚云知乎的文章。在他们的基础上,学习不同参数对最后网格的影响,并记录下过程。1.创建圆柱的stl文件这里用到三维建模软件UG NX6.0。之前用AutoCAD,生成的stl文件的XYZ坐标都会自动拨到正值,这在CFD里是比较麻烦的,所以改用UG。这里忽略画的过程。将stl文件放到OpenFOAM算例的文件夹里,用paraview打开:2.用AutoSurfac转载 2021-03-05 16:45:39 · 12534 阅读 · 14 评论 -
OpenFOAM大涡模拟湍流模型之Smagorinsky模型代码详解
本人南航CFD研究生,欢迎加qq:1019003721互相学习讨论!本文将介绍OpenFOAM里面的大涡模拟相关代码。起因是最近学习OpenFOAM中的大涡模拟,在一篇OpenFOAM中的LES湍流模型及其植入的专栏中看到,但是里面的公式不知道是什么格式,虽然知道一些变量,但一时间也无法弄清楚。因此一边学习张兆顺教授的湍流大涡数值模拟的理论与应用及相关文献,一边看代码校对。(相关文献资料下载)在这期间,看到CFD中文网的李东岳教授发的CFD中的LES湍流模型。这里面讲得非常详细。我将结合上面的内容和Ope原创 2021-01-06 21:34:06 · 10747 阅读 · 1 评论 -
用tecplot作平均速度流线图
前言在一些圆柱绕流等非定常流动的文献中,时间平均流线作为其中一种流场的结果,能反映出流场时均的特性,具有研究意义。但是用tecplot生成流线时,只能画瞬时的流线,如下图:很明显,这不是我们想要的时均流线。本文依旧使用tecplot,稍加操作就能产生时均流线。所用软件:OpenFOAM(CFD流场计算开源软件),或者其他能计算平均流场的CFD软件。tecplot R2015版(后处理工具)打开流场点击上方工具栏的Data–>Alter,按下图输入公式:这里特意说明一下,tecpl原创 2021-01-05 11:27:17 · 20000 阅读 · 11 评论 -
修改OpenFOAM中的pisoFoam使其按照最大库朗数修改最小时间步
前言在学习OpenFOAM中的LES模拟时,发现一开始的库朗数会比较大,我不得不将时间步调到1e-7秒。但当时间推进到1000步左右时,库朗数就降到0.2左右了(以我自己的算例来举例)。如果仍是以这样的时间步计算到最后,以来增加了计算的时间,二来库朗数太小又会影响计算结果(曾算过负的阻力系数)。因此,在计算的过程中将库朗数维持在某个值就显得尤为重要。要在OpenFOAM上实现这一功能,需要将solver(求解器)进行小改并重新编译。本文以pisoFoam为例将这一实现过程进行展示。网上能搜到关于这方面的原创 2020-12-19 17:51:20 · 5693 阅读 · 12 评论 -
安装Openfoam的acoustic开源程序包libAcoustics
研究需要,从github上下载仅有的基于OpenFOAM的Acoustic程序,网址:https://github.com/unicfdlab/libAcoustics一开始我电脑上OpenFOAM的版本是v6的,编译程序包的时候终端显示缺少一些文件,于是问了问作者。对方回答说你的版本不对,于是我下载了他们最新的一个OpenFOAM-v1812的基础程序包OpenDTEF:https:...原创 2019-11-02 20:45:19 · 1207 阅读 · 0 评论 -
openFoam4.0 学习记录(四):Tutorials 之 Stress analysis of a plate with a hole (后续)
在第二篇学习记录里,我们探讨了Stress analysis of a plate with a hole,设置了拉应力,求平板内部的压力。这一次,我想试着用mesh grading 的方法,让结果更接近解析解。第二篇学习记录传送门:https://blog.youkuaiyun.com/weixin_39124457/article/details/89186816mesh grading 的介...原创 2019-05-18 10:35:24 · 710 阅读 · 0 评论 -
openFoam4.0 学习记录(七):Tutorials之Lid-driven Cavity Flow (后续3-高雷诺数RAS计算)
5月21日刚刚回家,明天爷爷生日,在此祝他福如东海!今天按计划完成空腔流教程的最后一项——高雷诺数。在此之前,我所做的都只是低雷诺数下的层流。但在现实中,理想的层流是不存在的,更多的是湍流。这块硬骨头,最是难啃。话不多说,我按着userguide做一遍。这一篇的关键词:pisoFoam,RAS,k − ε 模型。首先将教程里面的案例复制到run目录内:runcp -r $FOA...原创 2019-05-21 21:38:43 · 1390 阅读 · 1 评论 -
openFoam4.0 学习记录(六):Tutorials之Lid-driven Cavity Flow (后续2)
今晚想将第一个教程后面的部分做完。之前做仿真的时候雷诺数用的是10,非常的低,现在想要增加到100,看看结果如何。先到run的文件夹里,如何克隆一下cavity的文件,成为新的文件:runfoamCloneCase -latestTime cavity cavityHighRecd cavityHighRe第一步:pre-processing在constant文件夹内,打开t...原创 2019-05-20 20:46:30 · 911 阅读 · 0 评论 -
openFoam4.0 学习记录(五):Tutorials 之 Stress analysis of a plate with a hole (后续2)
上一篇在结尾的时候说到,要继续这个教程的后续部分,那就是将plate的尺寸调高,然后再与解析解作比较!将文件夹复制,然后到system/blockMeshDict的文本里面:将convertToMeters的值改成2试试。因为尺寸的改变,我们需要注意Courant数的改变。因为deltax相当于增大了一倍,那么Courant数变成原来的一半,所以可以先不用管。这个是结果,怎么跟...原创 2019-05-19 22:09:37 · 459 阅读 · 0 评论 -
openFoam4.0 学习记录(三):Tutorials之Lid-driven Cavity Flow (后续)
关于Lid-driven Cavity Flow 的前部分操作写在下面的文章中:https://blog.youkuaiyun.com/weixin_39124457/article/details/88926300学习openfoam的第六周啦!不得不吐槽,我这学习进度是真的慢。这一段时间的琐事太多,加上临近毕业答辩,分给of的时间不多。之前很大一部分时间都是复习(预习)流体力学(fd)的基础知识去...原创 2019-04-24 23:01:38 · 2358 阅读 · 0 评论 -
openFoam4.0 学习记录(二):Tutorials 之 Stress analysis of a plate with a hole
学习openfoam的第四周。这次花两天时间来将userguide的第二个教程过一遍!1. 案例解析中文翻译是“带洞盘的压力分析”。在这个案例中,被分析对象的物理模型如下图所示:如图所示,在一个边长米的正方形盘子中央有一个半径为0.5m的洞。盘子两边施加均匀的牵引力。因为对称的关系,我们只需要分析盘子的四分之一(a quarter)即可。这个问题可以被近似为一个2维问题。在一个...原创 2019-04-20 17:41:58 · 2777 阅读 · 4 评论 -
openFoam4.0 学习记录(一):Tutorials 之 Lid-driven Cavity Flow
这是学习openfoam的第二周。每天能学习的时间不多,第一周将时间都花在研究怎么安装ubuntu和openfoam上。期间反反复复装了好多个版本:Ubuntu先是从14到18,最后再试试16。而openfoam最后锚定再openfoam4上。为什么选这个版本呢?其实安装的时候,我主要都是参照网络上一些博客的教程来做的。最后是参考了某位前辈的教程,但是不知道为什么浏览记录里面找不到了...小伙伴们...原创 2019-03-31 22:17:59 · 8558 阅读 · 4 评论