各位前辈好,我现在需要计算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反应速率进行累加并输出应该如何写代码?
希望能得到大家的解答,谢谢!