/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . Class Foam::fieldValues::cellSource Description Cell source variant of field value function object. Values of user- specified fields reported for collections of cells. cellObj1 // Name also used to identify output folder { type cellSource; functionObjectLibs ("libfieldValueFunctionObjects.so"); enabled true; outputControl outputTime; log true; // log to screen? valueOutput true; // Write values at run-time output times? source cellZone; // Type of cell source sourceName c0; operation volAverage; fields ( p U ); } where operation is one of: - none - sum - volAverage - volIntegrate - weightedAverage SourceFiles cellSource.C \*---------------------------------------------------------------------------*/ #ifndef cellSource_H #define cellSource_H #include "NamedEnum.H" #include "fieldValue.H" #include "labelList.H" #include "volFieldsFwd.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { namespace fieldValues { /*---------------------------------------------------------------------------*\ Class cellSource Declaration \*---------------------------------------------------------------------------*/ class cellSource : public fieldValue { public: // Public data types //- Source type enumeration enum sourceType { stCellZone, stAll }; //- Source type names static const NamedEnum sourceTypeNames_; //- Operation type enumeration enum operationType { opNone, opSum, opVolAverage, opVolIntegrate, opWeightedAverage, opMin, opMax }; //- Operation type names static const NamedEnum operationTypeNames_; private: // Private Member Functions //- Set cells to evaluate based on a cell zone void setCellZoneCells(); //- Set cells to evaluate based on a patch void setPatchCells(); protected: // Protected data //- Source type sourceType source_; //- Operation to apply to values operationType operation_; //- Global number of cells label nCells_; //- Local list of cell IDs labelList cellId_; //- Weight field name - only used for opWeightedAverage mode word weightFieldName_; // Protected Member Functions //- Initialise, e.g. cell addressing void initialise(const dictionary& dict); //- Return true if the field name is valid template bool validField(const word& fieldName) const; //- Insert field values into values list template tmp > setFieldValues ( const word& fieldName ) const; //- Apply the 'operation' to the values template Type processValues ( const Field& values, const scalarField& V, const scalarField& weightField ) const; //- Output file header information virtual void writeFileHeader(); public: //- Run-time type information TypeName("cellSource"); //- Construct from components cellSource ( const word& name, const objectRegistry& obr, const dictionary& dict, const bool loadFromFiles = false ); //- Destructor virtual ~cellSource(); // Public Member Functions // Access //- Return the source type inline const sourceType& source() const; //- Return the local list of cell IDs inline const labelList& cellId() const; // Function object functions //- Read from dictionary virtual void read(const dictionary&); //- Calculate and write virtual void write(); //- Templated helper function to output field values template bool writeValues(const word& fieldName); //- Filter a field according to cellIds template tmp > filterField(const Field& field) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fieldValues } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "cellSourceI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "cellSourceTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //