yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #05508
[Branch ~yade-dev/yade/trunk] Rev 2394: 1. Disable (experimental and malfunctioning) multiblock files with vtk<5.2 (did not exist)
------------------------------------------------------------
revno: 2394
committer: Václav Šmilauer <eudoxos@xxxxxxxx>
branch nick: trunk
timestamp: Sun 2010-08-15 06:15:35 +0200
message:
1. Disable (experimental and malfunctioning) multiblock files with vtk<5.2 (did not exist)
modified:
pkg/dem/Engine/GlobalEngine/VTKRecorder.cpp
pkg/dem/Engine/GlobalEngine/VTKRecorder.hpp
--
lp:yade
https://code.launchpad.net/~yade-dev/yade/trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription
=== modified file 'pkg/dem/Engine/GlobalEngine/VTKRecorder.cpp'
--- pkg/dem/Engine/GlobalEngine/VTKRecorder.cpp 2010-07-24 18:10:24 +0000
+++ pkg/dem/Engine/GlobalEngine/VTKRecorder.cpp 2010-08-15 04:15:35 +0000
@@ -13,10 +13,12 @@
#include<vtkXMLUnstructuredGridWriter.h>
#include<vtkXMLPolyDataWriter.h>
#include<vtkZLibDataCompressor.h>
- #include<vtkXMLMultiBlockDataWriter.h>
- #include<vtkMultiBlockDataSet.h>
#include<vtkTriangle.h>
#include<vtkLine.h>
+ #ifdef YADE_VTK_MULTIBLOCK
+ #include<vtkXMLMultiBlockDataWriter.h>
+ #include<vtkMultiBlockDataSet.h>
+ #endif
#pragma GCC diagnostic warning "-Wdeprecated"
#include<yade/core/Scene.hpp>
@@ -334,7 +336,10 @@
if (recActive[REC_MATERIALID]) spheresUg->GetPointData()->AddArray(spheresMaterialId);
- if(!multiblock){
+ #ifdef YADE_VTK_MULTIBLOCK
+ if(!multiblock)
+ #endif
+ {
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
if(compress) writer->SetCompressor(compressor);
string fn=fileName+"spheres."+lexical_cast<string>(scene->currentIteration)+".vtu";
@@ -354,7 +359,10 @@
}
if (recActive[REC_MATERIALID]) facetsUg->GetCellData()->AddArray(facetsMaterialId);
if (recActive[REC_MASK]) facetsUg->GetCellData()->AddArray(facetsMask);
- if(!multiblock){
+ #ifdef YADE_VTK_MULTIBLOCK
+ if(!multiblock)
+ #endif
+ {
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
if(compress) writer->SetCompressor(compressor);
string fn=fileName+"facets."+lexical_cast<string>(scene->currentIteration)+".vtu";
@@ -369,7 +377,10 @@
intrPd->SetLines(intrCells);
intrPd->GetCellData()->AddArray(intrForceN);
intrPd->GetCellData()->AddArray(intrAbsForceT);
- if(!multiblock){
+ #ifdef YADE_VTK_MULTIBLOCK
+ if(!multiblock)
+ #endif
+ {
vtkSmartPointer<vtkXMLPolyDataWriter> writer = vtkSmartPointer<vtkXMLPolyDataWriter>::New();
if(compress) writer->SetCompressor(compressor);
string fn=fileName+"intrs."+lexical_cast<string>(scene->currentIteration)+".vtp";
@@ -378,17 +389,18 @@
writer->Write();
}
}
-
- if(multiblock){
- vtkSmartPointer<vtkMultiBlockDataSet> multiblockDataset = vtkSmartPointer<vtkMultiBlockDataSet>::New();
- int i=0;
- if(recActive[REC_SPHERES]) multiblockDataset->SetBlock(i++,spheresUg);
- if(recActive[REC_FACETS]) multiblockDataset->SetBlock(i++,facetsUg);
- if(recActive[REC_INTR]) multiblockDataset->SetBlock(i++,intrPd);
- vtkSmartPointer<vtkXMLMultiBlockDataWriter> writer = vtkSmartPointer<vtkXMLMultiBlockDataWriter>::New();
- string fn=fileName+lexical_cast<string>(scene->currentIteration)+".vtm";
- writer->SetFileName(fn.c_str());
- writer->SetInput(multiblockDataset);
- writer->Write();
- }
+ #ifdef YADE_VTK_MULTIBLOCK
+ if(multiblock){
+ vtkSmartPointer<vtkMultiBlockDataSet> multiblockDataset = vtkSmartPointer<vtkMultiBlockDataSet>::New();
+ int i=0;
+ if(recActive[REC_SPHERES]) multiblockDataset->SetBlock(i++,spheresUg);
+ if(recActive[REC_FACETS]) multiblockDataset->SetBlock(i++,facetsUg);
+ if(recActive[REC_INTR]) multiblockDataset->SetBlock(i++,intrPd);
+ vtkSmartPointer<vtkXMLMultiBlockDataWriter> writer = vtkSmartPointer<vtkXMLMultiBlockDataWriter>::New();
+ string fn=fileName+lexical_cast<string>(scene->currentIteration)+".vtm";
+ writer->SetFileName(fn.c_str());
+ writer->SetInput(multiblockDataset);
+ writer->Write();
+ }
+ #endif
}
=== modified file 'pkg/dem/Engine/GlobalEngine/VTKRecorder.hpp'
--- pkg/dem/Engine/GlobalEngine/VTKRecorder.hpp 2010-07-21 13:53:58 +0000
+++ pkg/dem/Engine/GlobalEngine/VTKRecorder.hpp 2010-08-15 04:15:35 +0000
@@ -1,6 +1,11 @@
#pragma once
#include<yade/pkg-common/PeriodicEngines.hpp>
+// multiblock features don't seem to exist prioor to 5.2
+#if (VTK_MAJOR_VERSION==5 && VTK_MINOR_VERSION>=2) || (VTK_MAJOR_VERSION > 5)
+ #define YADE_VTK_MULTIBLOCK
+#endif
+
class VTKRecorder: public PeriodicEngine {
public:
@@ -10,7 +15,9 @@
((bool,compress,false,"Compress output XML files [experimental]."))
((bool,skipFacetIntr,true,"Skip interactions with facets, when saving interactions"))
((bool,skipNondynamic,false,"Skip non-dynamic spheres (but not facets)."))
- ((bool,multiblock,false,"Use multi-block (``.vtm``) files to store data, rather than separate ``.vtu`` files."))
+ #ifdef YADE_VTK_MULTIBLOCK
+ ((bool,multiblock,false,"Use multi-block (``.vtm``) files to store data, rather than separate ``.vtu`` files."))
+ #endif
((string,fileName,"","Base file name; it will be appended with {spheres,intrs,facets}-243100.vtu (unless *multiblock* is ``True``) depending on active recorders and step number (243100 in this case). It can contain slashes, but the directory must exist already."))
((vector<string>,recorders,vector<string>(1,string("all")),"List of active recorders (as strings). ``all`` (the default value) enables all base and generic recorders.\n\n.. admonition:: Base recorders\n\n\tBase recorders save the geometry (unstructured grids) on which other data is defined. They are implicitly activated by many of the other recorders. Each of them creates a new file (or a block, if :yref:`multiblock <VTKRecorder.multiblock>` is set).\n\n\t``spheres``\n\t\tSaves positions and radii (``radii``) of :yref:`spherical<Sphere>` particles.\n\t``facets``\n\t\tSave :yref:`facets<Facet>` positions (vertices).\n\t``intr``\n\t\tStore interactions as lines between nodes at respective particles positions. Additionaly stores magnitude of normal (``forceN``) and shear (``absForceT``) forces on interactions (the :yref:`interactionGeometry<Interaction.interactionGeometry> must be of type :yref:`NormShearPhys`). \n\n.. admonition:: Generic recorders\n\n\tGeneric recorders do not depend on specific model being used and save commonly useful data.\n\n\t``id``\n\t\tSaves id's (field ``id``) of spheres; active only if ``spheres`` is active.\n\t``clumpId``\n\t\tSaves id's of clumps to which each sphere belongs (field ``clumpId``); active only if ``spheres`` is active.\n\t``colors``\n\t\tSaves colors of :yref:`spheres<Sphere>` and of :yref:`facets<Facet>` (field ``color``); only active if ``spheres`` or ``facets`` are activated.\n\t``mask``\n\t\tSaves groupMasks of :yref:`spheres<Sphere>` and of :yref:`facets<Facet>` (field ``mask``); only active if ``spheres`` or ``facets`` are activated.\n\t``materialId``\n\t\tSaves materialID of :yref:`spheres<Sphere>` and of :yref:`facets<Facet>`; only active if ``spheres`` or ``facets`` are activated.\n\t``velocity``\n\t\tSaves linear and angular velocities of spherical particles as Vector3 and length(fields ``linVelVec``, ``linVelLen`` and ``angVelVec``, ``angVelLen`` respectively``); only effective with ``spheres``.\n\t``stress``\n\t\tSaves stresses of :yref:`spheres<Sphere>` and of :yref:`facets<Facet>` as Vector3 and length; only active if ``spheres`` or ``facets`` are activated.\n\n.. admonition:: Specific recorders\n\n\tThe following should only be activated in appropriate cases, otherwise crashes can occur due to violation of type presuppositions.\n\n\t``cpm``\n\t\tSaves data pertaining to the :yref:`concrete model<Law2_Dem3DofGeom_CpmPhys_Cpm>`: ``cpmDamage`` (normalized residual strength averaged on particle), ``cpmSigma`` (stress on particle, normal components), ``cpmTau`` (shear components of stress on particle), ``cpmSigmaM`` (mean stress around particle); ``intr`` is activated automatically by ``cpm``\n\t``rpm``\n\t\tSaves data pertaining to the :yref:`rock particle model<Law2_Dem3DofGeom_RockPMPhys_Rpm>`: ``rpmSpecNum`` shows different pieces of separated stones, only ids. ``rpmSpecMass`` shows masses of separated stones.\n\n"))
((int,mask,0,"If mask defined, only bodies with corresponding groupMask will be exported. If 0, all bodies will be exported.")),