diff --git a/src/OpenFOAM/meshes/meshState/meshStateTemplates.C b/src/OpenFOAM/meshes/meshState/meshStateTemplates.C index 06b8561ac0533f8a5cf57f1e16f7098a9e6cb199..b56905fa45d1a09240ba541c4a35455a6815785e 100644 --- a/src/OpenFOAM/meshes/meshState/meshStateTemplates.C +++ b/src/OpenFOAM/meshes/meshState/meshStateTemplates.C @@ -39,12 +39,14 @@ void Foam::meshState::setSolverPerformance { dictionary& dict = const_cast<dictionary&>(solverPerformanceDict()); - List<SolverPerformance<Type>> perfs; + Pair<SolverPerformance<Type>> perfs; - if (prevTimeIndex_ != this->time().timeIndex()) + const label timeIndex = this->time().timeIndex(); + + if (prevTimeIndex_ != timeIndex) { // Reset solver performance between iterations - prevTimeIndex_ = this->time().timeIndex(); + prevTimeIndex_ = timeIndex; dict.clear(); } else @@ -52,7 +54,14 @@ void Foam::meshState::setSolverPerformance dict.readIfPresent(name, perfs); } - perfs.push_back(sp); + if (dict.found(name)) + { + perfs.second() = sp; + } + else + { + perfs = Pair<SolverPerformance<Type>>(sp, sp); + } dict.set(name, perfs); } diff --git a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C index a1630c943428dc32e049df98bb458317cec15ed6..c8d27d0cb4c0770781d2cfce9d7c73bed76475c6 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C @@ -227,7 +227,7 @@ bool Foam::solutionControl::maxTypeResidual if (fvmesh.foundObject<fieldType>(fieldName)) { - const List<SolverPerformance<Type>> sp(solverPerfDictEntry.stream()); + const Pair<SolverPerformance<Type>> sp(solverPerfDictEntry.stream()); residuals.first() = cmptMax(sp.first().initialResidual()); residuals.last() = cmptMax(sp.last().initialResidual()); diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualConditionTemplates.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualConditionTemplates.C index 52c71a4bca74fa30ca6b9130c914791c37cd60f8..706023357e6433e4a448a4f0e4c3cc15ecaafb38 100644 --- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualConditionTemplates.C +++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualConditionTemplates.C @@ -43,7 +43,7 @@ equationInitialResidualCondition::setResidual if (canSet && mesh.foundObject<volFieldType>(fieldName)) { - const List<SolverPerformance<Type>> sp(dict.lookup(fieldName)); + const Pair<SolverPerformance<Type>> sp(dict.lookup(fieldName)); const Type& allComponents = sp.first().initialResidual(); if (componenti != -1) diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C index 756e2552b158941bc51aeb699b8154e66fb39a04..ef0e5656662022761a5bcaa44553450841a15b47 100644 --- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C +++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C @@ -107,7 +107,7 @@ bool Foam::functionObjects::runTimeControls::equationMaxIterCondition::apply() if (solverDict.found(fieldName)) { - const List<solverPerformance> sp(solverDict.lookup(fieldName)); + const Pair<solverPerformance> sp(solverDict.lookup(fieldName)); const label nIterations = sp.first().nIterations(); result[fieldi] = nIterations; diff --git a/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C b/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C index 5ddc9d4e6b4fbb33f4651b1459655a316aedf2cc..4438d977cee336615ada50145abb706f85db1645 100644 --- a/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C +++ b/src/functionObjects/utilities/solverInfo/solverInfoTemplates.C @@ -119,7 +119,7 @@ void Foam::functionObjects::solverInfo::updateSolverInfo(const word& fieldName) if (solverDict.found(fieldName)) { - const List<SolverPerformance<Type>> sp + const Pair<SolverPerformance<Type>> sp ( solverDict.lookup(fieldName) );