关于codeFixedValue边界条件读取临界值问题
-
在使用codeFixedValue边界条件实现出口无梯度条件时间发现,读取边界网格的临近值pp.boundaryField()[id].patchInternalField(),并将该值赋给边界值时,赋值后网格左侧会有读取不到数值的情况,存在几个0数据场。
将出口临近值加上一个大气压后输出给边界,得到如下结果
网格前两个数值为赋值后的101325,将网格加密后结果如下
读取到的0数值数量增加。
有没有同学遇到过类似情况,请问出现这种现象是由什么引起的,如何解决?
感谢,
附上边界代码如下bottom { type codedFixedValue; value uniform 101325; name face1P; code #{ scalarField& field = *this; const label id = this->patch().boundaryMesh().findPatchID("bottom");//在网格中找到inlet //const label id2 = this->patch().boundaryMesh().findPatchID("face1");//在网格中找到inlet const volScalarField& pp = this->db().objectRegistry::lookupObject<volScalarField>("p"); const scalarField& ppp=pp.boundaryField()[id].patchInternalField();//;.patchInternalField(); forAll(field, faceI) { if (ppp[faceI]>101325) { field[faceI]=ppp[faceI]*0.95+0.05*101325; } else { field[faceI]=201325 ; } } #}; }
-
-
-
@李东岳
当边界不做判断直接叠加之后是这样的
bottom
{
type codedFixedValue;
value uniform 101325;
name face1P;
code #{
scalarField& field = *this;
const label id = this->patch().boundaryMesh().findPatchID("bottom");//在网格中找到inlet
const volScalarField& pp = this->db().objectRegistry::lookupObject<volScalarField>("p");
const scalarField& ppp=pp.boundaryField()[id].patchInternalField();
forAll(field, faceI)
{field[faceI]=ppp[faceI]+100; } #}; }