Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 namespace Foam
00031 {
00032
00033
00034
00035
00036
00037 template <class Type>
00038 inline bool wallPointData<Type>::update
00039 (
00040 const point& pt,
00041 const wallPointData<Type>& w2,
00042 const scalar tol
00043 )
00044 {
00045 scalar dist2 = magSqr(pt - w2.origin());
00046
00047 if (!valid())
00048 {
00049
00050 distSqr() = dist2;
00051 origin() = w2.origin();
00052 data_ = w2.data();
00053
00054 return true;
00055 }
00056
00057 scalar diff = distSqr() - dist2;
00058
00059 if (diff < 0)
00060 {
00061
00062 return false;
00063 }
00064
00065 if ((diff < SMALL) || ((distSqr() > SMALL) && (diff/distSqr() < tol)))
00066 {
00067
00068 return false;
00069 }
00070 else
00071 {
00072
00073 distSqr() = dist2;
00074 origin() = w2.origin();
00075 data_ = w2.data();
00076
00077 return true;
00078 }
00079 }
00080
00081
00082
00083
00084
00085 template <class Type>
00086 inline wallPointData<Type>::wallPointData()
00087 :
00088 wallPoint(),
00089 data_()
00090 {}
00091
00092
00093
00094 template <class Type>
00095 inline wallPointData<Type>::wallPointData
00096 (
00097 const point& origin,
00098 const Type& data,
00099 const scalar distSqr
00100 )
00101 :
00102 wallPoint(origin, distSqr),
00103 data_(data)
00104 {}
00105
00106
00107
00108
00109 template <class Type>
00110 inline const Type& wallPointData<Type>::data() const
00111 {
00112 return data_;
00113 }
00114
00115
00116 template <class Type>
00117 inline Type& wallPointData<Type>::data()
00118 {
00119 return data_;
00120 }
00121
00122
00123
00124 template <class Type>
00125 inline bool wallPointData<Type>::updateCell
00126 (
00127 const polyMesh& mesh,
00128 const label thisCellI,
00129 const label,
00130 const wallPointData<Type>& neighbourWallInfo,
00131 const scalar tol
00132 )
00133 {
00134 const vectorField& cellCentres = mesh.primitiveMesh::cellCentres();
00135
00136 return update
00137 (
00138 cellCentres[thisCellI],
00139 neighbourWallInfo,
00140 tol
00141 );
00142 }
00143
00144
00145
00146 template <class Type>
00147 inline bool wallPointData<Type>::updateFace
00148 (
00149 const polyMesh& mesh,
00150 const label thisFaceI,
00151 const label,
00152 const wallPointData<Type>& neighbourWallInfo,
00153 const scalar tol
00154 )
00155 {
00156 const vectorField& faceCentres = mesh.faceCentres();
00157
00158 return update
00159 (
00160 faceCentres[thisFaceI],
00161 neighbourWallInfo,
00162 tol
00163 );
00164 }
00165
00166
00167
00168 template <class Type>
00169 inline bool wallPointData<Type>::updateFace
00170 (
00171 const polyMesh& mesh,
00172 const label thisFaceI,
00173 const wallPointData<Type>& neighbourWallInfo,
00174 const scalar tol
00175 )
00176 {
00177 const vectorField& faceCentres = mesh.faceCentres();
00178
00179 return update
00180 (
00181 faceCentres[thisFaceI],
00182 neighbourWallInfo,
00183 tol
00184 );
00185 }
00186
00187 }
00188
00189