diff --git a/src/OpenFOAM/meshes/data/data.C b/src/OpenFOAM/meshes/data/data.C index f3d4381e15..c3c8182ebc 100644 --- a/src/OpenFOAM/meshes/data/data.C +++ b/src/OpenFOAM/meshes/data/data.C @@ -45,7 +45,8 @@ Foam::data::data(const objectRegistry& obr) IOobject::NO_READ, IOobject::NO_WRITE ) - ) + ), + prevTimeIndex_(0) { set("solverPerformance", dictionary()); } @@ -65,7 +66,25 @@ void Foam::data::setSolverPerformance const lduMatrix::solverPerformance& sp ) const { - const_cast(solverPerformanceDict()).set(name, sp); + dictionary& dict = const_cast(solverPerformanceDict()); + + List perfs; + + if (prevTimeIndex_ != this->time().timeIndex()) + { + // reset solver performance between iterations + prevTimeIndex_ = this->time().timeIndex(); + dict.clear(); + } + else + { + dict.readIfPresent(name, perfs); + } + + // append to list + perfs.setSize(perfs.size()+1, sp); + + dict.set(name, perfs); } diff --git a/src/OpenFOAM/meshes/data/data.H b/src/OpenFOAM/meshes/data/data.H index 5aa7084923..257434d3e1 100644 --- a/src/OpenFOAM/meshes/data/data.H +++ b/src/OpenFOAM/meshes/data/data.H @@ -47,13 +47,19 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class data Declaration + Class data Declaration \*---------------------------------------------------------------------------*/ class data : public IOdictionary { + // Private data + + //- Previously used time-index, used for reset between iterations + mutable label prevTimeIndex_; + + // Private Member Functions //- Disallow default bitwise copy construct