From 05353da5f4dff70cc243f95a13ecc7f84bcc9a48 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 23 Nov 2018 14:04:07 +0100 Subject: [PATCH] BUG: errors found in feature-vtm merge !213 - vtkWrite with moving mesh was not updated the subsets properly, which caused it to crash. - foamToVTK -overwrite ignored for single region cases, was working for multi-region cases - minor documentation changes --- .../dataConversion/foamToVTK/foamToVTK.C | 13 +++++++++---- src/functionObjects/utilities/vtkWrite/vtkWrite.H | 4 ++-- .../utilities/vtkWrite/vtkWriteUpdate.C | 9 ++++++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C index a587530b1b..269099f194 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C @@ -607,19 +607,24 @@ int main(int argc, char *argv[]) if (Pstream::master()) { + // Overwrite or create the VTK/regionName directories. + // For the default region, this is simply "VTK/" + + fileName regionDir; for (const word& regionName : regionNames) { - // VTK/regionName directory in the case - - fileName regionDir; if (regionName != polyMesh::defaultRegion) { regionDir = outputDir / regionName; } + else + { + regionDir = outputDir; + } if (args.found("overwrite") && isDir(regionDir)) { - Info<< "Deleting old VTK files in " + Info<< "Removing old directory " << regionDir.relative(runTime.globalPath()) << nl << endl; rmDir(regionDir); diff --git a/src/functionObjects/utilities/vtkWrite/vtkWrite.H b/src/functionObjects/utilities/vtkWrite/vtkWrite.H index a31a9b85dc..ff9990a0b2 100644 --- a/src/functionObjects/utilities/vtkWrite/vtkWrite.H +++ b/src/functionObjects/utilities/vtkWrite/vtkWrite.H @@ -56,7 +56,7 @@ Description dome { action add; - shape sphere; + source sphere; origin (-0.1 -0.01 -0.1); radius 0.25; } @@ -98,7 +98,7 @@ Description directory | The output directory name | no | postProcessing/NAME width | Padding width for file name | no | 8 decompose | Decompose polyhedral cells | no | false - writeIds | Write cell/patch ids as field | no | true + writeIds | Write cell/patch ids as field | no | false \endtable \heading Output Selection diff --git a/src/functionObjects/utilities/vtkWrite/vtkWriteUpdate.C b/src/functionObjects/utilities/vtkWrite/vtkWriteUpdate.C index aa11f38dd7..9df872a05e 100644 --- a/src/functionObjects/utilities/vtkWrite/vtkWriteUpdate.C +++ b/src/functionObjects/utilities/vtkWrite/vtkWriteUpdate.C @@ -157,8 +157,8 @@ bool Foam::functionObjects::vtkWrite::update() if ( meshState_ == polyMesh::UNCHANGED - && !meshSubsets_.empty() - && !vtuMappings_.empty() + && (meshes_.size() == meshSubsets_.size()) + && (meshes_.size() == vtuMappings_.size()) ) { return false; @@ -174,7 +174,7 @@ bool Foam::functionObjects::vtkWrite::update() if (meshSubsets_.set(regioni)) { - meshSubsets_.clear(); + meshSubsets_[regioni].clear(); } else { @@ -200,9 +200,12 @@ bool Foam::functionObjects::vtkWrite::update() ++regioni; } + regioni = 0; for (auto& subsetter : meshSubsets_) { updateSubset(subsetter); + vtuMappings_[regioni].reset(subsetter.mesh()); + ++regioni; } meshState_ = polyMesh::UNCHANGED;