void Foam::foamFileSurfaceWriter<Type>::write ( const fileName& outputDir, const fileName& surfaceName, const pointField& points, const faceList& faces, const bool verbose ) const { fileName surfaceDir(outputDir/surfaceName); if (!isDir(surfaceDir)) { mkDir(surfaceDir); } if (verbose) { Info<< "Writing geometry to " << surfaceDir << endl; } // Points OFstream(surfaceDir/"points")() << points; // Faces OFstream(surfaceDir/"faces")() << faces; }
void Foam::stl<Type>::write ( const fileName& samplePath, const fileName& timeDir, const fileName& surfaceName, const pointField& points, const faceList& faces, const fileName& fieldName, const Field<Type>& values, const bool verbose ) const { fileName surfaceDir(samplePath/timeDir); if (!exists(surfaceDir)) { mkDir(surfaceDir); } fileName planeFName(surfaceDir/fieldName + '_' + surfaceName + ".stl"); if (verbose) { Info<< "Writing field " << fieldName << " to " << planeFName << 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 string::validate<word>(fieldName), // fieldName 0 // index ) ), points ).write(planeFName); }
void Foam::foamFileSurfaceWriter<Type>::write ( const fileName& outputDir, const fileName& surfaceName, const pointField& points, const faceList& faces, const fileName& fieldName, const Field<Type>& values, const bool verbose ) const { fileName surfaceDir(outputDir/surfaceName); if (!isDir(surfaceDir)) { mkDir(surfaceDir); } if (verbose) { Info<< "Writing field " << fieldName << " to " << surfaceDir << endl; } // geometry should already have been written // Values to separate directory (e.g. "scalarField/p") fileName foamName(pTraits<Type>::typeName); fileName valuesDir(surfaceDir / (foamName + Field<Type>::typeName)); if (!isDir(valuesDir)) { mkDir(valuesDir); } // values OFstream(valuesDir/fieldName)() << values; }
void Foam::foamSurfaceWriter::write ( const fileName& outputDir, const fileName& surfaceName, const pointField& points, const faceList& faces, const bool verbose ) const { fileName surfaceDir(outputDir/surfaceName); if (!isDir(surfaceDir)) { mkDir(surfaceDir); } if (verbose) { Info<< "Writing geometry to " << surfaceDir << endl; } // Points OFstream(surfaceDir/"points")() << points; // Faces OFstream(surfaceDir/"faces")() << faces; // Face centers. Not really necessary but very handy when reusing as inputs // for e.g. timeVaryingMapped bc. pointField faceCentres(faces.size(),point::zero); forAll(faces, facei) { faceCentres[facei] = faces[facei].centre(points); }
void Foam::dx<Type>::write ( const fileName& samplePath, const fileName& timeDir, const fileName& surfaceName, const pointField& points, const faceList& faces, const fileName& fieldName, const Field<Type>& values, const bool verbose ) const { fileName surfaceDir(samplePath/timeDir); if (!exists(surfaceDir)) { mkDir(surfaceDir); } fileName planeFName(surfaceDir/fieldName + '_' + surfaceName + ".dx"); if (verbose) { Info<< "Writing field " << fieldName << " to " << planeFName << endl; } OFstream dxFile(planeFName); writeDXGeometry(points, faces, dxFile); writeDXData(points, values, dxFile); writeDXTrailer(dxFile); dxFile << "end" << nl; }