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. 如何使用lookupObject寻找SRC库内的场变量

如何使用lookupObject寻找SRC库内的场变量

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

    前后调用关系正确么。还有你那个if执行了么。另外你那个定义放在别个位置可以么,另外你那个不需要this->owner().name() + ...,直接massStkck就行

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

    U 1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 感谢东岳老师的回答,第一张图内代码定义的massStick()不是我写的,是src库内定义的场变量,我目前想在求解器主程序内寻找到这一变量,于是在求解器程序内写了如代码1,2两种方式,发现都无法寻找到massStick这个场变量,老师您看代码1,2写的是不是有啥问题?谢谢东岳老师!

    马乔马 1 条回复 最后回复
  • 马乔马 离线
    马乔马 离线
    马乔 大神
    在 中回复了 upc_ngh 最后由 编辑
    #4

    @upc_ngh 试试在这两句lookup之前显式调用下massStick()呢?

    装逼没输过,吵架没赢过!

    U 1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 马乔 最后由 编辑
    #5

    @马乔 谢谢马乔老师的回答,这个问题我通过其他方法绕过去解决了。我在求解器外定义了一个场,然后传输进SRC中,把我想获取的值传递到这个场内,然后就可以在求解器调用massStick()的数值了,谢谢前辈的点拨,我后面试试先调用这个方法是否可行,再次感谢!:xinxin:

    四 1 条回复 最后回复
  • 四 离线
    四 离线
    四季之中的隐星
    在 中回复了 upc_ngh 最后由 编辑
    #6

    @upc_ngh 您好,我刚好最近也遇到这个问题,想要把src文件夹下的值传递到application中,请问您具体是怎么实现和解决的呢,望赐教,感激不尽:xinxin:

    U 1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 四季之中的隐星 最后由 编辑
    #7

    @四季之中的隐星 你好,我的方法比较笨。首先在application定义一个场变量(和你要传回来的场值最好一样);然后把这个量传递进SRC中,在SRC里面把场的const性质强行转换为非const,这样就可以赋值,传递出来了

    四 1 条回复 最后回复
  • 四 离线
    四 离线
    四季之中的隐星
    在 中回复了 upc_ngh 最后由 编辑
    #8

    @upc_ngh 从const转换到非const是怎么做的:140: ,我现在只能通过mesh.lookupObject<volScalarField>获得场值。

    U 1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 四季之中的隐星 最后由 编辑
    #9

    @四季之中的隐星
    我自己写的求解器场变量是XX,传进去之后使用const volatile进行转换,你看看是否有帮助

     const  fvMesh& mesh = this->owner().mesh();
     const volatile volScalarField& zhan = mesh.objectRegistry::lookupObject<volScalarField>("XX");
     const volatile volScalarField& Tsur = mesh.objectRegistry::lookupObject<volScalarField>("Tcell");    
    volScalarField* modifier = (volScalarField*)(&zhan);
    volScalarField& XXX = *modifier;  
    volScalarField* modifierTsur = (volScalarField*)(&Tsur);
    volScalarField& Tsurface = *modifierTsur;
    
    四 2 条回复 最后回复
  • 四 离线
    四 离线
    四季之中的隐星
    在 中回复了 upc_ngh 最后由 编辑
    #10

    @upc_ngh 好的,非常感谢:146:

    1 条回复 最后回复
  • 四 离线
    四 离线
    四季之中的隐星
    在 中回复了 upc_ngh 最后由 编辑
    #11

    @upc_ngh 有一个更简单的方法,我最近发现的,你索引的时候不要用

    ···lookupObject···
    

    用

    ···lookupObjectRef···
    

    用这个函数查找的结果可以直接修改并传值回去

    1 条回复 最后回复

  • 登录

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