Added solverPerformance dictionary

This commit is contained in:
Hrvoje Jasak 2016-06-22 16:59:42 +01:00
parent 60d21de6de
commit d121c473cb
2 changed files with 16 additions and 9 deletions

View file

@ -122,6 +122,11 @@ void Foam::solution::read(const dictionary& dict)
solvers_ = dict.subDict("solvers");
upgradeSolverDict(solvers_);
}
if (dict.found("solverPerformance"))
{
solverPerformance_ = dict.subDict("solverPerformance");
}
}
@ -147,6 +152,7 @@ Foam::solution::solution(const objectRegistry& obr, const fileName& dictName)
fieldRelaxDefault_(0),
eqnRelaxDefault_(0),
solvers_(dictionary::null),
solverPerformance_(dictionary::null),
prevTimeIndex_(0)
{
if (!headerOk())
@ -411,9 +417,9 @@ bool Foam::solution::writeData(Ostream& os) const
return true;
}
const Foam::dictionary& Foam::solution::solverPerformanceDict() const
Foam::dictionary& Foam::solution::solverPerformanceDict() const
{
return subDict("solverPerformance");
return solverPerformance_;
}
@ -423,25 +429,23 @@ void Foam::solution::setSolverPerformance
const lduSolverPerformance& sp
) const
{
dictionary& dict = const_cast<dictionary&>(solverPerformanceDict());
List<lduSolverPerformance> perfs;
if (prevTimeIndex_ != this->time().timeIndex())
{
// Reset solver performance between iterations
prevTimeIndex_ = this->time().timeIndex();
dict.clear();
solverPerformance_.clear();
}
else
{
dict.readIfPresent(name, perfs);
solverPerformance_.readIfPresent(name, perfs);
}
// Append to list
perfs.setSize(perfs.size()+1, sp);
perfs.setSize(perfs.size() + 1, sp);
dict.set(name, perfs);
solverPerformance_.set(name, perfs);
}

View file

@ -75,6 +75,9 @@ class solution
//- Dictionary of solver parameters for all the fields
dictionary solvers_;
//- Dictionary of solver performance. Used in convergence check
mutable dictionary solverPerformance_;
//- Previously used time-index, used for reset between iterations
mutable label prevTimeIndex_;
@ -151,7 +154,7 @@ public:
//- Return the dictionary of solver performance data
// which includes initial and final residuals for convergence
// checking
const dictionary& solverPerformanceDict() const;
dictionary& solverPerformanceDict() const;
//- Add/set the solverPerformance entry for the named field
void setSolverPerformance