diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index 1d7cd88a29..5f429e1214 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -32,7 +32,7 @@ License #include "coupledPolyPatch.H" #include "sampledSurface.H" #include "mergePoints.H" -#include "indirectPrimitivePatch.H" +#include "uindirectPrimitivePatch.H" #include "PatchTools.H" #include "addToRunTimeSelectionTable.H" @@ -130,115 +130,225 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::obr() const void Foam::functionObjects::fieldValues::surfaceFieldValue::setFaceZoneFaces() { - const label zoneId = mesh_.faceZones().findZoneID(regionName_); + // Indices for all matches, already sorted + const labelList zoneIds + ( + mesh_.faceZones().indices(selectionNames_) + ); - if (zoneId < 0) + // Total number of faces selected + label numFaces = 0; + for (const label zoneId : zoneIds) { - FatalErrorInFunction - << type() << " " << name() << ": " - << regionTypeNames_[regionType_] << '(' << regionName_ << "):" << nl - << " Unknown face zone name: " << regionName_ - << ". Valid face zones are: " << mesh_.faceZones().names() - << nl << exit(FatalError); + numFaces += mesh_.faceZones()[zoneId].size(); } - const faceZone& fZone = mesh_.faceZones()[zoneId]; - - DynamicList