void Foam::ensightSetWriter<Type>::write ( const coordSet& points, const wordList& valueSetNames, const List<const Field<Type>*>& valueSets, Ostream& os ) const { const fileName base(os.name().lessExt()); const fileName meshFile(base + ".mesh"); // Write .case file os << "FORMAT" << nl << "type: ensight gold" << nl << nl << "GEOMETRY" << nl << "model: 1 " << meshFile.name().c_str() << nl << nl << "VARIABLE" << nl; forAll(valueSetNames, setI) { fileName dataFile(base + ".***." + valueSetNames[setI]); os.setf(ios_base::left); os << pTraits<Type>::typeName << " per node: 1 " << setw(15) << valueSetNames[setI] << " " << dataFile.name().c_str() << nl; }
void ensightField ( const GeometricField<Type, fvPatchField, volMesh>& vf, const ensightMesh& eMesh, const fileName& postProcPath, const word& prepend, const label timeIndex, const bool binary, Ostream& ensightCaseFile ) { Info<< "Converting field " << vf.name() << endl; word timeFile = prepend + itoa(timeIndex); const fvMesh& mesh = eMesh.mesh(); const Time& runTime = mesh.time(); const cellSets& meshCellSets = eMesh.meshCellSets(); const List<faceSets>& boundaryFaceSets = eMesh.boundaryFaceSets(); const wordList& allPatchNames = eMesh.allPatchNames(); const wordHashSet& patchNames = eMesh.patchNames(); const HashTable<ensightMesh::nFacePrimitives>& nPatchPrims = eMesh.nPatchPrims(); const List<faceSets>& faceZoneFaceSets = eMesh.faceZoneFaceSets(); const wordHashSet& faceZoneNames = eMesh.faceZoneNames(); const HashTable<ensightMesh::nFacePrimitives>& nFaceZonePrims = eMesh.nFaceZonePrims(); const labelList& tets = meshCellSets.tets; const labelList& pyrs = meshCellSets.pyrs; const labelList& prisms = meshCellSets.prisms; const labelList& wedges = meshCellSets.wedges; const labelList& hexes = meshCellSets.hexes; const labelList& polys = meshCellSets.polys; ensightStream* ensightFilePtr = NULL; if (Pstream::master()) { // set the filename of the ensight file fileName ensightFileName(timeFile + "." + vf.name()); if (binary) { ensightFilePtr = new ensightBinaryStream ( postProcPath/ensightFileName, runTime ); } else { ensightFilePtr = new ensightAsciiStream ( postProcPath/ensightFileName, runTime ); } } ensightStream& ensightFile = *ensightFilePtr; if (patchNames.empty()) { eMesh.barrier(); if (Pstream::master()) { if (timeIndex == 0) { ensightCaseFile.setf(ios_base::left); ensightCaseFile << pTraits<Type>::typeName << " per element: 1 " << setw(15) << vf.name() << (' ' + prepend + "***." + vf.name()).c_str() << nl; } ensightFile.write(pTraits<Type>::typeName); ensightFile.writePartHeader(1); } writeField ( "hexa8", map(vf, hexes, wedges), ensightFile ); writeField ( "penta6", Field<Type>(vf, prisms), ensightFile ); writeField ( "pyramid5", Field<Type>(vf, pyrs), ensightFile ); writeField ( "tetra4", Field<Type>(vf, tets), ensightFile ); writeField ( "nfaced", Field<Type>(vf, polys), ensightFile ); } label ensightPatchI = eMesh.patchPartOffset(); forAll(allPatchNames, patchi) { const word& patchName = allPatchNames[patchi]; eMesh.barrier(); if (patchNames.empty() || patchNames.found(patchName)) { if ( writePatchField ( vf.boundaryField()[patchi], patchi, ensightPatchI, boundaryFaceSets[patchi], nPatchPrims.find(patchName)(), ensightFile ) ) { ensightPatchI++; } } } // write faceZones, if requested if (faceZoneNames.size()) { // Interpolates cell values to faces - needed only when exporting // faceZones... GeometricField<Type, fvsPatchField, surfaceMesh> sf ( linearInterpolate(vf) ); forAllConstIter(wordHashSet, faceZoneNames, iter) { const word& faceZoneName = iter.key(); eMesh.barrier(); label zoneID = mesh.faceZones().findZoneID(faceZoneName); const faceZone& fz = mesh.faceZones()[zoneID]; // Prepare data to write label nIncluded = 0; forAll(fz, i) { if (eMesh.faceToBeIncluded(fz[i])) { ++nIncluded; } } Field<Type> values(nIncluded); // Loop on the faceZone and store the needed field values label j = 0; forAll(fz, i) { label faceI = fz[i]; if (mesh.isInternalFace(faceI)) { values[j] = sf[faceI]; ++j; } else { if (eMesh.faceToBeIncluded(faceI)) { label patchI = mesh.boundaryMesh().whichPatch(faceI); const polyPatch& pp = mesh.boundaryMesh()[patchI]; label patchFaceI = pp.whichFace(faceI); Type value = sf.boundaryField()[patchI][patchFaceI]; values[j] = value; ++j; } } } if ( writePatchField ( values, zoneID, ensightPatchI, faceZoneFaceSets[zoneID], nFaceZonePrims.find(faceZoneName)(), ensightFile ) ) { ensightPatchI++; } }
void writePatchField ( const word& fieldName, const Field<Type>& pf, const word& patchName, const ensightMesh& eMesh, const fileName& postProcPath, const word& prepend, const label timeIndex, const bool binary, Ostream& ensightCaseFile ) { const Time& runTime = eMesh.mesh().time(); const List<faceSets>& boundaryFaceSets = eMesh.boundaryFaceSets(); const wordList& allPatchNames = eMesh.allPatchNames(); const HashTable<ensightMesh::nFacePrimitives>& nPatchPrims = eMesh.nPatchPrims(); label ensightPatchI = eMesh.patchPartOffset(); label patchi = -1; forAll(allPatchNames, i) { if (allPatchNames[i] == patchName) { patchi = i; break; } ensightPatchI++; } word pfName = patchName + '.' + fieldName; word timeFile = prepend + itoa(timeIndex); ensightStream* ensightFilePtr = NULL; if (Pstream::master()) { if (timeIndex == 0) { ensightCaseFile.setf(ios_base::left); ensightCaseFile << pTraits<Type>::typeName << " per element: 1 " << setw(15) << pfName << (' ' + prepend + "***." + pfName).c_str() << nl; } // set the filename of the ensight file fileName ensightFileName(timeFile + "." + pfName); if (binary) { ensightFilePtr = new ensightBinaryStream ( postProcPath/ensightFileName, runTime ); } else { ensightFilePtr = new ensightAsciiStream ( postProcPath/ensightFileName, runTime ); } } ensightStream& ensightFile = *ensightFilePtr; if (Pstream::master()) { ensightFile.write(pTraits<Type>::typeName); } if (patchi >= 0) { writePatchField ( pf, patchi, ensightPatchI, boundaryFaceSets[patchi], nPatchPrims.find(patchName)(), ensightFile ); } else { faceSets nullFaceSets; writePatchField ( Field<Type>(), -1, ensightPatchI, nullFaceSets, nPatchPrims.find(patchName)(), ensightFile ); } if (Pstream::master()) { delete ensightFilePtr; } }
void Foam::functionObjects::writeFile::initStream(Ostream& os) const { os.setf(ios_base::scientific, ios_base::floatfield); os.width(charWidth()); }
void Foam::functionObjectFile::initStream(Ostream& os) const { os.setf(ios_base::scientific, ios_base::floatfield); // os.precision(IOstream::defaultPrecision()); os.width(charWidth()); }