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. 计算作用于cellZone上的压力和剪切力

计算作用于cellZone上的压力和剪切力

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

    总体而言,就是要计算cellZone所有网格上的法向力和切向力,而不是仅仅计算作用在固壁边界上的力。
    这里通过图示表达目的:
    33bdd489-1a5e-4b96-ac6f-a108a9ffa9b9-e2bfe6413bc5c6eecfc0b65a00b3268.jpg

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

    你的力定义在面上,如何对你的cellZone里面的所有cells取力?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

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

    @李东岳 老师,可以直接对区域内的所有cell压力求积分得出吗?其实这篇帖子是这个帖子的延申:136: 。
    一方面,要保证动网格能够识别到patch名,另一方面也要计算cell上的力,请问李老师有没有更好的实现方法?

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

    一般力都定义在面上,压力、表面张力
    当然存在一些体积力,比如重力,但不会产生剪切
    但是你好像需要一个产生剪切的体积力,这是什么情况?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

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

    @李东岳 老师,我想要模拟浮式多孔介质模型在流体中的运动,因此需要获得物体的力(矩),这里的剪切力其实对应一楼【代码片段1】的54行和56行。

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

    33bdd489-1a5e-4b96-ac6f-a108a9ffa9b9-e2bfe6413bc5c6eecfc0b65a00b3268.jpg

    你这个图里面,第一个图是可以理解的,因为force定义在面上,因此可以做面积分。

    第二个myForce,你要对cell做操作,如何做面积分?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    liujmL 1 条回复 最后回复
  • liujmL 离线
    liujmL 离线
    liujm
    在 中回复了 李东岳 最后由 liujm 编辑
    #9

    @李东岳 李老师,这也正是我遇到的问题:136: 。

    退一步我做一个简化,在图示的myForces.H的结构最外层cell上套一层patch边界,可不可以仅用patch计算cellZone最外层网格的力和力矩[1],而不阻碍水体穿越被patch包裹的cellZone区域?

    这个想法可行吗,如果可行的话老师方便指点一下,如何实现水体不穿越patch的功能?

    [1] 只计算外层网格表面的受力是因为网衣通常不会太厚,有文献采用2m厚的多孔介质模型,网格尺寸0.5m来模拟。

    在OF2206中,
    对于patch,有addToPatchFields函数:

    void Foam::functionObjects::forces::addToPatchFields
    (
        const label patchi,
        const vectorField& Md,
        const vectorField& fP,
        const vectorField& fV
    )
    {
        sumPatchForcesP_ += sum(fP);
        sumPatchForcesV_ += sum(fV);
        force().boundaryFieldRef()[patchi] += fP + fV;
    
        const vectorField mP(Md^fP);
        const vectorField mV(Md^fV);
    
        sumPatchMomentsP_ += sum(mP);
        sumPatchMomentsV_ += sum(mV);
        moment().boundaryFieldRef()[patchi] += mP + mV;
    }
    

    对于多孔介质的cellZone,有addToInternalField函数:

    void Foam::functionObjects::forces::addToInternalField
    (
        const labelList& cellIDs,
        const vectorField& Md,
        const vectorField& f
    )
    {
        auto& force = this->force();
        auto& moment = this->moment();
    
        forAll(cellIDs, i)
        {
            const label celli = cellIDs[i];
    
            sumInternalForces_ += f[i];
            force[celli] += f[i];
    
            const vector m(Md[i]^f[i]);
            sumInternalMoments_ += m;
            moment[celli] = m;
        }
    }
    
    1 条回复 最后回复
  • liujmL 离线
    liujmL 离线
    liujm
    写于 最后由 编辑
    #10

    已经想到合适的解决方案啦! 封楼

    L 1 条回复 最后回复
  • L 离线
    L 离线
    Linzd
    在 中回复了 liujm 最后由 编辑
    #11

    @liujm 您好,您最终采用了什么方案呢

    liujmL 1 条回复 最后回复
  • liujmL 离线
    liujmL 离线
    liujm
    在 中回复了 Linzd 最后由 编辑
    #12

    @Linzd 多孔介质区域在toposet的时候本身只是选中了cell集合,只有在壁面上才能通过原始代码计算法向力和切向力。

    1 条回复 最后回复

京ICP备15017992号-2

  • 登录

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