openfoam v8 波浪算例学习日记: 3.手动运行算例
openfoam8 wave算例学习记录
手动运行算例
网格处理
Allrun里第一步为blockMesh
划分网格。
此命令读取system/blockMeshDict
字典文件。以下为该字典文件内容(已去掉文件头):
$ cat system/blockMeshDict
...
convertToMeters 1; //顾名思义,直译为转换成米,1表示以下数字的单位为米vertices //顶点
((0 -300 -10) //以下八个点坐标可以想象出其为长方体(1200 -300 -10)(1200 300 -10)(0 300 -10)(0 -300 10)(1200 -300 10)(1200 300 10)(0 300 10)
);blocks
(hex (0 1 2 3 4 5 6 7) (67 40 1) simpleGrading (1 1 1) //网格数量,x方向67个,y方向40个,z方向1个网格
);edges
(
);defaultPatch
{name frontAndBack; type empty; //这个类型一看到,就说明本算例为2维
}boundary //其他四个面的定义
(left{type patch;faces((0 4 7 3));}right{type patch;faces((2 6 5 1));}bottom{type wall;faces((0 1 5 4));}top{type patch;faces((2 3 7 6));}
);mergePatchPairs
(
);// ************************************************************************* //
blockMeshDict
内容较简单,此时终端中运行blockMesh
命令。
$ blockMesh
...
Create timeCreating block mesh from"system/blockMeshDict" //读取的字典文件
Creating block edges
No non-planar block faces defined
Creating topology blocks
Creating topology patchesCreating block mesh topology
--> FOAM Warning :From function Foam::polyMesh::polyMesh(const Foam::IOobject&, Foam::pointField&&, const cellShapeList&, const faceListList&, const wordList&, const Foam::PtrList<Foam::dictionary>&, const Foam::word&, const Foam::word&, bool)in file meshes/polyMesh/polyMeshFromShapeMesh.C at line 873Found 2 undefined faces in mesh; adding to default patch. //此default patch字典里也定义了。Check topologyBasic statisticsNumber of internal faces : 0Number of boundary faces : 6Number of defined boundary faces : 6Number of undefined boundary faces : 0Checking patch -> block consistencyCreating block offsets
Creating merge list .Creating polyMesh from blockMesh
Creating patches
Creating cells
Creating points with scale 1Block 0 cell size : //网格大小信息i : 17.9104 .. 17.9104j : 15k : 20Writing polyMesh
----------------
Mesh Information
----------------boundingBox: (0 -300 -10) (1200 300 10)nPoints: 5576nCells: 2680 //网格数nFaces: 10827nInternalFaces: 5253
----------------
Patches
----------------patch 0 (start: 5253 size: 40) name: leftpatch 1 (start: 5293 size: 40) name: rightpatch 2 (start: 5333 size: 67) name: bottompatch 3 (start: 5400 size: 67) name: toppatch 4 (start: 5467 size: 5360) name: frontAndBackEnd
运行结束后,继续运行paraFoam
查看模型。
Allrun里第二步为extrudeMesh
。
这条命令几乎没用过,根据名称大致为扩展(延伸、拉长)网格。记得system文件夹中有extrudeMeshDict
文件,此命令读取该文件。以下为该字典文件
FoamFile
{version 2.0;format ascii;class dictionary;location "system";object extrudeMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //constructFrom mesh;sourceCase ".";sourcePatches (right); //猜测以right边界面为源flipNormals false;nLayers 25; // xx层网格expansionRatio 1.09; //直译:膨胀率。如何计算呢,是最后一层网格是第一层的1.09倍还是1.09^25倍呢。extrudeModel linearNormal;linearNormalCoeffs
{thickness 1500;
}mergeFaces false;// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
由于该命令几乎没用过,里面各项意义不太理解。大致能猜测是以right边界面为起点,向其法向延伸1500,添加25个网格。接下来在终端中运行此命令。
$ extrudeMesh
...
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create timeCreate mesh for time = 0Selecting extrudeModel linearNormal
Extruding from mesh using model linearNormal
Collapsing edges < 0.0001 of bounding boxExtruding patches 1(right) on mesh "/home/yuno/OpenFOAM/yuno-8/run/tutorials/multiphase/interFoam/laminar/wave"Create mesh for time = 0Adding overall 0 processor patches.
Testing:"/home/yuno/OpenFOAM/yuno-8/run/tutorials/multiphase/interFoam/laminar/wave/system/fvSchemes"
Mesh bounding box : (0 -300 -10) (2700 300 10)with span : (2700 600 20)
Merge distance : 0.002Collapsing edges < 0.002 ...Uncollapsed edges = 0 / 18797Number of points : 7626Not visited : 0Not collapsed : 7626Collapsed : 0Collapsing 0 cells
Writing mesh to "constant/region0"Writing added cells to cellSet addedCellsEnd
paraFoam
中查看
可以看到如猜测般从right边界延正法向延伸了1500,并添加了25层网格。最后一层大约140=17.9104(见blockMesh输出网格大小)*1.09^25。可见膨胀率是层层叠加的。
第三步 网格加密
Allrun里一共加密了6次,其中前两次为x方向,后四次为y方向。接下来一次一次来运行。
topoSet与refineMesh组合为加密网格常用命令。topoSet选取加密区域,refineMesh进行网格加密(选定方向网格小一半)。
接下来先查看topoSetDict1
$ cat system/topoSetDict1
...
FoamFile
{version 2.0;format ascii;class dictionary;location "system";object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //actions
({name box; //域名称,可自定义名称type cellSet; // 直译:单元集和action new; //新生成一个cellSetsource boxToCell; //通过boxToCell的方式选定区域sourceInfo{box (-1e6 -40 -1e6) (1300 40 1e6); //矩形体的长对角点}}
);// ************************************************************************* //
在终端中运行topoSet -dict system/topoSetDict1
。-dict
指定该命令读取的字典文件,默认为(comandName)Dict
。
$ topoSet -dict system/topoSetDict1
...
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create timeCreate polyMesh for time = 0Reading topoSetDictTime = 0mesh not changed.
Created cellSet boxApplying source boxToCellAdding cells with center within boxes 1((-1e+06 -40 -1e+06) (1300 40 1e+06))cellSet box now size 432
End
此步无法在paraview中观察到,此命令会在constant/polyMesh/sets
中生成一个域名称的文件,此处为box
。文件中为432个网格(的编号)。
其中adddedCells
是上一步extrudeMesh
生成的文件。
接下来查看refineMesh
读取的refineMeshDictX
文件。
$ cat system/refineMeshDictX
...
FoamFile
{version 2.0;format ascii;class dictionary;location "system";object refineMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //set box; //上一步topoSet中定义的域名称coordinateSystem global;globalCoeffs
{tan1 (1 0 0); //X方向tan2 (0 1 0); //Y方向
}directions
(tan1 //此处选择了X方向,可以选择多个方向
);useHexTopology true;geometricCut false;writeMesh false;// ************************************************************************* //
继续在终端运行 refineMesh -dict system/refineMeshDictX -overwrite
。其中选项-overwrite
是将加密后的网格写入初始时刻,读者们可以试试不加此选项以了解其文件的输出。
现在可以在paraFoam
中查看网格了。
该命令在topoSet中选定的区域在选定的方向对半分网格。
refineMeshDictY
与refineMeshDictX
的区别只在 directions
里。
接下来的五组网格加密做完之后,网格如图所示。
到此,网格划分的操作就结束了。接下来为设定初始场。
openfoam v8 波浪算例学习日记: 3.手动运行算例相关推荐
- openfoam v8 波浪算例学习日记: 6.运行算例
算例运行 在setWave命令之后就是算例运行,Allrun中在运行求解器之前进行了域分解命令decomposePar来并行计算. decomposePar读取system/decomposeParD ...
- openfoam v8 波浪算例学习日记: 5.边界条件及初始条件
边界条件及初始条件 此波浪算例所需的初始条件有alpha.water p_rgh U. 1.alpha.water.orig文件 $ cat 0/alpha.water.orig ... FoamFi ...
- 【OpenFOAM】——OpenFOAM入门算例学习
1 明确目标--为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l [ ]学会用SnappyHexMesh生成高质量网格: l [ ]学习使用O ...
- 非静压模型NHWAVE学习(7)——波浪变形模拟算例学习(Wave transformation over an elliptical shoal)
波浪变形模拟算例学习(Wave transformation over an elliptical shoal) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NH ...
- 非静压模型NHWAVE学习(9)——波浪破碎RANS紊流模型算例学习(Wave Breaking on a Planar Beach)
NHWAVE波浪破碎RANS紊流模型算例学习(Wave Breaking on a Planar Beach) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果 本blog介绍了NHWAV ...
- 非静压模型NHWAVE学习(6)——波浪模拟算例学习(Periodic wave over a submerged bar)
波浪模拟算例学习(Periodic wave over a submerged bar) 算例简介 网格与地形 运行参数配置 模型的编译运行及模拟结果 本blog介绍了NHWAVE模型自带算例Peri ...
- 非静压模型NHWAVE学习(8)——波浪破碎模拟算例学习(Breaking solitary wave run-up)
NHWAVE波浪破碎模拟算例学习(Breaking solitary wave run-up) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NHWAVE模型自带算 ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...
- 语言余一个负数_C语言学习日记(8)——整数溢出
小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来.当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了.虽然当时 ...
最新文章
- android工程r红,Android Studio - 为什么R随机变为红色?
- mac回退jdk版本_Mac 的 jdk 版本配置
- Delphi Code Editor 之 几个特性
- java程序实验总结_Java实验报告一及作业总结二
- pythoncharm怎么保存代码_pycharm怎么保存代码
- 豆瓣评分预测(如何用自己的数据集进行文本分类)——基于pytorch的 BERT中文文本分类,超详细教程必会!!!
- OpenHarmony更新编译问题及解决办法
- 时序数据预测:Holt-Winters
- 2022化工自动化控制仪表考试题及答案
- 联想ThinkBook 14+和 2022宏碁非凡S3 哪个好
- 计算机上无线网络开关在哪里,台式电脑wifi开关在哪
- 虚拟主机还是云服务器玩游戏,虚拟主机还是云服务器玩游戏
- 【实验室集训大作业】JDBC实现宠物商店
- MindSpore论坛活动——奖品免费领,祝大家开工大吉!
- 小高考三门计算机能报大专吗,美术生小高考的要求吗
- 干谷净重694.27公斤 滦南国稻种芯-517功能性苦瓜稻北方旱作
- C语言—判断100到200的素数
- np.atleast_2d用法
- SQLSERVER数据库连接不到
- 关于研究虚拟机多开程序相关文章