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
7 帖子 3 发布者 1.3k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 芋 离线
    芋 离线
    芋圆不圆
    写于 最后由 编辑
    #1

    求助各位大佬,本人刚学习open foam没多久,现在是在多域求解器chtMultiRegionFoam的基础上进行修改,需要把它的原能量方程改写成温度方程,

       while(pimple.correctNonOrthogonal())
       {
          fvScalarMatrix TEqn
        (
             fvm::ddt(T)
             +fvm::div(phiFluid[i],T)
             - fvm::laplacian(alphaEff,T)
           ==
          rad.ST(rhoCp , T)
        );  
              TEqn.relax();
              TEqn.solve();
        }
    

    在不加辐射项的时候算例是可以计算的,但是加上辐射项后会报错(报错信息如下),已经困扰我一个月了,不知道是哪个地方的量纲不对

    phiFluid[0] dimensions: [0 3 -1 0 0 0 0]
    
    
    --> FOAM FATAL ERROR: 
    LHS and RHS of - have different dimensions
         dimensions : [1 0 -3 1 0 0 0] - [1 -1 -3 0 0 0 0]
    
    
        From function Foam::dimensionSet Foam::operator-(const Foam::dimensionSet&, const Foam::dimensionSet&)
        in file dimensionSet/dimensionSet.C at line 521.
    
    FOAM aborting
    
    
    1 条回复 最后回复
  • 1 离线
    1 离线
    18190691340
    写于 最后由 编辑
    #2

    有可能你参数量纲单位设置错了

    芋 1 条回复 最后回复
  • I 在线
    I 在线
    ice_flow
    写于 最后由 编辑
    #3

    可以把方程各项的维度输出一下,有可能通量换算出问题了。
    Info << "phiFluid[i] dimensions: " << phiFluid[i].dimensions() << endl;
    Info << "alphaEff dimensions: " << alphaEff.dimensions() << endl;
    Info << "rad.ST dimensions: " << rad.ST(rhoCp, T).dimensions() << endl;

    芋 1 条回复 最后回复
  • 芋 离线
    芋 离线
    芋圆不圆
    在 中回复了 ice_flow 最后由 编辑
    #4

    @ice_flow 谢谢老师,我今天才看见回复,我按照您的回复对量纲进行了输出

    Info << "phiFluid[i] dimensions: " << phiFluid[i].dimensions() << endl;
    Info << "alphaEff dimensions: " << alphaEff.dimensions() << endl;
    Info << "rad.ST dimensions: " << rad.ST(rhoCp, T).ptr()->dimensions() << endl;
    

    输出结果是这样的,辐射项的量纲不知道为啥输出不出来

    phiFluid[i] dimensions: [0 3 -1 0 0 0 0]
    alphaEff dimensions: [0 2 -1 0 0 0 0]
    rad.ST dimensions: 
    
    --> FOAM FATAL ERROR: 
    LHS and RHS of - have different dimensions
         dimensions : [1 0 -3 1 0 0 0] - [1 -1 -3 0 0 0 0]
    
    
    I 1 条回复 最后回复
  • I 在线
    I 在线
    ice_flow
    在 中回复了 芋圆不圆 最后由 编辑
    #5

    @芋圆不圆

    我对你这个方程不太熟悉,你自己可以对照原方程检查量纲。如果没弄错的话,
    在 TEqn 方程中,fvm::ddt(T) 的维度应该是 [1 0 -3 1 0 0 0](即温度的时间导数,单位是 K/s)。

    fvm::div(phiFluid[i], T) 的维度应该是 [1 0 -3 1 0 0 0](即对流项,单位是 K/s)。

    fvm::laplacian(alphaEff, T) 的维度应该是 [1 0 -3 1 0 0 0](即扩散项,单位是 K/s)。

    rad.ST(rhoCp, T) 的维度应该是 [1 0 -3 1 0 0 0](即辐射源项,单位是 K/s)

    要让 rad.ST(rhoCp, T) 的返回值与方程中其他项的维度一致,可以检查 rad.ST 的实现或传入的参数(rhoCp)。大概是这个思路。

    芋 1 条回复 最后回复
  • 芋 离线
    芋 离线
    芋圆不圆
    在 中回复了 ice_flow 最后由 编辑
    #6

    @ice_flow 好的谢谢老师,我发现问题了,是我的0文件夹下的G的量纲定义错了,但是之前在用自己改写的求解器计算的时候因为都是考虑无重力的情况,所以一直没想到是这个文件出了问题,非常感谢老师们的指导

    1 条回复 最后回复
  • 芋 离线
    芋 离线
    芋圆不圆
    在 中回复了 18190691340 最后由 编辑
    #7

    @18190691340 是的,谢谢老师,我发现是我的0文件夹下的G的参数量纲定义错了,是从别的算例文件那一起考过来的,因为我的计算都是无重力情况下的,所以一直没考虑过是这个文件出了问题,我还以为是求解器中的变量量纲定义错了:zoule:

    1 条回复 最后回复

  • 登录

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