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. 从objectRegistry中无法获得输运字典问题

从objectRegistry中无法获得输运字典问题

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

    使用了湍流模型的流固耦合求解器计算一个流固耦合算例(封闭方腔传热问题)时出现了如下报错:

    Region: fluid Courant Number mean: 0 max: 0
    Region: fluid Courant Number mean: 0 max: 0
    Time = 0.01
    
    Solving for fluid region fluid
    DILUPBiCG:  Solving for Ux, Initial residual = 0, Final residual = 0, No Iterations 0
    DILUPBiCG:  Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0
    DILUPBiCG:  Solving for Uz, Initial residual = 0, Final residual = 0, No Iterations 0
    GAMGPCG:  Solving for p, Initial residual = 0, Final residual = 0, No Iterations 0
    time step continuity errors : sum local = 0, global = 0, cumulative = 1(0)
    DILUPBiCG:  Solving for omega, Initial residual = 0.3364115726, Final residual   = 9.041867288e-08, No Iterations 81
    DILUPBiCG:  Solving for k, Initial residual = 1, Final residual = 9.098095726e-08, No Iterations 158
    bounding k, min: -36.19837748 max: -14.87872514 average: -18.05165843
    [6] 
    [6] 
    
    [1] --> FOAM FATAL ERROR: 
    [1] 
    request for dictionary transportProperties from objectRegistry fluid failed
    available objects of type dictionary are
    
    5
    (
    RASProperties//
    fvSchemes
    fvSolution
    data
    turbulenceModel
    )
    [1] 
    [1] 
    [1]     From function objectRegistry::lookupObject<Type>(const word&) const
    [1]     in file /home/kdd/OpenFOAM/OpenFOAM-2.3.1/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 198.
    [1] 
    FOAM parallel run aborting
    

    算例接下去是求解温度方程,无法获得输运字典的参数进而不能往下计算。
    查看了一些相关的帖子,一般都是某个变量没有注册对象导致错误。但我这个报错直接是输运字典错误,并且对于提示的五个可获得的字典也看不出有任何关联。
    在求解器的流体区创建场的相关代码也写了:如下

    forAll(fluidRegions, i)
    {
        Info<< "*** Reading fluid mesh thermophysical properties for region "
            << fluidRegions[i].name() << nl << endl;
    
        IOdictionary transportProperties
        (
           IOobject
           (
                    "transportProperties",
                    runTime.constant(),
                    fluidRegions[i],
                    IOobject::MUST_READ,
                    IOobject::NO_WRITE
           )
        ); 
    
        Info<< "    Adding to TFluid\n" << endl;
         TFluid.set
        (
            i,
            new volScalarField
            (
                IOobject
                (
                    "T",
                    runTime.timeName(),
                    fluidRegions[i],
                    IOobject::MUST_READ,
                    IOobject::AUTO_WRITE
                ),
                fluidRegions[i]
            )
        );
    
    laminarTransportFluid.set//jiade
        (
            i,
        new singlePhaseTransportModel(UFluid[i], phiFluid[i])
        );
    
        Info<< "    Adding to turbulence\n" << endl;//jiade
        turbulenceFluid.set
        (
            i,
            incompressible::turbulenceModel::New
            (
                UFluid[i],
                phiFluid[i],
                laminarTransportFluid[i]		
            ).ptr()
        );
    
          Info<< "    Adding to alphatFluid\n" << endl;//jiade
         alphatFluid.set//jiade
        (
            i,
            new volScalarField
            (
                IOobject
                (
                    "alphat",
                    runTime.timeName(),
                    fluidRegions[i],
                    IOobject::MUST_READ,
                    IOobject::AUTO_WRITE
                ),
                fluidRegions[i]
            )
        );
    

    这个报错第一次遇到,有没有小伙伴和大佬能指点指点,感激不尽。

    1 条回复 最后回复
  • C 离线
    C 离线
    cccrrryyy 超神
    写于 最后由 编辑
    #2

    首先你的计算看起来发散了,出现了“bounding k xxx”。一般情况下不应该出现这个,而且显示算出来的k都是负值,这个明显不对。

    其次,一般情况下出现“request for xxx from objectRegisttry failed”是因为你计算中需要什么东西而你没有提供或者它没有识别到。看提示它需要你提供fluid的各种参数设置,而你的算例没有,方便的话把整个算例贴上来看看。

    I don't want to survive, I want to thrive.

    1 条回复 最后回复
  • 一 离线
    一 离线
    一颗鸭蛋
    写于 最后由 编辑
    #3

    aaa.zip
    这是我的完整算例(求解器的温度方程和创建流体场的代码也在其中),目前有关湍流模型需要用到的边界条件(nut、k、Omega、alphat、Pr)我还不能确定,所以应该会发散,只是这个报错让我不解。

    C 1 条回复 最后回复
  • C 离线
    C 离线
    cccrrryyy 超神
    在 中回复了 一颗鸭蛋 最后由 编辑
    #4

    @一颗鸭蛋 不好意思啊这几天才有时间看这个。这个是你自己添加了新的输运模型的模块么?一下子看不出来什么问题,求解器好像也是新的。你说的下一步是求解温度方程是solveFluid_MHD.H这个文件里面的内容么,有没有试过一行一行的去调试这个里面的代码,比如让它随便输出个啥,这样可以找出来到底是哪里有问题。

    I don't want to survive, I want to thrive.

    一 1 条回复 最后回复
  • 一 离线
    一 离线
    一颗鸭蛋
    在 中回复了 cccrrryyy 最后由 编辑
    #5

    @cccrrryyy 的确添加了新的输运模块,在流体区求解温度方程(solveFluid_MHD.H),同时也会在固体区求解温度方程(流固耦合),只是目前还没有计算到固体区。调过一些可能有问题的代码,但依然存在这个问题。给我的直觉是湍流热扩散系数的计算有问题,但检查过后没发现问题(或者发现不了)

    1 条回复 最后回复
  • 马乔马 离线
    马乔马 离线
    马乔 大神
    写于 最后由 李东岳 编辑
    #6
    PtrList<IOdictionary> transportProperties(fluidRegions.size());
    
        forAll(fluidRegions, i)
        {
            Info<< "*** Reading fluid mesh thermophysical properties for region "
                << fluidRegions[i].name() << nl << endl;
    	
    	Info<< "Reading transportProperties\n" << endl;
    
    	transportProperties.set
    	(
    	    i,
    	    new IOdictionary
    	    (
    		IOobject
    		(
    		    "transportProperties",
    		    //runTime.timeName(),
    		    runTime.constant(),
    		    fluidRegions[i],
    		    IOobject::MUST_READ,
    		    IOobject::NO_WRITE
    		)
    	    )
    	);
        }
    
        forAll(fluidRegions, i)
        {
    	//const IOdictionary& dict = fluidRegions[i].thisDb()
    	//    .lookupObject<IOdictionary>("transportProperties");
    	const IOdictionary& dict = fluidRegions[i].thisDb()
    	    .lookupObject<IOdictionary>("transportPropertie");
        }
    
    

    Log, appear in the List:

    Reading transportProperties
    
    
    
    --> FOAM FATAL ERROR: 
    
        request for dictionary transportPropertie from objectRegistry bottomAir failed
        available objects of type dictionary are
    
    3
    (
    fvSchemes
    fvSolution
    transportProperties   //get it!
    )
    

    装逼没输过,吵架没赢过!

    一 2 条回复 最后回复
  • 一 离线
    一 离线
    一颗鸭蛋
    在 中回复了 马乔 最后由 编辑
    #7

    @马乔 我这个报错已经解决了,是流体区零文件下的alphat文件的壁面边界条件不能使用alphatJayatilleWallFunction函数。但是具体具体为什么不能使用我并不知道其中缘由。也许你可以调试一下边界条件。
    该壁面函数我在单域方腔绝缘算例中是能够使用的,但是在流固耦合求解器计算的流固耦合算例中却会报类似上述错误。希望了解该函数的朋友能够讲解一番,不胜感激。

    1 条回复 最后回复
  • 一 离线
    一 离线
    一颗鸭蛋
    在 中回复了 马乔 最后由 编辑
    #8

    @马乔 您好,我参照你的方法将transportProperties代码写进去,但是很奇怪的是,报错显示,request for dictionary transportPropertie ,而可获得的字典里是transportProperties,两者总是存在单复数的差别(就像你贴的代码里一样)。本来想着直接用令锑度边界条件绕开这个错误,但是最近发现还是得用alphat壁面函数。真是很奇怪呀。

    1 条回复 最后回复

  • 登录

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