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
00038
00039
00040
00041
00042
00043
00044
00045
00046 #ifndef UnsortedMeshedSurface_H
00047 #define UnsortedMeshedSurface_H
00048
00049 #include <surfMesh/MeshedSurface.H>
00050 #include <surfMesh/surfZoneIdentifierList.H>
00051 #include <surfMesh/surfZoneList.H>
00052 #include <surfMesh/surfaceFormatsCore.H>
00053 #include <OpenFOAM/runTimeSelectionTables.H>
00054 #include <OpenFOAM/memberFunctionSelectionTables.H>
00055 #include <OpenFOAM/HashSet.H>
00056
00057
00058
00059 namespace Foam
00060 {
00061
00062
00063
00064 class Time;
00065 class IFstream;
00066
00067 template<class Face> class MeshedSurface;
00068 template<class Face> class MeshedSurfaceProxy;
00069 template<class Face> class UnsortedMeshedSurface;
00070
00071
00072
00073
00074
00075 template<class Face>
00076 class UnsortedMeshedSurface
00077 :
00078 public MeshedSurface<Face>
00079 {
00080
00081 template<class Face2> friend class MeshedSurface;
00082 template<class Face2> friend class UnsortedMeshedSurface;
00083 friend class surfMesh;
00084
00085 private:
00086
00087
00088
00089 typedef MeshedSurface<Face> ParentType;
00090 typedef MeshedSurface<Face> FriendType;
00091 typedef MeshedSurfaceProxy<Face> ProxyType;
00092
00093
00094
00095
00096
00097 labelList zoneIds_;
00098
00099
00100
00101 List<surfZoneIdentifier> zoneToc_;
00102
00103
00104
00105
00106
00107 void resize(const label, const Face&);
00108
00109
00110 void setSize(const label, const Face&);
00111
00112
00113 bool read(Istream&);
00114
00115
00116 protected:
00117
00118
00119
00120
00121 List<label>& storedZoneIds()
00122 {
00123 return zoneIds_;
00124 }
00125
00126
00127 List<surfZoneIdentifier>& storedZoneToc()
00128 {
00129 return zoneToc_;
00130 }
00131
00132
00133 virtual void remapFaces(const UList<label>& faceMap);
00134
00135
00136 public:
00137
00138
00139 TypeName("UnsortedMeshedSurface");
00140
00141
00142
00143
00144
00145 static bool canReadType(const word& ext, const bool verbose=false);
00146
00147
00148 static bool canRead(const fileName&, const bool verbose=false);
00149
00150
00151 static bool canWriteType(const word& ext, const bool verbose=false);
00152
00153 static wordHashSet readTypes();
00154 static wordHashSet writeTypes();
00155
00156
00157
00158
00159
00160 UnsortedMeshedSurface();
00161
00162
00163
00164 UnsortedMeshedSurface
00165 (
00166 const Xfer< pointField >&,
00167 const Xfer< List<Face> >&,
00168 const Xfer< List<label> >& zoneIds,
00169 const Xfer< surfZoneIdentifierList >&
00170 );
00171
00172
00173
00174 UnsortedMeshedSurface
00175 (
00176 const Xfer<pointField>&,
00177 const Xfer<List<Face> >&,
00178 const UList<label>& zoneSizes = UList<label>(),
00179 const UList<word>& zoneNames = UList<word>()
00180 );
00181
00182
00183 UnsortedMeshedSurface(const UnsortedMeshedSurface<Face>&);
00184
00185
00186 UnsortedMeshedSurface(const MeshedSurface<Face>&);
00187
00188
00189 UnsortedMeshedSurface(const Xfer<UnsortedMeshedSurface<Face> >&);
00190
00191
00192 UnsortedMeshedSurface(const Xfer<MeshedSurface<Face> >&);
00193
00194
00195 UnsortedMeshedSurface(const fileName&);
00196
00197
00198 UnsortedMeshedSurface(const fileName&, const word&);
00199
00200
00201 UnsortedMeshedSurface(Istream&);
00202
00203
00204 UnsortedMeshedSurface(const Time&, const word& surfName="");
00205
00206
00207
00208
00209 declareRunTimeSelectionTable
00210 (
00211 autoPtr,
00212 UnsortedMeshedSurface,
00213 fileExtension,
00214 (
00215 const fileName& name
00216 ),
00217 (name)
00218 );
00219
00220
00221
00222
00223
00224 static autoPtr<UnsortedMeshedSurface> New
00225 (
00226 const fileName&,
00227 const word& ext
00228 );
00229
00230
00231 static autoPtr<UnsortedMeshedSurface> New(const fileName&);
00232
00233
00234
00235
00236 virtual ~UnsortedMeshedSurface();
00237
00238
00239
00240
00241 declareMemberFunctionSelectionTable
00242 (
00243 void,
00244 UnsortedMeshedSurface,
00245 write,
00246 fileExtension,
00247 (
00248 const fileName& name,
00249 const UnsortedMeshedSurface<Face>& surf
00250 ),
00251 (name, surf)
00252 );
00253
00254
00255 static void write(const fileName&, const UnsortedMeshedSurface<Face>&);
00256
00257
00258
00259
00260
00261
00262
00263 label size() const
00264 {
00265 return ParentType::size();
00266 }
00267
00268
00269 void setSize(const label);
00270
00271
00272 const List<label>& zoneIds() const
00273 {
00274 return zoneIds_;
00275 }
00276
00277
00278 const List<surfZoneIdentifier>& zoneToc() const
00279 {
00280 return zoneToc_;
00281 }
00282
00283
00284
00285 surfZoneList sortedZones(labelList& faceMap) const;
00286
00287
00288 void setOneZone();
00289
00290
00291 void setZones(const surfZoneList&);
00292
00293
00294 void setZones(const UList<label>& sizes, const UList<word>& names);
00295
00296
00297 void setZones(const UList<label>& sizes);
00298
00299
00300
00301
00302
00303 virtual void clear();
00304
00305
00306
00307 UnsortedMeshedSurface subsetMesh
00308 (
00309 const labelHashSet& include,
00310 labelList& pointMap,
00311 labelList& faceMap
00312 ) const;
00313
00314
00315 UnsortedMeshedSurface subsetMesh
00316 (
00317 const labelHashSet& include
00318 ) const;
00319
00320
00321 virtual void reset
00322 (
00323 const Xfer< pointField >&,
00324 const Xfer< List<Face> >&,
00325 const Xfer< List<label> >& zoneIds
00326 );
00327
00328
00329 virtual void reset
00330 (
00331 const Xfer< List<point> >&,
00332 const Xfer< List<Face> >&,
00333 const Xfer< List<label> >& zoneIds
00334 );
00335
00336
00337 void transfer(UnsortedMeshedSurface<Face>&);
00338
00339
00340 void transfer(MeshedSurface<Face>&);
00341
00342
00343 Xfer< UnsortedMeshedSurface<Face> > xfer();
00344
00345
00346
00347
00348
00349 bool read(const fileName&, const word& ext);
00350
00351
00352 virtual bool read(const fileName&);
00353
00354
00355
00356
00357
00358 virtual void write(const fileName& name) const
00359 {
00360 write(name, *this);
00361 }
00362
00363
00364 void write(const Time&, const word& surfName="") const;
00365
00366
00367
00368
00369 void operator=(const UnsortedMeshedSurface<Face>&);
00370
00371
00372 operator MeshedSurfaceProxy<Face>() const;
00373 };
00374
00375
00376
00377
00378 }
00379
00380
00381
00382 #ifdef NoRepository
00383 # include "UnsortedMeshedSurface.C"
00384 #endif
00385
00386
00387
00388 #endif
00389
00390