From 90a8332ffbb41b22e6ea9e1e6e392d266403d854 Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 5 Sep 2013 16:25:03 +0100 Subject: [PATCH] ENH: foamToEnsight: add cellZone support --- .../foamToEnsight/ensightField.C | 32 ++++++-- .../foamToEnsight/ensightField.H | 15 +++- .../foamToEnsight/ensightMesh.C | 81 +++++-------------- .../foamToEnsight/ensightMesh.H | 15 +--- .../foamToEnsight/foamToEnsight.C | 59 ++++++++++++-- 5 files changed, 118 insertions(+), 84 deletions(-) diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C index 8284a0ddf0..47cd58d286 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C @@ -39,6 +39,31 @@ using namespace Foam; // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // +template +tmp > +volField +( + const fvMeshSubset& meshSubsetter, + const GeometricField& vf +) +{ + if (meshSubsetter.hasSubMesh()) + { + tmp > tfld + ( + meshSubsetter.interpolate(vf) + ); + tfld().checkOut(); + tfld().rename(vf.name()); + return tfld; + } + else + { + return vf; + } +} + + template Field map ( @@ -680,7 +705,7 @@ void ensightPointField template void ensightField ( - const IOobject& fieldObject, + const GeometricField& vf, const ensightMesh& eMesh, const fileName& postProcPath, const word& prepend, @@ -690,14 +715,11 @@ void ensightField Ostream& ensightCaseFile ) { - // Read field - GeometricField vf(fieldObject, eMesh.mesh()); - if (nodeValues) { tmp > pfld ( - volPointInterpolation::New(eMesh.mesh()).interpolate(vf) + volPointInterpolation::New(vf.mesh()).interpolate(vf) ); pfld().rename(vf.name()); diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H index d1f807cd97..b08bece857 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,13 +35,24 @@ SourceFiles #define ensightField_H #include "ensightMesh.H" +#include "fvMeshSubset.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +//- Wrapper to get hold of the field or the subsetted field +template +Foam::tmp > +volField +( + const Foam::fvMeshSubset&, + const Foam::GeometricField& vf +); + + template void ensightField ( - const Foam::IOobject& fieldObject, + const Foam::GeometricField& vf, const Foam::ensightMesh& eMesh, const Foam::fileName& postProcPath, const Foam::word& prepend, diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C index c90e2319e8..6fab5a8b3b 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C @@ -57,14 +57,6 @@ void Foam::ensightMesh::correct() nFaceZonePrims_ = 0; boundaryFaceToBeIncluded_.clear(); - const cellShapeList& cellShapes = mesh_.cellShapes(); - - const cellModel& tet = *(cellModeller::lookup("tet")); - const cellModel& pyr = *(cellModeller::lookup("pyr")); - const cellModel& prism = *(cellModeller::lookup("prism")); - const cellModel& wedge = *(cellModeller::lookup("wedge")); - const cellModel& hex = *(cellModeller::lookup("hex")); - if (!noPatches_) { // Patches are output. Check that they're synced. @@ -111,6 +103,16 @@ void Foam::ensightMesh::correct() } else { + const cellShapeList& cellShapes = mesh_.cellShapes(); + + const cellModel& tet = *(cellModeller::lookup("tet")); + const cellModel& pyr = *(cellModeller::lookup("pyr")); + const cellModel& prism = *(cellModeller::lookup("prism")); + const cellModel& wedge = *(cellModeller::lookup("wedge")); + const cellModel& hex = *(cellModeller::lookup("hex")); + + + // Count the shapes labelList& tets = meshCellSets_.tets; labelList& pyrs = meshCellSets_.pyrs; @@ -926,8 +928,10 @@ void Foam::ensightMesh::writeAllNSided } -void Foam::ensightMesh::writeAllInternalPoints +void Foam::ensightMesh::writeAllPoints ( + const label ensightPartI, + const word& ensightPartName, const pointField& uniquePoints, const label nPoints, ensightStream& ensightGeometryFile @@ -937,49 +941,8 @@ void Foam::ensightMesh::writeAllInternalPoints if (Pstream::master()) { - ensightGeometryFile.writePartHeader(1); - ensightGeometryFile.write("internalMesh"); - ensightGeometryFile.write("coordinates"); - ensightGeometryFile.write(nPoints); - - for (direction d=0; d ( - fieldObject, + volField(meshSubsetter, vf), eMesh, ensightDir, prepend, @@ -420,9 +463,10 @@ int main(int argc, char *argv[]) } else if (volFieldTypes[i] == volVectorField::typeName) { + volVectorField vf(fieldObject, mesh); ensightField ( - fieldObject, + volField(meshSubsetter, vf), eMesh, ensightDir, prepend, @@ -434,9 +478,10 @@ int main(int argc, char *argv[]) } else if (volFieldTypes[i] == volSphericalTensorField::typeName) { + volSphericalTensorField vf(fieldObject, mesh); ensightField ( - fieldObject, + volField(meshSubsetter, vf), eMesh, ensightDir, prepend, @@ -448,9 +493,10 @@ int main(int argc, char *argv[]) } else if (volFieldTypes[i] == volSymmTensorField::typeName) { + volSymmTensorField vf(fieldObject, mesh); ensightField ( - fieldObject, + volField(meshSubsetter, vf), eMesh, ensightDir, prepend, @@ -462,9 +508,10 @@ int main(int argc, char *argv[]) } else if (volFieldTypes[i] == volTensorField::typeName) { + volTensorField vf(fieldObject, mesh); ensightField ( - fieldObject, + volField(meshSubsetter, vf), eMesh, ensightDir, prepend,