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. 在StochasticDispersionRAS模型中调用颗粒位置的值

在StochasticDispersionRAS模型中调用颗粒位置的值

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

    现想通过修改StochasticDispersionRAS的C文件,使颗粒的随机扰动UTurb,和颗粒所处的位置(距离原点的位置)相关。请问在颗粒的C文件中应该怎样正确地调用颗粒位置的值呢?

    我有试过“const vector & position”,和“position()”之类的,但是并不能成功编译。

    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 hotairballon1997 最后由 编辑
    #2

    @hotairballon1997 应该无法获取的,可以直接改接口,把 position 传进来。

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

    1 条回复 最后回复
  • H 离线
    H 离线
    hotairballon1997
    写于 最后由 hotairballon1997 编辑
    #3

    @浪迹天大 请问您说的改接口是指怎么操作?

    我看到插值读取Uc的代码里,确实有颗粒位置值position()带入,您提到的改接口的意思是把这个position()赋值给一个新变量嘛?

    Uc_ = td.UInterp().interpolate(this->position(), tetIs);
    
    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 hotairballon1997 最后由 编辑
    #4

    @hotairballon1997 我的意思是,找到能够获取 position的地方,然后通过函数参数,一层一层传到当前的函数。

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

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

    插一句,UTurb这个应该是放在连续相的
    再插一句,楼主算的是什么,拉格朗日这面湍流分散力我们之前曾经研究过2个月,至少针对气液多相流来说,结果很不好。后来那个学生去香港了,就不了了之了。

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

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

    @浪迹天大 谢谢您的回复,我还是想问问这个position()是不是所说的颗粒的位置值?但是好像参数的格式与我最终要传到UTurb里的格式不太一样,所以导致无法编译成功。。想问问应该怎么一层一层传导?

    @李东岳 谢谢李老师关注,我在做的是颗粒流射入腔体内的一个模拟,确实stochastic模型本身是只适合于各向同性流动的,算出来的结果很不好,所以我现在想将UTurb的计算过程进行修改,所以还是针对颗粒相的。

    之前有试过在UTurb的方向值dir中添加与流体速度Uc的相关性(修改如下),结果能稍微有些改进。现在想将与颗粒位置的相关性也添加进来,但是position和Uc不一样,没有在这个C文件中声明,所以不知道该怎么调用它?

            {
                tTurb = 0;
    
                const scalar sigma = sqrt(2*k/3.0);
    
                // Calculate a random direction dir distributed uniformly
                // in spherical coordinates
    
                const scalar theta = rnd.sample01<scalar>()*twoPi;
                const scalar u = 2*rnd.sample01<scalar>() - 1;
    
                const scalar a = sqrt(1 - sqr(u));
    
                // 修改部分开始
                const scalar Uc_x = Uc.component(0);
                const scalar Uc_y = Uc.component(1);
                const scalar Uc_z = Uc.component(2);
            
                scalar f_x = mag(sqrt(sqr(Uc_y)+sqr(Uc_z)))/mag(Uc);
                scalar f_y = mag(sqrt(sqr(Uc_x)+sqr(Uc_z)))/mag(Uc);
                scalar f_z = mag(sqrt(sqr(Uc_x)+sqr(Uc_y)))/mag(Uc);
    
                scalar dir_x = f_x*a*cos(theta); 
                scalar dir_y = f_y*a*sin(theta);
                scalar dir_z = f_z*u;
                const vector dir(dir_x, dir_y, dir_z);
                // 修改部分结束
                (源文件是只有一句:const vector dir(a*cos(theta), a*sin(theta), u);)
    
                UTurb = sigma*mag(rnd.GaussNormal<scalar>())*dir;
            }
    
    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #7

    我们当时也是添加各向异性,你可以把这个加到你的dispersion函数里面

    const typename TrackCloudType::parcelType& p =
            static_cast<const typename TrackCloudType::parcelType&>(*this);
    const point start = p.position();
    

    这个函数上面添加上p.position()然后传入进去,因为td没有position()函数,但是p有

    就是 @浪迹天大 说的,一步一步弄,

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

    1 条回复 最后回复

  • 登录

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