我正在尝试遵循this tutorial在下面创建轴对称模型:
在对here的讨论之后,我的blockMeshDict
文件是:
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
convertToMeters 0.001;
wa 5.0;
cr 10.0;
pr 8.0;
cl 50.0;
px 20.0;
pl 10.0;
px2 #calc "$px+$pl";
ms 50;
vertices
(
(0 0 0) //00
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" 0) //01
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" 0) //02
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $px) //03
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $px) //04
(0 0 $px) //05
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $px) //06
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" 0) //07
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" 0) //08
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $px) //09
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $px2) //10
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $px2) //11
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $px2) //12
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $px2) //13
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $cl) //14
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $cl) //15
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $cl) //16
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $cl) //17
(0 0 $cl) //18
(0 0 $px2) //19
);
blocks
(
hex (0 1 2 0 5 4 3 5) ($ms 1 $ms) simpleGrading (1 1 1)
hex (1 7 8 2 4 6 9 3) ($ms 1 $ms) simpleGrading (1 1 1)
hex (4 6 9 3 12 11 10 13) ($ms 1 $ms) simpleGrading (1 1 1)
hex (12 11 10 13 15 16 17 14) ($ms 1 $ms) simpleGrading (1 1 1)
hex (19 12 13 19 18 15 14 18) ($ms 1 $ms) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 0)
(1 7 8 2)
);
}
outlet
{
type patch;
faces
(
(18 15 14 18)
(15 16 17 14)
);
}
walls
{
type wall;
faces
(
(7 8 9 6)
(6 9 10 11)
(11 10 17 16)
);
}
wedgeBack
{
type wedge;
faces
(
(0 1 4 5)
(1 7 6 4)
(4 6 11 12)
(12 11 16 15)
(19 12 15 18)
);
}
wedgeFront
{
type wedge;
faces
(
(0 2 3 5)
(2 8 9 3)
(3 9 10 13)
(13 10 17 14)
(19 13 14 18)
);
}
axis
{
type empty;
faces
(
(0 5 5 0)
(19 18 18 19)
);
}
);
mergePatchPairs
(
);
但是当我运行blockMesh
时,会收到如下警告:
创建块网格拓扑 ->泡沫警告: 从函数Foam :: polyMesh :: polyMesh(const Foam :: IOobject&,const Foam :: Xfer>>&,const cellShapeList&,const faceListList&,const wordList&,const Foam :: PtrList&,const Foam :: word&,const Foam :: word&,bool) 在文件meshes / polyMesh / polyMeshFromShapeMesh.C中的第871行 在网格中找到3个未定义面;添加到默认补丁。
随后出现错误:
->泡沫致命错误: 楔形楔形前中心平面与坐标平面未对齐0.360319 从函数virtual void Foam :: wedgePolyPatch :: calcGeometry(Foam :: PstreamBuffers&) 在文件meshs / polyMesh / polyPatches / constraint / wedge / wedgePolyPatch.C中的第98行。
不幸的是,使用Google搜索错误消息不会返回much。如果您能帮助我知道问题出在哪里以及如何解决,我将不胜感激。
答案 0 :(得分:1)
计算点坐标的方式对我来说似乎很奇怪,例如参数wa
应该是什么意思?看来您打算将其设为一个角度。
我设法通过将楔形补丁的补丁类型更改为patch
类型来获得有效的网格,这比wegde
类型更宽容。在对blockMeshDicts进行故障排除时,我经常这样做。
此外,我在入口面片定义中更改了顶点的顺序。补丁程序定义中的顶点列表必须遵循“右手规则”,请参见User Guide。
对于采用轴对称的情况,User Guide建议使用较小的楔角,例如对于轴对称域,为1°。这很可能是您在错误中指出楔形中心平面未对齐的原因。
因此,我建议:
patch
类型wedge
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
convertToMeters 0.001;
wa 4.0;
cr 10.0;
pr 8.0;
cl 50.0;
px 20.0;
pl 10.0;
px2 #calc "$px+$pl";
ms 50;
vertices
(
(0 0 0) //00
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" 0) //01
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" 0) //02
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $px) //03
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $px) //04
(0 0 $px) //05
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $px) //06
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" 0) //07
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" 0) //08
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $px) //09
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $px2) //10
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $px2) //11
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $px2) //12
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $px2) //13
(#calc "$pr*cos($wa/2)" #calc "-$pr*sin($wa/2)" $cl) //14
(#calc "$pr*cos($wa/2)" #calc "$pr*sin($wa/2)" $cl) //15
(#calc "$cr*cos($wa/2)" #calc "$cr*sin($wa/2)" $cl) //16
(#calc "$cr*cos($wa/2)" #calc "-$cr*sin($wa/2)" $cl) //17
(0 0 $cl) //18
(0 0 $px2) //19
);
blocks
(
hex (0 1 2 0 5 4 3 5) ($ms 1 $ms) simpleGrading (1 1 1)
hex (1 7 8 2 4 6 9 3) ($ms 1 $ms) simpleGrading (1 1 1)
hex (4 6 9 3 12 11 10 13) ($ms 1 $ms) simpleGrading (1 1 1)
hex (12 11 10 13 15 16 17 14) ($ms 1 $ms) simpleGrading (1 1 1)
hex (19 12 13 19 18 15 14 18) ($ms 1 $ms) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
inlet
{
type patch;
faces
(
(0 2 1 0)
(1 2 8 7)
);
}
outlet
{
type patch;
faces
(
(18 15 14 18)
(15 16 17 14)
);
}
walls
{
type wall;
faces
(
(7 8 9 6)
(6 9 10 11)
(11 10 17 16)
);
}
wedgeBack
{
type patch;
faces
(
(0 1 4 5)
(1 7 6 4)
(4 6 11 12)
(12 11 16 15)
(19 12 15 18)
);
}
wedgeFront
{
type patch;
faces
(
(0 2 3 5)
(2 8 9 3)
(3 9 10 13)
(13 10 17 14)
(19 13 14 18)
);
}
axis
{
type empty;
faces
(
(0 5 5 0)
(19 18 18 19)
);
}
);
mergePatchPairs
(
);