如何对每一个时间步下每个网格的数据(H2的反应速率)进行累加,并输出。
-
各位前辈好,我现在需要计算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反应速率进行累加并输出应该如何写代码?
希望能得到大家的解答,谢谢!