diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index a816af06e72013c7cd2a8ba22a8c7560f87221a1..adf426faa1c4a4cc8919aa06c7cdb70ee5dc50cc 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -669,21 +669,22 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update() // Reset some values totalArea_ = 0; nFaces_ = 0; + bool checkEmptyFaces = true; switch (regionType_) { case stFaceZone: { - // Raises warning or error internally + // Raises warning or error internally, don't check again setFaceZoneFaces(); - if (!nFaces_) return true; + checkEmptyFaces = false; break; } case stPatch: { - // Raises warning or error internally + // Raises warning or error internally, don't check again setPatchFaces(); - if (!nFaces_) return true; + checkEmptyFaces = false; break; } case stObject: @@ -704,10 +705,12 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update() if (nFaces_) { - // Appears to be successful - reset warnings counter - nWarnings_ = 0u; + // Appears to be successful + needsUpdate_ = false; + totalArea_ = totalArea(); // Update the area + nWarnings_ = 0u; // Reset the warnings counter } - else + else if (checkEmptyFaces) { // Raise warning or error refPtr<OSstream> os; @@ -756,18 +759,14 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update() << "... suppressing further warnings." << nl; } } - return true; } - totalArea_ = totalArea(); - Log << " total faces = " << nFaces_ << nl << " total area = " << totalArea_ << nl << endl; writeFileHeader(file()); - needsUpdate_ = false; return true; }