Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新
    1. Home
    2. JqBu
    J
    • Profile
    • Following 3
    • Followers 1
    • Topics 7
    • Posts 27
    • Groups 0

    JqBu

    @JqBu

    5
    Profile views
    27
    Posts
    1
    Followers
    3
    Following
    Joined Last Online

    JqBu Unfollow Follow

    Latest posts made by JqBu

    • RE: 拉格朗日模型里是如何加入或删除粒子的?||为什么遍历粒子时粒子的属性会出现随机的情况?

      又检查了一下p1, p2这对碰撞对粒子所在的网格,发现p1,p2并没有在一个网格内,这和程序设计的逻辑不一致,我的compositeCollisionModel是在ORourke基础上改的,两个粒子本应该在是在同一个网格内才可能发生碰撞
      结果显示p1在ID为154862的网格内,p2在ID为159677的网格内,那么问题来了,为什么程序会跑出这种结果?p2到底是哪来的?
      a9810b0d-fcb7-460f-abd7-5ccddb1d3c7b-1656254977524.jpg

      posted in OpenFOAM
      J
      JqBu
    • RE: 拉格朗日模型里是如何加入或删除粒子的?||为什么遍历粒子时粒子的属性会出现随机的情况?

      @星星星星晴 在 拉格朗日模型里是如何加入或删除粒子的?||为什么遍历粒子时粒子的属性会出现随机的情况? 中说:

      响

      是的 我现在是加了限制极大值极小值,但是后来就会出现ID=1,或者=2的情况,粒径和位置信息啥的也都不对,有点疑惑

      posted in OpenFOAM
      J
      JqBu
    • 拉格朗日模型里是如何加入或删除粒子的?||为什么遍历粒子时粒子的属性会出现随机的情况?

      以下问题基于OF7,OF9以上版本不确定具体模型是怎么回事,但是OF8以下的大概差不多,希望各位大佬们给点拨以下!

      核心问题:拉格朗日模型在添加或删除粒子的时候是基于什么list或者是什么序列存储的粒子的信息?
      我发现不同子模型在添加粒子时候都是通过addParticle函数实现的

      template<class ParticleType>
      void Foam::Cloud<ParticleType>::addParticle(ParticleType* pPtr)
      {
          this->append(pPtr);
      }
      
      // 用injectionModel举例,先new一个指针作为粒子,再通过指针赋予粒子各种属性
      parcelType* pPtr = new parcelType(mesh, pos, celli);
      
      // 然后调用addParticle函数将有属性的粒子加入场内
      cloud.addParticle(pPtr);
      

      删除粒子的时候调用deleteParticle函数

      template<class ParticleType>
      void Foam::Cloud<ParticleType>::deleteParticle(ParticleType& p)
      {
          delete(this->remove(&p));
      }
      
      // 用StochasticCollisionModel里的程序举例
      if (mass < this->owner().constProps().minParcelMass())
      {
           this->owner().deleteParticle(p);
      }
      

      那么在对指针(也就是粒子)进行append和remove的时候,OF是创建了一个指针的list吗还是什么,因为每个粒子指针都是new出来的,单纯new出来的指针是用二叉树的形式存储在堆里,应该不会出现指针的信息是随机生成的情况(为什么这么说见后面,我想象到的能让系统赋值随机数的可能性就是有一个list,本来list的各个位置都是有值的,然后人为把某个信息删掉,这样那个位置的信息就会是随机的?)。

      核心问题的来源(希望有耐心的大佬帮忙解答一下下面的问题!!!感激不尽!!!):
      最近测试喷雾算例时候会遇到一个问题,就是在计算的时候算着算着就会发散,大概像下面这样,CompostieCollision是我自己建的类,在这个模型里会有粒子的删除和添加功能(单就粒子的删除和添加功能来说,是仿照OF里自己的程序写的,不会有什么问题),但是问题应该是出现在这个类里了
      19223cdc-6a76-4c4b-8532-0b60c205805c-image.png

      仔细检查,多次测试输出了寻找到的粒子碰撞对p1,p2的各种属性时发现:p1的ID和各种属性是不会出现问题的,p2的ID会出现0、极大数或极小数,p2的粒径也不对,有时粒径很大,有时粒径为0(这里的ID是通过origID函数返回的,返回值是const类型,所以不会变)。如图
      8c3383c4-9034-4b55-8a4b-f0bc07eb9a86-image.png

      感觉这里的问题可能是系统遍历到粒子的时候随机生成了一些信息,导致粒子的ID是随机数,出问题的粒子的属性也不对(见下面报的错)。

      为了更好的计算,找到更多错误的规律,随后限制了遍历碰撞对的条件,限制了粒子的ID应该在计算域内的粒子数范围内,随后发现:p2的ID会是一个比较小的整数,粒径信息不正确,位置信息压根就没有,报错也报的是位置信息的错
      9eb935ea-f4f2-4740-9e96-61535e94cf6f-image.png

      但是上述问题只是在有几十万粒子的喷雾算例里才会出现,在只有两个粒子的binary collision里计算时不会出现这些问题,ID一切正常,各种属性信息也一切正常。

      请问各种大佬能不能麻烦给点建议?

      posted in OpenFOAM
      J
      JqBu
    • RE: 并行Pout输出内容在log文件里的位置不确定是为什么?

      @星星星星晴 感谢回复😊 回头我研究研究这个mpirundebug

      posted in OpenFOAM
      J
      JqBu
    • RE: 天河 2 号超算安装 OpenFOAM 7 (不含CGAL)

      @hongyan 在 天河 2 号超算安装 OpenFOAM 7 (不含CGAL) 中说:

      修改配置文件使用 Intel 编译器和 Intel MPI 进行编译

      请问修改配置文件为什么要使用 Intel 编译器和 Intel MPI 进行编译呢? 这样编译了之后就和自己电脑上的不一样了 怕是求解器什么后后面移到天河上会出问题

      posted in OpenFOAM
      J
      JqBu
    • 并行Pout输出内容在log文件里的位置不确定是为什么?

      今天突然发现了一个奇怪的现象,如果是单核计算的话,输出的内容应该是这个顺序:

      Solving 3-D cloud sprayCloud
      pAmbient = 101571.1
      Composite::collide
      WeColl = 8.30375;  B = 0.693729;  delta = 0.6744853
      Regime: Bouncing
      Composite collision model:
      nc_Composite_parcel =1
      total collision number of Composite = 2
      Ncoal = 0; Nbounc = 1; NSS = 1; NRS = 0
      product the number of child parcel = 0
      

      这和写代码时候想让他输出的位置是一样的;

      但一旦并行后,输出的顺序就变成了这样:

      Solving 3-D cloud sprayCloud
      [1] Composite::collide
      pAmbient = 101571.1
      [0] Composite::collide
      [1] Regime: Bouncing
      Composite collision model:
      nc_Composite_parcel =1
      total collision number of Composite = 2
      Ncoal = 0; Nbounc = 1; NSS = 1; NRS = 0
      product the number of child parcel = 0
      

      甚至还会在这种地方出现语句:

          Parcel fate (number, mass)      : patch (top|down|side)
            - escape                      = 0, 0
            - stick                       = 0, 0
          Temperature min/max             = 293, 293
          Mass transfer phase change      = 0
      [1] Composite::collide
          D10, D32, Dmax (mu)             = 99.81255, 101.9875, 105
          Liquid penetration 95% mass (m) = 0.0006347351
          Liquid penetration_y 95% mass (m) = 0.0005967672
      

      使用并行输出Pout后和写这些输出语句的先后位置就不一样了

      请问各位大佬这是为什么呢?

      posted in OpenFOAM
      J
      JqBu
    • RE: paraview如何更改单位?

      @jqbu 找到答案了 感谢已经毕业的师兄的解答
      修改单位需要通过calculator生成一个新的场,然后在lagend里自己修改单位就好了calculator.png
      比如这样操作
      99db4c11-2a3e-41cb-9ecc-fad04ad23df8-image.png
      就可以变成想要的结果了
      4d3f7566-d7a0-43e9-85fe-a676b55ff453-image.png

      posted in OpenFOAM
      J
      JqBu
    • paraview如何更改单位?

      请问各位大佬 paraview如何更改单位呀?比如用展示拉格朗日粒子的粒径的时候,总是显示0.000105 m 但是不知道如何设置105 um?诸如此类的修改单位的方式有人可以教教吗?
      c5c362dc-b787-44ca-b04e-513f2c23df86-image.png

      posted in OpenFOAM
      J
      JqBu
    • RE: 拉格朗日一个bug

      用blueCFD转化了粒子坐标后(https://github.com/blueCFD/lagrangianExtraFunctionObjects/tree/OF5x) 突然遇到了另一个报错 看起来像是转化过程中浮点数出错了 后面找了代码 发现是调用了regIOobject::write(cloud_.size())这个函数,然而我只在of里找到了 virtual bool write(const bool write = true) const这个函数 看起来不太对的样子

      请问有人遇到过吗 请问如何解决?6b9ed312-dc28-4275-bb50-f401e38a6d4b-image.png

      posted in OpenFOAM
      J
      JqBu
    • RE: C币运行机制测试

      看看我有没有c币?看看我有没有c币?看看我有没有c币?看看我有没有c币?看看我有没有c币?看看我有没有c币?

      posted in C斯达克
      J
      JqBu