/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ 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::sampledThresholdCellFaces Description A sampledSurface defined by the cell faces corresponding to a threshold value. SourceFiles sampledThresholdCellFaces.C \*---------------------------------------------------------------------------*/ #ifndef sampledThresholdCellFaces_H #define sampledThresholdCellFaces_H #include "sampledSurface.H" #include "MeshedSurface.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class sampledThresholdCellFaces Declaration \*---------------------------------------------------------------------------*/ class sampledThresholdCellFaces : public sampledSurface, public MeshedSurface { //- Private typedefs for convenience typedef MeshedSurface MeshStorage; // Private data //- Field to get isoSurface of const word fieldName_; //- Threshold value const scalar lowerThreshold_; //- Threshold value const scalar upperThreshold_; //- If restricted to zones, name of this zone or a regular expression keyType zoneKey_; //- Triangulated faces or keep faces as is bool triangulate_; // Recreated for every time-step //- Time at last call, also track it surface needs an update mutable label prevTimeIndex_; //- For every face the original cell in mesh mutable labelList meshCells_; // Private Member Functions //- Create surface (if time has changed) // Do nothing (and return false) if no update was needed bool updateGeometry() const; //- Sample field on faces template tmp> sampleField ( const GeometricField& vField ) const; template tmp> interpolateField(const interpolation&) const; public: //- Runtime type information TypeName("sampledThresholdCellFaces"); // Constructors //- Construct from dictionary sampledThresholdCellFaces ( const word& name, const polyMesh&, const dictionary& ); //- Destructor virtual ~sampledThresholdCellFaces(); // Member Functions //- Does the surface need an update? virtual bool needsUpdate() const; //- Mark the surface as needing an update. // May also free up unneeded data. // Return false if surface was already marked as expired. virtual bool expire(); //- Update the surface as required. // Do nothing (and return false) if no update was needed virtual bool update(); //- Points of surface virtual const pointField& points() const { return MeshStorage::points(); } //- Faces of surface virtual const faceList& faces() const { return MeshStorage::faces(); } //- Sample field on surface virtual tmp sample(const volScalarField&) const; //- Sample field on surface virtual tmp sample( const volVectorField&) const; //- Sample field on surface virtual tmp sample ( const volSphericalTensorField& ) const; //- Sample field on surface virtual tmp sample(const volSymmTensorField&) const; //- Sample field on surface virtual tmp sample ( const volTensorField& ) const; //- Interpolate field on surface virtual tmp interpolate ( const interpolation& ) const; //- Interpolate field on surface virtual tmp interpolate ( const interpolation& ) const; //- Interpolate field on surface virtual tmp interpolate ( const interpolation& ) const; //- Interpolate field on surface virtual tmp interpolate ( const interpolation& ) const; //- Interpolate field on surface virtual tmp interpolate ( const interpolation& ) const; //- Write virtual void print(Ostream&) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "sampledThresholdCellFacesTemplates.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //