ENH: return scalar for surface uniformity (#1363)

This commit is contained in:
Mark Olesen
2019-07-08 19:21:40 +02:00
committed by Andrew Heather
parent b8ccbbdf67
commit d6d95c33bc
4 changed files with 65 additions and 33 deletions

View File

@ -229,8 +229,9 @@ public:
enum operationVariant
{
typeBase = 0, //!< Base operation
typeWeighted = 0x100, //!< Operation using weighting
typeAbsolute = 0x200, //!< Operation using mag (eg, for weighting)
typeScalar = 0x100, //!< Operation returns a scalar
typeWeighted = 0x200, //!< Operation using weighting
typeAbsolute = 0x400, //!< Operation using mag (eg, for weighting)
};
//- Operation type enumeration
@ -252,9 +253,17 @@ public:
opAreaAverage, //!< Area average
opAreaIntegrate, //!< Area integral
opCoV, //!< Coefficient of variation
opAreaNormalAverage, //!< Area average in normal direction
opAreaNormalIntegrate, //!< Area integral in normal direction
opUniformity, //!< Uniformity index
// Scalar return values
//! Area average in normal direction (output is always scalar)
opAreaNormalAverage = typeScalar,
//! Area integral in normal direction (output is always scalar)
opAreaNormalIntegrate,
//! Uniformity index (output is always scalar)
opUniformity,
// Weighted variants

View File

@ -418,8 +418,6 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues
}
}
file()<< tab << result;
// Write state/results information
word prefix, suffix;
{
@ -436,15 +434,36 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues
suffix += ')';
}
Log << " " << prefix << regionName_ << suffix
<< " of " << fieldName
<< " = " << result << endl;
word resultName = prefix + regionName_ + ',' + fieldName + suffix;
// Write state/results information
word resultName = prefix + regionName_ + ',' + fieldName + suffix;
Log << " " << prefix << regionName_ << suffix
<< " of " << fieldName << " = ";
// Operation tagged that it always returns scalar?
const bool alwaysScalar(operation_ & typeScalar);
if (alwaysScalar)
{
const scalar sresult = component(result, 0);
file()<< tab << sresult;
Log << sresult << endl;
this->setResult(resultName, sresult);
}
else
{
file()<< tab << result;
Log << result << endl;
this->setResult(resultName, result);
}
}
}
return ok;
}

View File

@ -140,7 +140,7 @@ public:
enum operationVariant
{
typeBase = 0, //!< Base operation
typeWeighted = 0x100, //!< Operation using weighting
typeWeighted = 0x200, //!< Operation using weighting
};
//- Operation type enumeration

View File

@ -229,17 +229,13 @@ bool Foam::functionObjects::fieldValues::volFieldValue::writeValues
}
}
if (operation_ != opNone)
{
// Apply scale factor
values *= scaleFactor_;
Type result = processValues(values, V, weightField);
file()<< tab << result;
Log << " " << operationTypeNames_[operation_]
<< "(" << this->volRegion::regionName_ << ") of " << fieldName
<< " = " << result << endl;
// Write state/results information
const word& opName = operationTypeNames_[operation_];
word outName = fieldName;
@ -248,8 +244,16 @@ bool Foam::functionObjects::fieldValues::volFieldValue::writeValues
outName = this->volRegion::regionName_ + ',' + outName;
}
word resultName = opName + '(' + outName + ')';
file()<< tab << result;
Log << " " << opName
<< '(' << this->volRegion::regionName_ << ") of " << fieldName
<< " = " << result << endl;
this->setResult(resultName, result);
}
}
return ok;
}