CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新
    1. 主页
    2. xpqiu
    X
    • 资料
    • 关注 15
    • 粉丝 37
    • 主题 1
    • 帖子 238
    • 群组 1

    xpqiu

    @xpqiu

    教授

    1882
    资料浏览
    238
    帖子
    37
    粉丝
    15
    关注
    注册时间 最后登录

    xpqiu 取消关注 关注
    教授

    xpqiu 发布的最佳帖子

    • RE: bounding k,bounding epsilon,均超限,连续性方程不收敛
      1. 网格质量如何?如果网格太差(checkMesh有严重报错,最大非正交大于85,skewness 超过20,等),建议回炉重造。
      2. k 和 epsilon 的对流项离散格式用 linearUpwind,grad(k) 和 grad(epsilon) 用 cellimited,如果还不行,直接上 upwind试试。也可以先用upwind算一段时间再换成 linearUpwind。
      3. 边界条件的设置取决于你使用的湍流模型,对于高雷诺数模型,入口 k 和 epsilon 给固定值,根据湍流度来估算;壁面上 k 用 kqrWallFunction,epsilon 用 epsilonWallFunction,nut 用 nutUSpaldingWallFunction。高雷诺数k-epsilon湍流模型还要注意壁面 y+,一般认为需要 y+>30,如果y+太小,结果反而不好,也可能会引起计算不稳定。
      发布在 OpenFOAM
      X
      xpqiu
    • RE: 怎么理解OpenFoam中的runTimeSelection机制?

      @金石为开 本质上是 hashTable 的使用。在基类里调用宏函数 declareRunTimeSelectionTable 创建了一个 hashTable,其 key 的类型为 “word”,value 类型为函数指针,这个函数指针指向一个返回派生类临时对象的智能指针(autoPtr)。

      在派生类里,每次调用 addToRunTimeSelectionTable 的时候,相当于往 hashTable 里添加一组元素。

      在求解器里,创建的是基类的智能指针,这个指针指向基类中定义的 New 函数的返回值。New 的作用是选择具体的派生类,这里涉及到C++的一个特性,即基类指针可以指向派生类。New 函数根据你在算例里提供的模型的名字(typeName),去 hashTable 里匹配,然后将匹配到的派生类的对象返回。这样,就实现了模型的选择。

      具体参考:http://xiaopingqiu.github.io/2016/03/12/RTS1/

      发布在 OpenFOAM
      X
      xpqiu
    • RE: openfoam set fields

      @子仲无未 用CAD画一个多面体,坐标要跟你的网格适配,保证这个多面体刚刚好包围了你想要的网格。然后将该多边形导出成 STL 格式,然后用 topoSet 将改多边形所包围的网格提取到一个 cellSet,topoSetDict大致是这样写:

      {
       name c0;
      type cellSet;
      action delete;
      source surfaceToCell;
      sourceInfo
      {
          file "constant/triSurface/block.stl";
         outsidePoints (( 1.012 0.01 0.902));
         //includeCut false;
         includeCut true;
         includeInside true;
         includeOutside false;
         nearDistance 0.0;
         curvature 0;
       }
       }
      

      最后,在 setFieldsDict里,这样写:

      defaultFieldValues ( volScalarFieldValue alpha 0 );
      
      regions
      ( 
          cellToCell 
          { 
              set c0 ;
               fieldValues ( volScalarFieldValue alpha 0.60 ) ; 
          }
       );
      

      用这种方法,可以做到对任意形状的网格区块设置初始场。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 如何输出场最大温度值这个文件

      @myler

      functions
      {
          cellSource1
          {
              type         cellSource;
              functionObjectLibs ("libfieldFunctionObjects.so");
              enabled         yes;
              outputControl   outputTime;
              log             yes;
              valueOutput    yes;
              source          all;
              operation       max;
      
              fields
              (
                  T
              );
          }
      }
      

      这个加到 controlDict 里就能输出最大值了。

      其实还有一种办法,既然你说在终端的输出信息中包括了最大和最小温度,那么如果你保存了终端输出信息,你还可以用 linux 的工具来从那些众多的信息中将你想要的最大和最小信息提取出来,
      比如,假设你的文件名为 log

      cat log | grep "max(" | sed 's/^\ *//g' | cut -d ' ' -f 5
      

      感兴趣的话可以试试这个命令,可能不能完全适合你的情况,你需要做些修改。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: Ubuntu集群跨节点并行问题

      PS:一直不清楚为什么在.bashrc里的那4句注释掉就可以,之前从来没有对这4句太在意,而是直接添加OF的环境变量就好了。。。

      这里解释了为什么:http://www.evernote.com/l/AYvYUlXKzfxBIZ5sJbyk-cREUR1SGcAPIto/

      发布在 OpenFOAM
      X
      xpqiu
    • RE: OpenFOAM的一个bug

      @wwzhao 在OpenFOAM-2.1的时候,程序里写的就是“CrankNicholson” ,所以controlDict里也应该写“CrankNicholson”,虽然这个拼写确实是不正确的。但是从OpenFOAM-2.3开始,这个名字改成了正确的拼写:“CrankNicolson”,相差一个字母。所以这就导致了2.1和2.3的算例会在这里不兼容。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 关于边界条件

      常用出入口边界条件:
      https://cpp.openfoam.org/v4/a11022.html

      壁函数:
      https://cpp.openfoam.org/v4/a11020.html

      每一个边界条件都附有简短的说明以及使用示例。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 并行效率疑问

      @random_ran
      是 GAMG 在拖你的后腿,这么多核的情况下,你可以试试用 PCG + DIC 来求解 p 方程,这个方法并行效率会高一些。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: OpenFOAM中kOmegaSST和yPlusRAS

      @qjh888 在 OpenFOAM中kOmegaSST和yPlusRAS 中说:

      yPlus要在30~200之间才可以使用wallFunction,

      这个说的是标准壁函数,OpenFOAM中的omegaWallfunction是混合的,所以理论上对omega的边界处理是可以适用于较大范围的yPlus的。但是其他的湍流变量并没有这种混合,此外,yPlus太大,边界处网格必然变粗,精度也会相应下降。所以,yPlus取多少还是要根据实际情况来决定

      还有一个问题,为什么计算yPlusRAS一定要使用nutWallFunction?

      那是因为yPlus的计算是依赖于你所使用的湍流模型以及nut的边界条件处理的,所以,yPlusRAS需要调用nutWallFunction类中的一个函数来计算 yPlus

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 有关twophaseeulerfoam中的问题

      @lixh 在热物理属性那个文件里设置(thermoPhysicsProperties.air)。是否需要设置密度和年度,取决于你的热物理模型的选择,如果equationOfState设置的是 perfaceGas,那么,流体将遵循理想气体状态方程,这时不需要设置密度,因为密度是根据压力算出来的。如果设为rhoConst,这时需要指定流体的密度。粘度的设置取决于 transport 的设置,如果设置为 const,即粘度为常数,则需要指定粘度的值,如果选择其他粘度模型,则会有不同的设置,具体可以参考UserGuide的 thermoPhysics 这一章。

      发布在 OpenFOAM
      X
      xpqiu

    xpqiu 发布的最新帖子

    • RE: 双流体方法颗粒堆积模拟

      @youminghao

      可能是J-J 摩擦应力模型的问题。

      5b076dd5-7cb9-4724-a1db-1e0bec05e096-image.png

      上面图里面第一个是不考虑摩擦应力的结果,下面两个是考虑摩擦应力的结果。摩擦应力模型用的是 Laux,对应参考文献是:

      A. Nikolopoulos, N. Nikolopoulos, N. Varveris, S. Karellas, P. Grammelis, and E.
      Kakaras, Investigation of proper modeling of very dense granular flows in the
      recirculation system of CFBs. Particuology, 2012, 10(6):699-709

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 双流体方法颗粒堆积模拟

      @李东岳
      对,摩擦应力(frictional stress)很重要。加上摩擦应力才能在双流体模型中模拟出来堆积角。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 算例topoSet、refineMesh后,无法decomposePar

      @hy1112006
      哦,你的 refineMeshDict 里面需要一个 cellSet 来定义需要refine 的网格。这个 cellSet 也只是用来起这个作用吧。
      所以,你需要在 refineMesh 之前,先 topoSet 把 cellSet 生成出来,然后 refineMesh
      但是,在 decomposePar 的时候要排除对 cellSet 进行 decompose,因为我上一条回复说的原因。可以给 decomposePar 加一个选项,-noSets,这样在 decomposePar 的时候就不读取 cellSet 了,也就不会再触发你主楼遇到的错误了。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: openfoam 如何求余

      % 是整数求余,浮点数,不存在求余操作啊。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 算例topoSet、refineMesh后,无法decomposePar

      @hy1112006
      先 refineMesh,后 topoSet 试试。
      topoSet 生成的 cellZone 或者 cellSet 等,保存的网格ID是你refineMesh 之前的, refineMesh 之后,网格数量都变了,所以保存在 cellZone 或者 cellSet 里面的编号跟refine之后的网格都不匹配了。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: 集群上OF不能跨节点并行

      @cfdngu

      https://www.open-mpi.org/faq/?category=openfabrics#ofa-device-error
      这个链接里面的 53 应该是对应你的情况。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: decomposePar后边界条件改变

      @vbcwl
      我用的 openfoam.com 的版本,这个问题可能是 of9 的bug。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: RANS模型假设了整个域的湍流,那么它如何预测层流场和过渡场呢?

      @xiaoyang-luan
      RNG k-epsilon 预测不了转捩。
      转捩相关的湍流模型,参考:https://turbmodels.larc.nasa.gov/
      “Turbulence+Transition Models ” 部分

      发布在 OpenFOAM
      X
      xpqiu
    • RE: decomposePar后边界条件改变

      @vbcwl
      哦,不好意思刚才看错了。-0.06788236085 这个数字很奇怪,没看出来是怎么来的。我试了一下也没复现出来。

      发布在 OpenFOAM
      X
      xpqiu
    • RE: RANS模型假设了整个域的湍流,那么它如何预测层流场和过渡场呢?

      @xiaoyang-luan
      所以如果需要模拟 层流到湍流的转捩过程,需要特殊的湍流模型,一般的 k-epsilon, k-omega 模型确实是假定整个场都是湍流状态。

      发布在 OpenFOAM
      X
      xpqiu