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
00031
00032
00033
00034
00035
00036
00037 #ifndef surfMesh_H
00038 #define surfMesh_H
00039
00040 #include <surfMesh/surfaceRegistry.H>
00041 #include <surfMesh/MeshedSurfaceIOAllocator.H>
00042 #include <OpenFOAM/PrimitivePatch_.H>
00043 #include <OpenFOAM/SubField.H>
00044
00045
00046
00047 namespace Foam
00048 {
00049
00050 template<class Face> class MeshedSurface;
00051
00052
00053
00054
00055
00056 class surfMesh
00057 :
00058 public surfaceRegistry,
00059 private MeshedSurfaceIOAllocator,
00060 public PrimitivePatch<face, ::Foam::UList, ::Foam::SubField<point>, point>
00061 {
00062
00063 template<class Face> friend class MeshedSurface;
00064 template<class Face> friend class UnsortedMeshedSurface;
00065
00066 public:
00067
00068
00069
00070
00071
00072
00073 enum readUpdateState
00074 {
00075 UNCHANGED,
00076 POINTS_MOVED,
00077 TOPO_CHANGE,
00078 TOPO_PATCH_CHANGE
00079 };
00080
00081
00082 private:
00083
00084
00085
00086 typedef MeshedSurfaceIOAllocator Allocator;
00087
00088 typedef PrimitivePatch
00089 <
00090 face,
00091 ::Foam::UList,
00092 ::Foam::SubField<point>,
00093 point
00094 >
00095 MeshReference;
00096
00097
00098
00099
00100
00101 surfMesh(const surfMesh&);
00102
00103
00104 void operator=(const surfMesh&);
00105
00106
00107 protected:
00108
00109
00110
00111
00112 pointField& storedPoints()
00113 {
00114 return Allocator::storedIOPoints();
00115 }
00116
00117
00118 faceList& storedFaces()
00119 {
00120 return Allocator::storedIOFaces();
00121 }
00122
00123
00124 surfZoneList& storedZones()
00125 {
00126 return Allocator::storedIOZones();
00127 }
00128
00129
00130 virtual void updateFacesRef();
00131
00132
00133 virtual void updatePointsRef();
00134
00135
00136 virtual void updateRefs();
00137
00138
00139 public:
00140
00141
00142
00143 typedef surfMesh Mesh;
00144
00145
00146 typedef bool BoundaryMesh;
00147
00148
00149
00150 TypeName("surfMesh");
00151
00152
00153 static word meshSubDir;
00154
00155
00156
00157
00158 explicit surfMesh(const IOobject&, const word& surfName="");
00159
00160
00161
00162 surfMesh
00163 (
00164 const IOobject&,
00165 const Xfer<pointField>&,
00166 const Xfer<faceList>&,
00167 const word& surfName=""
00168 );
00169
00170
00171 surfMesh
00172 (
00173 const IOobject&,
00174 const Xfer< MeshedSurface<face> >& surf,
00175 const word& surfName=""
00176 );
00177
00178
00179
00180
00181 virtual ~surfMesh();
00182
00183
00184
00185
00186
00187
00188
00189 fileName meshDir() const;
00190
00191
00192
00193
00194 const fileName& pointsInstance() const;
00195
00196
00197 const fileName& facesInstance() const;
00198
00199
00200 void setInstance(const fileName&);
00201
00202
00203
00204
00205
00206 virtual label nPoints() const;
00207
00208
00209 virtual label nFaces() const;
00210
00211
00212 virtual label size() const
00213 {
00214 return nFaces();
00215 }
00216
00217
00218
00219 virtual const pointField& points() const;
00220
00221
00222 virtual const faceList& faces() const;
00223
00224
00225 virtual const surfZoneList& surfZones() const
00226 {
00227 return Allocator::storedIOZones();
00228 }
00229
00230
00231 void checkZones();
00232
00233
00234 void addZones
00235 (
00236 const List<surfZone>&,
00237 const bool validate = true
00238 );
00239
00240
00241
00242 virtual readUpdateState readUpdate();
00243
00244
00245
00246
00247 void removeZones();
00248
00249
00250 void resetPrimitives
00251 (
00252 const Xfer< pointField >& points,
00253 const Xfer< faceList >& faces,
00254 const Xfer< surfZoneList >& zones,
00255 const bool validate = true
00256 );
00257
00258
00259
00260 void transfer(MeshedSurface<face>&);
00261
00262
00263
00264 using surfaceRegistry::write;
00265
00266
00267 static void write(const fileName&, const surfMesh&);
00268
00269
00270 void write(const fileName&);
00271
00272
00273
00274
00275 Xfer< MeshedSurface<face> > xfer();
00276
00277
00278 void clearGeom();
00279
00280
00281 void clearAddressing();
00282
00283
00284 void clearOut();
00285
00286
00287 void clearPrimitives();
00288
00289
00290 void removeFiles(const fileName& instanceDir) const;
00291
00292
00293 void removeFiles() const;
00294 };
00295
00296
00297
00298 }
00299
00300
00301
00302 #endif
00303
00304