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. 如何在边界条件中获取solver里定义的某一个参数?

如何在边界条件中获取solver里定义的某一个参数?

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

    问题:如何在自定义边界条件中获取solver里定义的某一个参数?
    举例:boundaryFoam中定义了pressure gradient : gradP如下,

    dimensionedVector gradP
    (
        "gradP",
        dimensionSet(0, 1, -2, 0, 0),
        Zero
    );
    

    因为这个gradP每步更新,如下

    gradP += (Ubar - UbarStar)/(1.0/UEqn.A())().weightedAverage(mesh.V());
    

    我需要在自定义边界条件中获取gradP进行计算,不知具体如何操作?

    谢谢大家!

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

    给你个思路,用codedFixedValue可以么

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

    1 条回复 最后回复
  • S 离线
    S 离线
    shiyu
    写于 最后由 李东岳 编辑
    #3

    谢谢李老师的回复 @李东岳 。
    边界类型没问题,但我不知道-- 怎么通过语句获取这个已经定义在solver里的gradP?
    比如:想要在边界条件中,获得速度U,可以通过以下语句来获得:

    volVectorField& U =
             const_cast<volVectorField&>(mesh.lookupObject<volVectorField>("U"));
    

    但这是因为U定义在mesh上,对于gradP这种变量的获取,我有些迷茫。

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

    你调用volScalarField p, 然后计算一下fvc::grad(p)不就可以了么

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

    1 条回复 最后回复
  • S 离线
    S 离线
    shiyu
    写于 最后由 李东岳 编辑
    #5

    再次感谢回复。
    这样确实可以取得pressure field并进一步可求grad(p),对于simpleFoam or pimpleFoam是没问题的。
    但,对于boundaryFoam,pressure不是通过pEqn求解,i.e. 没有在mesh上定义pressure field,仅如下这样定义还可以获取gradP的值吗?

    dimensionedVector gradP
    (
        "gradP",
        dimensionSet(0, 1, -2, 0, 0),
        Zero
    );
    
    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 shiyu 最后由 编辑
    #6

    @shiyu 一个有点冗余的办法,定义一个vector场,每个网格都等于你那个gradP。这样就可以在别处lookup到了。

    OpenFOAM 学习交流:https://openfoam.top

    1 条回复 最后回复

  • 登录

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