日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenFoam学习记录2-网格的生成

發布時間:2024/3/24 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenFoam学习记录2-网格的生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 網格的約束

1.1 點

1)點的列表中不能有重復的點,不能包含不位于這個面上的點;

2)點的命名順序遵循右手定則,大拇指方向為法向量的方向,四只手指的順序為點的編號順序;

?1.2 面

1)面的中心必須位于面的內部;

2)面可以是曲面。

1.3 單元

1)單元必須是封閉的,所有面面積矢量指向單元外時,它們的總和等于零矢量;

2)每條邊必須由該單元的兩個面使用,不能多也不能少,其實就是要求單元不能有重疊的面和線,用ICEM劃分過網格的應該很容易理解;

3)法向量的傳遞通常是由編號小的網格傳到編號大的,eg:從二號網格傳到三號網格;

2 PolyMesh

以tutorial中的頂蓋方腔流為例,執行blckMesh后,

(base) jzz@DESKTOP-I13L3PF:~/exercises/cavity$ cd constant/polyMesh/^C (base) jzz@DESKTOP-I13L3PF:~/exercises/cavity$ tree

可以看到polymesh中生成了以下文件

. ├── boundary ├── faces ├── neighbour ├── owner └── points

查看points文件的部分

*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: 8\\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile {version 2.0;format ascii;class vectorField;location "constant/polyMesh";object points; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //882 ( (0 0 0) (0.005 0 0) (0.01 0 0)

文件頭在https://blog.csdn.net/WHTU_JZZ/article/details/126601537?spm=1001.2014.3001.5502中提到過,這里不做贅述。

882代表點的數量,規定從上到下對點依次編號,如0號點為(0 0 0),1號點為(0.005 0 0)....

同理,faces:

========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: 8\\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile {version 2.0;format ascii;class faceList;location "constant/polyMesh";object faces; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //1640 ( 4(1 22 463 442) 4(21 462 463 22) 4(2 23 464 443)

1640為面的數量,前面的4是組成這個面的點的數量,后面的點為點的索引如

4(1 22 463 442)

中這個面是由第1,22,463,442的點構成的,面同樣也按由上至下的方式編號。

neighbour:指定網格間的相鄰關系

760 ( 1 20 2 21 3 22 4 23 5 24 6

owner,說明每個面所屬的網格編號:

1640 ( 0 0 1 1 2 2 3 3 4 4 5 5

boundary:說明每個邊界上的網格數量和使用了哪些網格:

(movingWall{type wall;inGroups List<word> 1(wall);nFaces 20;/網格的數量startFace 760;/網格的編號}fixedWalls{type wall;inGroups List<word> 1(wall);nFaces 60;startFace 780;}frontAndBack{type empty;inGroups List<word> 1(empty);nFaces 800;startFace 840;} )

2 boundary

以cavity中的blockMeshDict為例,通過type指定邊界類型。

boundary (movingWall{type wall;faces((3 7 6 2));}fixedWalls{type wall;faces((0 4 7 3)(2 6 5 1)(1 5 4 0));}frontAndBack{type empty;faces((0 3 2 1)(4 5 6 7));} );

常用邊界類型:

patch
symmetryPlane對稱面
empty空,在二維的情況下通常將frontAndBack設置為empty
wedge前后為軸對稱幾何的楔形
cyclic

平面循環曲線

wall紊流中的壁面
processor并行計算時,不同網格之間的邊界

3 blockMesh

blockMesh用于生成帶梯度和曲線的結構化網格,其原理為將幾何分成一個或多個六面體塊。還是以cavity的blockMeshDict為例:

convertToMeters 0.1;vertices ((0 0 0) //0(1 0 0) //1(1 1 0) //2(0 1 0) //3(0 0 0.1) //4(1 0 0.1) //5(1 1 0.1) //6(0 1 0.1) //7 );blocks (hex (0 1 2 3 4 5 6 7) //由0 1 2 3 4 5 6 7組成的六面體(20 20 1) // 在1和2方向上20個,在3方向上1個simpleGrading (1 1 1) //類型為simpleGrading,三個方向上網格大小一致 ); edges ( ); boundary (movingWall{type wall;faces((3 7 6 2));}fixedWalls{type wall;faces((0 4 7 3)(2 6 5 1)(1 5 4 0));}frontAndBack{type empty;faces((0 3 2 1)(4 5 6 7));} )

convertToMeters為縮放比,openfoam的默認單位為m,這里乘以0.1,單位就是1dm

vertices為點的列表,和上一章中的points類似。

blocks為分區,具體包括一個由點的標簽組成的列表,指定各方向上網格數量的向量和各方向上單元增長率的類型和列表。單元增長率有兩種類型simpleGrading和edgeGrading。

simpleGrading指定三個方向上的增長率 eg.(1 2 3)
edgeGrading從第一個單元指向最后一個單元 eg.七個單元:(1 1 2 2 3 3 4)

edges為曲線,上面的代碼中沒有指定,因為cavity就是個長方形,edges有以下幾種:

arc曲線
simpleSpline樣條曲線
polyLine曲線光順
polySplineSet of splines(看不懂,直接粘貼的user guide)
line直線

其中arc是最常用的

edges(arc 1 5 (1.1 0.0 0.5));

這里的曲線是以1號點和5號點為起點和終點,經過點(1.1 0.0 0.5)的一條曲線。

boundary為網格的邊界,通過type指定類型,通過點的編號指定面。

boundary // keyword(inlet // patch name{type patch; // patch type for patch 0faces((0 4 7 3) // block face in this patch);} // end of 0th patch definitionoutlet // patch name{type patch; // patch type for patch 1faces((1 2 6 5));}walls{type wall;faces((0 1 5 4)(0 3 2 1)(3 7 6 2)(4 5 6 7));});

總結

以上是生活随笔為你收集整理的OpenFoam学习记录2-网格的生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。