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. 动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?

动网格算例中,怎样提取结构物表面某点的位移pointDisplacement?

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

    求助 请教,在包含结构物运动的动网格算例中(例如floatingObject,DTCHullMoving此类),怎样提取结构物表面某一点的位移pointDisplacement?
    在controlDict文件中 用Probe尝试过,只能提取U p等,无法提取pointDisplacement。个人猜测原因是:U p是数据记录在网格的场,而pointDisplacement数据记录在节点。
    在网上也看了好多关于数据分析和后处理的资料,一直找不到方法。求大神指教!不胜感激!

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

    某一个网格点在某个时间步下的位置,相对于0时间步的位置?你直接看不同时间步下网格文件某个vertex的位置矢量不可以么?

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

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

    @李东岳 这是可以的。我想实现的是 某个位置的位移随每个计算时间步timeStep实时输出。就像controlDict里的function通过probe输出p和U一样。

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 wh3296 最后由 编辑
    #4

    @wh3296 你在controlDict里面,写个function,实现类似下面的功能可以么:?

    functions
    {
        const point A = point[222];
        vector = A[222] - A[222].oldtime();
        Info<< vector;
    }
    

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

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wh3296
    在 中回复了 李东岳 最后由 编辑
    #5

    @李东岳
    李老师,我试了下,controlDict文件里是这样写的:

    functions
    {
        {                                                        // Line 57
            const point A = point[222];
            vector = A[222] - A[222].oldtime();
            Info << vector;
        }
    ........
    }
    
    

    运行报错:

    Create time
    
    [0] 
    [0] 
    [0] --> FOAM FATAL IO ERROR: 
    [0] Found { but expected }
    [0] 
    [0] file: /home/b408/OpenFOAM/b408-v1912/run_test/DTCHullMoving_t1222_0/system/controlDict at line 57.
    [0] 
    [0]     From function static bool Foam::entry::New(Foam::dictionary&, Foam::Istream&, Foam::entry::inputMode, int)
    [0]     in file db/dictionary/entry/entryIO.C at line 179.
    [0] 
    FOAM parallel run exiting
    [0] 
    --------------------------------------------------------------------------
    MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD 
    with errorcode 1.
    
    NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
    You may or may not see output from other processes, depending on
    exactly when Open MPI kills them.
    --------------------------------------------------------------------------
    
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #6

    这只是个范例 大体个思路 :zoule:

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

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wh3296
    在 中回复了 李东岳 最后由 编辑
    #7

    @李东岳 好的,我试试这个思路,多谢李老师了!

    G Z 2 条回复 最后回复
  • G 离线
    G 离线
    GrpOne123
    在 中回复了 wh3296 最后由 GrpOne123 编辑
    #8

    @wh3296 请问您解决了这个问题了吗?我现在想要获取整个patch的位移,这是我的代码,但是计算出来的位移是0

            forAllConstIter(labelHashSet, patchSet_, iter)
            {
                label patchi = iter.key();
    	    vectorField displacement = mesh.Cf().boundaryField()[patchi] - mesh.Cf().oldTime().boundaryField()[patchi];
    	    vectorField Uw = displacement/t.deltaT().value();
                vectorField pf = Sfb[patchi]*(p.boundaryField()[patchi] - pRef);
                
                vectorField vf = Sfb[patchi] &amp; devRhoReffb[patchi];                
                fm.first().first() += rho(p)*sum(pf);
                
                fm.first().second() += sum(vf);
                
                vectorField CPs = (((pf + vf)&amp;IE_) * (Uw&amp;IE_))*IE_;
    
                fm.second().first() += sum(CPs);
    
                fm.second().second() = IE_;
            }
    
    1 条回复 最后回复
  • Z 离线
    Z 离线
    z597288
    在 中回复了 wh3296 最后由 编辑
    #9

    @wh3296 您好,请问您解决了吗?

    1 条回复 最后回复

  • 登录

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