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. forall遍历操作慢怎么加快

forall遍历操作慢怎么加快

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

    不遍历计算一步大概0.4秒,遍历以后要10秒,网格300w,求大佬们帮帮忙
    代码如下

    volScalarField Lambda
        (
            2*mag(skew(fvc::grad(this->U_)))
        );
        volScalarField meshd
        (
            6.283*pow(Cmu_.value()*k*omega,0.5)/pow(Lambda,1.5)/pow(cv,1.0/3.0)
        );
        volScalarField K_1
        (
        0.239*pow(Lambda,1.5)*pow(cv,1.0/3.0)/pow(Cmu_.value()*k*omega,0.5)
        );
        volScalarField K_2
        (
        0.286*pow(Lambda,1.5)*pow(k,1.5)/pow(Cmu_.value()*k*omega,1.5)
        );
        volScalarField K_3
        (
        0.661/pow(Cmu_.value()*k*omega,1.0/3.0)*Lambda*pow(cv,2.0/9.0)
        );
    forAll(meshd, celli)
        { 
          if (meshd[celli] < 1)
            {         
            K_ = min
            (
                max((K_1 + 0.75) / (K_2 + 0.75), lo_),
                u_
            );
        }
        else
        {
            K_ = min
            (
                max(K_3 / (K_2 + 0.75), lo_),
                u_
            );
            } 
    }
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    你用pos0函数替换一下你的forAll试一下

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

    A 1 条回复 最后回复
  • A 在线
    A 在线
    aurora16
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 pos0用于获取位置信息吗,最后也要与for all相吗,您方便写一个简易框架吗,没找到相关的

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #4
    return
            neg(Re - 1000)*24*(1.0 + 0.15*pow(Re, 0.687))
          + pos0(Re - 1000)*0.44*max(Re, residualRe_);
    

    https://www.openfoam.com/documentation/guides/v2206/api/reactingEuler_2multiphaseSystem_2interfacialModels_2dragModels_2SchillerNaumann_2SchillerNaumann_8C_source.html

    结合SchillerNaumann阻力模型的公式,你看一下,公式我笔记里面有

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

    1 条回复 最后回复

  • 登录

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