Navigation

    CFD中文网

    CFD中文网

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

    JqBu

    @JqBu

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

    JqBu Unfollow Follow

    Latest posts made by 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
    • RE: 如何在openfoam中求解一元高次方程

      @星星星星晴 谢谢老师,我也尝试一下这个牛顿迭代法:xinxin:

      posted in OpenFOAM
      J
      JqBu
    • RE: 如何在openfoam中求解一元高次方程

      老师好,我是天津大学的学生,请问老师方便留个邮箱后续沟通吗?

      posted in OpenFOAM
      J
      JqBu
    • RE: 如何在openfoam中求解一元高次方程

      @星星星星晴 老师您好,我遇到了和您一样的问题,但是我把您这段代码算下来,遇到了几个问题:
      1.把这段代码放在OpenFOAM里的时候,会报错说重载的pow()模棱两可,“call of overloaded ‘pow(Foam::scalar&, Foam::scalar)’ is ambiguous”
      2.我用这段代码计算一元高次方程时候总不收敛,请问您之前有这问题吗?
      3.我也关注了您这篇帖子这部分内容,我看2007年的论文“A new predictive model for fragmenting and non-fragmenting binary droplet collisions”里说先把2.7次幂转换成4次幂和3次幂的两个方程,再用Runge-Kutta法进行了四次迭代,但是我没搞懂怎么用Runge-Kutta求解非微分方程,请问老师您后来尝试过用论文里的方法求解方程吗?或者对帖子里这段代码有什么改进吗?

      posted in OpenFOAM
      J
      JqBu
    • RE: 拉格朗日粒子追踪死循环

      @星星星星晴 前辈,我看了帖子之前的讨论,但是没太看懂大家解决粒子追踪这种死循环问题的原理是什么,之前算freeSpray的时候出现这种问题可以用添加patchInteractionModel的方法解决,但是后面算impinging spray的时候就解决不了了,网格尺度是一样的,粒子的设置也是一样的。我现在还没太清楚是程序哪个部分出现了问题?

      posted in OpenFOAM
      J
      JqBu
    • RE: 拉格朗日粒子追踪死循环

      @星星星星晴 前辈您好,感谢回复!请问您觉得多小的parcel算小呢?我在字典文件里设置了minParcelMass为1e-20,然后我设置的初始粒子的平均粒径在100um以上,破碎之后大部分也都是十几或几十um的水平

      posted in OpenFOAM
      J
      JqBu
    • RE: 拉格朗日粒子追踪死循环

      @yfclark 请问老师前面如何统计的,认为是分块的原因?现在又是如何思考的,加上locelInteraction就可以了? 因为我最近在算喷雾的时候也遇到了这个问题 排查之后也是在move函数出了问题,前面的算例加上locelInteraction就可以了,但是后来又有一个算例使用了各种patchInteractionModel都会卡在added xx new parcels这步。

      posted in OpenFOAM
      J
      JqBu
    • RE: 关于lagrangian求解器里preEvolve()的实现

      关于第一个问题,这里再回答一下,派生类可以调用基类的成员函数,virtual是用来重载函数的,但是这里派生类并没有重载operator,所以不需要用virtual,inline就可以

      posted in OpenFOAM
      J
      JqBu
    • 关于lagrangian求解器里preEvolve()的实现

      在研究sprayFoam求解器整个运行机制的时候,遇到了这样一个问题,
      在KinematicCloud.C中运行了这样一句话:

      functions_.preEvolve();
      

      而functions_是CloudFunctionObjectList<KinematicCloud<CloudType>>这个类的数据成员。那么在CloudFunctionObjectList类中,preEvolve函数被下面语句定义。

      template<class CloudType>
      void Foam::CloudFunctionObjectList<CloudType>::preEvolve()
      {
          forAll(*this, i)
          {
              this->operator[](i).preEvolve();		
          }
      }
      

      在这里有两个疑问:
      1.关于operator[]重载的说明:

      首先,this指针指向了functions_对象,属于类CloudFunctionObjectList,而类CloudFunctionObjectList继承于PtrList,PtrList继承于UPtrList,故调用了UPtrList里的operator函数。那么this->operator.preEvolve()就等价于functions_[i].preEvolve()(但这里的operator[](cosnt label i)不是virtual,而是inline,这样子类CloudFunctionObjectList可以调用UPtrList的operator吗?)

      template<class T>
      inline const T& Foam::UPtrList<T>::operator[](const label i) const
      {
          if (!ptrs_[i])
          {
              FatalErrorInFunction
                  << "hanging pointer at index " << i
                  << " (size " << size()
                  << "), cannot dereference"
                  << abort(FatalError);
          }
      
          return *(ptrs_[i]);
      }
      

      请问这样理解正确吗?

      2.this->operator.preEvolve();里的preEvolve()函数又在执行哪个preEvolve()函数呢?

      this->operator.preEvolve()就等价于functions_[i].preEvolve(),在调用KinematicCloud的对象时会调用KinematicCloud的构造函数,实现对functions_的初始化,通过初始化的结果选择用哪个preEvolve函数

      template<class CloudType>
      Foam::KinematicCloud<CloudType>::KinematicCloud
      (
          const word& cloudName,
          const volScalarField& rho,
          const volVectorField& U,
          const volScalarField& mu,
          const dimensionedVector& g,
          bool readFields
      )
      :
          CloudType(rho.mesh(), cloudName, false),
          kinematicCloud(),
          cloudCopyPtr_(nullptr),
          mesh_(rho.mesh()),
          particleProperties_
          (
              IOobject
              (
                  cloudName + "Properties",                        // 若为sprayFoam的程序,则为sprayCloudProperties
                  rho.mesh().time().constant(),
                  rho.mesh(),
                  IOobject::MUST_READ_IF_MODIFIED,
                  IOobject::NO_WRITE
              )
          ),
          outputProperties_
          (
              IOobject
              (
                  cloudName + "OutputProperties",
                  mesh_.time().timeName(),
                  "uniform"/cloud::prefix/cloudName,
                  mesh_,
                  IOobject::READ_IF_PRESENT,
                  IOobject::NO_WRITE
              )
          ),
          solution_(mesh_, particleProperties_.subDict("solution")),
          constProps_(particleProperties_),
          subModelProperties_
          (
              particleProperties_.subOrEmptyDict("subModels", solution_.active())
          ),
      
         ...
      
          functions_
          (
              *this,
              particleProperties_.subOrEmptyDict("cloudFunctions"),    // 通常在*CloudProperties文件最下面,会有cloudFunctions{}的内容,functions_则读取里面的信息
              solution_.active()
          ),
      

      但经搜索,在lagrangian/intermediate/submodels/CloudFunctionObjects/文件夹下只有VoidFraction,ParticleTrap,ParticleTracks,ParticleErosion这几个类里定义了preEvolve函数,而of自带tut里并非只用到了这几个fucntion,例如在lagrangian/reactingParcelFoam/verticalChannelLTS/constant/reactingCloud1Properties里,既有particleTracks1,又有patchPostProcessing1,那么patchPostProcessing1是如何实现的呢?

      posted in OpenFOAM
      J
      JqBu