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. Algorithm
  3. 关于壁面函数有些不懂

关于壁面函数有些不懂

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

    各位老师,这个壁变函数一直搞得浑浑噩噩的,看文献说“近 壁 区 高 Re数 采 用 的紊 动 各 向同 性 假 设 不 再 适 用,因而k-e紊 流 模式在 此 不 能 应 用,故 应 选 取 距 固 壁某 一 距 离 的 边 界作 为 计 算 边界。”这句有话有点不懂,k和e是取“距 固 壁某 一 距 离的值”作为边界条件吗?那固壁处怎么办,就不处理了吗

    L 1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 lsprxd 最后由 编辑
    #2

    link text0_1493102280134_QQ截图20170420102158.png

    L 1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 lsprxd 最后由 编辑
    #3

    link text0_1493102348706_QQ截图20170420101901.png

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    写于 最后由 编辑
    #4

    0_1493214343039_upload-e1b8b1be-3d87-4e09-86b0-11ad9b7a339a 0_1493214362809_upload-ea639e93-c964-4a31-bce5-51adcfea90b8

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    写于 最后由 编辑
    #5

    实在是不懂了,求解释:crying:

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

    近 壁 区 高 Re数 采 用 的紊 动 各 向同 性 假 设 不 再 适 用,因而k-e紊 流 模式在 此 不 能 应 用,故 应 选 取 距 固 壁某 一 距 离 的 边 界作 为 计 算 边界

    kE模型的边界值和内节点值相同,因此上文提到选 取 距 固 壁某 一 距 离 的 边 界作 为 计 算 边界

    那固壁处怎么办,就不处理了吗

    是的,直接将其设置为和内节点相同。

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

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

    http://dyfluid.com/wallFunction.html
    之前写过一些壁面函数的东西很详细,仅供参考。注意:

    (1)通过求解离散的k方程获取全场的k值;
    (2)通过方程(28)确定壁面节点处的εP;
    (3)通过方程(31)确定壁面节点处的νP;
    (4)通过νP计算湍流动能耗散率传输方程中的壁面的湍流动能耗散率产生项;
    (5)求解ε方程;

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

    L 1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 李东岳 最后由 编辑
    #8

    @李东岳 李老师,在获得全场的k值,是不是要提取壁面节点处的kP,然后带入式(28)确定壁面节点处的εP?

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    写于 最后由 编辑
    #9

    @李东岳 李老师我是采用无网格伽辽金法来做的,整个方程的求解策略是这样的0_1493374908818_upload-363cc3e6-d7d0-440a-8b5e-e0dbb9eda717
    这个壁面函数是如何引入到这个策略中的?

    李东岳李 R 2 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 lsprxd 最后由 编辑
    #10

    @lsprxd 在 关于壁面函数有些不懂 中说:

    无网格伽辽金法

    很抱歉对伽辽金不是很熟悉。
    你图片中的是求解NS方程和湍流模型的整体策略。壁面函数是在2.2和2.1之间内部调用的。OpenFOAM中的做法是:

    1. 首先通过方程28求解网格面第一层网格体心得epsilon;
    2. 通过方程35求解G;
    3. 求解epsilon方程,其中epsilon的边界条件极为第一层网格体心得epsilon,也就是你之前发的中文部分的内容;
    4. 然后求解k
    5. 然后通过k和epsilon更新wall粘度

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

    L 2 条回复 最后回复
  • R 离线
    R 离线
    random_ran 大神
    在 中回复了 lsprxd 最后由 编辑
    #11

    @lsprxd

    能解释一下 scheme 中第一步是怎么回事吗?

    1. Solve the N.S. equations

    感觉这步跨得太大。

    Yours in CFD,

    Ran

    L 1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 李东岳 最后由 编辑
    #12

    @李东岳 wall粘度和流场中的湍流粘度是不是一个粘度?

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 李东岳 最后由 编辑
    #13

    @李东岳 上面的第5步更新wall粘度,这个wall粘度是不是整个区域的wall粘度?
    像一般的边界都是自然边界或者本质边界,在这个k-e方程中,k的边界可以是第二类边界,在y方向上的偏导为0,Kp按照k方程计算;
    按照书上说的p点的epsilon是按照代数方程计算就是式(28);
    那这个在p点的k和e是不是应该是一组数,而不是一个确定的数?
    还有一个就是在壁面处的计算和整个区域的计算是不是一个控制方程?

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 random_ran 最后由 编辑
    #14

    @random_ran 0_1493825154849_upload-94e7ee90-1476-4174-a4b9-e564c81ebc61 好多文献就是这样的,给定初值,求解N-S,得到速度带入k-e,更新湍流粘度。就是第二张图片那个连接里面的,而且他直接在wall上设置k和e为0

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    写于 最后由 编辑
    #15

    有的文献是这样说的0_1494334316262_QQ截图20170509201812.png
    0_1494334330279_QQ截图20170509201958.png
    0_1494334340256_QQ截图20170509202016.png
    有点不明白的是“处在对数率层,可用牛顿迭代法求出u*”这个是如何迭代?这个公式里面的u是哪个地方的u?是全场的还是y出的u?得到的k和e也是y处的u吗?
    这个壁面函数是影响主流区吗?为什么最后他说壁面切应力对NS方程的影响可用用等效粘性系数表示?

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    写于 最后由 编辑
    #16

    在网上看的有人这样说的“最简单的办法是用对第一个节点的K,E直接赋值,由U+,Y+计算ut(摩擦速度),K=ut*ut/sqrt(0.09),E=ut**3/y/0.42”,这个赋值是赋在壁面上?这个p点是距壁面y处的值,那这些赋值的位置应该是距壁面y处的所有值吗?

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

    当求解湍流粘度的时候需要调用y+(看方程31),其可以采用不同的方法,最简单的方法就是我网页那种方法,然而另一种方法就是上文中提出的牛顿迭代法。俩种方法最后都需要使用方程31更新粘度。

    下面是OpenFOAM中采用我网页中方法的步骤:

    tmp<scalarField> nutkWallFunctionFvPatchScalarField::calcNut() const
    {
        const label patchi = patch().index();
    
        const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
        (
            IOobject::groupName
            (
                turbulenceModel::propertiesName,
                internalField().group()
            )
        );
    
        const scalarField& y = turbModel.y()[patchi];
        const tmp<volScalarField> tk = turbModel.k();
        const volScalarField& k = tk();
        const tmp<scalarField> tnuw = turbModel.nu(patchi);
        const scalarField& nuw = tnuw();
    
        const scalar Cmu25 = pow025(Cmu_);
    
        tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
        scalarField& nutw = tnutw.ref();
    
        forAll(nutw, facei)
        {
            label faceCelli = patch().faceCells()[facei];
    
            scalar yPlus = Cmu25*y[facei]*sqrt(k[faceCelli])/nuw[facei];//简单计算y+
    
            if (yPlus > yPlusLam_)
            {
                nutw[facei] = nuw[facei]*(yPlus*kappa_/log(E_*yPlus) - 1.0);//方程31
            }
        }
    
        return tnutw;
    }
    

    下面是OpenFOAM中采用你截图的迭代法求解的步骤:

    tmp<scalarField> nutUWallFunctionFvPatchScalarField::calcNut() const
    {
        const label patchi = patch().index();
    
        const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
        (
            IOobject::groupName
            (
                turbulenceModel::propertiesName,
                internalField().group()
            )
        );
        const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi];
        const scalarField magUp(mag(Uw.patchInternalField() - Uw));
        const tmp<scalarField> tnuw = turbModel.nu(patchi);
        const scalarField& nuw = tnuw();
    
        tmp<scalarField> tyPlus = calcYPlus(magUp);//通过速度迭代计算y+
        scalarField& yPlus = tyPlus.ref();
    
        tmp<scalarField> tnutw(new scalarField(patch().size(), 0.0));
        scalarField& nutw = tnutw.ref();
    
        forAll(yPlus, facei)
        {
            if (yPlus[facei] > yPlusLam_)
            {
                nutw[facei] =
                    nuw[facei]*(yPlus[facei]*kappa_/log(E_*yPlus[facei]) - 1.0);//方程31
            }
        }
    
        return tnutw;
    }
    

    一直时间很紧没有时间细看这个帖子,不过看起来非常有意思,近期我更新一下你贴图那种方法的思路。

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

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

    你对OpenFOAM代码熟悉么?

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

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 李东岳 最后由 编辑
    #19

    @李东岳 谢谢李老师,OpenFOAM这个不熟悉,您贴的这个我在底下先仔细看看

    1 条回复 最后回复
  • L 离线
    L 离线
    lsprxd
    在 中回复了 李东岳 最后由 编辑
    #20

    @李东岳 李老师,您这个简单计算y+的时候带入的kp是p点的值,如何确定的?还有这个p点是距离壁面y处的位置,但距离壁面y处的点应该有好多啊,而且每个应该都不一样吧?那求出来的y+也不止一个吧?

    李东岳李 1 条回复 最后回复

  • 登录

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