ENH: postOperation for surfaceFieldValue

- currently only 'none' or 'sqrt', which can be useful in combination
  with integrate or averaging functions.
This commit is contained in:
Mark Olesen
2016-12-15 09:46:00 +01:00
parent 001a2e4a37
commit b073c0a104
3 changed files with 64 additions and 4 deletions

View File

@ -286,11 +286,11 @@ Type Foam::functionObjects::fieldValues::surfaceFieldValue::processValues
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
template<class Type, class WeightType>
bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues
(
const word& fieldName,
const scalarField& weightField,
const Field<WeightType>& weightField,
const bool orient
)
{
@ -355,6 +355,22 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::writeValues
Type result = processValues(values, Sf, weightField);
switch (postOperation_)
{
case postOpNone:
break;
case postOpSqrt:
{
// sqrt: component-wise - doesn't change the type
for (direction d=0; d < pTraits<Type>::nComponents; ++d)
{
setComponent(result, d)
= sqrt(mag(component(result, d)));
}
}
break;
}
file()<< tab << result;
Log << " " << operationTypeNames_[operation_]