![]() |
|
00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2005 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 the 00013 Free Software Foundation; either version 2 of the License, or (at your 00014 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, write to the Free Software Foundation, 00023 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00024 00025 Class 00026 interpolationCellPointFace 00027 00028 Description 00029 00030 \*---------------------------------------------------------------------------*/ 00031 00032 #ifndef interpolationCellPointFace_H 00033 #define interpolationCellPointFace_H 00034 00035 #include "interpolation.H" 00036 00037 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00038 00039 namespace Foam 00040 { 00041 00042 /*---------------------------------------------------------------------------*\ 00043 Class interpolationCellPointFace Declaration 00044 \*---------------------------------------------------------------------------*/ 00045 00046 template<class Type> 00047 class interpolationCellPointFace 00048 : 00049 public interpolation<Type> 00050 { 00051 // Private data 00052 00053 GeometricField<Type, pointPatchField, pointMesh> psip_; 00054 GeometricField<Type, fvPatchField, surfaceMesh> psis_; 00055 00056 bool findTet 00057 ( 00058 const vector& position, 00059 const label nFace, 00060 vector tetPoints[], 00061 label tetLabelCandidate[], 00062 label tetPointLabels[], 00063 scalar phi[], 00064 scalar phiCandidate[], 00065 label& closestFace, 00066 scalar& minDistance 00067 ) const; 00068 00069 bool findTriangle 00070 ( 00071 const vector& position, 00072 const label nFace, 00073 label tetPointLabels[], 00074 scalar phi[] 00075 ) const; 00076 00077 00078 public: 00079 00080 //- Runtime type information 00081 TypeName("cellPointFace"); 00082 00083 00084 // Constructors 00085 00086 //- Construct from components 00087 interpolationCellPointFace 00088 ( 00089 const volPointInterpolation& pInterp, 00090 const GeometricField<Type, fvPatchField, volMesh>& psi 00091 ); 00092 00093 00094 // Member Functions 00095 00096 //- Interpolate field to the given point in the given cell 00097 Type interpolate 00098 ( 00099 const vector& position, 00100 const label nCell, 00101 const label facei = -1 00102 ) const; 00103 }; 00104 00105 00106 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00107 00108 } // End namespace Foam 00109 00110 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00111 00112 #ifdef NoRepository 00113 # include "interpolationCellPointFace.C" 00114 #endif 00115 00116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00117 00118 #endif 00119 00120 // ************************************************************************* //