surfaceFieldValue Class Reference

A face regionType variant of the fieldValues function object. More...

Inheritance diagram for surfaceFieldValue:
[legend]
Collaboration diagram for surfaceFieldValue:
[legend]

Public Types

enum  regionTypes { stFaceZone = 0x01 , stPatch = 0x02 , stObject = 0x11 , stSampled = 0x12 }
 Region type enumeration. More...
 
enum  operationVariant { typeBase = 0 , typeScalar = 0x100 , typeWeighted = 0x200 , typeAbsolute = 0x400 }
 Bitmask values for operation variants. More...
 
enum  operationType {
  opNone = 0 , opMin , opMax , opSum ,
  opSumMag , opSumDirection , opSumDirectionBalance , opAverage ,
  opAreaAverage , opAreaIntegrate , opCoV , opAreaNormalAverage = typeScalar ,
  opAreaNormalIntegrate , opUniformity , opWeightedSum = (opSum | typeWeighted) , opWeightedAverage = (opAverage | typeWeighted) ,
  opWeightedAreaAverage = (opAreaAverage | typeWeighted) , opWeightedAreaIntegrate = (opAreaIntegrate | typeWeighted) , opWeightedUniformity = (opUniformity | typeWeighted) , opAbsWeightedSum = (opWeightedSum | typeAbsolute) ,
  opAbsWeightedAverage = (opWeightedAverage | typeAbsolute) , opAbsWeightedAreaAverage = (opWeightedAreaAverage | typeAbsolute) , opAbsWeightedAreaIntegrate , opAbsWeightedUniformity
}
 Operation type enumeration. More...
 
enum  postOperationType { postOpNone , postOpMag , postOpSqrt }
 Post-operation type enumeration. More...
 

Public Member Functions

 TypeName ("surfaceFieldValue")
 Declare type-name, virtual type (with debug switch) More...
 
 surfaceFieldValue (const word &name, const Time &runTime, const dictionary &dict)
 Construct from name, Time and dictionary. More...
 
 surfaceFieldValue (const word &name, const objectRegistry &obr, const dictionary &dict)
 Construct from name, objectRegistry and dictionary. More...
 
 surfaceFieldValue (const surfaceFieldValue &)=delete
 No copy construct. More...
 
void operator= (const surfaceFieldValue &)=delete
 No copy assignment. More...
 
virtual ~surfaceFieldValue ()
 Destructor. More...
 
regionTypes regionType () const noexcept
 Return the region type. More...
 
fileName outputDir () const
 Return the output directory. More...
 
virtual bool read (const dictionary &dict)
 Read from dictionary. More...
 
virtual bool write ()
 Calculate and write. More...
 
virtual void updateMesh (const mapPolyMesh &mpm)
 Update for changes of mesh. More...
 
virtual void movePoints (const polyMesh &mesh)
 Update for changes of mesh. More...
 
template<>
Foam::scalar processValues (const Field< scalar > &values, const vectorField &Sf, const scalarField &weightField) const
 Specialisation for scalar fields. More...
 
template<>
Foam::vector processValues (const Field< vector > &values, const vectorField &Sf, const scalarField &weightField) const
 Specialisation for vector fields. More...
 
template<>
Foam::tmp< Foam::scalarFieldweightingFactor (const Field< scalar > &weightField, const bool useMag)
 Specialisation for scalar - pass through. More...
 
template<>
Foam::tmp< Foam::scalarFieldweightingFactor (const Field< scalar > &weightField, const vectorField &Sf, const bool useMag)
 Specialisation for scalar - pass through. More...
 
template<>
Foam::tmp< Foam::scalarFieldareaWeightingFactor (const Field< scalar > &weightField, const vectorField &Sf, const bool useMag)
 Specialisation for scalar - scalar * Area. More...
 
template<>
Foam::tmp< Foam::scalarFieldweightingFactor (const Field< vector > &weightField, const vectorField &Sf, const bool useMag)
 Specialisation for vector - vector (dot) unit-normal. More...
 
template<>
Foam::tmp< Foam::scalarFieldareaWeightingFactor (const Field< vector > &weightField, const vectorField &Sf, const bool useMag)
 Specialisation for vector - vector (dot) Area. More...
 
template<class WeightType >
Foam::tmp< Foam::scalarFieldweightingFactor (const Field< WeightType > &weightField, const bool useMag)
 
template<class Type >
Foam::tmp< Foam::Field< Type > > getFieldValues (const word &fieldName, const bool mandatory) const
 
template<class WeightType >
Foam::label writeAll (const vectorField &Sf, const Field< WeightType > &weightField, const pointField &points, const faceList &faces)
 
template<class Type >
Foam::tmp< Foam::Field< Type > > filterField (const GeometricField< Type, fvPatchField, volMesh > &field) const
 
template<class Type >
Foam::tmp< Foam::Field< Type > > filterField (const GeometricField< Type, fvsPatchField, surfaceMesh > &field) const
 
- Public Member Functions inherited from fieldValue
 TypeName ("fieldValue")
 Run-time type information. More...
 
 declareRunTimeSelectionTable (autoPtr, fieldValue, runTime,(const word &name, const Time &runTime, const dictionary &dict),(name, runTime, dict))
 
 fieldValue (const word &name, const Time &runTime, const dictionary &dict, const word &valueType)
 Construct from Time and dictionary. More...
 
 fieldValue (const word &name, const objectRegistry &obr, const dictionary &dict, const word &valueType)
 Construct from objectRegistry and dictionary. More...
 
virtual ~fieldValue ()=default
 Destructor. More...
 
const dictionarydict () const noexcept
 Return the reference to the construction dictionary. More...
 
const wordregionName () const noexcept
 Return the region name. More...
 
const wordListfields () const noexcept
 Return the list of field names. More...
 
bool writeFields () const noexcept
 Return the output field values flag. More...
 
virtual bool read (const dictionary &dict)
 Read from dictionary. More...
 
virtual bool execute ()
 Execute. More...
 
virtual bool write ()
 Write. More...
 
- Public Member Functions inherited from fvMeshFunctionObject
 TypeName ("fvMeshFunctionObject")
 Runtime type information. More...
 
 fvMeshFunctionObject (const word &name, const Time &runTime, const dictionary &dict)
 Construct from Time and dictionary. More...
 
 fvMeshFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict)
 Construct from the region objectRegistry and dictionary. More...
 
virtual ~fvMeshFunctionObject ()=default
 Destructor. More...
 
- Public Member Functions inherited from regionFunctionObject
 TypeName ("regionFunctionObject")
 Runtime type information. More...
 
 regionFunctionObject (const word &name, const Time &runTime, const dictionary &dict)
 Construct from Time and dictionary. More...
 
 regionFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict)
 Construct from the region objectRegistry and dictionary. More...
 
virtual ~regionFunctionObject ()=default
 Destructor. More...
 
virtual bool read (const dictionary &dict)
 Read optional controls. More...
 
template<class ObjectType >
const ObjectType * lookupObjectPtr (const word &fieldName) const
 Deprecated(2018-10) More...
 
template<class ObjectType >
ObjectType * lookupObjectRefPtr (const word &fieldName) const
 Deprecated(2018-10) More...
 
- Public Member Functions inherited from stateFunctionObject
 stateFunctionObject (const word &name, const Time &runTime)
 Construct from components. More...
 
virtual ~stateFunctionObject ()=default
 Destructor. More...
 
dictionarypropertyDict ()
 Return access to the property dictionary. More...
 
bool foundProperty (const word &entryName) const
 Return true if the property exists. More...
 
void clearTrigger ()
 Remove the trigger index from the properties. More...
 
label getTrigger () const
 Get the current trigger index. More...
 
bool setTrigger (const label triggeri)
 Set new trigger index. More...
 
bool getDict (const word &entryName, dictionary &dict) const
 Set dictionary, return true if set. More...
 
bool getObjectDict (const word &objectName, const word &entryName, dictionary &dict) const
 Set dictionary from named object, return true if set. More...
 
template<class Type >
Type getProperty (const word &entryName, const Type &defaultValue=Type(Zero)) const
 Retrieve generic property. More...
 
template<class Type >
bool getProperty (const word &entryName, Type &value) const
 Set generic property, return true if set. More...
 
template<class Type >
void setProperty (const word &entryName, const Type &value)
 Add generic property. More...
 
template<class Type >
Type getObjectProperty (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const
 Retrieve generic property from named object. More...
 
template<class Type >
bool getObjectProperty (const word &objectName, const word &entryName, Type &value) const
 Set generic property from named object, return true if set. More...
 
template<class Type >
void setObjectProperty (const word &objectName, const word &entryName, const Type &value)
 Add generic property from named object. More...
 
template<class Type >
void setResult (const word &entryName, const Type &value)
 Add result. More...
 
template<class Type >
void setObjectResult (const word &objectName, const word &entryName, const Type &value)
 Add result from named object. More...
 
template<class Type >
Type getResult (const word &entryName, const Type &defaultValue=Type(Zero)) const
 Retrieve result. More...
 
template<class Type >
Type getObjectResult (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const
 Retrieve result from named object. More...
 
template<class Type >
bool getObjectResult (const word &objectName, const word &entryName, Type &value) const
 Set result from named object, return true if set. More...
 
word resultType (const word &entryName) const
 Retrieve the result type. More...
 
word objectResultType (const word &objectName, const word &entryName) const
 Return the type of result. More...
 
wordList objectResultEntries () const
 Retrieve the result entries. More...
 
wordList objectResultEntries (const word &objectName) const
 Return result entries for named object. More...
 
void writeResultEntries (Ostream &os) const
 Write the results entries for all objects to stream. More...
 
void writeResultEntries (const word &objectName, Ostream &os) const
 Write the results entries for named object to stream. More...
 
void writeAllResultEntries (Ostream &os) const
 Write the results entries for all objects to stream. More...
 
- Public Member Functions inherited from timeFunctionObject
 timeFunctionObject (const word &name, const Time &runTime)
 Construct from Time. More...
 
virtual ~timeFunctionObject ()=default
 Destructor. More...
 
const Timetime () const
 Return time database. More...
 
objectRegistrystoredObjects ()
 
const objectRegistrystoredObjects () const
 
- Public Member Functions inherited from functionObject
 declareRunTimeSelectionTable (autoPtr, functionObject, dictionary,(const word &name, const Time &runTime, const dictionary &dict),(name, runTime, dict))
 
 functionObject (const word &name, const bool withNamePrefix=defaultUseNamePrefix)
 Construct from components. More...
 
autoPtr< functionObjectclone () const
 Return clone. More...
 
virtual ~functionObject ()=default
 Destructor. More...
 
virtual const wordtype () const =0
 Runtime type information. More...
 
const wordname () const noexcept
 Return the name of this functionObject. More...
 
bool useNamePrefix () const noexcept
 Return the flag for adding a scoping name prefix. More...
 
bool useNamePrefix (bool on) noexcept
 Modify the flag for adding a scoping name prefix. More...
 
virtual bool read (const dictionary &dict)
 Read and set the function object if its data have changed. More...
 
virtual bool execute ()=0
 Called at each ++ or += of the time-loop. More...
 
virtual bool execute (const label subIndex)
 Execute using the specified subIndex. More...
 
virtual bool write ()=0
 Called at each ++ or += of the time-loop. More...
 
virtual bool end ()
 Called when Time::run() determines that the time-loop exits. More...
 
virtual bool adjustTimeStep ()
 Called at the end of Time::adjustDeltaT() if adjustTime is true. More...
 
virtual bool filesModified () const
 Did any file get changed during execution? More...
 
virtual void updateMesh (const mapPolyMesh &mpm)
 Update for changes of mesh. More...
 
virtual void movePoints (const polyMesh &mesh)
 Update for changes of mesh. More...
 
- Public Member Functions inherited from writeFile
 writeFile (const objectRegistry &obr, const fileName &prefix, const word &name="undefined", const bool writeToFile=true)
 Construct from objectRegistry, prefix, fileName. More...
 
 writeFile (const objectRegistry &obr, const fileName &prefix, const word &name, const dictionary &dict, const bool writeToFile=true)
 
 writeFile (const writeFile &wf)
 Construct copy. More...
 
virtual ~writeFile ()=default
 Destructor. More...
 
virtual bool read (const dictionary &dict)
 Read. More...
 
virtual OFstreamfile ()
 Return access to the file (if only 1) More...
 
virtual bool writeToFile () const
 Flag to allow writing to file. More...
 
virtual bool canWriteHeader () const
 Flag to allow writing the header. More...
 
virtual label charWidth () const
 Return width of character stream output. More...
 
virtual void writeCommented (Ostream &os, const string &str) const
 Write a commented string to stream. More...
 
virtual void writeTabbed (Ostream &os, const string &str) const
 Write a tabbed string to stream. More...
 
virtual void writeHeader (Ostream &os, const string &str) const
 Write a commented header to stream. More...
 
virtual void writeCurrentTime (Ostream &os) const
 Write the current time to stream. More...
 
virtual void writeBreak (Ostream &os) const
 Write a break marker to the stream. More...
 
template<class Type >
void writeHeaderValue (Ostream &os, const string &property, const Type &value) const
 Write a (commented) header property and value pair. More...
 
template<class Type >
void writeValue (Ostream &os, const Type &val) const
 Write a given value to stream with the space delimiter. More...
 

Static Public Attributes

static const Enum< regionTypesregionTypeNames_
 Region type names. More...
 
static const Enum< operationTypeoperationTypeNames_
 Operation type names. More...
 
static const Enum< postOperationTypepostOperationTypeNames_
 Operation type names. More...
 
- Static Public Attributes inherited from functionObject
static int debug
 Flag to execute debug content. More...
 
static bool postProcess
 Global post-processing mode switch. More...
 
static bool defaultUseNamePrefix
 Global default for useNamePrefix. More...
 
static word outputPrefix
 Directory prefix. More...
 
- Static Public Attributes inherited from writeFile
static label addChars = 8
 Additional characters for writing. More...
 

Protected Member Functions

const objectRegistryobr () const
 The volume mesh or surface registry being used. More...
 
bool withSurfaceFields () const
 Can the surface definition sample surface-fields? More...
 
bool withTopologicalMerge () const noexcept
 Can use mesh topological merge? More...
 
const labelListfaceId () const noexcept
 Return the local list of face IDs. More...
 
const labelListfacePatch () const noexcept
 Return the local list of patch ID per face. More...
 
const boolListfaceFlip () const noexcept
 Return the local true/false list representing the face flip map. More...
 
bool usesSf () const noexcept
 True if the operation needs a surface Sf. More...
 
bool is_magOp () const noexcept
 True if the operation variant uses mag. More...
 
bool is_weightedOp () const noexcept
 True if the operation variant uses a weight-field. More...
 
template<class WeightType >
bool canWeight (const Field< WeightType > &fld) const
 True if field is non-empty on any processor. More...
 
bool update ()
 Update the surface and surface information as required. More...
 
template<class Type >
bool validField (const word &fieldName) const
 Return true if the field name is known and a valid type. More...
 
template<class Type >
tmp< Field< Type > > getFieldValues (const word &fieldName, const bool mandatory=false) const
 Return field values by looking up field name. More...
 
template<class Type , class WeightType >
Type processSameTypeValues (const Field< Type > &values, const vectorField &Sf, const Field< WeightType > &weightField) const
 Apply the 'operation' to the values. Operation must preserve Type. More...
 
template<class Type , class WeightType >
Type processValues (const Field< Type > &values, const vectorField &Sf, const Field< WeightType > &weightField) const
 Apply the 'operation' to the values. Wrapper around. More...
 
template<class Type >
tmp< Field< Type > > filterField (const GeometricField< Type, fvsPatchField, surfaceMesh > &field) const
 Filter a surface field according to faceIds. More...
 
template<class Type >
tmp< Field< Type > > filterField (const GeometricField< Type, fvPatchField, volMesh > &field) const
 Filter a volume field according to faceIds. More...
 
template<class WeightType >
label writeAll (const vectorField &Sf, const Field< WeightType > &weightField, const pointField &points, const faceList &faces)
 Templated helper function to output field values. More...
 
template<class Type , class WeightType >
bool writeValues (const word &fieldName, const vectorField &Sf, const Field< WeightType > &weightField, const pointField &points, const faceList &faces)
 Templated helper function to output field values. More...
 
virtual void writeFileHeader (Ostream &os)
 Output file header information. More...
 
- Protected Member Functions inherited from fieldValue
template<class Type >
void combineFields (Field< Type > &field)
 Combine fields from all processor domains into single field. More...
 
template<class Type >
void combineFields (tmp< Field< Type > > &)
 Combine fields from all processor domains into single field. More...
 
- Protected Member Functions inherited from fvMeshFunctionObject
 fvMeshFunctionObject (const fvMeshFunctionObject &)=delete
 No copy construct. More...
 
void operator= (const fvMeshFunctionObject &)=delete
 No copy assignment. More...
 
- Protected Member Functions inherited from regionFunctionObject
virtual const objectRegistryobr () const
 The region or sub-region registry being used. More...
 
template<class ObjectType >
bool foundObject (const word &fieldName) const
 Find object (eg, a field) in the (sub) objectRegistry. More...
 
template<class ObjectType >
const ObjectType * cfindObject (const word &fieldName) const
 
template<class ObjectType >
const ObjectType * findObject (const word &fieldName) const
 
template<class ObjectType >
ObjectType * findObject (const word &fieldName)
 
template<class ObjectType >
ObjectType * getObjectPtr (const word &fieldName) const
 
template<class ObjectType >
const ObjectType & lookupObject (const word &fieldName) const
 Lookup and return object (eg, a field) from the (sub) objectRegistry. More...
 
template<class ObjectType >
ObjectType & lookupObjectRef (const word &fieldName) const
 Lookup and return object (eg, a field) from the (sub) objectRegistry. More...
 
template<class ObjectType >
bool store (word &fieldName, const tmp< ObjectType > &tfield, bool cacheable=false)
 Store the field in the (sub) objectRegistry under the given name. More...
 
template<class ObjectType >
bool storeInDb (const word &fieldName, const tmp< ObjectType > &tfield, const objectRegistry &obr)
 Store the field in an optional objectRegistry under the given name. More...
 
bool writeObject (const word &fieldName)
 Write field if present in the (sub) objectRegistry. More...
 
bool clearObject (const word &fieldName)
 Clear field from the (sub) objectRegistry if present. More...
 
void clearObjects (const wordList &objNames)
 Clear fields from the (sub) objectRegistry if present. More...
 
 regionFunctionObject (const regionFunctionObject &)=delete
 No copy construct. More...
 
void operator= (const regionFunctionObject &)=delete
 No copy assignment. More...
 
- Protected Member Functions inherited from stateFunctionObject
const functionObjects::propertiesstateDict () const
 Return a const reference to the state dictionary. More...
 
functionObjects::propertiesstateDict ()
 Return non-const access to the state dictionary. More...
 
 stateFunctionObject (const stateFunctionObject &)=delete
 No copy construct. More...
 
void operator= (const stateFunctionObject &)=delete
 No copy assignment. More...
 
- Protected Member Functions inherited from timeFunctionObject
void clearOutputObjects (const wordList &objNames)
 Remove specified items from "functionObjectObjects". More...
 
 timeFunctionObject (const timeFunctionObject &)=delete
 No copy construct. More...
 
void operator= (const timeFunctionObject &)=delete
 No copy assignment. More...
 
- Protected Member Functions inherited from functionObject
word scopedName (const word &name) const
 Return a scoped (prefixed) name. More...
 
- Protected Member Functions inherited from writeFile
void initStream (Ostream &os) const
 Initialise the output stream for writing. More...
 
fileName baseFileDir () const
 Return the base directory for output. More...
 
fileName baseTimeDir () const
 Return the base directory for the current time value. More...
 
virtual autoPtr< OFstreamcreateFile (const word &name, scalar timeValue) const
 Return autoPtr to a new file for a given time. More...
 
virtual autoPtr< OFstreamcreateFile (const word &name) const
 Return autoPtr to a new file using the simulation start time. More...
 
virtual void resetFile (const word &name)
 Reset internal file pointer to new file with new name. More...
 
Omanip< int > valueWidth (const label offset=0) const
 Return the value width when writing to stream with optional offset. More...
 
void operator= (const writeFile &)=delete
 No copy assignment. More...
 

Static Protected Member Functions

template<class WeightType >
static tmp< scalarFieldweightingFactor (const Field< WeightType > &weightField, const bool useMag)
 Weighting factor. More...
 
template<class WeightType >
static tmp< scalarFieldweightingFactor (const Field< WeightType > &weightField, const vectorField &Sf, const bool useMag)
 Weighting factor, weight field projected onto unit-normal. More...
 
template<class WeightType >
static tmp< scalarFieldareaWeightingFactor (const Field< WeightType > &weightField, const vectorField &Sf, const bool useMag)
 Weighting factor, weight field with area factor. More...
 

Protected Attributes

regionTypes regionType_
 Region type. More...
 
operationType operation_
 Operation to apply to values. More...
 
postOperationType postOperation_
 Optional post-evaluation operation. More...
 
bool needsUpdate_
 Track if the surface needs an update. More...
 
bool writeArea_
 Optionally write the area of the surfaceFieldValue. More...
 
wordRes selectionNames_
 Extended selections. More...
 
wordList weightFieldNames_
 Weight field name(s) - optional. More...
 
scalar totalArea_
 Total area of the surfaceFieldValue. More...
 
label nFaces_
 Global number of faces. More...
 
labelList faceId_
 Local list of face IDs. More...
 
labelList facePatchId_
 Local list of patch ID per face. More...
 
boolList faceFlip_
 List representing the face flip map. More...
 
autoPtr< sampledSurfacesampledPtr_
 The sampledSurface (when operating on sampledSurface) More...
 
autoPtr< surfaceWritersurfaceWriterPtr_
 Surface writer. More...
 
- Protected Attributes inherited from fieldValue
bool writeFields_
 Flag to output field values. More...
 
word regionName_
 Name of region (patch, zone, etc.) More...
 
scalar scaleFactor_
 Scaling factor. More...
 
dictionary dict_
 Construction dictionary. More...
 
wordList fields_
 Names of operand fields. More...
 
- Protected Attributes inherited from fvMeshFunctionObject
const fvMeshmesh_
 Reference to the fvMesh. More...
 
- Protected Attributes inherited from regionFunctionObject
word subRegistryName_
 Name for alternative object registry. More...
 
const objectRegistryobr_
 Reference to the region objectRegistry. More...
 
const objectRegistryobrPtr_
 Pointer to alternative (eg, sub-region) objectRegistry. More...
 
- Protected Attributes inherited from timeFunctionObject
const Timetime_
 Reference to the time database. More...
 
- Protected Attributes inherited from writeFile
const objectRegistryfileObr_
 Reference to the region objectRegistry. More...
 
const fileName prefix_
 Prefix. More...
 
word fileName_
 Name of file. More...
 
autoPtr< OFstreamfilePtr_
 File pointer. More...
 
label writePrecision_
 Write precision. More...
 
bool writeToFile_
 Flag to enable/disable writing to file. More...
 
bool updateHeader_
 
bool writtenHeader_
 Flag to identify whether the header has been written. More...
 
bool useUserTime_
 
scalar startTime_
 Start time value. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from fieldValue
static autoPtr< fieldValueNew (const word &name, const Time &runTime, const dictionary &dict, const bool output=true)
 Return a reference to the selected fieldValue. More...
 
- Static Public Member Functions inherited from functionObject
static autoPtr< functionObjectNew (const word &name, const Time &runTime, const dictionary &dict)
 Select from dictionary, based on its "type" entry. More...
 
- Public Attributes inherited from functionObject
bool log
 Flag to write log into Info. More...
 

Detailed Description

A face regionType variant of the fieldValues function object.

Given a list of user-specified fields and a selection of mesh (or general surface) faces, a number of operations can be performed, such as sums, averages and integrations.

For example, to calculate the volumetric or mass flux across a patch, apply the sum operator to the flux field (typically phi).

Usage
A minimal example:
surfaceFieldValuePatch1
{
    // Mandatory entries (unmodifiable)
    type            surfaceFieldValue;
    libs            (fieldFunctionObjects);

    // Mandatory entries (runtime modifiable)
    fields          (<field1> <field2> ... <fieldN>);
    operation       <operationType>;
    regionType      patch;
    name            <patch>;

    // Optional entries (runtime modifiable)
    names           (<patch-name> <patch-regex>);

    postOperation   none;
    weightField     alpha1;
    scaleFactor     1.0;
    writeArea       false;
    surfaceFormat   none;

    // Optional (inherited) entries
    ...
}

surfaceFieldValueFaceZone1
{
    // Mandatory entries (unmodifiable)
    type            surfaceFieldValue;
    libs            (fieldFunctionObjects);

    // Mandatory entries (runtime modifiable)
    fields          (<field1> <field2> ... <fieldN>);
    operation       <operationType>;
    regionType      faceZone;
    name            <faceZone>;

    // Optional entries (runtime modifiable)
    names           (<zone-name> <zone-regex>);

    postOperation   none;
    weightFields    (rho U);
    scaleFactor     1.0;
    writeArea       false;
    surfaceFormat   none;

    // Optional (inherited) entries
    ...
}

where the entries mean:

Property Description Type Reqd Dflt
type Type name: surfaceFieldValue word yes -
libs Libraries: fieldFunctionObjects wordList yes -
regionType Face regionType: see below word yes -
fields Names of operand fields wordList yes -
name Name of the regionType word yes -
names Extended selection word/regex list no -
operation Operation type: see below word yes -
postOperation Post-operation type: see below word no none
weightField Name of field to apply weighting word maybe
weightFields Names of fields to apply weighting wordList maybe
scaleFactor Output value scaling factor scalar no 1.0
writeArea Write the surface area bool no false
surfaceFormat Output value format

word

conditional on writeFields none

The inherited entries are elaborated in:

Options for the regionType entry:

faceZone : The name entry specifies a faceZone. Supports names
patch : The name entry specifies a patch. Supports names
functionObjectSurface : The name entry specifies a polySurface
sampledSurface : A sampledSurfaceDict sub-dictionary and name

Options for the operation entry:

none : no operation
min : minimum
max : maximum
sum : sum
sumMag : sum of component magnitudes
sumDirection : sum values that are positive in given direction
sumDirectionBalance : sum of balance of values in given direction
average : ensemble average
areaAverage : area-weighted average
areaIntegrate : area integral
CoV : coefficient of variation: standard deviation/mean
areaNormalAverage : area-weighted average in face normal direction
areaNormalIntegrate : area-weighted integral in face normal directon
uniformity : uniformity index
weightedSum : weighted sum
weightedAverage : weighted average
weightedAreaAverage : weighted area average
weightedAreaIntegrate : weighted area integral
weightedUniformity : weighted uniformity index
absWeightedSum : sum using absolute weighting
absWeightedAverage : average using absolute weighting
absWeightedAreaAverage : area average using absolute weighting
absWeightedAreaIntegrate : area integral using absolute weighting
absWeightedUniformity : uniformity index using absolute weighting

Options for the postOperation entry:

none : No additional operation after calculation
mag : Component-wise mag() after normal operation
sqrt : Component-wise sqrt() after normal operation

Usage by the postProcess utility is not available.

Note
  • Some types (eg, patch or faceZone) support the selection of multiple entries, which can be specified as list of words or regular expressions by names entry.
    If the names enty exists and contains a literal that can be used as a suitable value for name, the name entry becomes optional instead of being mandatory.
  • The values reported by the areaNormalAverage and areaNormalIntegrate operations are written as the first component of a field with the same rank as the input field.
  • Faces on empty patches are ignored.
  • Using functionObjectSurface:
    • The keyword subRegion should not be used to select surfaces. Instead specify the regionType 'functionObjectSurface' and provide the name.
  • Using sampledSurface:
    • surface fields only supported by some surfaces
    • default uses sampleScheme cell
    • each face in sampledSurface is logically only in one cell so sampling will be wrong when they are larger than cells. This can only happen for sampling on a triSurfaceMesh
    • take care when using isoSurfaces - these might have duplicate triangles and so integration might be wrong

Uniformity:

\[ UI(\phi) = 1 - \frac{1}{2 \overline{\phi} A} \int{\left| W \phi \cdot \hat{n} - \bar{W} \bar{\phi}\right| d\vec{A}} \,,\; \bar{\phi} = \frac{\int{W \phi \cdot d\vec{A}}}{\int{W \cdot d\vec{A}}} \]

A velocity uniformity index is calculated with no weighting (W=1) and \( \phi = \vec{U} \).

A scalar concentration uniformity index is calculated with either \( \rho \vec U \) or \( \vec U \) for weighting and \( \phi = conc \).

See also
  • Foam::functionObject
  • Foam::functionObjects::fieldValues::fieldValue
  • ExtendedCodeGuide::functionObjects::field::surfaceFieldValue
Source files

Definition at line 452 of file surfaceFieldValue.H.

Member Enumeration Documentation

◆ regionTypes

Region type enumeration.

Enumerator
stFaceZone 

Calculate with faceZone(s)

stPatch 

Calculate with patch(es)

stObject 

Calculate with function object surface.

stSampled 

Sample onto surface and calculate.

Definition at line 461 of file surfaceFieldValue.H.

◆ operationVariant

Bitmask values for operation variants.

Enumerator
typeBase 

Base operation.

typeScalar 

Operation returns a scalar.

typeWeighted 

Operation using weighting.

typeAbsolute 

Operation using mag (eg, for weighting)

Definition at line 473 of file surfaceFieldValue.H.

◆ operationType

Operation type enumeration.

Enumerator
opNone 

No operation.

opMin 

Minimum value.

opMax 

Maximum value.

opSum 

Sum of values.

opSumMag 

Sum of component magnitudes.

opSumDirection 

Sum in a given direction.

opSumDirectionBalance 

Sum of balance of values in given direction.

opAverage 

Ensemble average.

opAreaAverage 

Area average.

opAreaIntegrate 

Area integral.

opCoV 

Coefficient of variation.

opAreaNormalAverage 

Area average in normal direction (output is always scalar)

opAreaNormalIntegrate 

Area integral in normal direction (output is always scalar)

opUniformity 

Uniformity index (output is always scalar)

opWeightedSum 

Weighted sum.

opWeightedAverage 

Weighted average.

opWeightedAreaAverage 

Weighted area average.

opWeightedAreaIntegrate 

Weighted area integral.

opWeightedUniformity 

Weighted uniformity index.

opAbsWeightedSum 

Sum using abs weighting.

opAbsWeightedAverage 

Average using abs weighting.

opAbsWeightedAreaAverage 

Area average using abs weighting.

opAbsWeightedAreaIntegrate 

Area integral using abs weighting.

opAbsWeightedUniformity 

Uniformity index using abs weighting.

Definition at line 482 of file surfaceFieldValue.H.

◆ postOperationType

Post-operation type enumeration.

Enumerator
postOpNone 

No additional operation after calculation.

postOpMag 

Component-wise mag after normal operation.

postOpSqrt 

Component-wise sqrt after normal operation.

Definition at line 554 of file surfaceFieldValue.H.

Constructor & Destructor Documentation

◆ surfaceFieldValue() [1/3]

surfaceFieldValue ( const word name,
const Time runTime,
const dictionary dict 
)

Construct from name, Time and dictionary.

Definition at line 923 of file surfaceFieldValue.C.

References fieldValue::dict(), and surfaceFieldValue::read().

Here is the call graph for this function:

◆ surfaceFieldValue() [2/3]

surfaceFieldValue ( const word name,
const objectRegistry obr,
const dictionary dict 
)

Construct from name, objectRegistry and dictionary.

Definition at line 957 of file surfaceFieldValue.C.

References fieldValue::dict(), and surfaceFieldValue::read().

Here is the call graph for this function:

◆ surfaceFieldValue() [3/3]

surfaceFieldValue ( const surfaceFieldValue )
delete

No copy construct.

◆ ~surfaceFieldValue()

~surfaceFieldValue ( )
virtual

Destructor.

Definition at line 994 of file surfaceFieldValue.C.

Member Function Documentation

◆ weightingFactor() [1/6]

static tmp< scalarField > weightingFactor ( const Field< WeightType > &  weightField,
const bool  useMag 
)
staticprotected

Weighting factor.

Possibly applies mag() depending on the operation type.

◆ weightingFactor() [2/6]

static tmp< scalarField > weightingFactor ( const Field< WeightType > &  weightField,
const vectorField Sf,
const bool  useMag 
)
staticprotected

Weighting factor, weight field projected onto unit-normal.

Possibly applies mag() depending on the operation type. Reverts to 'one' if the weight field is unavailable.

◆ areaWeightingFactor() [1/3]

static tmp< scalarField > areaWeightingFactor ( const Field< WeightType > &  weightField,
const vectorField Sf,
const bool  useMag 
)
staticprotected

Weighting factor, weight field with area factor.

Possibly applies mag() depending on the operation type. Reverts to mag(Sf) if the weight field is unavailable.

◆ obr()

const Foam::objectRegistry & obr ( ) const
protectedvirtual

The volume mesh or surface registry being used.

Reimplemented from regionFunctionObject.

Definition at line 119 of file surfaceFieldValue.C.

References objectRegistry::lookupObject(), fvMeshFunctionObject::mesh_, fieldValue::regionName_, surfaceFieldValue::regionType_, surfaceFieldValue::stObject, and timeFunctionObject::storedObjects().

Here is the call graph for this function:

◆ withSurfaceFields()

bool withSurfaceFields ( ) const
inlineprotected

Can the surface definition sample surface-fields?

Definition at line 34 of file surfaceFieldValueI.H.

References surfaceFieldValue::regionType_, surfaceFieldValue::sampledPtr_, surfaceFieldValue::stFaceZone, and surfaceFieldValue::stPatch.

◆ withTopologicalMerge()

bool withTopologicalMerge ( ) const
inlineprotectednoexcept

Can use mesh topological merge?

Definition at line 46 of file surfaceFieldValueI.H.

◆ faceId()

const Foam::labelList & faceId ( ) const
inlineprotectednoexcept

Return the local list of face IDs.

Definition at line 54 of file surfaceFieldValueI.H.

◆ facePatch()

const Foam::labelList & facePatch ( ) const
inlineprotectednoexcept

Return the local list of patch ID per face.

Definition at line 62 of file surfaceFieldValueI.H.

◆ faceFlip()

const Foam::boolList & faceFlip ( ) const
inlineprotectednoexcept

Return the local true/false list representing the face flip map.

Definition at line 70 of file surfaceFieldValueI.H.

◆ usesSf()

bool usesSf ( ) const
protectednoexcept

True if the operation needs a surface Sf.

Definition at line 493 of file surfaceFieldValue.C.

◆ is_magOp()

bool is_magOp ( ) const
inlineprotectednoexcept

True if the operation variant uses mag.

Definition at line 79 of file surfaceFieldValueI.H.

◆ is_weightedOp()

bool is_weightedOp ( ) const
inlineprotectednoexcept

True if the operation variant uses a weight-field.

Definition at line 88 of file surfaceFieldValueI.H.

◆ canWeight()

bool canWeight ( const Field< WeightType > &  fld) const
inlineprotected

True if field is non-empty on any processor.

Definition at line 57 of file surfaceFieldValueTemplates.C.

References fld(), and Foam::returnReduce().

Here is the call graph for this function:

◆ update()

bool update ( )
protected

Update the surface and surface information as required.

Do nothing (and return false) if no update was required

Definition at line 513 of file surfaceFieldValue.C.

References Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Log, Foam::name(), Foam::nl, Foam::returnReduce(), s(), and Foam::type().

Here is the call graph for this function:

◆ validField()

bool validField ( const word fieldName) const
protected

Return true if the field name is known and a valid type.

Definition at line 68 of file surfaceFieldValueTemplates.C.

◆ getFieldValues() [1/2]

tmp< Field< Type > > getFieldValues ( const word fieldName,
const bool  mandatory = false 
) const
protected

Return field values by looking up field name.

◆ processSameTypeValues()

Type processSameTypeValues ( const Field< Type > &  values,
const vectorField Sf,
const Field< WeightType > &  weightField 
) const
protected

Apply the 'operation' to the values. Operation must preserve Type.

Definition at line 138 of file surfaceFieldValueTemplates.C.

References Foam::cmptMag(), Foam::component(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::gMax(), Foam::gMin(), Foam::gSum(), n, Foam::returnReduce(), Foam::setComponent(), Foam::sqr(), Foam::sqrt(), and Foam::Zero.

Here is the call graph for this function:

◆ processValues() [1/3]

Type processValues ( const Field< Type > &  values,
const vectorField Sf,
const Field< WeightType > &  weightField 
) const
protected

Apply the 'operation' to the values. Wrapper around.

processSameTypeValues. See also template specialisation below.

Definition at line 317 of file surfaceFieldValueTemplates.C.

◆ filterField() [1/4]

tmp< Field< Type > > filterField ( const GeometricField< Type, fvsPatchField, surfaceMesh > &  field) const
protected

Filter a surface field according to faceIds.

◆ filterField() [2/4]

tmp< Field< Type > > filterField ( const GeometricField< Type, fvPatchField, volMesh > &  field) const
protected

Filter a volume field according to faceIds.

◆ writeAll() [1/2]

label writeAll ( const vectorField Sf,
const Field< WeightType > &  weightField,
const pointField points,
const faceList faces 
)
protected

Templated helper function to output field values.

◆ writeValues()

bool writeValues ( const word fieldName,
const vectorField Sf,
const Field< WeightType > &  weightField,
const pointField points,
const faceList faces 
)
protected

Templated helper function to output field values.

Definition at line 410 of file surfaceFieldValueTemplates.C.

References Foam::component(), Foam::endl(), Log, splitCell::master(), outputName(), propsDict(), Foam::setComponent(), Foam::sqrt(), and Foam::tab.

Here is the call graph for this function:

◆ writeFileHeader()

void writeFileHeader ( Ostream os)
protectedvirtual

Output file header information.

Definition at line 573 of file surfaceFieldValue.C.

References Foam::endl(), Foam::flatOutput(), Foam::nl, os(), and Foam::tab.

Here is the call graph for this function:

◆ TypeName()

TypeName ( "surfaceFieldValue"  )

Declare type-name, virtual type (with debug switch)

◆ operator=()

void operator= ( const surfaceFieldValue )
delete

No copy assignment.

◆ regionType()

Return the region type.

Definition at line 97 of file surfaceFieldValueI.H.

◆ outputDir()

Foam::fileName outputDir ( ) const
inline

Return the output directory.

Definition at line 105 of file surfaceFieldValueI.H.

References Foam::name().

Here is the call graph for this function:

◆ read()

bool read ( const dictionary dict)
virtual

Read from dictionary.

Reimplemented from fieldValue.

Definition at line 1000 of file surfaceFieldValue.C.

References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Foam::flatOutput(), Foam::Info, keyType::LITERAL, Foam::name(), Time::New(), Foam::nl, kEpsilonLopesdaCosta< BasicTurbulenceModel >::read(), and Foam::type().

Referenced by surfaceFieldValue::surfaceFieldValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write()

bool write ( )
virtual

Calculate and write.

Reimplemented from fieldValue.

Definition at line 1178 of file surfaceFieldValue.C.

References UList< T >::empty(), Foam::endl(), Foam::FatalError, FatalErrorInFunction, Foam::flatOutput(), Log, splitCell::master(), Foam::nl, points, Foam::returnReduce(), s(), UList< T >::size(), Foam::tab, update(), and fieldValue::write().

Here is the call graph for this function:

◆ updateMesh()

void updateMesh ( const mapPolyMesh mpm)
virtual

Update for changes of mesh.

Reimplemented from functionObject.

Definition at line 1322 of file surfaceFieldValue.C.

◆ movePoints()

void movePoints ( const polyMesh mesh)
virtual

Update for changes of mesh.

Reimplemented from functionObject.

Definition at line 1331 of file surfaceFieldValue.C.

◆ processValues() [2/3]

scalar processValues ( const Field< scalar > &  values,
const vectorField Sf,
const scalarField weightField 
) const

Specialisation for scalar fields.

Definition at line 620 of file surfaceFieldValue.C.

References Foam::gSum(), Foam::max(), Foam::min(), n, Foam::neg(), and Foam::pos0().

Here is the call graph for this function:

◆ processValues() [3/3]

vector processValues ( const Field< vector > &  values,
const vectorField Sf,
const scalarField weightField 
) const

Specialisation for vector fields.

Definition at line 694 of file surfaceFieldValue.C.

References Foam::gSum(), Foam::max(), Foam::min(), n, Vector< Cmpt >::normalise(), and Foam::pos0().

Here is the call graph for this function:

◆ weightingFactor() [3/6]

tmp< scalarField > weightingFactor ( const Field< scalar > &  weightField,
const bool  useMag 
)

Specialisation for scalar - pass through.

Definition at line 782 of file surfaceFieldValue.C.

◆ weightingFactor() [4/6]

tmp< scalarField > weightingFactor ( const Field< scalar > &  weightField,
const vectorField Sf,
const bool  useMag 
)

Specialisation for scalar - pass through.

if (returnReduce(weightField.empty(), andOp<bool>())) { // No weight field - revert to unweighted form? return tmp<scalarField>::New(Sf.size(), scalar(1)); }

Definition at line 800 of file surfaceFieldValue.C.

◆ areaWeightingFactor() [2/3]

tmp< scalarField > areaWeightingFactor ( const Field< scalar > &  weightField,
const vectorField Sf,
const bool  useMag 
)

Specialisation for scalar - scalar * Area.

if (returnReduce(weightField.empty(), andOp<bool>())) { // No weight field - revert to unweighted form return mag(Sf); }

Definition at line 828 of file surfaceFieldValue.C.

◆ weightingFactor() [5/6]

tmp< scalarField > weightingFactor ( const Field< vector > &  weightField,
const vectorField Sf,
const bool  useMag 
)

Specialisation for vector - vector (dot) unit-normal.

if (returnReduce(weightField.empty(), andOp<bool>())) { // No weight field - revert to unweighted form return tmp<scalarField>::New(Sf.size(), scalar(1)); }

Definition at line 855 of file surfaceFieldValue.C.

References Time::New(), Foam::normalised(), and UList< T >::size().

Here is the call graph for this function:

◆ areaWeightingFactor() [3/3]

tmp< scalarField > areaWeightingFactor ( const Field< vector > &  weightField,
const vectorField Sf,
const bool  useMag 
)

Specialisation for vector - vector (dot) Area.

if (returnReduce(weightField.empty(), andOp<bool>())) { // No weight field - revert to unweighted form return mag(Sf); }

Definition at line 896 of file surfaceFieldValue.C.

◆ weightingFactor() [6/6]

Foam::tmp< Foam::scalarField > weightingFactor ( const Field< WeightType > &  weightField,
const bool  useMag 
)

Definition at line 42 of file surfaceFieldValueTemplates.C.

◆ getFieldValues() [2/2]

Foam::tmp< Foam::Field< Type > > getFieldValues ( const word fieldName,
const bool  mandatory 
) const

Definition at line 88 of file surfaceFieldValueTemplates.C.

References Foam::FatalError, FatalErrorInFunction, fld(), Foam::New(), and Foam::nl.

Here is the call graph for this function:

◆ writeAll() [2/2]

Foam::label writeAll ( const vectorField Sf,
const Field< WeightType > &  weightField,
const pointField points,
const faceList faces 
)

Definition at line 329 of file surfaceFieldValueTemplates.C.

References Foam::endl(), splitCell::master(), points, WarningInFunction, and writer().

Here is the call graph for this function:

◆ filterField() [3/4]

Foam::tmp< Foam::Field< Type > > filterField ( const GeometricField< Type, fvPatchField, volMesh > &  field) const

Definition at line 539 of file surfaceFieldValueTemplates.C.

References field(), forAll, and Foam::New().

Here is the call graph for this function:

◆ filterField() [4/4]

Foam::tmp< Foam::Field< Type > > filterField ( const GeometricField< Type, fvsPatchField, surfaceMesh > &  field) const

Definition at line 575 of file surfaceFieldValueTemplates.C.

References Foam::endl(), field(), forAll, Foam::New(), and Foam::Pout.

Here is the call graph for this function:

Member Data Documentation

◆ regionTypeNames_

Region type names.

Definition at line 470 of file surfaceFieldValue.H.

◆ operationTypeNames_

Operation type names.

Definition at line 550 of file surfaceFieldValue.H.

◆ postOperationTypeNames_

Operation type names.

Definition at line 562 of file surfaceFieldValue.H.

◆ regionType_

regionTypes regionType_
protected

Region type.

Definition at line 598 of file surfaceFieldValue.H.

Referenced by surfaceFieldValue::obr(), and surfaceFieldValue::withSurfaceFields().

◆ operation_

operationType operation_
protected

Operation to apply to values.

Definition at line 601 of file surfaceFieldValue.H.

◆ postOperation_

postOperationType postOperation_
protected

Optional post-evaluation operation.

Definition at line 604 of file surfaceFieldValue.H.

◆ needsUpdate_

bool needsUpdate_
protected

Track if the surface needs an update.

Definition at line 607 of file surfaceFieldValue.H.

◆ writeArea_

bool writeArea_
protected

Optionally write the area of the surfaceFieldValue.

Definition at line 610 of file surfaceFieldValue.H.

◆ selectionNames_

wordRes selectionNames_
protected

Extended selections.

Definition at line 613 of file surfaceFieldValue.H.

◆ weightFieldNames_

wordList weightFieldNames_
protected

Weight field name(s) - optional.

Definition at line 616 of file surfaceFieldValue.H.

◆ totalArea_

scalar totalArea_
protected

Total area of the surfaceFieldValue.

Definition at line 619 of file surfaceFieldValue.H.

◆ nFaces_

label nFaces_
protected

Global number of faces.

Definition at line 622 of file surfaceFieldValue.H.

◆ faceId_

labelList faceId_
protected

Local list of face IDs.

Definition at line 628 of file surfaceFieldValue.H.

◆ facePatchId_

labelList facePatchId_
protected

Local list of patch ID per face.

Definition at line 631 of file surfaceFieldValue.H.

◆ faceFlip_

boolList faceFlip_
protected

List representing the face flip map.

(false: use as-is, true: negate)

Definition at line 635 of file surfaceFieldValue.H.

◆ sampledPtr_

autoPtr<sampledSurface> sampledPtr_
protected

The sampledSurface (when operating on sampledSurface)

Definition at line 641 of file surfaceFieldValue.H.

Referenced by surfaceFieldValue::withSurfaceFields().

◆ surfaceWriterPtr_

autoPtr<surfaceWriter> surfaceWriterPtr_
protected

Surface writer.

Definition at line 644 of file surfaceFieldValue.H.


The documentation for this class was generated from the following files: