FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

coupledFacePointPatch.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Class
00025     Foam::coupledFacePointPatch
00026 
00027 Description
00028     coupled patch for post-processing.  Used as the base class for processor
00029     and cyclic pointPatches
00030 
00031 SourceFiles
00032     coupledFacePointPatch.C
00033 
00034 \*---------------------------------------------------------------------------*/
00035 
00036 #ifndef coupledFacePointPatch_H
00037 #define coupledFacePointPatch_H
00038 
00039 #include <OpenFOAM/coupledPointPatch.H>
00040 #include <OpenFOAM/facePointPatch.H>
00041 #include <OpenFOAM/coupledPolyPatch.H>
00042 
00043 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00044 
00045 namespace Foam
00046 {
00047 
00048 class pointBoundaryMesh;
00049 
00050 /*---------------------------------------------------------------------------*\
00051                       Class coupledFacePointPatch Declaration
00052 \*---------------------------------------------------------------------------*/
00053 
00054 class coupledFacePointPatch
00055 :
00056     public facePointPatch,
00057     public coupledPointPatch
00058 {
00059     // Private data
00060 
00061         const coupledPolyPatch& coupledPolyPatch_;
00062 
00063 
00064     // Private Member Functions
00065 
00066         //- Disallow default construct as copy
00067         coupledFacePointPatch(const coupledFacePointPatch&);
00068 
00069         //- Disallow default assignment
00070         void operator=(const coupledFacePointPatch&);
00071 
00072 
00073 protected:
00074 
00075     // Demand driven private data
00076 
00077         //- The set of labels of the pointPatch points which are
00078         //  non-global, i.e. present only in this coupledPointPatch.
00079         //  MUST be initialised by calcGeometry()!
00080         labelList nonGlobalPatchPoints_;
00081 
00082         labelList loneMeshPoints_;
00083 
00084 
00085         // Construction of demand-driven data
00086 
00087             //- Calculate mesh points
00088             virtual void calcGeometry() = 0;
00089 
00090 
00091 public:
00092 
00093     //- Runtime type information
00094     TypeName(coupledPolyPatch::typeName_());
00095 
00096 
00097     // Constructors
00098 
00099         //- Construct from components
00100         coupledFacePointPatch
00101         (
00102             const polyPatch& patch,
00103             const pointBoundaryMesh& bm
00104         );
00105 
00106 
00107     // Destructor
00108 
00109         virtual ~coupledFacePointPatch();
00110 
00111 
00112     // Member Functions
00113 
00114         // Access
00115 
00116             //- Return true because this patch is coupled
00117             virtual bool coupled() const
00118             {
00119                 return true;
00120             }
00121 
00122 
00123         // Access functions for demand driven data
00124 
00125             //- Return the set of labels of the pointPatch points which are
00126             //  non-global, i.e. present in this coupledFacePointPatch
00127             virtual const labelList& nonGlobalPatchPoints() const;
00128 
00129             //- Return the set of labels of the pointPatch points which are
00130             //  lone, i.e. present in this coupledFacePointPatch but not
00131             //  associated with any faces
00132             virtual const labelList& loneMeshPoints() const;
00133 
00134             //- Return point unit normals.  Not impelemented.
00135             virtual const vectorField& pointNormals() const;
00136 };
00137 
00138 
00139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00140 
00141 } // End namespace Foam
00142 
00143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00144 
00145 #endif
00146 
00147 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines