From 6ec186badac70c641a922703dba3073a0848ce34 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 11 Sep 2017 18:10:41 +0200 Subject: [PATCH] ENH: a weighted operation without a weightField is an error (issue #583) - affects surfaceFieldValue, volFieldValue. Use 'none' (if desired) to explicitly suppress the weightField, but generally better to use a different operation. --- .../surfaceFieldValue/surfaceFieldValue.C | 22 ++++++++++++++++--- .../fieldValues/volFieldValue/volFieldValue.C | 18 +++++++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index db92766bae..fdcfdf3a95 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -571,16 +571,32 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::initialise weightFieldName_ = "none"; - if (usesWeight() && dict.readIfPresent("weightField", weightFieldName_)) + if (usesWeight()) { if (regionType_ == stSampledSurface) { FatalIOErrorInFunction(dict) - << "Cannot use weightField for sampledSurface" + << "Cannot use weighted operation '" + << operationTypeNames_[operation_] + << "' for sampledSurface" << exit(FatalIOError); } - Info<< " weight field = " << weightFieldName_ << nl; + if (dict.readIfPresent("weightField", weightFieldName_)) + { + Info<< " weight field = " << weightFieldName_ << nl; + } + else + { + // Suggest possible alternative unweighted operation? + FatalIOErrorInFunction(dict) + << "The '" << operationTypeNames_[operation_] + << "' operation is missing a weightField." << nl + << "Either provide the weightField, " + << "use weightField 'none' to suppress weighting," << nl + << "or use a different operation." + << exit(FatalIOError); + } } // Backwards compatibility for v1612+ and older diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C index eafef81096..fb72fcadee 100644 --- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C +++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValue.C @@ -114,9 +114,23 @@ void Foam::functionObjects::fieldValues::volFieldValue::initialise ) { weightFieldName_ = "none"; - if (usesWeight() && dict.readIfPresent("weightField", weightFieldName_)) + if (usesWeight()) { - Info<< " weight field = " << weightFieldName_; + if (dict.readIfPresent("weightField", weightFieldName_)) + { + Info<< " weight field = " << weightFieldName_; + } + else + { + // Suggest possible alternative unweighted operation? + FatalIOErrorInFunction(dict) + << "The '" << operationTypeNames_[operation_] + << "' operation is missing a weightField." << nl + << "Either provide the weightField, " + << "use weightField 'none' to suppress weighting," << nl + << "or use a different operation." + << exit(FatalIOError); + } } Info<< nl << endl;