← Back to team overview

yade-dev team mailing list archive

[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.")),