Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新
    1. Home
    2. chaoscfd
    C
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Groups

    chaoscfd

    @chaoscfd

    15
    Posts
    157
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    chaoscfd Follow

    Best posts made by chaoscfd

    This user hasn't posted anything yet.

    Latest posts made by chaoscfd

    • RE: 东岳流体“CFD中的大涡模拟”公式19的问题

      对对对,这样是对的,我之前把应变率和湍动能搞混了,谢谢李老师了!

      posted in Algorithm
      C
      chaoscfd
    • 东岳流体“CFD中的大涡模拟”公式19的问题

      李老师的“CFD中的大涡模拟”中的公式19,\begin{equation}
      \nu_{\mathrm{SGS}}=\rho C_{\mathrm{SGS}} \Delta \sqrt{k_\mathrm{SGS}}
      \label{Smag}
      \end{equation}
      CSGS和delta上面是不是少了平方?看了两本书都是有平方的。还有运动粘度的话是不是多乘了一个密度?

      posted in Algorithm
      C
      chaoscfd
    • RE: 源项类中的addSup函数是如何被调用的?

      @Cr 原来是在这里啊,感谢感谢!

      posted in OpenFOAM
      C
      chaoscfd
    • 源项类中的addSup函数是如何被调用的?

      在各种源项类的声明和实现中经常能看到addSup函数,功能为将源项加入到控制方程中,如在actuationDiskSource.H中:

       //- Source term to momentum equation
      virtual void addSup
       (
               fvMatrix<vector>& eqn,
               const label fieldi
       );
      

      那么请问这个addSup函数是在什么时候被调用的?找了很久没有找到。在网上查了一些资料,基本可以确定这个函数是在求解器形成U方程的时候被调用了,如在simpleFoam的UEqn.H中:

           tmp<fvVectorMatrix> tUEqn
           (
               fvm::div(phi, U)
             + MRF.DDt(U)
             + turbulence->divDevSigma(U)
            ==
               fvOptions(U)
           );
      

      大家都说fvOptions(U)就用到了addSup函数,可是这里addSup函数是如何被调用的?希望有大神能帮忙解答!

      posted in OpenFOAM
      C
      chaoscfd
    • RE: 请教porosityModel.C中diag()、source()和psi()的意思

      时隔九个月,今天重新看这个帖子,终于搞清楚了,记录一下。
      确实是像李老师说的那样,Usource()就是源项,这里是手动加的源项,之前一直以为是系数矩阵的非对角元。
      Udiag()代表U方程的对角线元素,来自IduMatrix,而Usource()是源项矩阵,来自fvMatrix。上面的代码之所以会出现Udiag(),其实就是像李老师说的那样,是为了增加对角占优。而多孔隙模型的源项就是从Usource加入的:

      Usource[celli] -= V[celli]*((Cd - I*isoCd) & U[celli]);
      

      这里Cd就是公式(2)中括号中的部分。

      posted in OpenFOAM
      C
      chaoscfd
    • RE: SnappyHexMesh中的使用问题

      @秋山结月
      1.对的,最好另外再建立新的几何体,用这个新的几何体包裹要refine的局部区域。
      2.这个问题倒是没有遇到过,是不是stl文件的问题?
      3.snap结束后不应该直接没掉啊,即便是没有需要施加边界层的区域,也会有“No layers to generate ...”,这样的信息。看看你后面有没有这样的提示信息?

      posted in OpenFOAM
      C
      chaoscfd
    • RE: SnappyHexMesh中的使用问题

      个人的一个经验是善用refinementRegions关键字,在需要加密的地方建立refinementRegions,将level提高些,应该可以优化一下网格。还有一个地方是可以试试调整surfaceFeatureDict中的includedAngle,可以优化角度变化比较剧烈处的网格,比如你第一张图那里。另外可以适当将maxLocalCells和maxGlobalCells提高些。这个还是熟能生巧,多试试改变那些参数。
      SHM是分步来处理网格的,先是snap,最后才是加边界层。所以边界层网格在最后一个时间步内,不知道你有没有查看最后一个时间步的网格。

      posted in OpenFOAM
      C
      chaoscfd
    • RE: 请教porosityModel.C中diag()、source()和psi()的意思

      @东岳 在 请教porosityModel.C中diag()、source()和psi()的意思 中说:

      这几行来看,应该就是人工手动加的源项。对角部分isoCd和源项isoCd部分可以抵消,但这样写可以增加对角占优

      “对角部分isoCd和源项isoCd部分可以抵消”,这句话还是不太懂,我还得再消化消化。
      但今天试着输出了一些网格的Usource():
      这是空间内存在多孔隙介质时的Usource()值:
      f7a5c101-0e07-4eb2-aee0-1db9a3484906-image.png
      这是空间内无多孔隙介质时的Usource()值:
      93668cd2-4164-4301-98da-dc249cd30bb2-image.png
      发现确实没有多孔隙介质时Usource()的值要小很多,已经接近0了。

      posted in OpenFOAM
      C
      chaoscfd
    • RE: 请教porosityModel.C中diag()、source()和psi()的意思

      @东岳 在 请教porosityModel.C中diag()、source()和psi()的意思 中说:

      http://dyfluid.com/icoFoam.html

      感谢李老师的回复!
      稍微有一点理解了,比如在icoFoam中这个源项是来自于上一个时间步的值:
      \begin{equation}
      S_{P}^{n}=\frac{V_{p}}{\Delta_{t}}U_{P}^{n}
      \end{equation}
      但如果是没有时间项的SIMPLE算法是不是这个源项UEqn.source()就没有值了呢?
      主要是因为我的问题是在看porousSimpleFoam的代码时产生的。在porousSimpleFoam中的多孔隙模型DarcyForchheimer里面,源项的表达式为:
      \begin{equation}
      S=-(\mu d+\frac{\rho \left | U \right |}{2})U
      \end{equation}
      这一段代码应该是对应DarcyForchheimerTemplates.C中的apply()函数:

      void Foam::porosityModels::DarcyForchheimer::apply
      (
          scalarField& Udiag,
          vectorField& Usource,
          const scalarField& V,
          const RhoFieldType& rho,
          const scalarField& mu,
          const vectorField& U
      ) const
      {
          forAll(cellZoneIDs_, zoneI)
          {
              const tensorField& dZones = D_[zoneI];
              const tensorField& fZones = F_[zoneI];
      
              const labelList& cells = mesh_.cellZones()[cellZoneIDs_[zoneI]];
      
              forAll(cells, i)
              {
                  const label celli = cells[i];
                  const label j = this->fieldIndex(i);
                  const tensor Cd =
                      mu[celli]*dZones[j] + (rho[celli]*mag(U[celli]))*fZones[j];
      
                  const scalar isoCd = tr(Cd);
      
                  Udiag[celli] += V[celli]*isoCd;
                  Usource[celli] -= V[celli]*((Cd - I*isoCd) & U[celli]);
              }
          }
      }
      

      代码的最后

                  Udiag[celli] += V[celli]*isoCd;
                  Usource[celli] -= V[celli]*((Cd - I*isoCd) & U[celli]);
      

      给Udiag()和Usource()附了值,应该就是代表对U方程的修正,将源项的影响传入到U方程中,这样的理解是否正确?那在赋值之前,对于SIMPLE算法,Usoure()的值应该是为0的,是这样的吗?

      posted in OpenFOAM
      C
      chaoscfd
    • RE: 请教porosityModel.C中diag()、source()和psi()的意思

      啊,尴尬,题目写错了,应该是“请教DarcyForchheimer.C中diag()、source()和psi()的意思”。correct函数是在DarcyForchheimer.C中,不是在porosityModel.C中。正文中对应的地方也错了。:zoule:

      posted in OpenFOAM
      C
      chaoscfd