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