mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: multiFieldValue: add divide and cmptDivide operations
TUT: cavity: new examples for multiFieldValue divide/cmptDivide ops
This commit is contained in:
@ -53,12 +53,20 @@ Foam::functionObjects::fieldValues::multiFieldValue::operationTypeNames_
|
|||||||
{ operationType::opSum, "sum" },
|
{ operationType::opSum, "sum" },
|
||||||
{ operationType::opAdd, "add" },
|
{ operationType::opAdd, "add" },
|
||||||
{ operationType::opSubtract, "subtract" },
|
{ operationType::opSubtract, "subtract" },
|
||||||
|
{ operationType::opDivide, "divide" },
|
||||||
|
{ operationType::opCmptDivide, "cmptDivide" },
|
||||||
{ operationType::opMin, "min" },
|
{ operationType::opMin, "min" },
|
||||||
{ operationType::opMax, "max" },
|
{ operationType::opMax, "max" },
|
||||||
{ operationType::opAverage, "average" },
|
{ operationType::opAverage, "average" },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
#include "multiFieldValueImpl.C"
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
|
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
|
||||||
|
|
||||||
void Foam::functionObjects::fieldValues::multiFieldValue::writeFileHeader
|
void Foam::functionObjects::fieldValues::multiFieldValue::writeFileHeader
|
||||||
|
|||||||
@ -92,6 +92,8 @@ Usage
|
|||||||
sum | Sum of values
|
sum | Sum of values
|
||||||
add | Add values (same as sum)
|
add | Add values (same as sum)
|
||||||
subtract | Subtract values from first entry
|
subtract | Subtract values from first entry
|
||||||
|
divide | Divide first entry by values
|
||||||
|
cmptDivide | Divide first entry by componentwise values
|
||||||
min | Minimum value
|
min | Minimum value
|
||||||
max | Maximum value
|
max | Maximum value
|
||||||
average | Average value
|
average | Average value
|
||||||
@ -106,12 +108,12 @@ Usage
|
|||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
multiFieldValue.C
|
multiFieldValue.C
|
||||||
multiFieldValueTemplates.C
|
multiFieldValueImpl.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef functionObjects_multiFieldValue_H
|
#ifndef Foam_functionObjects_multiFieldValue_H
|
||||||
#define functionObjects_multiFieldValue_H
|
#define Foam_functionObjects_multiFieldValue_H
|
||||||
|
|
||||||
#include "stateFunctionObject.H"
|
#include "stateFunctionObject.H"
|
||||||
#include "writeFile.H"
|
#include "writeFile.H"
|
||||||
@ -145,6 +147,8 @@ public:
|
|||||||
opSum, //!< Sum of values
|
opSum, //!< Sum of values
|
||||||
opAdd, //!< Add values (same as sum)
|
opAdd, //!< Add values (same as sum)
|
||||||
opSubtract, //!< Subtract values from first entry
|
opSubtract, //!< Subtract values from first entry
|
||||||
|
opDivide, //!< Divide first entry by values
|
||||||
|
opCmptDivide, //!< Divide first entry by values componentwise
|
||||||
opMin, //!< Minimum value
|
opMin, //!< Minimum value
|
||||||
opMax, //!< Maximum value
|
opMax, //!< Maximum value
|
||||||
opAverage //!< Average value
|
opAverage //!< Average value
|
||||||
@ -243,12 +247,6 @@ public:
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#ifdef NoRepository
|
|
||||||
#include "multiFieldValueTemplates.C"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -28,6 +28,28 @@ License
|
|||||||
|
|
||||||
#include "FlatOutput.H"
|
#include "FlatOutput.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
//- Return magnitude of a given value unless the given Type is scalar
|
||||||
|
template<class Type>
|
||||||
|
static inline scalar MagOp(const Type& val)
|
||||||
|
{
|
||||||
|
return Foam::mag(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return self if a given Type is scalar
|
||||||
|
template<>
|
||||||
|
inline scalar MagOp<scalar>(const scalar& val)
|
||||||
|
{
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
@ -70,6 +92,24 @@ bool Foam::functionObjects::fieldValues::multiFieldValue::applyOperation
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case opDivide:
|
||||||
|
{
|
||||||
|
result = values[0];
|
||||||
|
for (label i = 1; i < values.size(); ++i)
|
||||||
|
{
|
||||||
|
result /= stabilise(MagOp(values[i]), SMALL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case opCmptDivide:
|
||||||
|
{
|
||||||
|
result = values[0];
|
||||||
|
for (label i = 1; i < values.size(); ++i)
|
||||||
|
{
|
||||||
|
result = cmptDivide(result, stabilise(values[i], SMALL));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case opMin:
|
case opMin:
|
||||||
{
|
{
|
||||||
result = min(values);
|
result = min(values);
|
||||||
@ -126,4 +126,18 @@ multiFieldValue_average
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
multiFieldValue_divide
|
||||||
|
{
|
||||||
|
${multiFieldValue_add}
|
||||||
|
operation divide;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
multiFieldValue_cmptDivide
|
||||||
|
{
|
||||||
|
${multiFieldValue_add}
|
||||||
|
operation cmptDivide;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
Reference in New Issue
Block a user