From db8b5e6b8a5c36e1c9837afff8fe91a8182d47a2 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 2 Jun 2010 15:36:49 +0200 Subject: [PATCH] ENH: retain a list of solverPerformance in data - reset when the iteration changes --- src/OpenFOAM/meshes/data/data.C | 23 +++++++++++++++++++++-- src/OpenFOAM/meshes/data/data.H | 8 +++++++- 2 files changed, 28 insertions(+), 3 deletions(-) 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