CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    如何对每一个时间步下每个网格的数据(H2的反应速率)进行累加,并输出。

    OpenFOAM
    1
    1
    112
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      luca 最后由 编辑

      各位前辈好,我现在需要计算H2的反应速率,我在 createFields.H 中进行了如下定义:

      PtrList<volScalarField> ROP_(Y.size());
      forAll(Y, i)
      {
          const word RRname = "ROP." + Y[i].name();
          ROP_.set
          (
              i,
              new volScalarField
              (
                  IOobject
                  (
                      RRname,
                      runTime.timeName(),
                      mesh,
                      IOobject::NO_READ,
                      IOobject::AUTO_WRITE
                  ),
                  mesh,
                  dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0)
              )
          );    
      }
      

      随后我在 YEqn.H 中定义了ROP如何进行计算:

      forAll(Y, i)
      {
          ROP_[i].field() = -(reaction->R(Y[i])()).source()/mesh.V();
      }
      

      他这样就输出了所有组分的一个反应速率,但是目前我仅仅想得到氢气的反应速率,并输出H2在每一个时间步上所有网格下数据的一个累加值,对此,我在 AMRreactingLMFoam.H 中这样写:

      // ------------------------------------------------------------------------- //
          fileName myFile = "THRR.dat";
          //OFstream myStream("THRR.dat");
          std:: ofstream myStream(myFile.c_str(), ios_base::app);
      // ------------------------------------------------------------------------- //
          fileName File = "ROP.H2.dat";
          //OFstream myStream("THRR.dat");
          std:: ofstream Stream(File.c_str(), ios_base::app);
      

      THRR是之前输出的总热释放率,在EEqn.H 中它是这样定义的:

      // for THRR recording:
          THRR = 0.0;
          forAll(dQ, cellI)
          {
              THRR += dQ[cellI];
          }
      

      目前我遇到的主要是两个问题:

      1.如何单独输出H2的反应速率,当我直接输出ROP.H2时显示H2没有定义

      2.对每个时间步下所有网格的H2反应速率进行累加并输出应该如何写代码?

      希望能得到大家的解答,谢谢!

      1 条回复 最后回复 回复 引用
      • First post
        Last post