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 #include "MeshedSurfaceProxy.H"
00027 
00028 #include <OpenFOAM/Time.H>
00029 #include <surfMesh/surfMesh.H>
00030 #include <OpenFOAM/OFstream.H>
00031 #include <OpenFOAM/ListOps.H>
00032 
00033 
00034 
00035 template<class Face>
00036 Foam::wordHashSet Foam::MeshedSurfaceProxy<Face>::writeTypes()
00037 {
00038     return wordHashSet(*writefileExtensionMemberFunctionTablePtr_);
00039 }
00040 
00041 
00042 template<class Face>
00043 bool Foam::MeshedSurfaceProxy<Face>::canWriteType
00044 (
00045     const word& ext,
00046     const bool verbose
00047 )
00048 {
00049     return checkSupport(writeTypes(), ext, verbose, "writing");
00050 }
00051 
00052 
00053 template<class Face>
00054 void Foam::MeshedSurfaceProxy<Face>::write
00055 (
00056     const fileName& name,
00057     const MeshedSurfaceProxy& surf
00058 )
00059 {
00060     if (debug)
00061     {
00062         Info<< "MeshedSurfaceProxy::write"
00063             "(const fileName&, const MeshedSurfaceProxy&) : "
00064             "writing to " << name
00065             << endl;
00066     }
00067 
00068     word ext = name.ext();
00069 
00070     typename writefileExtensionMemberFunctionTable::iterator mfIter =
00071         writefileExtensionMemberFunctionTablePtr_->find(ext);
00072 
00073     if (mfIter == writefileExtensionMemberFunctionTablePtr_->end())
00074     {
00075         FatalErrorIn
00076         (
00077             "MeshedSurfaceProxy::write(const fileName&)"
00078         )   << "Unknown file extension " << ext << nl << nl
00079             << "Valid types are :" << endl
00080             << writeTypes()
00081             << exit(FatalError);
00082     }
00083 
00084     mfIter()(name, surf);
00085 }
00086 
00087 
00088 template<class Face>
00089 void Foam::MeshedSurfaceProxy<Face>::write
00090 (
00091     const Time& t,
00092     const word& surfName
00093 ) const
00094 {
00095     
00096     word name(surfName.size() ? surfName : surfaceRegistry::defaultName);
00097 
00098     if (debug)
00099     {
00100         Info<< "MeshedSurfaceProxy::write"
00101             "(const Time&, const word&) : "
00102             "writing to " << name
00103             << endl;
00104     }
00105 
00106 
00107     
00108     const fileName objectDir
00109     (
00110         t.timePath()/surfaceRegistry::prefix/name/surfMesh::meshSubDir
00111     );
00112 
00113     if (!isDir(objectDir))
00114     {
00115         mkDir(objectDir);
00116     }
00117 
00118 
00119     
00120     {
00121         pointIOField io
00122         (
00123             IOobject
00124             (
00125                 "points",
00126                 t.timeName(),
00127                 surfMesh::meshSubDir,
00128                 t,
00129                 IOobject::NO_READ,
00130                 IOobject::NO_WRITE,
00131                 false
00132             )
00133         );
00134 
00135         OFstream os
00136         (
00137             objectDir/io.name(),
00138             t.writeFormat(),
00139             IOstream::currentVersion,
00140             t.writeCompression()
00141         );
00142 
00143         io.writeHeader(os);
00144 
00145         os  << this->points();
00146 
00147         io.writeEndDivider(os);
00148     }
00149 
00150 
00151     
00152     {
00153         faceIOList io
00154         (
00155             IOobject
00156             (
00157                 "faces",
00158                 t.timeName(),
00159                 surfMesh::meshSubDir,
00160                 t,
00161                 IOobject::NO_READ,
00162                 IOobject::NO_WRITE,
00163                 false
00164             )
00165         );
00166 
00167         OFstream os
00168         (
00169             objectDir/io.name(),
00170             t.writeFormat(),
00171             IOstream::currentVersion,
00172             t.writeCompression()
00173         );
00174         io.writeHeader(os);
00175 
00176         if (this->useFaceMap())
00177         {
00178             
00179             os  << reorder(this->faceMap(), this->faces());
00180         }
00181         else
00182         {
00183             os  << this->faces();
00184         }
00185 
00186         io.writeEndDivider(os);
00187     }
00188 
00189 
00190     
00191     {
00192         surfZoneIOList io
00193         (
00194             IOobject
00195             (
00196                 "surfZones",
00197                 t.timeName(),
00198                 surfMesh::meshSubDir,
00199                 t,
00200                 IOobject::NO_READ,
00201                 IOobject::NO_WRITE,
00202                 false
00203             )
00204         );
00205 
00206         
00207         OFstream os(objectDir/io.name());
00208         io.writeHeader(os);
00209 
00210         os  << this->surfZones();
00211 
00212         io.writeEndDivider(os);
00213     }
00214 
00215 }
00216 
00217 
00218 
00219 
00220 template<class Face>
00221 Foam::MeshedSurfaceProxy<Face>::MeshedSurfaceProxy
00222 (
00223     const pointField& pointLst,
00224     const List<Face>& faceLst,
00225     const List<surfZone>& zoneLst,
00226     const List<label>& faceMap
00227 )
00228 :
00229     points_(pointLst),
00230     faces_(faceLst),
00231     zones_(zoneLst),
00232     faceMap_(faceMap)
00233 {}
00234 
00235 
00236 
00237 
00238 template<class Face>
00239 Foam::MeshedSurfaceProxy<Face>::~MeshedSurfaceProxy()
00240 {}
00241 
00242 
00243