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. LES直流槽道边界层模拟,如何得到正则化速度u+以及正则化坐标y+?

LES直流槽道边界层模拟,如何得到正则化速度u+以及正则化坐标y+?

已定时 已固定 已锁定 已移动 OpenFOAM
大涡模拟
125 帖子 14 发布者 120.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • S 离线
    S 离线
    SSSSK
    在 2023年11月14日 11:47 中回复了 学流体的小明 最后由 编辑
    #70

    @学流体的小明 大佬,你这个最后是多少万网格对上的?我算了好多组也都是你这种情况,而且如果换成ras得话结果更差,但网格多了又算得太慢了感觉

    学 李 2 条回复 最后回复 2023年11月14日 12:44
  • 学 离线
    学 离线
    学流体的小明 神
    在 2023年11月14日 12:44 中回复了 SSSSK 最后由 编辑
    #71

    @SSSSK
    我Δx+=Δz+=10,壁面法向Δy+=2−10

    744e48b7-e943-4fa4-b29d-4fd075c20d0f-image.png

    你可以看看这篇文章
    https://www.sciencedirect.com/science/article/pii/S0021999117304059?via%3Dihub

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    在 2023年11月15日 16:32 中回复了 SSSSK 最后由 编辑
    #72

    @SSSSK

    而且如果换成ras得话结果更差

    结果很差么?我看没啥问题啊,还算的非常快。你有RANS的结果么?

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

    S 1 条回复 最后回复 2023年11月16日 03:23
  • S 离线
    S 离线
    SSSSK
    在 2023年11月16日 03:23 中回复了 李东岳 最后由 编辑
    #73

    @李东岳 有一个,差的特别大,感觉是我设置的问题,但设置我是参照李老师发的那个设的:136: ?感觉网格问题不大,图里面两个方法都是一套网格,280w左右,LES就对的很好,RAS差好多。对的是摩擦雷诺数180的,实际算出来的LES有179,在只改湍流模型不改动别的参数的情况下,RAS的有260多,而且没有下降的趋势LESRASDNS对比.jpg

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2023年11月16日 06:00 最后由 编辑
    #74

    这种流动算RANS没必要整280万啊,28个网格就行了。你这个280w不好debug,跑都得跑1小时嗨。你看看研究研究吧。应该是湍流模型没用好。

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

    S 1 条回复 最后回复 2023年11月16日 11:18
  • S 离线
    S 离线
    SSSSK
    在 2023年11月16日 11:18 中回复了 李东岳 最后由 编辑
    #75

    @李东岳 谢谢李老师,小网格我也试过,我在调试调试,肯定是哪没设对

    1 条回复 最后回复
  • 2 离线
    2 离线
    2019201300
    写于2023年11月17日 03:57 最后由 编辑
    #76

    空槽道的网格,U+Y+对应结果放下边了。非常感谢李老师和@学流体的小明 的帮助,再就是多看看前边提到的那篇文献,很重要的,认真看完就都没问题了。
    网格文件附下,需要自取链接:https://pan.baidu.com/s/1DfaqXnRQMle7JvyHv0WI1A?pwd=kexh
    提取码:kexh
    image.png

    李 S 2 条回复 最后回复 2023年11月17日 06:19
  • 李 在线
    李 在线
    李东岳 管理员
    在 2023年11月17日 06:19 中回复了 2019201300 最后由 编辑
    #77

    @2019201300 厉害厉害,LES么?

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

    2 1 条回复 最后回复 2023年11月17日 06:47
  • 2 离线
    2 离线
    2019201300
    在 2023年11月17日 06:47 中回复了 李东岳 最后由 编辑
    #78

    @李东岳 对的LES,用的WALE模型,搞出来有一段时间了,只不过最近在忙着开题,开完了看到还有人在问,然后就传上去吧,供大家参考。

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 2023年11月17日 12:50 中回复了 2019201300 最后由 编辑
    #79

    @2019201300 超过上限访问不了了:wocao:

    2 1 条回复 最后回复 2023年11月17日 13:20
  • 2 离线
    2 离线
    2019201300
    在 2023年11月17日 13:20 中回复了 SSSSK 最后由 编辑
    #80

    @SSSSK 习惯问题,忘了改默认设置,下边这个应该就没问题了。链接:https://pan.baidu.com/s/16PwL1nIOXCucqKU3XoZ1_A?pwd=gg61
    提取码:gg61

    S L 2 条回复 最后回复 2023年11月17日 13:21
  • S 离线
    S 离线
    SSSSK
    在 2023年11月17日 13:21 中回复了 2019201300 最后由 编辑
    #81

    @2019201300 感谢感谢

    1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    写于2023年11月29日 08:36 最后由 编辑
    #82

    看到 cfd online 的后处理代码:compressibleyPlusLES,感觉修改下作为后处理工具,不失为一个更简单直接的方法。

    
            volScalarField yPlusTemp
            (
                IOobject
                (
                    "yPlusTemp",
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::NO_WRITE
                ),
                mesh,
                dimensionedScalar("yPlusTemp", dimless, 0.0)
            );
    	
            volVectorField uPlus
            (
                IOobject
                (
                    "uPlus",
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::NO_WRITE
                ),
                mesh,
                dimensionedVector("uPlus", dimless, vector::zero)
            );
    
            volScalarField uTau
            (
                IOobject
                (
                    "uTau",
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::NO_WRITE
                ),
                mesh,
                dimensionedScalar("uTau", dimVelocity, 0.0)
            );
    	
            volScalarField yPlus
            (
                IOobject
                (
                    "yPlus",
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::NO_WRITE
                ),
                mesh,
                dimensionedScalar("yPlus", dimless, 0.0)
            );
    
            Info<< "Reading field UMean\n" << endl;
            volVectorField UMean
            (
                IOobject
                (
                    "UMean",
                    runTime.timeName(),
                    mesh,
                    IOobject::MUST_READ,
                    IOobject::NO_WRITE
                ),
                mesh
            );
    
    	Info<< "Reading field U\n" << endl;
    	volVectorField U
            (
                IOobject
                (
                    "U",
                    runTime.timeName(),
                    mesh,
                    IOobject::MUST_READ,
                    IOobject::NO_WRITE
                ),
                mesh
            );
    	
    	Info<< "Reading field rho\n" << endl;
    	volScalarField rho
            (
                IOobject
                (
                    "rho",
                    runTime.timeName(),
                    mesh,
                    IOobject::MUST_READ,
                    IOobject::NO_WRITE
                ),
                mesh
            );
    	
    #       include "compressibleCreatePhi.H"
    	Info<< "successs1\n" << endl;
    	autoPtr<basicThermo> pThermo
    	(
    	basicThermo::New(mesh)
    	);
    	
    	basicThermo& thermo = pThermo();
    
    	Info<< "successs2\n" << endl;
    	autoPtr<compressible::LESModel> sgsModel
    	(
    	    compressible::LESModel::New(rho, UMean, phi, thermo)
    	);
    
    
    /*---------------------------------------------------------------------------*\
    ========= |
    \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
    \\ / O peration |
    \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
    \\/ M anipulation |
    -------------------------------------------------------------------------------
    License
    This file is part of OpenFOAM.
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
    for more details.
    You should have received a copy of the GNU General Public License
    along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
    Application
    yPlusLES
    Description
    Calculates and reports yPlus and uPlus for all wall patches, for the specified times, for compressible LES.
    \*---------------------------------------------------------------------------*/
    #include "fvCFD.H"
    //#include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
    //aali
    #include "compressible/LES/LESModel/LESModel.H"
    #include "basicThermo.H"
    //ali
    #include "wallFvPatch.H"
    #include "LESModel.H"
    #include "nearWallDist.H"
    #include "wallDist.H"
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    int main(int argc, char *argv[])
    {
    timeSelector::addOptions();
    #include "setRootCase.H"
    # include "createTime.H"
    instantList timeDirs = timeSelector::select0(runTime, args);
    # include "createMesh.H"
    forAll(timeDirs, timeI)
    {
    runTime.setTime(timeDirs[timeI], timeI);
    Info<< "Time = " << runTime.timeName() << endl;
    fvMesh::readUpdateState state = mesh.readUpdate();
    // Wall distance
    wallDist y(mesh, true);
    if (timeI == 0 || state != fvMesh::UNCHANGED)
    {
    Info<< "Calculating wall distance\n" << endl;
    Info<< "Writing wall distance to field "
    << y.name() << nl << endl;
    y.write();
    }
    #include "createFields.H"
    volScalarField::GeometricBoundaryField d = nearWallDist(mesh).y();
    volScalarField muEff(sgsModel->muEff());
    const fvPatchList& patches = mesh.boundary();
    dimensionedScalar uTauAvg("uTauAvg", dimVelocity, 0);
    const volScalarField muLam(sgsModel->mu());
    scalar nPatch = 0;
    Info<< "Summary: " << nl << endl;
    forAll(patches, patchi)
    {
    const fvPatch& currPatch = patches[patchi];
    if (typeid(currPatch) == typeid(wallFvPatch))//isA<wallFvPatch>(currPatch))
    {
    yPlusTemp.boundaryField()[patchi] =
    d[patchi]
    *sqrt
    (
    muEff.boundaryField()[patchi]/rho.boundaryField()[patchi]
    *mag(UMean.boundaryField()[patchi].snGrad())
    )
    /muLam.boundaryField()[patchi]/rho.boundaryField()[patchi];
    const scalarField& YpTemp = yPlusTemp.boundaryField()[patchi];
    //effective viscosity used in the calculation of u*
    uTau.boundaryField()[patchi] =
    sqrt
    (
    sgsModel->muEff()
    *mag(UMean.boundaryField()[patchi].snGrad())
    /sgsModel->rho()
    );
    const fvPatchScalarField& uTauWall = uTau.boundaryField()[patchi];
    dimensionedScalar uTauTmp("uTauTmp", dimVelocity, average(uTauWall));
    uTauAvg += uTauTmp;
    nPatch ++;
    Info<< "Patch " << patchi
    << " named " << currPatch.name()
    << " y+ : min: " << min(YpTemp) << " max: " << max(YpTemp)
    << " average: " << average(YpTemp)
    << " avgUGradWall: " << average(mag(U.boundaryField()[patchi].snGrad()))
    << nl << endl;
    }
    }
    uTauAvg /= nPatch;
    Info << " avg. friction velocity uTau is: "
    << uTauAvg.value() << " (averaged over " << nPatch << " wall(s))" << nl <<endl;
    //yPlus is = u* x y/nu
    yPlus = y.y() * uTauAvg / ((sgsModel->mu()) / (sgsModel->rho()));
    uPlus = UMean / uTauAvg;
    Info << "Writing yPlus and uPlus to corresponding fields." << nl <<endl;
    yPlus.write();
    uPlus.write();
    // Info<< "Writing yPlus to field "
    // << yPlus.name() << nl << endl;
    //
    // yPlus.write();
    }
    Info<< "End\n" << endl;
    return 0;
    }
    // ************************************************************************* //
    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2024年7月1日 13:26 最后由 编辑
    #83

    老铁们,你们做q-DNS的老铁们,有没有什么工作搞出来,更新更新让大家观摩观摩

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

    C 1 条回复 最后回复 2024年7月4日 15:43
  • C 离线
    C 离线
    coolhhh 神
    在 2024年7月4日 15:43 中回复了 李东岳 最后由 编辑
    #84

    @李东岳

    1. 用q-DNS算过一个时间衰减均匀各向同性盒子湍流,类似of2112自带这个算例Decay of homogeneous isotropic turbulence,只是初始湍流场用自己的方法生成。目前湍流生成方法大多能比较好的生成均匀各向同性湍流。q-DNS用的网格256×256×256,采用laminar。同样网格也算过LES模型,结果没太大区别。

    2. 时间衰减均匀各向同性盒子湍流主要是验证湍流生成方法的性能,与实验对比指标主要包括:湍动能衰减曲线,不同时刻的三维能谱和空间相关性。具体可参考以下2篇论文结果:
      [1] Chen L, Li C, Wang J, et al. A coherence-improved and mass-balanced inflow turbulence generation method for large eddy simulation[J]. Journal of Computational Physics, 2024,498:112706.
      [2] Li C, Chen L, Wang J, et al. A novel vector potential random flow generation method for synthesizing divergence-free homogeneous isotropic turbulence with arbitrary spectra[J]. Physics of Fluids, 2024,36(3).
      166bac7f-d88d-4b9c-be29-1e3061bbb671-image.png

    李 S 3 条回复 最后回复 2024年7月4日 18:41
  • 李 在线
    李 在线
    李东岳 管理员
    在 2024年7月4日 18:41 中回复了 coolhhh 最后由 李东岳 编辑 2024年7月5日 02:44
    #85

    @coolhhh 太屌了大佬。干了一个JCP一个POF。 :146: :146:

    大佬感兴趣,可以用白话介绍介绍工作,可以给你CFD界推一推

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

    C 1 条回复 最后回复 2024年7月5日 02:53
  • C 离线
    C 离线
    coolhhh 神
    在 2024年7月5日 02:53 中回复了 李东岳 最后由 编辑
    #86

    @李东岳 谢谢李老师,目前觉得方法还不够完美,还在想一种理论上更好的方法,等方法搞定了再写写比较好。到时可以简单写一个目前现有方法问题的阐述,就是这个RFG-based系列方法虽然有好多sci,但好几篇高引文章都是混淆一些概念,觉得这个值得说一说

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2024年7月5日 05:09 最后由 编辑
    #87

    但好几篇高引文章都是混淆一些概念,觉得这个值得说一说

    流弊!确实如此。只有实践过代码写出来才是真知。我更相信你的。

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

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 2024年7月17日 14:55 中回复了 coolhhh 最后由 编辑
    #88

    @coolhhh 大佬你用of算过forced的这种湍流没?

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 2024年7月17日 15:01 中回复了 coolhhh 最后由 编辑
    #89

    @coolhhh 最近刚接触这种湍流,有些地方有点疑惑,decay的话是不给力,最后让他一直衰减到0吗。然后forced就是给他一个力维持,最后让他平衡,给的力不同的话对结果影响会不会很大,如果我算forced的话,直接用dnsfoam里面的那种force可以吗

    C 1 条回复 最后回复 2024年7月19日 07:52
2023年2月9日 12:43

79/125

2023年11月17日 12:50

2025年5月11日 06:45
  • 登录

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