CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新
    1. 主页
    2. Tens
    T
    • 资料
    • 关注 1
    • 粉丝 5
    • 主题 24
    • 帖子 195
    • 群组 1

    Tens

    @Tens

    讲师

    52
    资料浏览
    195
    帖子
    5
    粉丝
    1
    关注
    注册时间 最后登录

    Tens 取消关注 关注
    讲师

    Tens 发布的最新帖子

    • RE: 关于在compressibleInterFoam中添加组分方程

      MutiComponentPhaseModel.C中有部分用phir对通量进行了修正,我记得alphaEqn中也有这部分,建议看看这项是不是关键

      发布在 OpenFOAM
      T
      Tens
    • RE: 请问OF7中如何得到拉格朗日粒子轨迹

      @dxl Extract Block 提取出想显示的面就可以了

      发布在 OpenFOAM
      T
      Tens
    • RE: 请问OF7中如何得到拉格朗日粒子轨迹

      @dxl 在paraview里打开Ensight文件夹中的case文件

      发布在 OpenFOAM
      T
      Tens
    • RE: VOF方法给气相添加组分方程,液相部分存在组分,怎么解决

      @lrl3512 太复杂了,后面没再弄了

      发布在 OpenFOAM
      T
      Tens
    • RE: 关于OpenFOAM中,多相流守恒性与鲁棒性的讨论

      @四季之中的隐星 不太了解multiphaseEulerFoam这个求解器,但是在compressibleInterFoam中,膨胀体积在相体积分数方程中好像是通过源项dgdt,然后MULES修正来处理的。
      参考CompressibleInterFoam解析
      我看phaseSystemSolve.C文件中好像也这样进行处理了

      发布在 OpenFOAM
      T
      Tens
    • RE: 关于并行中的reduce函数

      @xpqiu 好像是这样的,但是xxxx是对颗粒的某个值进行统计,类似于求D32。xxxx应该是不同核内取值不一样的数,如果这样的话,那么每个核内是计算自身负责区域内的颗粒,redece则是求和,应该是没问题的
      下面是of内求D32的代码:

      template<class CloudType>
      inline Foam::scalar Foam::KinematicCloud<CloudType>::Dij
      (
          const label i,
          const label j
      ) const
      {
          scalar si = 0.0;
          scalar sj = 0.0;
          forAllConstIter(typename KinematicCloud<CloudType>, *this, iter)
          {
              const parcelType& p = iter();
              si += p.nParticle()*pow(p.d(), i);
              sj += p.nParticle()*pow(p.d(), j);
          }
      
          reduce(si, sumOp<scalar>());
          reduce(sj, sumOp<scalar>());
          sj = max(sj, vSmall);
      
          return si/sj;
      }
      

      我的代码是仿照写的,不过我要统计的是20个变量,所以直接定义List:

      List<scalar> np(20,0.0);
      
      for (label i=0;i<20;i++)
      {
          forAllIter(typename basicSprayCloud::sprayCloudType,parcels,pIter)
          {
              parceltype& p = pIter();
              if (p满足条件)
              {
                  np[i] += xxxx;   //每个时间步累加
              }
          }
          
          reduce(np[i], sumOp<scalar>());
      }
      
      发布在 OpenFOAM
      T
      Tens
    • RE: 如何获取sprayFoam计算结果中颗粒位置信息

      @江山不如凉竹
      position0是入射点的坐标,颗粒实时坐标在positions里,参考:
      请问OF7中如何得到拉格朗日粒子轨迹;
      拉格朗日一个bug

      发布在 OpenFOAM
      T
      Tens
    • RE: 关于并行中的reduce函数

      分别为单核和6核计算结果,因为时间步非常小,所以单核的变化很小是合理的,6核变化太大了

      这里弄错了,表格上的数据不是6核计算的结果,而是40核,忽然发现每一时间步的data都差不多是上一时间步的40倍,当改成6核运行时,又变成了6倍,是哪里的BUG造成的呢

      发布在 OpenFOAM
      T
      Tens
    • RE: 关于并行中的reduce函数

      分别为单核和6核计算结果,因为时间步非常小,所以单核的变化很小是合理的,6核变化太大了
      583858f1-368a-4a0b-a35c-c1a873f4f188-image.png
      4dc27277-97cd-4a7b-9ee7-b62f23878fb3-image.png

      发布在 OpenFOAM
      T
      Tens
    • RE: 关于并行中的reduce函数

      我猜测并行运算就是将变量拆分成数组,比如定义一个变量n,4核运算,就会生成一个数组n[4],数组的每个元素就在每个核内运算,然后reduce就是把数组求和,那对于本身就是一个数组的np[20],在reduce时就会出现问题?
      感觉把20个变量分别单独定义就能解决这个问题,但是这么多变量每个单独定义太麻烦了,有人有解决方法或者思路吗

      发布在 OpenFOAM
      T
      Tens