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. 每个时间步文件夹下没有数据写入,求大神!

每个时间步文件夹下没有数据写入,求大神!

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

    我在linearViscousStress.H中需要引用omega(SSTkomega.C中的)变量,然后我这样引用:

    const volScalarField& omega_ = 
    (
    this->mesh_.objectRegistry::template 
    lookupObject<volScalarField>("omega")
    );
    

    编译没问题,但当我运行求解器时,会出现:

    --> FOAM FATAL ERROR: 
    
        request for volScalarField omega from objectRegistry region0 failed
        available objects of type volScalarField are
    15
    (
    sigmaMag
    alphas
    nu.pos
    muMag_0
    rho
    nu.molten
    p_rgh
    nu
    alpha.molten
    nu.neg
    muMag
    rho_0
    alpha.neg
    alpha.pos
    sigmaMag_0
    )
    

    即objectRegistry region0此时没有omega注册,我分析原因:执行求解器的时候linearViscousStress.C先执行,此时omega还没注册进表里,显示找不到它,我现在在linearViscousStress.C的引用以前加入:

    omega
        (
            IOobject
            (
                IOobject::groupName("omega", alphaRhoPhi.group()),
                //"omega",
                runTime.timeName(),      //way--time
                mesh,                    //objectRegistry---region0(fvmesh)
                IOobject::MUST_READ,            //regIOobject	
                IOobject::AUTO_WRITE            //regIOobject
            ),
            mesh
    );
    
    const volScalarField& omega_ = 
        (
        this->mesh_.objectRegistry::template 
        lookupObject<volScalarField>("omega")
    );
    

    求解器可以运行,也omage也正常迭代,
    但在每个时间步文件夹下,omage文件始终保持0文件下的状态,没有数据写入,所以不知为何?
    我相当于IOobject了两次omega变量(其中SSTkomegabase.C本身自带一次,自己人为添加一次),是这个原因吗?

    :zoule: :zoule: :zoule:

    尚 C 2 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 Chen_hao 最后由 编辑
    #2

    @chen_hao 试试加个write?

    C 1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 尚善若水 最后由 编辑
    #3

    @尚善若水
    唯独omega没有输出,其他正常,我看有求解器程序中有runTime.write()

    我单独加omega的话该怎么写

    尚 1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 Chen_hao 最后由 编辑
    #4

    @chen_hao 我后处理的程序是这样写的,我不确定,你可以试一下。我也不太懂:135:

            Info<< "Calculating LES Resolved Index Quality -> IQη (LESIQ)\n" << endl;
    
            // LES Resolved Index Quality of TKE -> IQη = LESIQ
            volScalarField LESIQ
            (
                IOobject
                (
                    "LESIQ",
                    runTime.timeName(),
                    mesh,
                    IOobject::NO_READ,
                    IOobject::AUTO_WRITE
                ),
                mesh,
                dimensionedScalar
                (
                    "LESIQ",
                    dimless,
                    scalar(0)
                )
            );
            //LESIQ = 1/(1+0.05*(pow((mu+muSGS)/max(mu, muSmall), (0.53/1.0))));  
            LESIQ = 1/(1+0.05*(pow(muEff/max(mu, muSmall), (0.53/1.0))));  
            LESIQ.write();
    
    C 1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 尚善若水 最后由 编辑
    #5

    @尚善若水
    谢谢, 你是放在controlDict中吗?

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 Chen_hao 最后由 编辑
    #6

    @chen_hao 在 每个时间步文件夹下没有数据写入,求大神! 中说:

    我在linearViscousStress.H中需要引用omega(SSTkomega.C中的)变量,然后我这样引用:

    const volScalarField& omega_ = 
    (
    this->mesh_.objectRegistry::template 
    lookupObject<volScalarField>("omega")
    );
    

    编译没问题,但当我运行求解器时,会出现:

    --> FOAM FATAL ERROR: 
    
        request for volScalarField omega from objectRegistry region0 failed
        available objects of type volScalarField are
    15
    (
    sigmaMag
    alphas
    nu.pos
    muMag_0
    rho
    nu.molten
    p_rgh
    nu
    alpha.molten
    nu.neg
    muMag
    rho_0
    alpha.neg
    alpha.pos
    sigmaMag_0
    )
    

    即objectRegistry region0此时没有omega注册,我分析原因:执行求解器的时候linearViscousStress.C先执行,此时omega还没注册进表里,显示找不到它,我现在在linearViscousStress.C的引用以前加入:

    omega
        (
            IOobject
            (
                IOobject::groupName("omega", alphaRhoPhi.group()),
                //"omega",
                runTime.timeName(),      //way--time
                mesh,                    //objectRegistry---region0(fvmesh)
                IOobject::MUST_READ,            //regIOobject	
                IOobject::AUTO_WRITE            //regIOobject
            ),
            mesh
    );
    
    const volScalarField& omega_ = 
        (
        this->mesh_.objectRegistry::template 
        lookupObject<volScalarField>("omega")
    );
    

    求解器可以运行,也omage也正常迭代,
    但在每个时间步文件夹下,omage文件始终保持0文件下的状态,没有数据写入,所以不知为何?
    我相当于IOobject了两次omega变量(其中SSTkomegabase.C本身自带一次,自己人为添加一次),是这个原因吗?

    :zoule: :zoule: :zoule:

    @李东岳 @bestucan 想问下怎么把一个注册到某个objectRegistry的物理量从其中 删除注销:mihu: 有没有办法 我看regIOobject里有checkOut()函数,不知道能不能实现

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 Chen_hao 最后由 bestucan 编辑
    #7

    @chen_hao 从 volScalarField 中找不到omega,应该想办法在 volScalarField 里面注册 omege,现在直接在使用的地方之前加。

    倒是不提示找不到了。但是,这个新建的 omega 八成是个局部变量,会随着函数调用的结束被删除。所以对其进行的各种赋值就没有意义了。因为输出的那个 omega 应该不是新建的这个

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    C 1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 bestucan 最后由 编辑
    #8

    @bestucan
    谢谢老师的耐心解答:xinxin: ,我之前想达到的理想效果是:
    建立个 一次性的Omega场 让第一个循环运行起来后注销,后面的omega场是原湍流模型里的。
    在线性项中加入,会可能出现老师说的情况,每轮都会重新新建。

    求解器运行时,按照createFields.H中的顺序建立许多场,然后读取湍流模型的智能指针,我有个想法:如果有能注销IOobject的建立场命令吗 ,我在createFields中建立这种一次性的omega!
    如果没发做到,按照我的编写似乎没发在linearstress运行前注册进去Omega,似乎这种硬植入是无解的:xinlei:

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 Chen_hao 最后由 bestucan 编辑
    #9

    @chen_hao 把 0 文件夹的 omega 删了试试?
    https://www.cfd-online.com/Forums/openfoam-solving/188536-request-volscalarfield-none-objectregistry-region0-failed.html

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    写于 最后由 编辑
    #10

    @bestucan 谢谢老师,我试了下,还是不行~

    他是由于none量 他把它删了,看来我的问题就是那个omega,只要用

    const volScalarField& omega_ = 
    (
    this->mesh_.objectRegistry::template 
    lookupObject<volScalarField>("omega")
    );
    

    就会找不到,估计是结构问题,难道只能重写了。

    1 条回复 最后回复

  • 登录

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