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. Smagorinsky模型不输出k_sgs场

Smagorinsky模型不输出k_sgs场

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

    可以做如下改动进行输出,至少适用于OpenFOAM-8

    1. 打开Smagorinsky.H,添加k_:
        // Protected data
    
            dimensionedScalar Ck_;
            
            volScalarField k_;//这是添加的一行
    
    
        // Protected Member Functions
    
    1. 打开Smagorinsky.C,添加下面代码:
    :
        LESeddyViscosity<BasicMomentumTransportModel>
        (
            type,
            alpha,
            rho,
            U,
            alphaRhoPhi,
            phi,
            transport
        ),
    
        Ck_
        (
            dimensioned<scalar>::lookupOrAddToDict
            (
                "Ck",
                this->coeffDict_,
                0.094
            )
        ),//这里加个逗号
        
        //下面是添加的
        k_
        (
            IOobject
            (
                IOobject::groupName("k", this->alphaRhoPhi_.group()),
                this->runTime_.timeName(),
                this->mesh_,
                IOobject::MUST_READ,
                IOobject::AUTO_WRITE
            ),
            this->mesh_
        )
    {
        if (type == typeName)
        {
            this->printCoeffs(type);
        }
    }
    

    correctnut()函数通过下面代码替换:

    void Smagorinsky<BasicMomentumTransportModel>::correctNut()
    {
        k_ = (this->k(fvc::grad(this->U_)));
    
        this->nut_ = Ck_*this->delta()*sqrt(k_);
        this->nut_.correctBoundaryConditions();
        fv::options::New(this->mesh_).correct(this->nut_);
    }
    

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

    Z 疏影横斜水清浅疏 2 条回复 最后回复
  • Z 离线
    Z 离线
    ZZ给我趴下
    在 中回复了 李东岳 最后由 编辑
    #2

    @李东岳 李老师,请问为什么做了这些改变之后会编译错误呢?af952994b1515fcf635dcec15042a0a.png 974C0A2D7D0118B216E266CEC4F56C8C.png

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

    156-167行删掉,用下面的替换:

    void Smagorinsky<BasicMomentumTransportModel>::correctNut()
    {
        k_ = (this->k(fvc::grad(this->U_)));
    
        this->nut_ = Ck_*this->delta()*sqrt(k_);
        this->nut_.correctBoundaryConditions();
        fv::options::New(this->mesh_).correct(this->nut_);
    }

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

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    ZZ给我趴下
    在 中回复了 李东岳 最后由 编辑
    #4

    @李东岳这里提示重复定义,在59行有定义,而且和这个函数一样。 003f24ca251de51d6dbeaacef31c1ce.png

    7 1 条回复 最后回复
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #5

    更简单的方法就是不用动求解器了,在算例文件下面的controlDict下面把这个放进去:

    cacheTemporaryObjects
    (
        k
    );
    
    functions
    {
        #includeFunc writeObjects("k")
    }
    

    然后直接跑就行

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

    疏影横斜水清浅疏 1 条回复 最后回复
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 李东岳 被引用 于这个主题
  • 疏影横斜水清浅疏 离线
    疏影横斜水清浅疏 离线
    疏影横斜水清浅
    在 中回复了 李东岳 最后由 编辑
    #6

    @李东岳epsilon()函数要不要改

    template<class BasicTurbulenceModel>
    tmp<volScalarField> tshbSmagorinsky<BasicTurbulenceModel>::epsilon() const
    {
       k_ = (this->k(fvc::grad(this->U_)));
    
       return volScalarField::New
       (
           IOobject::groupName("epsilon", this->alphaRhoPhi_.group()),
           this->Ce_*k_*sqrt(k_)/this->delta()
       );
    }
    
    1 条回复 最后回复
  • 疏影横斜水清浅疏 离线
    疏影横斜水清浅疏 离线
    疏影横斜水清浅
    在 中回复了 李东岳 最后由 编辑
    #7

    @李东岳 我在controlDict中写入

    cacheTemporaryObjects
    (
        k
    );
    
    functions
    {
        #includeFunc writeObjects("k")
    }
    
    

    结果出现错误,请问李老师,能知道是什么原因吗
    6dbf7633-879c-433e-9243-5dcc7e4ac33a-图片.png

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

    你这个是openfoam7么,openfoam7可能不能这么用,你有没有openfoam10,你试一下

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

    疏影横斜水清浅疏 1 条回复 最后回复
  • 疏影横斜水清浅疏 离线
    疏影横斜水清浅疏 离线
    疏影横斜水清浅
    在 中回复了 李东岳 最后由 编辑
    #9

    @李东岳 是的,我使用的OpenFOAM7,我安装个10试试。

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

    openfoam7你就得按照主贴的方式试一下了

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

    1 条回复 最后回复
  • 7 离线
    7 离线
    78star
    在 中回复了 ZZ给我趴下 最后由 78star 编辑
    #11

    @ZZ给我趴下 在 Smagorinsky模型不输出k_sgs场 中说:

    @李东岳这里提示重复定义,在59行有定义,而且和这个函数一样。 003f24ca251de51d6dbeaacef31c1ce.png

    老帖子了,为了方便后面的人看,这里指出下问题。原始的代码159行这里是调用correctNut,而它的实现是在上面的59行。李老师的意思是换掉59行位置correctNut的函数实现代码里面的k_,不是把此处调用correctNut换成另一个新的实现,因此会报重复定义错误

    1 条回复 最后回复

  • 登录

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