Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 关于codeFixedValue边界条件读取临界值问题

关于codeFixedValue边界条件读取临界值问题

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 2 发布者 3.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zhaominghao
    写于 最后由 李东岳 编辑
    #1

    在使用codeFixedValue边界条件实现出口无梯度条件时间发现,读取边界网格的临近值pp.boundaryField()[id].patchInternalField(),并将该值赋给边界值时,赋值后网格左侧会有读取不到数值的情况,存在几个0数据场。

    将出口临近值加上一个大气压后输出给边界,得到如下结果
    b0a1d6c8-0cf1-4e00-9e8e-bc6c3aca7760-ea306b61227d4717d769eb97fdc061c.png

    网格前两个数值为赋值后的101325,将网格加密后结果如下
    8e3af657-b7c1-4663-a794-7c85f062027a-38e14074dd0a229cc5670d71143c530.png

    读取到的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   ;
                      }
    		}
    	#};
        }
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    存在几个0数据场

    没看到啊老铁

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    Z 2 条回复 最后回复
  • Z 离线
    Z 离线
    zhaominghao
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 在 关于codeFixedValue边界条件读取临界值问题 中说:

    存在几个0数据场

    没看到啊老铁

    0数据直接输出会报错 所以给的是边界值加了一个大气压

    1 条回复 最后回复
  • Z 离线
    Z 离线
    zhaominghao
    在 中回复了 李东岳 最后由 编辑
    #4

    @李东岳 在 关于codeFixedValue边界条件读取临界值问题 中说:

    存在几个0数据场

    没看到啊老铁

    如果给定边界条件是field[faceI]=ppp[faceI]+100

    输出的参数是b6d72e5c-ece5-4072-90b2-dda806370f59-image.png

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #5

    if (ppp[faceI]>101325)改成 if (ppp[faceI]>101324)

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    zhaominghao
    在 中回复了 李东岳 最后由 编辑
    #6

    @李东岳
    当边界不做判断直接叠加之后是这样的
    fc3c9e32-1d39-4a41-b44a-85c2594da99b-image.png

    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;   
                 
    	}
    #};
    }
    
    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]