functionObjects::residuals: Prevent exectution at the start
Residuals are only available once some equations have been solved, so it is not valid for this function to execute until the end of the first timestep. This also prevents a bug in which the residuals function trggers the construction of a Residuals mesh object during the writing of the file header. This only happens on the master process, and therefore leads to the master having more objects in its database than the other processes. If this results in the object table being resized then this can change the iteration order, which can in turn break mapping procedures (in NCC, topology change, mesh-to-mesh mapping, ...) which rely on fields being accessed from the database in a consistent order.
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2015-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2015-2024 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -139,6 +139,12 @@ public:
|
||||
return wordList::null();
|
||||
}
|
||||
|
||||
//- There are no residuals to report at the start of a run
|
||||
virtual bool executeAtStart() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//- Execute, currently does nothing
|
||||
virtual bool execute();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user