老铁们,一般报这种错怎么解决?
在本地可以多算几步,但是超算就出问题了
老铁们,一般报这种错怎么解决?
在本地可以多算几步,但是超算就出问题了
@李东岳 在 OF中在有限的计算域中怎么消去边界对气泡的影响 中说:
既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件
算法上倒是有一些。比如那些advection边界条件。但是扩大计算域是最稳妥的方法。你这个是空炮么?可以设置非均匀网格处理。外围网格非常非常稀疏,里面足够细,也不会太多的网格。
锯齿网格可能开始会有,但随着计算,表面张力的作用会变平
李老师你好,算例的确是计算空泡的;
扩大计算域的话,可能没办法满足我的需求,原因如下:
所以还是想咨询下,能不能一开始在0文件中就能很好的捕捉相分数场,粗的背景网格+细气泡边界网格,之后就用自适应网格计算。
其次还问下advection边界条件的使用方法或相关链接
麻烦李老师了~
各位老铁你们好,我想请教OpenFOAM的一些问题,主要内容是
以下问题均在v8版本运行得到的,求解器是用的compressibleInterFoam,问题主要和气泡有关。
我想在超算上画一个网格,尺寸是$500 \times 500 \times 500$的立方体网格,使用方法是直接blockMesh,但是问题是这样做的话会报错,目测是超算的内存不够(已经128G),ICEM好像也有限制,大概$400^3$左右;
现在的问题是怎样用blockMesh画$500^3$或更大的网格,可以并行画吗?还是只能加内存?
想要模拟的是这样子的(记算例A):
它的网格是这样子的:
convertToMeters 0.01;
box_len 1;
z_len 0.25;
node 200;
z_node 50;
vertices
(
(0 0 0)
($box_len 0 0)
($box_len $box_len 0)
(0 $box_len 0)
(0 0 $z_len)
($box_len 0 $z_len)
($box_len $box_len $z_len)
(0 $box_len $z_len)
);
blocks
(
hex (0 1 2 3 4 5 6 7) ($node $node $z_node) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
box_wall
{
type patch;
faces
(
(0 4 7 3)//lift
(2 6 5 1)//right
(4 5 6 7)//frant
(0 3 2 1)//back_xoy
);
}
syclic_top
{
type cyclic;
neighbourPatch syclic_bottom;
faces
(
(3 7 6 2)//top
);
}
syclic_bottom
{
type cyclic;
neighbourPatch syclic_top;
faces
(
(1 5 4 0)//bottom_xoz
);
}
);
mergePatchPairs
(
);
(图中上下是cyclic的边界条件)
其他边界条件类似:
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
box_wall
{
type pressureInletOutletVelocity;
value $internalField;
}
"syclic_.*"
{
type cyclic;
value $internalField;
}
}
// ************************************************************************* //
结果是这样子的:
右图上下是cyclic边界条件,气泡接近计算边界了
一开始感觉似乎应该是这个样子的,但是不太放心,后来把六个面都换成patch类型(记算例B),发现结果类似,都是慢慢变成椭圆泡。
而当我用问题一中的网格($300^3$),边界设置同算例B(记这个算例为C),发现半径结果如下:
红色是理论解,绿色是算例C的结果,蓝色是算例B的结果,橙色是算例A的结果。对比A,B发现近边界对结果影响及其巨大,即使设置成流体自由出入的方法也不行。
因此想咨询下有比较好的解决方法吗?既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件
在dynamicFvMeshDict修改文件为:
dynamicFvMesh dynamicRefineFvMesh;
refineInterval 1;
field alpha.water;//加密什么场
lowerRefineLevel 0.001;
upperRefineLevel 0.999;
unrefineLevel 20;
nBufferLayers 3;
maxRefinement 4;
maxCells 1000000;
correctFluxes
(
(phi none)
(nHatf none)
(rhoPhi none)
(alphaPhi0.water none)
(ghf none)
);
dumpLevel true;
一般来说,我想用这样的自适应网格来处理背景网格不是那么密集的算例。理想结果是既能用不是太密的均匀背景网格算好液体中的压力、速度等物理量,又可以用自适应网格在边界进行加密达到好的捕捉效果。
但是问题是在不密集的背景网格下使用setFields命令后,初始得到的气泡过于小,从而再局部加密就成为一个格子的方形气泡;除此之外,网格多了锯齿感比较明显,这个是不可避免的吗?
这块的主要问题还是如标题所描述的,能不能让自适应网格捕捉0步的边界,在较粗的背景网格下,让第一步就有非常光滑、密集的边界呢?该怎么操作?
暂时就三个问题,希望大佬们给点帮助~
(另外还有个问题,如果一次性模拟多个气泡,能不能有捕捉每个气泡的方法,同时也需要考虑了气泡的运动)