这周分享的自适应网格加密算例视频深受大家的喜爱,许多OpenFOAMer纷纷在后台留言表示感(qiu)兴(suan)趣(li)
经过一番查找,在Holzmann-cfd[1]上发现了算例,今天小编就和大家一起学习OpenFOAM中的自适应加密网格的设置方法
在本算例中,针对自适应网格加密的设置是在
constant/dynamicMeshDict
目录下实现,具体设置为
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicRefineFvMesh;
dynamicRefineFvMeshCoeffs
{
// 指定应执行网格加密的频率,可以认为该值越大,加密程度越高
refineInterval 1;
// 指定OF网格细化所依据的物理量。可以是标量或向量,如果使用矢量,则将利用该场的矢量幅度。只能指定一个对象进行网格细化。
field S;
// 加密所依据物理量的下界
lowerRefineLevel 0.1;
// 加密所依据物理量的上界
upperRefineLevel 1;
// 如果网格的加密值低于此阈值,则不会加密
unrefineLevel 0.005;
// 加密网格与粗网格之间的缓冲层数,指定在进行下一级别的细化(或粗化)之前,网格必须保持多少层网格大小,典型范围是1-4
nBufferLayers 1;
// 网格加密的最大层数
maxRefinement 2;
// 最大的网格数量,避免网格总数过于巨大导致内存爆炸
maxCells 400000;
// 需要校正的通量字段列表。 对于指定的通量场和相应的速度场。通过对速度进行插值,重新计算在面上更新的通量。对不需要重新插值的surfaceScalarFields上使用“ none”
correctFluxes
(
(phi none)
(nHatf none)
(rhoPhi none)
(ghf none)
);
// 将网格加密的level输出为一个volScalarField
dumpLevel true;
}
// ************************************************************************* //
本算例中,加密依据的标量是S,在初始条件中可以发现S是一个具有fixed value边界条件的无源标量
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 6.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object S;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type codedFixedValue;
value uniform 0;
name inletBC;
code
#{
const vectorField& faceCenter = this->patch().Cf();
scalarField values(faceCenter.size(), scalar(0));
forAll(faceCenter, f)
{
const point faceCenterPoint = faceCenter[f];
if (faceCenterPoint.y() > -0.0025 && faceCenterPoint.y() < 0.0025)
{
values[f] = scalar(1);
}
}
operator==(values);
#};
}
......
S的输运设置是在
system/controlDict
functions
{
scalar
{
libs ( "libsolverFunctionObjects.so" );
type scalarTransport;
field S;
schemesField S;
resetOnStartup false;
}
}
网友评论