sampledSurface hacking proof-of-concept

- using 'nil' type to write geometry only, in the future we could fallback to 'null'
  writer and hook in arbitrary formats from surfMesh

- IOobject gets writeEndDivider() static method
This commit is contained in:
Mark Olesen
2009-03-10 13:12:00 +01:00
parent ce3d79de1c
commit 34da731896
25 changed files with 724 additions and 586 deletions

View File

@ -359,6 +359,10 @@ public:
template<class Stream> template<class Stream>
static inline Stream& writeDivider(Stream& os); static inline Stream& writeDivider(Stream& os);
//- Write the standard end file divider
template<class Stream>
static inline Stream& writeEndDivider(Stream& os);
//- Write header //- Write header
bool writeHeader(Ostream&) const; bool writeHeader(Ostream&) const;

View File

@ -82,5 +82,14 @@ inline Stream& Foam::IOobject::writeDivider(Stream& os)
return os; return os;
} }
template<class Stream>
inline Stream& Foam::IOobject::writeEndDivider(Stream& os)
{
os << "\n\n"
"// ************************************************************************* //\n";
return os;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -103,9 +103,7 @@ bool Foam::regIOobject::writeObject
return false; return false;
} }
os << "\n\n" writeEndDivider(os);
"// ************************************************************************* //"
<< endl;
osGood = os.good(); osGood = os.good();
} }

View File

@ -97,10 +97,8 @@ void Foam::meshReader::writeInterfaces(const objectRegistry& registry) const
OFstream os(ioObj.objectPath()); OFstream os(ioObj.objectPath());
ioObj.writeHeader(os); ioObj.writeHeader(os);
os << interfaces_ os << interfaces_;
<< "// *************************************" io.writeEndDivider(os);
<< "************************************ //"
<< endl;
} }

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "dxSurfaceWriter.H" #include "dxSurfaceWriter.H"
#include "fileName.H" #include "fileName.H"
#include "OFstream.H" #include "OFstream.H"
#include "faceList.H" #include "faceList.H"
@ -33,12 +34,12 @@ License
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
template<class Type> template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXGeometry void Foam::dxSurfaceWriter<Type>::writeGeometry
( (
Ostream& os,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces
Ostream& os )
) const
{ {
// Write vertex coordinates // Write vertex coordinates
@ -69,7 +70,7 @@ void Foam::dxSurfaceWriter<Type>::writeDXGeometry
{ {
FatalErrorIn FatalErrorIn
( (
"writeDXGeometry(Ostream&, const pointField&, const faceList&)" "writeGeometry(Ostream&, const pointField&, const faceList&)"
) << "Face " << faceI << " vertices " << f ) << "Face " << faceI << " vertices " << f
<< " is not a triangle." << " is not a triangle."
<< exit(FatalError); << exit(FatalError);
@ -82,51 +83,38 @@ void Foam::dxSurfaceWriter<Type>::writeDXGeometry
} }
// Write scalarField in DX format namespace Foam
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXData
(
const pointField& points,
const scalarField& values,
Ostream& os
) const
{ {
// Write scalarField in DX format
template<>
void Foam::dxSurfaceWriter<Foam::scalar>::writeData
(
Ostream& os,
const Field<scalar>& values
)
{
// Write data // Write data
os << "object 3 class array type float rank 0 items " os << "object 3 class array type float rank 0 items "
<< values.size() << values.size() << " data follows" << nl;
<< " data follows" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
os << float(values[elemI]) << nl; os << float(values[elemI]) << nl;
} }
if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
} }
else
// Write vectorField in DX format
template<>
void Foam::dxSurfaceWriter<Foam::vector>::writeData
(
Ostream& os,
const Field<vector>& values
)
{ {
os << nl << "attribute \"dep\" string \"connections\""
<< nl << nl;
}
}
// Write vectorField in DX format
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXData
(
const pointField& points,
const vectorField& values,
Ostream& os
) const
{
// Write data // Write data
os << "object 3 class array type float rank 1 shape 3 items " os << "object 3 class array type float rank 1 shape 3 items "
<< values.size() << values.size() << " data follows" << nl;
<< " data follows" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
@ -134,65 +122,39 @@ void Foam::dxSurfaceWriter<Type>::writeDXData
<< float(values[elemI].y()) << ' ' << float(values[elemI].y()) << ' '
<< float(values[elemI].z()) << nl; << float(values[elemI].z()) << nl;
} }
if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
} }
else
// Write sphericalTensorField in DX format
template<>
void Foam::dxSurfaceWriter<Foam::sphericalTensor>::writeData
(
Ostream& os,
const Field<sphericalTensor>& values
)
{ {
os << nl << "attribute \"dep\" string \"connections\""
<< nl << nl;
}
}
// Write sphericalTensorField in DX format
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXData
(
const pointField& points,
const sphericalTensorField& values,
Ostream& os
) const
{
// Write data // Write data
os << "object 3 class array type float rank 0 items " os << "object 3 class array type float rank 0 items "
<< values.size() << values.size() << " data follows" << nl;
<< " data follows" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
os << float(values[elemI][0]) << nl; os << float(values[elemI][0]) << nl;
} }
if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
} }
else
// Write symmTensorField in DX format
template<>
void Foam::dxSurfaceWriter<Foam::symmTensor>::writeData
(
Ostream& os,
const Field<symmTensor>& values
)
{ {
os << nl << "attribute \"dep\" string \"connections\""
<< nl << nl;
}
}
// Write symmTensorField in DX format
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXData
(
const pointField& points,
const symmTensorField& values,
Ostream& os
) const
{
// Write data // Write data
os << "object 3 class array type float rank 2 shape 3 items " os << "object 3 class array type float rank 2 shape 3 items "
<< values.size() << values.size() << " data follows" << nl;
<< " data follows" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
@ -203,33 +165,20 @@ void Foam::dxSurfaceWriter<Type>::writeDXData
<< float(t.xz()) << ' ' << float(t.yz()) << ' ' << float(t.zz()) << float(t.xz()) << ' ' << float(t.yz()) << ' ' << float(t.zz())
<< nl; << nl;
} }
if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
} }
else
// Write tensorField in DX format
template<>
void Foam::dxSurfaceWriter<Foam::tensor>::writeData
(
Ostream& os,
const Field<tensor>& values
)
{ {
os << nl << "attribute \"dep\" string \"connections\""
<< nl << nl;
}
}
// Write tensorField in DX format
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXData
(
const pointField& points,
const tensorField& values,
Ostream& os
) const
{
// Write data // Write data
os << "object 3 class array type float rank 2 shape 3 items " os << "object 3 class array type float rank 2 shape 3 items "
<< values.size() << values.size() << " data follows" << nl;
<< " data follows" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
@ -240,23 +189,31 @@ void Foam::dxSurfaceWriter<Type>::writeDXData
<< float(t.zx()) << ' ' << float(t.zy()) << ' ' << float(t.zz()) << float(t.zx()) << ' ' << float(t.zy()) << ' ' << float(t.zz())
<< nl; << nl;
} }
if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
} }
else }
// Write tensorField in DX format
template<class Type>
void Foam::dxSurfaceWriter<Type>::writeData
(
Ostream& os,
const Field<Type>& values
)
{
// Write data
os << "object 3 class array type float rank 0 items "
<< values.size() << " data follows" << nl;
forAll(values, elemI)
{ {
os << nl << "attribute \"dep\" string \"connections\"" os << float(0.0) << nl;
<< nl << nl;
} }
} }
// Write trailer in DX format // Write trailer in DX format
template<class Type> template<class Type>
void Foam::dxSurfaceWriter<Type>::writeDXTrailer(Ostream& os) const void Foam::dxSurfaceWriter<Type>::writeTrailer(Ostream& os)
{ {
os << "# the field, with three components: \"positions\"," os << "# the field, with three components: \"positions\","
<< " \"connections\", and \"data\"" << nl << " \"connections\", and \"data\"" << nl
@ -316,11 +273,22 @@ void Foam::dxSurfaceWriter<Type>::write
OFstream os(fName); OFstream os(fName);
writeDXGeometry(points, faces, os); writeGeometry(os, points, faces);
writeDXData(points, values, os); writeData(os, values);
writeDXTrailer(os); if (values.size() == points.size())
{
os << nl << "attribute \"dep\" string \"positions\""
<< nl << nl;
}
else
{
os << nl << "attribute \"dep\" string \"connections\""
<< nl << nl;
}
writeTrailer(os);
os << "end" << nl; os << "end" << nl;
} }

View File

@ -54,49 +54,11 @@ class dxSurfaceWriter
// Private Member Functions // Private Member Functions
void writeDXGeometry static void writeGeometry(Ostream&, const pointField&, const faceList&);
(
const pointField& points,
const faceList& faces,
Ostream& os
) const;
void writeDXData static void writeData(Ostream&, const Field<Type>& values);
(
const pointField& points,
const scalarField& values,
Ostream& os
) const;
void writeDXData static void writeTrailer(Ostream&);
(
const pointField& points,
const vectorField& values,
Ostream& os
) const;
void writeDXData
(
const pointField& points,
const sphericalTensorField& values,
Ostream& os
) const;
void writeDXData
(
const pointField& points,
const symmTensorField& values,
Ostream& os
) const;
void writeDXData
(
const pointField& points,
const tensorField& values,
Ostream& os
) const;
void writeDXTrailer(Ostream& os) const;
public: public:

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "foamFileSurfaceWriter.H" #include "foamFileSurfaceWriter.H"
#include "fileName.H" #include "fileName.H"
#include "OFstream.H" #include "OFstream.H"
#include "faceList.H" #include "faceList.H"
@ -48,6 +49,43 @@ Foam::foamFileSurfaceWriter<Type>::~foamFileSurfaceWriter()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
namespace Foam
{
template<>
void Foam::foamFileSurfaceWriter<Foam::nil>::write
(
const fileName& samplePath,
const fileName& timeDir,
const fileName& surfaceName,
const pointField& points,
const faceList& faces,
const fileName& fieldName,
const Field<Foam::nil>& values,
const bool verbose
) const
{
fileName surfaceDir(samplePath/timeDir/surfaceName);
if (!isDir(surfaceDir))
{
mkDir(surfaceDir);
}
if (verbose)
{
Info<< "Writing nil to " << surfaceDir << endl;
}
// Points
OFstream(surfaceDir/"points")() << points;
// Faces
OFstream(surfaceDir/"faces")() << faces;
}
}
template<class Type> template<class Type>
void Foam::foamFileSurfaceWriter<Type>::write void Foam::foamFileSurfaceWriter<Type>::write
( (

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(foamFileSurfaceWriter, nil);
makeSurfaceWriters(foamFileSurfaceWriter); makeSurfaceWriters(foamFileSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(nullSurfaceWriter, nil);
makeSurfaceWriters(nullSurfaceWriter); makeSurfaceWriters(nullSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "objSurfaceWriter.H" #include "objSurfaceWriter.H"
#include "fileName.H" #include "fileName.H"
#include "OFstream.H" #include "OFstream.H"
#include "faceList.H" #include "faceList.H"
@ -48,6 +49,80 @@ Foam::objSurfaceWriter<Type>::~objSurfaceWriter()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
namespace Foam
{
template<>
void Foam::objSurfaceWriter<Foam::nil>::write
(
const fileName& samplePath,
const fileName& timeDir,
const fileName& surfaceName,
const pointField& points,
const faceList& faces,
const fileName& fieldName,
const Field<Foam::nil>& values,
const bool verbose
) const
{
fileName surfaceDir(samplePath/timeDir);
if (!isDir(surfaceDir))
{
mkDir(surfaceDir);
}
fileName fName(surfaceDir/surfaceName + ".obj");
if (verbose)
{
Info<< "Writing nil to " << fName << endl;
}
// this is a quick hack
OFstream os(fName);
os << "# Wavefront OBJ file" << nl
<< "o " << os.name().lessExt().name() << nl
<< nl
<< "# points : " << points.size() << nl
<< "# faces : " << faces.size() << nl
<< "# no zones " << nl;
os << nl
<< "# <points count=\"" << points.size() << "\">" << endl;
// Write vertex coords
forAll(points, ptI)
{
os << "v " << points[ptI].x()
<< ' ' << points[ptI].y()
<< ' ' << points[ptI].z() << nl;
}
os << "# </points>" << nl
<< nl
<< "# <faces count=\"" << faces.size() << "\">" << endl;
forAll(faces, i)
{
const face& f = faces[i];
os << 'f';
forAll(f, fp)
{
os << ' ' << f[fp] + 1;
}
os << nl;
}
os << "# </faces>" << endl;
}
}
template<class Type> template<class Type>
void Foam::objSurfaceWriter<Type>::write void Foam::objSurfaceWriter<Type>::write
( (

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(objSurfaceWriter, nil);
makeSurfaceWriters(objSurfaceWriter); makeSurfaceWriters(objSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "rawSurfaceWriter.H" #include "rawSurfaceWriter.H"
#include "fileName.H" #include "fileName.H"
#include "OFstream.H" #include "OFstream.H"
#include "faceList.H" #include "faceList.H"
@ -37,9 +38,9 @@ template<class Type>
void Foam::rawSurfaceWriter<Type>::writeGeometry void Foam::rawSurfaceWriter<Type>::writeGeometry
( (
const pointField& points, const pointField& points,
const label& pointI, const label pointI,
Ostream& os Ostream& os
) const )
{ {
const point& pt = points[pointI]; const point& pt = points[pointI];
@ -52,15 +53,16 @@ void Foam::rawSurfaceWriter<Type>::writeGeometry
( (
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const label& faceI, const label faceI,
Ostream& os Ostream& os
) const )
{ {
const point& ct = faces[faceI].centre(points); const point& ct = faces[faceI].centre(points);
os << ct.x() << ' ' << ct.y() << ' ' << ct.z() << ' '; os << ct.x() << ' ' << ct.y() << ' ' << ct.z() << ' ';
} }
// Write scalarField in raw format // Write scalarField in raw format
template<class Type> template<class Type>
void Foam::rawSurfaceWriter<Type>::writeData void Foam::rawSurfaceWriter<Type>::writeData
@ -70,38 +72,29 @@ void Foam::rawSurfaceWriter<Type>::writeData
const faceList& faces, const faceList& faces,
const scalarField& values, const scalarField& values,
Ostream& os Ostream& os
) const )
{ {
// header // header
os << "# " << fieldName; os << "# x y z " << fieldName << endl;
if (values.size() == points.size())
{
os << " POINT_DATA " << values.size()
<< nl;
}
else
{
os << " FACE_DATA " << values.size()
<< nl;
}
os << "# x y z " << fieldName
<< endl;
// Write data // Write data
forAll(values, elemI)
{
if (values.size() == points.size()) if (values.size() == points.size())
{
forAll(values, elemI)
{ {
writeGeometry(points, elemI, os); writeGeometry(points, elemI, os);
os << values[elemI] << nl;
}
} }
else else
{
forAll(values, elemI)
{ {
writeGeometry(points, faces, elemI, os); writeGeometry(points, faces, elemI, os);
os << values[elemI] << nl;
} }
os << values[elemI] << endl;
} }
os << nl; os << nl;
} }
@ -115,22 +108,9 @@ void Foam::rawSurfaceWriter<Type>::writeData
const faceList& faces, const faceList& faces,
const vectorField& values, const vectorField& values,
Ostream& os Ostream& os
) const )
{ {
// header // header
os << "# " << fieldName;
if (values.size() == points.size())
{
os << " POINT_DATA " << values.size()
<< nl;
}
else
{
os << " FACE_DATA " << values.size()
<< nl;
}
os << "# x y z " os << "# x y z "
<< fieldName << "_x " << fieldName << "_x "
<< fieldName << "_y " << fieldName << "_y "
@ -138,21 +118,27 @@ void Foam::rawSurfaceWriter<Type>::writeData
<< endl; << endl;
// Write data // Write data
forAll(values, elemI)
{
const vector& v = values[elemI];
if (values.size() == points.size()) if (values.size() == points.size())
{
forAll(values, elemI)
{ {
writeGeometry(points, elemI, os); writeGeometry(points, elemI, os);
const vector& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2] << nl;
}
} }
else else
{
forAll(values, elemI)
{ {
writeGeometry(points, faces, elemI, os); writeGeometry(points, faces, elemI, os);
}
const vector& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2] << nl; os << v[0] << ' ' << v[1] << ' ' << v[2] << nl;
} }
}
} }
@ -165,41 +151,33 @@ void Foam::rawSurfaceWriter<Type>::writeData
const faceList& faces, const faceList& faces,
const sphericalTensorField& values, const sphericalTensorField& values,
Ostream& os Ostream& os
) const )
{ {
// header // header
os << "# " << fieldName;
if (values.size() == points.size())
{
os << " POINT_DATA " << values.size()
<< nl;
}
else
{
os << " FACE_DATA " << values.size()
<< nl;
}
os << "# ii "; os << "# ii ";
os << fieldName << "_ii" << endl; os << fieldName << "_ii" << endl;
// Write data // Write data
forAll(values, elemI)
{
const sphericalTensor& v = values[elemI];
if (values.size() == points.size()) if (values.size() == points.size())
{
forAll(values, elemI)
{ {
writeGeometry(points, elemI, os); writeGeometry(points, elemI, os);
const sphericalTensor& v = values[elemI];
os << v[0] << nl;
}
} }
else else
{
forAll(values, elemI)
{ {
writeGeometry(points, faces, elemI, os); writeGeometry(points, faces, elemI, os);
}
const sphericalTensor& v = values[elemI];
os << v[0] << nl; os << v[0] << nl;
} }
}
} }
@ -212,22 +190,9 @@ void Foam::rawSurfaceWriter<Type>::writeData
const faceList& faces, const faceList& faces,
const symmTensorField& values, const symmTensorField& values,
Ostream& os Ostream& os
) const )
{ {
// header // header
os << "# " << fieldName;
if (values.size() == points.size())
{
os << " POINT_DATA " << values.size()
<< nl;
}
else
{
os << " FACE_DATA " << values.size()
<< nl;
}
os << "# xx xy xz yy yz "; os << "# xx xy xz yy yz ";
for(int i=0; i<6; i++) for(int i=0; i<6; i++)
{ {
@ -236,23 +201,32 @@ void Foam::rawSurfaceWriter<Type>::writeData
os << endl; os << endl;
// Write data // Write data
forAll(values, elemI)
{
const symmTensor& v = values[elemI];
if (values.size() == points.size()) if (values.size() == points.size())
{ {
writeGeometry(points, elemI, os); forAll(values, elemI)
}
else
{ {
writeGeometry(points, faces, elemI, os); writeGeometry(points, elemI, os);
}
const symmTensor& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2] os << v[0] << ' ' << v[1] << ' ' << v[2]
<< v[3] << ' ' << v[4] << ' ' << v[5] << v[3] << ' ' << v[4] << ' ' << v[5]
<< nl; << nl;
} }
}
else
{
forAll(values, elemI)
{
writeGeometry(points, faces, elemI, os);
const symmTensor& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2]
<< v[3] << ' ' << v[4] << ' ' << v[5]
<< nl;
}
}
} }
@ -265,47 +239,41 @@ void Foam::rawSurfaceWriter<Type>::writeData
const faceList& faces, const faceList& faces,
const tensorField& values, const tensorField& values,
Ostream& os Ostream& os
) const )
{ {
// header // header
os << "# " << fieldName;
if (values.size() == points.size())
{
os << " POINT_DATA " << values.size()
<< nl;
}
else
{
os << " FACE_DATA " << values.size()
<< nl;
}
os << "# xx xy xz yx yy yz zx zy zz"; os << "# xx xy xz yx yy yz zx zy zz";
for(int i=0; i<9; i++) for (int i=0; i<9; ++i)
{ {
os << fieldName << "_" << i << " "; os << fieldName << "_" << i << " ";
} }
os << endl; os << endl;
// Write data // Write data
forAll(values, elemI)
{
const tensor& v = values[elemI];
if (values.size() == points.size()) if (values.size() == points.size())
{ {
writeGeometry(points, elemI, os); forAll(values, elemI)
}
else
{ {
writeGeometry(points, faces, elemI, os); writeGeometry(points, elemI, os);
}
const tensor& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2] os << v[0] << ' ' << v[1] << ' ' << v[2]
<< v[3] << ' ' << v[4] << ' ' << v[5] << v[3] << ' ' << v[4] << ' ' << v[5]
<< v[6] << ' ' << v[7] << ' ' << v[8] << nl; << v[6] << ' ' << v[7] << ' ' << v[8] << nl;
} }
}
else
{
forAll(values, elemI)
{
writeGeometry(points, faces, elemI, os);
const tensor& v = values[elemI];
os << v[0] << ' ' << v[1] << ' ' << v[2]
<< v[3] << ' ' << v[4] << ' ' << v[5]
<< v[6] << ' ' << v[7] << ' ' << v[8] << nl;
}
}
} }
@ -327,6 +295,55 @@ Foam::rawSurfaceWriter<Type>::~rawSurfaceWriter()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
namespace Foam
{
template<>
void Foam::rawSurfaceWriter<Foam::nil>::write
(
const fileName& samplePath,
const fileName& timeDir,
const fileName& surfaceName,
const pointField& points,
const faceList& faces,
const fileName& fieldName,
const Field<Foam::nil>& values,
const bool verbose
) const
{
fileName surfaceDir(samplePath/timeDir);
if (!isDir(surfaceDir))
{
mkDir(surfaceDir);
}
fileName fName(surfaceDir/surfaceName + ".raw");
if (verbose)
{
Info<< "Writing nil to " << fName << endl;
}
OFstream os(fName);
// header
os << "# geometry NO_DATA " << faces.size() << nl
<< "# x y z" << endl;
// Write faces
forAll(faces, elemI)
{
writeGeometry(points, faces, elemI, os);
os << nl;
}
os << nl;
}
}
template<class Type> template<class Type>
void Foam::rawSurfaceWriter<Type>::write void Foam::rawSurfaceWriter<Type>::write
( (
@ -355,6 +372,20 @@ void Foam::rawSurfaceWriter<Type>::write
} }
OFstream os(fName); OFstream os(fName);
// header
os << "# " << fieldName;
if (values.size() == points.size())
{
os << " POINT_DATA ";
}
else
{
os << " FACE_DATA ";
}
os << values.size() << nl;
writeData(fieldName, points, faces, values, os); writeData(fieldName, points, faces, values, os);
} }

View File

@ -53,65 +53,65 @@ class rawSurfaceWriter
{ {
// Private Member Functions // Private Member Functions
void writeGeometry static void writeGeometry
( (
const pointField& points, const pointField& points,
const label& pointI, const label pointI,
Ostream& os Ostream& os
) const; );
void writeGeometry static void writeGeometry
( (
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const label& faceI, const label faceI,
Ostream& os Ostream& os
) const; );
void writeData static void writeData
( (
const fileName& fieldName, const fileName& fieldName,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const scalarField& values, const scalarField& values,
Ostream& os Ostream& os
) const; );
void writeData static void writeData
( (
const fileName& fieldName, const fileName& fieldName,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const vectorField& values, const vectorField& values,
Ostream& os Ostream& os
) const; );
void writeData static void writeData
( (
const fileName& fieldName, const fileName& fieldName,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const sphericalTensorField& values, const sphericalTensorField& values,
Ostream& os Ostream& os
) const; );
void writeData static void writeData
( (
const fileName& fieldName, const fileName& fieldName,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const symmTensorField& values, const symmTensorField& values,
Ostream& os Ostream& os
) const; );
void writeData static void writeData
( (
const fileName& fieldName, const fileName& fieldName,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces,
const tensorField& values, const tensorField& values,
Ostream& os Ostream& os
) const; );
public: public:

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(rawSurfaceWriter, nil);
makeSurfaceWriters(rawSurfaceWriter); makeSurfaceWriters(rawSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -49,6 +49,74 @@ Foam::stlSurfaceWriter<Type>::~stlSurfaceWriter()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
namespace Foam
{
template<>
void Foam::stlSurfaceWriter<Foam::nil>::write
(
const fileName& samplePath,
const fileName& timeDir,
const fileName& surfaceName,
const pointField& points,
const faceList& faces,
const fileName& fieldName,
const Field<Foam::nil>& values,
const bool verbose
) const
{
fileName surfaceDir(samplePath/timeDir);
if (!isDir(surfaceDir))
{
mkDir(surfaceDir);
}
fileName fName(surfaceDir/surfaceName + ".stl");
if (verbose)
{
Info<< "Writing nil to " << fName << endl;
}
// Convert faces to triangles.
DynamicList<labelledTri> tris(faces.size());
forAll(faces, i)
{
const face& f = faces[i];
faceList triFaces(f.nTriangles(points));
label nTris = 0;
f.triangles(points, nTris, triFaces);
forAll(triFaces, triI)
{
const face& tri = triFaces[triI];
tris.append(labelledTri(tri[0], tri[1], tri[2], 0));
}
}
triSurface
(
tris.shrink(),
geometricSurfacePatchList
(
1,
geometricSurfacePatch
(
"patch", // geometricType
"patch0", // fieldName
0 // index
)
),
points
).write(fName);
}
}
template<class Type> template<class Type>
void Foam::stlSurfaceWriter<Type>::write void Foam::stlSurfaceWriter<Type>::write
( (

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(stlSurfaceWriter, nil);
makeSurfaceWriters(stlSurfaceWriter); makeSurfaceWriters(stlSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -31,15 +31,31 @@ License
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
template<class Type> template<class Type>
autoPtr<surfaceWriter<Type> > surfaceWriter<Type>::New(const word& writeType) Foam::autoPtr< Foam::surfaceWriter<Type> >
Foam::surfaceWriter<Type>::New(const word& writeType)
{ {
typename wordConstructorTable::iterator cstrIter = typename wordConstructorTable::iterator cstrIter =
wordConstructorTablePtr_ wordConstructorTablePtr_->find(writeType);
->find(writeType);
if (cstrIter == wordConstructorTablePtr_->end())
{
// unknown, check if it can handle Foam::nil specialization
// (ie, geometry write)
// generally supported, but not for this data type
if
(
Foam::surfaceWriter<Foam::nil>::wordConstructorTablePtr_->found
(
writeType
)
)
{
// use 'null' file instead
cstrIter = wordConstructorTablePtr_->find("null");
}
if (cstrIter == wordConstructorTablePtr_->end()) if (cstrIter == wordConstructorTablePtr_->end())
{ {
@ -52,27 +68,24 @@ autoPtr<surfaceWriter<Type> > surfaceWriter<Type>::New(const word& writeType)
<< wordConstructorTablePtr_->toc() << wordConstructorTablePtr_->toc()
<< exit(FatalError); << exit(FatalError);
} }
}
return autoPtr<surfaceWriter<Type> >(cstrIter()()); return autoPtr< surfaceWriter<Type> >(cstrIter()());
} }
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class Type> template<class Type>
surfaceWriter<Type>::surfaceWriter() Foam::surfaceWriter<Type>::surfaceWriter()
{} {}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class Type> template<class Type>
surfaceWriter<Type>::~surfaceWriter() Foam::surfaceWriter<Type>::~surfaceWriter()
{} {}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* // // ************************************************************************* //

View File

@ -41,12 +41,17 @@ SourceFiles
#include "autoPtr.H" #include "autoPtr.H"
#include "pointField.H" #include "pointField.H"
#include "faceList.H" #include "faceList.H"
#include "nil.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
// Forward declaration of friend functions and operators
template<class Type> class surfaceWriter;
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class surfaceWriter Declaration Class surfaceWriter Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -54,6 +59,8 @@ namespace Foam
template<class Type> template<class Type>
class surfaceWriter class surfaceWriter
{ {
//- friendship between writer data types
template<class Type2> friend class surfaceWriter;
public: public:

View File

@ -33,8 +33,10 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
#define defineSurfaceWriterType(dataType) \ #define defineSurfaceWriterType(dataType) \
defineNamedTemplateTypeNameAndDebug(surfaceWriter<dataType >, 0); \ defineNamedTemplateTypeNameAndDebug(surfaceWriter< dataType >, 0); \
defineTemplatedRunTimeSelectionTable(surfaceWriter, word, dataType); defineTemplatedRunTimeSelectionTable(surfaceWriter, word, dataType)
defineSurfaceWriterType(nil);
defineSurfaceWriterType(scalar); defineSurfaceWriterType(scalar);
defineSurfaceWriterType(vector); defineSurfaceWriterType(vector);

View File

@ -39,7 +39,7 @@ Description
// Only used internally // Only used internally
#define makeTypeSurfaceWritersTypeName(typeWriter, dataType) \ #define makeTypeSurfaceWritersTypeName(typeWriter, dataType) \
\ \
defineNamedTemplateTypeNameAndDebug(typeWriter<dataType >, 0); defineNamedTemplateTypeNameAndDebug(typeWriter< dataType >, 0)
// Sometimes used externally // Sometimes used externally
#define makeSurfaceWritersTypeName(typeWriter) \ #define makeSurfaceWritersTypeName(typeWriter) \
@ -48,16 +48,16 @@ Description
makeTypeSurfaceWritersTypeName(typeWriter, vector); \ makeTypeSurfaceWritersTypeName(typeWriter, vector); \
makeTypeSurfaceWritersTypeName(typeWriter, sphericalTensor); \ makeTypeSurfaceWritersTypeName(typeWriter, sphericalTensor); \
makeTypeSurfaceWritersTypeName(typeWriter, symmTensor); \ makeTypeSurfaceWritersTypeName(typeWriter, symmTensor); \
makeTypeSurfaceWritersTypeName(typeWriter, tensor); makeTypeSurfaceWritersTypeName(typeWriter, tensor)
// Define type info for single dataType template instantiation (eg, vector) // Define type info for single dataType template instantiation (eg, vector)
#define makeSurfaceWriterType(typeWriter, dataType) \ #define makeSurfaceWriterType(typeWriter, dataType) \
\ \
defineNamedTemplateTypeNameAndDebug(typeWriter<dataType >, 0); \ defineNamedTemplateTypeNameAndDebug(typeWriter< dataType >, 0); \
addTemplatedToRunTimeSelectionTable \ addTemplatedToRunTimeSelectionTable \
( \ ( \
surfaceWriter, typeWriter, dataType, word \ surfaceWriter, typeWriter, dataType, word \
); )
// Define type info for scalar, vector etc. instantiations // Define type info for scalar, vector etc. instantiations
@ -67,7 +67,7 @@ Description
makeSurfaceWriterType(typeWriter, vector); \ makeSurfaceWriterType(typeWriter, vector); \
makeSurfaceWriterType(typeWriter, sphericalTensor); \ makeSurfaceWriterType(typeWriter, sphericalTensor); \
makeSurfaceWriterType(typeWriter, symmTensor); \ makeSurfaceWriterType(typeWriter, symmTensor); \
makeSurfaceWriterType(typeWriter, tensor); makeSurfaceWriterType(typeWriter, tensor)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -25,6 +25,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "vtkSurfaceWriter.H" #include "vtkSurfaceWriter.H"
#include "fileName.H" #include "fileName.H"
#include "OFstream.H" #include "OFstream.H"
#include "faceList.H" #include "faceList.H"
@ -35,13 +36,12 @@ License
template<class Type> template<class Type>
void Foam::vtkSurfaceWriter<Type>::writeGeometry void Foam::vtkSurfaceWriter<Type>::writeGeometry
( (
Ostream& os,
const pointField& points, const pointField& points,
const faceList& faces, const faceList& faces
Ostream& os )
) const
{ {
// Write vertex coordinates // header
os os
<< "# vtk DataFile Version 2.0" << nl << "# vtk DataFile Version 2.0" << nl
<< "sampleSurface" << nl << "sampleSurface" << nl
@ -57,7 +57,7 @@ void Foam::vtkSurfaceWriter<Type>::writeGeometry
<< float(pt.y()) << ' ' << float(pt.y()) << ' '
<< float(pt.z()) << nl; << float(pt.z()) << nl;
} }
os << endl; os << nl;
// Write faces // Write faces
@ -84,31 +84,18 @@ void Foam::vtkSurfaceWriter<Type>::writeGeometry
} }
// Write scalarField in vtk format namespace Foam
template<class Type>
void Foam::vtkSurfaceWriter<Type>::writeData
(
const fileName& fieldName,
const pointField& points,
const scalarField& values,
Ostream& os
) const
{ {
// Write data
if (values.size() == points.size())
{
os << "POINT_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
else
{
os << "CELL_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
os << fieldName << " 1 " << values.size() << " float" << nl; // Write scalarField in vtk format
template<>
void Foam::vtkSurfaceWriter<Foam::scalar>::writeData
(
Ostream& os,
const Field<Foam::scalar>& values
)
{
os << "1 " << values.size() << " float" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
@ -123,117 +110,91 @@ void Foam::vtkSurfaceWriter<Type>::writeData
os << nl; os << nl;
} }
} }
os << float(values[elemI]);
const scalar& v = values[elemI];
os << float(v);
} }
os << nl; os << nl;
}
// Write vectorField in vtk format
template<class Type>
void Foam::vtkSurfaceWriter<Type>::writeData
(
const fileName& fieldName,
const pointField& points,
const vectorField& values,
Ostream& os
) const
{
// Write data
if (values.size() == points.size())
{
os << "POINT_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
else
{
os << "CELL_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
} }
os << fieldName << " 3 " << values.size() << " float" << nl; // Write vectorField in vtk format
template<>
void Foam::vtkSurfaceWriter<Foam::vector>::writeData
(
Ostream& os,
const Field<Foam::vector>& values
)
{
os << "3 " << values.size() << " float" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
const vector& v = values[elemI]; const vector& v = values[elemI];
os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2])
os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2]) << nl; << nl;
}
} }
}
// Write sphericalTensorField in vtk format // Write sphericalTensorField in vtk format
template<class Type> template<>
void Foam::vtkSurfaceWriter<Type>::writeData void Foam::vtkSurfaceWriter<Foam::sphericalTensor>::writeData
( (
const fileName& fieldName, Ostream& os,
const pointField& points, const Field<sphericalTensor>& values
const sphericalTensorField& values, )
Ostream& os
) const
{
// Write data
if (values.size() == points.size())
{ {
os << "POINT_DATA " << values.size() os << "1 " << values.size() << " float" << nl;
<< nl
<< "FIELD attributes 1" << nl;
}
else
{
os << "CELL_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
os << fieldName << " 1 " << values.size() << " float" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
const sphericalTensor& v = values[elemI]; const sphericalTensor& v = values[elemI];
os << float(v[0]) << nl;
os << float(v[0]) }
<< nl;
} }
}
// Write symmTensorField in vtk format // Write symmTensorField in vtk format
template<class Type> template<>
void Foam::vtkSurfaceWriter<Type>::writeData void Foam::vtkSurfaceWriter<Foam::symmTensor>::writeData
( (
const fileName& fieldName, Ostream& os,
const pointField& points, const Field<symmTensor>& values
const symmTensorField& values, )
Ostream& os
) const
{
// Write data
if (values.size() == points.size())
{ {
os << "POINT_DATA " << values.size() os << "6 " << values.size() << " float" << nl;
<< nl
<< "FIELD attributes 1" << nl;
}
else
{
os << "CELL_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
os << fieldName << " 6 " << values.size() << " float" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
const symmTensor& v = values[elemI]; const symmTensor& v = values[elemI];
os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2]) os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2])
<< float(v[3]) << ' ' << float(v[4]) << ' ' << float(v[5]) << float(v[3]) << ' ' << float(v[4]) << ' ' << float(v[5])
<< nl; << nl;
} }
}
// Write tensorField in vtk format
template<>
void Foam::vtkSurfaceWriter<Foam::tensor>::writeData
(
Ostream& os,
const Field<tensor>& values
)
{
os << "9 " << values.size() << " float" << nl;
forAll(values, elemI)
{
const tensor& v = values[elemI];
os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2])
<< float(v[3]) << ' ' << float(v[4]) << ' ' << float(v[5])
<< float(v[6]) << ' ' << float(v[7]) << ' ' << float(v[8])
<< nl;
}
}
} }
@ -241,36 +202,15 @@ void Foam::vtkSurfaceWriter<Type>::writeData
template<class Type> template<class Type>
void Foam::vtkSurfaceWriter<Type>::writeData void Foam::vtkSurfaceWriter<Type>::writeData
( (
const fileName& fieldName, Ostream& os,
const pointField& points, const Field<Type>& values
const tensorField& values, )
Ostream& os
) const
{ {
// Write data os << "1 " << values.size() << " float" << nl;
if (values.size() == points.size())
{
os << "POINT_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
else
{
os << "CELL_DATA " << values.size()
<< nl
<< "FIELD attributes 1" << nl;
}
os << fieldName << " 9 " << values.size() << " float" << nl;
forAll(values, elemI) forAll(values, elemI)
{ {
const tensor& v = values[elemI]; os << float(0) << nl;
os << float(v[0]) << ' ' << float(v[1]) << ' ' << float(v[2])
<< float(v[3]) << ' ' << float(v[4]) << ' ' << float(v[5])
<< float(v[6]) << ' ' << float(v[7]) << ' ' << float(v[8])
<< nl;
} }
} }
@ -294,6 +234,42 @@ Foam::vtkSurfaceWriter<Type>::~vtkSurfaceWriter()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
namespace Foam
{
template<>
void Foam::vtkSurfaceWriter<Foam::nil>::write
(
const fileName& samplePath,
const fileName& timeDir,
const fileName& surfaceName,
const pointField& points,
const faceList& faces,
const fileName& fieldName,
const Field<Foam::nil>& values,
const bool verbose
) const
{
fileName surfaceDir(samplePath/timeDir);
if (!isDir(surfaceDir))
{
mkDir(surfaceDir);
}
fileName fName(surfaceDir/surfaceName + ".vtk");
if (verbose)
{
Info<< "Writing nil to " << fName << endl;
}
OFstream os(fName);
writeGeometry(os, points, faces);
}
}
template<class Type> template<class Type>
void Foam::vtkSurfaceWriter<Type>::write void Foam::vtkSurfaceWriter<Type>::write
( (
@ -322,9 +298,25 @@ void Foam::vtkSurfaceWriter<Type>::write
} }
OFstream os(fName); OFstream os(fName);
writeGeometry(os, points, faces);
// start writing data
if (values.size() == points.size())
{
os << "POINT_DATA ";
}
else
{
os << "CELL_DATA ";
}
os << values.size() << nl
<< "FIELD attributes 1" << nl
<< fieldName << " ";
// Write data
writeData(os, values);
writeGeometry(points, faces, os);
writeData(fieldName, points, values, os);
} }

View File

@ -53,52 +53,9 @@ class vtkSurfaceWriter
{ {
// Private Member Functions // Private Member Functions
void writeGeometry static void writeGeometry(Ostream&, const pointField&, const faceList&);
(
const pointField& points,
const faceList& faces,
Ostream& os
) const;
void writeData static void writeData(Ostream&, const Field<Type>& values);
(
const fileName& fieldName,
const pointField& points,
const scalarField& values,
Ostream& os
) const;
void writeData
(
const fileName& fieldName,
const pointField& points,
const vectorField& values,
Ostream& os
) const;
void writeData
(
const fileName& fieldName,
const pointField& points,
const sphericalTensorField& values,
Ostream& os
) const;
void writeData
(
const fileName& fieldName,
const pointField& points,
const symmTensorField& values,
Ostream& os
) const;
void writeData
(
const fileName& fieldName,
const pointField& points,
const tensorField& values,
Ostream& os
) const;
public: public:

View File

@ -35,6 +35,7 @@ namespace Foam
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
makeSurfaceWriterType(vtkSurfaceWriter, nil);
makeSurfaceWriters(vtkSurfaceWriter); makeSurfaceWriters(vtkSurfaceWriter);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -25,13 +25,13 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "MeshedSurfaceProxy.H" #include "MeshedSurfaceProxy.H"
#include "MeshedSurface.H"
#include "Time.H" #include "Time.H"
#include "surfMesh.H" #include "surfMesh.H"
#include "OFstream.H" #include "OFstream.H"
#include "ListOps.H" #include "ListOps.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
template<class Face> template<class Face>
Foam::wordHashSet Foam::MeshedSurfaceProxy<Face>::writeTypes() Foam::wordHashSet Foam::MeshedSurfaceProxy<Face>::writeTypes()
@ -40,8 +40,6 @@ Foam::wordHashSet Foam::MeshedSurfaceProxy<Face>::writeTypes()
} }
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
template<class Face> template<class Face>
bool Foam::MeshedSurfaceProxy<Face>::canWriteType bool Foam::MeshedSurfaceProxy<Face>::canWriteType
( (
@ -135,13 +133,19 @@ void Foam::MeshedSurfaceProxy<Face>::write
) )
); );
OFstream os(objectDir/io.name()); OFstream os
(
objectDir/io.name(),
t.writeFormat(),
IOstream::currentVersion,
t.writeCompression()
);
io.writeHeader(os); io.writeHeader(os);
os << this->points(); os << this->points();
os << "\n\n" io.writeEndDivider(os);
"// ************************************************************************* //\n";
} }
@ -161,7 +165,13 @@ void Foam::MeshedSurfaceProxy<Face>::write
) )
); );
OFstream os(objectDir/io.name()); OFstream os
(
objectDir/io.name(),
t.writeFormat(),
IOstream::currentVersion,
t.writeCompression()
);
io.writeHeader(os); io.writeHeader(os);
if (this->useFaceMap()) if (this->useFaceMap())
@ -174,8 +184,7 @@ void Foam::MeshedSurfaceProxy<Face>::write
os << this->faces(); os << this->faces();
} }
os << "\n\n" io.writeEndDivider(os);
"// ************************************************************************* //\n";
} }
@ -195,14 +204,13 @@ void Foam::MeshedSurfaceProxy<Face>::write
) )
); );
// write as ascii
OFstream os(objectDir/io.name()); OFstream os(objectDir/io.name());
io.writeHeader(os); io.writeHeader(os);
os << this->surfZones(); os << this->surfZones();
os << "\n\n" io.writeEndDivider(os);
"// ************************************************************************* //"
<< endl;
} }
} }

View File

@ -83,10 +83,12 @@ public:
// Static // Static
//- Can we write this file format? //- The file format types that can be written via MeshedSurfaceProxy
static wordHashSet writeTypes();
//- Can this file format type be written via MeshedSurfaceProxy?
static bool canWriteType(const word& ext, const bool verbose=false); static bool canWriteType(const word& ext, const bool verbose=false);
static wordHashSet writeTypes();
// Constructors // Constructors
@ -95,7 +97,7 @@ public:
( (
const pointField&, const pointField&,
const List<Face>&, const List<Face>&,
const List<surfZone>&, const List<surfZone>& = List<surfZone>(),
const List<label>& faceMap = List<label>() const List<label>& faceMap = List<label>()
); );