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. 关于nutkAtmRoughWallFunction中nutw公式的疑问

关于nutkAtmRoughWallFunction中nutw公式的疑问

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

    文件来源:atmosphericModels/derivedFvPatchFields/nutkAtmRoughWallFunction
    头文件描述:

    Description
        This boundary condition provides a turbulent kinematic viscosity for
        atmospheric velocity profiles.  It is desinged to be used in conjunction
        with the atmBoundaryLayerInletVelocity boundary condition.  The values
        are calculated using:
    
            \f[
                U = frac{U_f}{K} ln(\frac{z + z_0}{z_0})
            \f]
    
        where
    
        \vartable
            U_f | frictional velocity
            K   | Von Karman's constant
            z_0 | surface roughness length
            z   | vertical co-ordinate
        \endvartable
    

    程序代码:

    tmp<scalarField> nutkAtmRoughWallFunctionFvPatchScalarField::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(*this));
        scalarField& nutw = tnutw.ref();
    
        forAll(nutw, facei)
        {
            label celli = patch().faceCells()[facei];
    
            scalar uStar = Cmu25*sqrt(k[celli]);
            scalar yPlus = uStar*y[facei]/nuw[facei];
    
            scalar Edash = (y[facei] + z0_[facei])/z0_[facei];
    
            nutw[facei] =
                nuw[facei]*(yPlus*kappa_/log(max(Edash, 1+1e-4)) - 1);
    
            if (debug)
            {
                Info<< "yPlus = " << yPlus
                    << ", Edash = " << Edash
                    << ", nutw = " << nutw[facei]
                    << endl;
            }
        }
    
        return tnutw;
    }
    

    疑问:头文件描述中并未展示公式的来源,故无从得知该壁面函数的推导过程,更无法获知该壁面函数的适用条件。
    求教:哪位大神知道这个壁面函数的来源吗?
    备注:OpenFOAM初学,扒扒公式。

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

    《A Thorough Description Of How Wall Functions Are Implemented In OpenFOAM》一文2.6节描述了nutWallFunction,nutAtmRoughWallFunction中nutw公式与之相同,其他量有改变,我再看看。

    1 条回复 最后回复

  • 登录

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