/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2015 OpenFOAM Foundation ------------------------------------------------------------------------------- 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::channelIndex Description Does averaging of fields over layers of cells. Assumes layered mesh. SourceFiles channelIndex.C \*---------------------------------------------------------------------------*/ #ifndef channelIndex_H #define channelIndex_H #include "regionSplit.H" #include "direction.H" #include "scalarField.H" #include "polyMesh.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class channelIndex Declaration \*---------------------------------------------------------------------------*/ class channelIndex { // Private data static const Enum vectorComponentsNames_; //- Is mesh symmetric const bool symmetric_; //- Direction to sort const direction dir_; //- Per cell the global region autoPtr cellRegion_; //- Per global region the number of cells (scalarField so we can use // field algebra) scalarField regionCount_; //- From sorted region back to unsorted global region labelList sortMap_; //- Sorted component of cell centres scalarField y_; // Private Member Functions void walkOppositeFaces ( const polyMesh& mesh, const labelList& startFaces, boolList& blockedFace ); void calcLayeredRegions ( const polyMesh& mesh, const labelList& startFaces ); //- No copy construct channelIndex(const channelIndex&) = delete; //- No copy assignment void operator=(const channelIndex&) = delete; public: // Constructors //- Construct from dictionary channelIndex(const polyMesh&, const dictionary&); //- Construct from supplied starting faces channelIndex ( const polyMesh& mesh, const labelList& startFaces, const bool symmetric, const direction dir ); // Member Functions // Access //- Sum field per region template Field regionSum(const Field& cellField) const; //- Collapse a field to a line template Field collapse ( const Field& vsf, const bool asymmetric=false ) const; //- Return the field of Y locations from the cell centres const scalarField& y() const { return y_; } }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "channelIndexTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //