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
大涡模拟
123 帖子 13 发布者 115.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 SSSSK 最后由 编辑
    #69

    @SSSSK 对,没找到有计算壁面展向平均的函数

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 学流体的小明 最后由 编辑
    #70

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

    学流体的小明学 李东岳李 2 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 SSSSK 最后由 编辑
    #71

    @SSSSK
    我$ \Delta x^+=\Delta z^+=10 $,壁面法向$ \Delta y^+=2 - 10 $

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

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

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

    @SSSSK

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

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

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

    S 1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 李东岳 最后由 编辑
    #73

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

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

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

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

    S 1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 李东岳 最后由 编辑
    #75

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

    1 条回复 最后回复
  • 2 离线
    2 离线
    2019201300
    写于 最后由 编辑
    #76

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

    李东岳李 S 2 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 2019201300 最后由 编辑
    #77

    @2019201300 厉害厉害,LES么?

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

    2 1 条回复 最后回复
  • 2 离线
    2 离线
    2019201300
    在 中回复了 李东岳 最后由 编辑
    #78

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

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 2019201300 最后由 编辑
    #79

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

    2 1 条回复 最后回复
  • 2 离线
    2 离线
    2019201300
    在 中回复了 SSSSK 最后由 编辑
    #80

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

    S L 2 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 2019201300 最后由 编辑
    #81

    @2019201300 感谢感谢

    1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    写于 最后由 编辑
    #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 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #83

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

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

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 李东岳 最后由 编辑
    #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 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 coolhhh 最后由 李东岳 编辑
    #85

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

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

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

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 李东岳 最后由 编辑
    #86

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

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

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

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

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

    1 条回复 最后回复
  • S 离线
    S 离线
    SSSSK
    在 中回复了 coolhhh 最后由 编辑
    #88

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

    1 条回复 最后回复

  • 登录

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