VTK
dox/Hybrid/vtkExodusIIReader.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkExodusIIReader.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*----------------------------------------------------------------------------
00016  Copyright (c) Sandia Corporation
00017  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
00018 ----------------------------------------------------------------------------*/
00019 
00039 #ifndef __vtkExodusIIReader_h
00040 #define __vtkExodusIIReader_h
00041 
00042 #include "vtkMultiBlockDataSetAlgorithm.h"
00043 
00044 class vtkDataArray;
00045 class vtkDataSet;
00046 class vtkExodusIICache;
00047 class vtkExodusIIReaderPrivate;
00048 class vtkExodusModel;
00049 class vtkFloatArray;
00050 class vtkGraph;
00051 class vtkIntArray;
00052 class vtkPoints;
00053 class vtkUnstructuredGrid;
00054 
00055 class VTK_HYBRID_EXPORT vtkExodusIIReader : public vtkMultiBlockDataSetAlgorithm 
00056 {
00057 public:
00058   static vtkExodusIIReader *New();
00059   vtkTypeMacro(vtkExodusIIReader,vtkMultiBlockDataSetAlgorithm);
00060   void PrintSelf(ostream& os, vtkIndent indent);
00061 
00063   int CanReadFile(const char* fname);
00064 
00065   //virtual void Modified();
00066 
00069   virtual unsigned long GetMTime();
00070   
00074   virtual unsigned long GetMetadataMTime();
00075 
00077 
00078   virtual void SetFileName( const char* fname );
00079   vtkGetStringMacro(FileName);
00081 
00083 
00084   virtual void SetXMLFileName( const char* fname );
00085   vtkGetStringMacro(XMLFileName);
00087 
00089 
00090   vtkSetMacro(TimeStep, int);
00091   vtkGetMacro(TimeStep, int);
00093 
00095 
00097   void SetModeShape(int val)
00098     {
00099     this->SetTimeStep(val-1);
00100     }
00102 
00104 
00105   vtkGetVector2Macro(TimeStepRange,int);
00106   vtkSetVector2Macro(TimeStepRange,int);
00108 
00110 
00119   virtual void SetGenerateObjectIdCellArray( int g );
00120   int GetGenerateObjectIdCellArray();
00121   vtkBooleanMacro(GenerateObjectIdCellArray, int);
00122   static const char *GetObjectIdArrayName() { return "ObjectId"; }  
00124 
00125   virtual void SetGenerateGlobalElementIdArray( int g );
00126   int GetGenerateGlobalElementIdArray();
00127   vtkBooleanMacro(GenerateGlobalElementIdArray, int);
00128 
00129   virtual void SetGenerateGlobalNodeIdArray( int g );
00130   int GetGenerateGlobalNodeIdArray();
00131   vtkBooleanMacro(GenerateGlobalNodeIdArray, int);
00132 
00133   virtual void SetGenerateImplicitElementIdArray( int g );
00134   int GetGenerateImplicitElementIdArray();
00135   vtkBooleanMacro(GenerateImplicitElementIdArray, int);
00136 
00137   virtual void SetGenerateImplicitNodeIdArray( int g );
00138   int GetGenerateImplicitNodeIdArray();
00139   vtkBooleanMacro(GenerateImplicitNodeIdArray, int);
00140 
00141   virtual void SetGenerateFileIdArray( int f );
00142   int GetGenerateFileIdArray();
00143   vtkBooleanMacro(GenerateFileIdArray, int);
00144   virtual void SetFileId( int f );
00145   int GetFileId();
00146 
00147 //BTX
00149 
00154   enum {
00155     SEARCH_TYPE_ELEMENT=0,
00156     SEARCH_TYPE_NODE,
00157     SEARCH_TYPE_ELEMENT_THEN_NODE,
00158     SEARCH_TYPE_NODE_THEN_ELEMENT,
00159     ID_NOT_FOUND=-234121312
00160   };
00161   // NOTE: GetNumberOfObjectTypes must be updated whenever you add an entry to enum ObjectType {...}
00162   enum ObjectType {
00163     // match Exodus macros from exodusII.h and exodusII_ext.h
00164     EDGE_BLOCK = 6,
00165     FACE_BLOCK = 8,
00166     ELEM_BLOCK = 1,
00167     NODE_SET = 2,
00168     EDGE_SET = 7,
00169     FACE_SET = 9,
00170     SIDE_SET = 3,
00171     ELEM_SET = 10,
00172     NODE_MAP = 5,
00173     EDGE_MAP = 11,
00174     FACE_MAP = 12,
00175     ELEM_MAP = 4,
00176     GLOBAL = 13,
00177     NODAL = 14,
00178     // extended values (not in Exodus headers) for use with SetAllArrayStatus:
00179     ASSEMBLY = 60,
00180     PART = 61,
00181     MATERIAL = 62,
00182     HIERARCHY = 63,
00183     // extended values (not in Exodus headers) for use in cache keys:
00184     QA_RECORDS = 103,          
00185     INFO_RECORDS = 104,        
00186     GLOBAL_TEMPORAL = 102,  
00187     NODAL_TEMPORAL = 101,      
00188     ELEM_BLOCK_TEMPORAL = 100,  
00189     GLOBAL_CONN = 99,          
00190     ELEM_BLOCK_ELEM_CONN = 98, 
00191     ELEM_BLOCK_FACE_CONN = 97, 
00192     ELEM_BLOCK_EDGE_CONN = 96, 
00193     FACE_BLOCK_CONN = 95,      
00194     EDGE_BLOCK_CONN = 94,      
00195     ELEM_SET_CONN = 93,        
00196     SIDE_SET_CONN = 92,        
00197     FACE_SET_CONN = 91,        
00198     EDGE_SET_CONN = 90,        
00199     NODE_SET_CONN = 89,        
00200     NODAL_COORDS = 88,         
00201     OBJECT_ID = 87,            
00202     IMPLICIT_ELEMENT_ID = 108, 
00203     IMPLICIT_NODE_ID = 107,    
00204     GLOBAL_ELEMENT_ID = 86,    
00205     GLOBAL_NODE_ID = 85,       
00206     ELEMENT_ID = 84,           
00207     NODE_ID = 83,              
00208     NODAL_SQUEEZEMAP = 82,     
00209     ELEM_BLOCK_ATTRIB = 81,    
00210     FACE_BLOCK_ATTRIB = 80,    
00211     EDGE_BLOCK_ATTRIB = 79,    
00212     FACE_ID = 105,             
00213     EDGE_ID = 106,             
00214     ENTITY_COUNTS = 109        
00215   };
00216 //ETX
00217   static const char* GetGlobalElementIdArrayName() { return "GlobalElementId"; }
00218   static const char* GetPedigreeElementIdArrayName() { return "PedigreeElementId"; }
00219   static int GetGlobalElementID( vtkDataSet *data, int localID );
00220   static int GetGlobalElementID ( vtkDataSet *data, int localID, 
00221       int searchType );
00222   static const char* GetImplicitElementIdArrayName() { return "ImplicitElementId"; }
00224 
00225   static const char* GetGlobalFaceIdArrayName() { return "GlobalFaceId"; }
00226   static const char* GetPedigreeFaceIdArrayName() { return "PedigreeFaceId"; }
00227   static int GetGlobalFaceID( vtkDataSet *data, int localID );
00228   static int GetGlobalFaceID ( vtkDataSet *data, int localID, 
00229       int searchType );
00230   static const char* GetImplicitFaceIdArrayName() { return "ImplicitFaceId"; }
00231 
00232   static const char* GetGlobalEdgeIdArrayName() { return "GlobalEdgeId"; }
00233   static const char* GetPedigreeEdgeIdArrayName() { return "PedigreeEdgeId"; }
00234   static int GetGlobalEdgeID( vtkDataSet *data, int localID );
00235   static int GetGlobalEdgeID ( vtkDataSet *data, int localID, 
00236       int searchType );
00237   static const char* GetImplicitEdgeIdArrayName() { return "ImplicitEdgeId"; }
00238 
00240 
00244   static const char* GetGlobalNodeIdArrayName() { return "GlobalNodeId"; }  
00245   static const char* GetPedigreeNodeIdArrayName() { return "PedigreeNodeId"; }  
00246   static int GetGlobalNodeID( vtkDataSet *data, int localID );
00247   static int GetGlobalNodeID( vtkDataSet *data, int localID, 
00248       int searchType );
00249   static const char* GetImplicitNodeIdArrayName() { return "ImplicitNodeId"; }  
00251 
00253 
00257   virtual void SetApplyDisplacements( int d );
00258   int GetApplyDisplacements();
00259   vtkBooleanMacro(ApplyDisplacements, int);
00260   virtual void SetDisplacementMagnitude( float s );
00261   float GetDisplacementMagnitude();
00263 
00265 
00268   virtual void SetHasModeShapes( int ms );
00269   int GetHasModeShapes();
00270   vtkBooleanMacro(HasModeShapes,int);
00272 
00274 
00280   virtual void SetModeShapeTime( double phase );
00281   double GetModeShapeTime();
00283 
00285 
00290   virtual void SetAnimateModeShapes(int flag);
00291   int GetAnimateModeShapes();
00292   vtkBooleanMacro(AnimateModeShapes, int);
00294 
00296 
00297   const char* GetTitle();
00298   int GetDimensionality();
00299   int GetNumberOfTimeSteps();
00301 
00302   int GetNumberOfNodesInFile();
00303   int GetNumberOfEdgesInFile();
00304   int GetNumberOfFacesInFile();
00305   int GetNumberOfElementsInFile();
00306 
00307   int GetObjectTypeFromName( const char* name );
00308   const char* GetObjectTypeName( int );
00309 
00310   int GetNumberOfNodes();
00311   int GetNumberOfObjects( int objectType );
00312   int GetNumberOfEntriesInObject( int objectType, int objectIndex );
00313   int GetObjectId( int objectType, int objectIndex );
00314   const char* GetObjectName( int objectType, int objectIndex );
00315   int GetObjectIndex( int objectType, const char* objectName );
00316   int GetObjectIndex( int objectType, int id );
00317   int GetObjectStatus( int objectType, int objectIndex );
00318   int GetObjectStatus( int objectType, const char* objectName )
00319     { return this->GetObjectStatus( objectType, this->GetObjectIndex( objectType, objectName ) ); }
00320   void SetObjectStatus( int objectType, int objectIndex, int status );
00321   void SetObjectStatus( int objectType, const char* objectName, int status );
00322 
00324 
00329   int GetNumberOfObjectArrays( int objectType );
00330   const char* GetObjectArrayName( int objectType, int arrayIndex );
00331   int GetObjectArrayIndex( int objectType, const char* arrayName );
00332   int GetNumberOfObjectArrayComponents( int objectType, int arrayIndex );
00333   int GetObjectArrayStatus( int objectType, int arrayIndex );
00334   int GetObjectArrayStatus( int objectType, const char* arrayName )
00335     { return this->GetObjectArrayStatus( objectType, this->GetObjectArrayIndex( objectType, arrayName ) ); }
00336   void SetObjectArrayStatus( int objectType, int arrayIndex, int status );
00337   void SetObjectArrayStatus( int objectType, const char* arrayName, int status ); 
00339 
00341 
00346   int GetNumberOfObjectAttributes( int objectType, int objectIndex );
00347   const char* GetObjectAttributeName( int objectType, int objectIndex, int attribIndex );
00348   int GetObjectAttributeIndex( int objectType, int objectIndex, const char* attribName );
00349   int GetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex );
00350   int GetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName )
00351     { return this->GetObjectAttributeStatus( objectType, objectIndex,
00352       this->GetObjectAttributeIndex( objectType, objectIndex, attribName ) ); }
00353   void SetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex, int status );
00354   void SetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName, int status )
00355     { this->SetObjectAttributeStatus( objectType, objectIndex,
00356       this->GetObjectAttributeIndex( objectType, objectIndex, attribName ), status ); }
00358 
00359   virtual vtkIdType GetTotalNumberOfNodes();
00360   virtual vtkIdType GetTotalNumberOfEdges();
00361   virtual vtkIdType GetTotalNumberOfFaces();
00362   virtual vtkIdType GetTotalNumberOfElements();
00363 
00365 
00369   int GetNumberOfPartArrays();
00370   const char* GetPartArrayName(int arrayIdx);
00371   int GetPartArrayID( const char *name );
00372   const char* GetPartBlockInfo(int arrayIdx);
00373   void SetPartArrayStatus(int index, int flag);
00374   void SetPartArrayStatus(const char*, int flag);
00375   int GetPartArrayStatus(int index);
00376   int GetPartArrayStatus(const char*);
00378   
00379 
00381 
00385   int GetNumberOfMaterialArrays();
00386   const char* GetMaterialArrayName(int arrayIdx);
00387   int GetMaterialArrayID( const char *name );
00388   void SetMaterialArrayStatus(int index, int flag);
00389   void SetMaterialArrayStatus(const char*, int flag);
00390   int GetMaterialArrayStatus(int index);
00391   int GetMaterialArrayStatus(const char*);
00393 
00395 
00399   int GetNumberOfAssemblyArrays();
00400   const char* GetAssemblyArrayName(int arrayIdx);
00401   int GetAssemblyArrayID( const char *name );
00402   void SetAssemblyArrayStatus(int index, int flag);
00403   void SetAssemblyArrayStatus(const char*, int flag);
00404   int GetAssemblyArrayStatus(int index);
00405   int GetAssemblyArrayStatus(const char*);
00407 
00409 
00416   int GetNumberOfHierarchyArrays();
00417   const char* GetHierarchyArrayName(int arrayIdx);
00418   void SetHierarchyArrayStatus(int index, int flag);
00419   void SetHierarchyArrayStatus(const char*, int flag);
00420   int GetHierarchyArrayStatus(int index);
00421   int GetHierarchyArrayStatus(const char*);
00423 
00424   vtkGetMacro(DisplayType,int);
00425   virtual void SetDisplayType(int type);
00426 
00432   vtkBooleanMacro(ExodusModelMetadata, int);
00433   vtkSetMacro(ExodusModelMetadata, int);
00434   vtkGetMacro(ExodusModelMetadata, int);
00435 
00437 
00438   vtkGetObjectMacro(ExodusModel,vtkExodusModel);
00440 
00448   vtkSetMacro(PackExodusModelOntoOutput, int);
00449   vtkGetMacro(PackExodusModelOntoOutput, int);
00450   vtkBooleanMacro(PackExodusModelOntoOutput, int);
00451 
00453   int IsValidVariable( const char *type, const char *name );
00454 
00456   int GetVariableID ( const char *type, const char *name );
00457 
00458   void SetAllArrayStatus( int otype, int status );
00459   // Helper functions
00460   //static int StringsEqual(const char* s1, char* s2);
00461   //static void StringUppercase(const char* str, char* upperstr);
00462   //static char *StrDupWithNew(const char *s);
00463 
00464   // time series query functions
00465   int GetTimeSeriesData( int ID, const char *vName, const char *vType, 
00466                          vtkFloatArray *result );
00467 
00468 
00469 
00470   int GetNumberOfEdgeBlockArrays()
00471     { return this->GetNumberOfObjects(EDGE_BLOCK); }
00472   const char* GetEdgeBlockArrayName(int index)
00473     { return this->GetObjectName(EDGE_BLOCK, index); }
00474   int GetEdgeBlockArrayStatus(const char* name)
00475     { return this->GetObjectStatus(EDGE_BLOCK, name); }
00476   void SetEdgeBlockArrayStatus(const char* name, int flag)
00477     { this->SetObjectStatus(EDGE_BLOCK, name, flag); }
00478   
00479   int GetNumberOfFaceBlockArrays()
00480     { return this->GetNumberOfObjects(FACE_BLOCK); }
00481   const char* GetFaceBlockArrayName(int index)
00482     { return this->GetObjectName(FACE_BLOCK, index); }
00483   int GetFaceBlockArrayStatus(const char* name)
00484     { return this->GetObjectStatus(FACE_BLOCK, name); }
00485   void SetFaceBlockArrayStatus(const char* name, int flag)
00486     { this->SetObjectStatus(FACE_BLOCK, name, flag); }
00487  
00488   int GetNumberOfElementBlockArrays()
00489     { return this->GetNumberOfObjects(ELEM_BLOCK); }
00490   const char* GetElementBlockArrayName(int index)
00491     { return this->GetObjectName(ELEM_BLOCK, index); }
00492   int GetElementBlockArrayStatus(const char* name)
00493     { return this->GetObjectStatus(ELEM_BLOCK, name); }
00494   void SetElementBlockArrayStatus(const char* name, int flag)
00495     { this->SetObjectStatus(ELEM_BLOCK, name, flag); }
00496 
00497   int GetNumberOfGlobalResultArrays()
00498     { return this->GetNumberOfObjectArrays(GLOBAL); }
00499   const char* GetGlobalResultArrayName(int index)
00500     { return this->GetObjectArrayName(GLOBAL, index); }
00501   int GetGlobalResultArrayStatus(const char* name)
00502     { return this->GetObjectArrayStatus(GLOBAL, name); }
00503   void SetGlobalResultArrayStatus(const char* name, int flag)
00504     { this->SetObjectArrayStatus(GLOBAL, name, flag); }
00505   
00506   int GetNumberOfPointResultArrays()
00507     { return this->GetNumberOfObjectArrays(NODAL); }
00508   const char* GetPointResultArrayName(int index)
00509     { return this->GetObjectArrayName(NODAL, index); }
00510   int GetPointResultArrayStatus(const char* name)
00511     { return this->GetObjectArrayStatus(NODAL, name); }
00512   void SetPointResultArrayStatus(const char* name, int flag)
00513     { this->SetObjectArrayStatus(NODAL, name, flag); }
00514   
00515   int GetNumberOfEdgeResultArrays()
00516     { return this->GetNumberOfObjectArrays(EDGE_BLOCK); }
00517   const char* GetEdgeResultArrayName(int index)
00518     { return this->GetObjectArrayName(EDGE_BLOCK, index); }
00519   int GetEdgeResultArrayStatus(const char* name)
00520     { return this->GetObjectArrayStatus(EDGE_BLOCK, name); }
00521   void SetEdgeResultArrayStatus(const char* name, int flag)
00522     { this->SetObjectArrayStatus(EDGE_BLOCK, name, flag); }
00523 
00524   int GetNumberOfFaceResultArrays()
00525     { return this->GetNumberOfObjectArrays(FACE_BLOCK); }
00526   const char* GetFaceResultArrayName(int index)
00527     { return this->GetObjectArrayName(FACE_BLOCK, index); }
00528   int GetFaceResultArrayStatus(const char* name)
00529     { return this->GetObjectArrayStatus(FACE_BLOCK, name); }
00530   void SetFaceResultArrayStatus(const char* name, int flag)
00531     { this->SetObjectArrayStatus(FACE_BLOCK, name, flag); }
00532 
00533   int GetNumberOfElementResultArrays()
00534     { return this->GetNumberOfObjectArrays(ELEM_BLOCK); }
00535   const char* GetElementResultArrayName(int index)
00536     { return this->GetObjectArrayName(ELEM_BLOCK, index); }
00537   int GetElementResultArrayStatus(const char* name)
00538     { return this->GetObjectArrayStatus(ELEM_BLOCK, name); }
00539   void SetElementResultArrayStatus(const char* name, int flag)
00540     { this->SetObjectArrayStatus(ELEM_BLOCK, name, flag); }
00541   
00542   
00543   int GetNumberOfNodeMapArrays()
00544     { return this->GetNumberOfObjects(NODE_MAP); }
00545   const char* GetNodeMapArrayName(int index)
00546     { return this->GetObjectName(NODE_MAP, index); }
00547   int GetNodeMapArrayStatus(const char* name)
00548     { return this->GetObjectStatus(NODE_MAP, name); }
00549   void SetNodeMapArrayStatus(const char* name, int flag)
00550     { this->SetObjectStatus(NODE_MAP, name, flag); }
00551   
00552   int GetNumberOfEdgeMapArrays()
00553     { return this->GetNumberOfObjects(EDGE_MAP); }
00554   const char* GetEdgeMapArrayName(int index)
00555     { return this->GetObjectName(EDGE_MAP, index); }
00556   int GetEdgeMapArrayStatus(const char* name)
00557     { return this->GetObjectStatus(EDGE_MAP, name); }
00558   void SetEdgeMapArrayStatus(const char* name, int flag)
00559     { this->SetObjectStatus(EDGE_MAP, name, flag); }
00560 
00561   int GetNumberOfFaceMapArrays()
00562     { return this->GetNumberOfObjects(FACE_MAP); }
00563   const char* GetFaceMapArrayName(int index)
00564     { return this->GetObjectName(FACE_MAP, index); }
00565   int GetFaceMapArrayStatus(const char* name)
00566     { return this->GetObjectStatus(FACE_MAP, name); }
00567   void SetFaceMapArrayStatus(const char* name, int flag)
00568     { this->SetObjectStatus(FACE_MAP, name, flag); }
00569 
00570   int GetNumberOfElementMapArrays()
00571     { return this->GetNumberOfObjects(ELEM_MAP); }
00572   const char* GetElementMapArrayName(int index)
00573     { return this->GetObjectName(ELEM_MAP, index); }
00574   int GetElementMapArrayStatus(const char* name)
00575     { return this->GetObjectStatus(ELEM_MAP, name); }
00576   void SetElementMapArrayStatus(const char* name, int flag)
00577     { this->SetObjectStatus(ELEM_MAP, name, flag); }
00578   
00579   int GetNumberOfNodeSetArrays()
00580     { return this->GetNumberOfObjects(NODE_SET); }
00581   const char* GetNodeSetArrayName(int index)
00582     { return this->GetObjectName(NODE_SET, index); }
00583   int GetNodeSetArrayStatus(const char* name)
00584     { return this->GetObjectStatus(NODE_SET, name); }
00585   void SetNodeSetArrayStatus(const char* name, int flag)
00586     { this->SetObjectStatus(NODE_SET, name, flag); }
00587   
00588   int GetNumberOfSideSetArrays()
00589     { return this->GetNumberOfObjects(SIDE_SET); }
00590   const char* GetSideSetArrayName(int index)
00591     { return this->GetObjectName(SIDE_SET, index); }
00592   int GetSideSetArrayStatus(const char* name)
00593     { return this->GetObjectStatus(SIDE_SET, name); }
00594   void SetSideSetArrayStatus(const char* name, int flag)
00595     { this->SetObjectStatus(SIDE_SET, name, flag); }
00596   
00597   int GetNumberOfEdgeSetArrays()
00598     { return this->GetNumberOfObjects(EDGE_SET); }
00599   const char* GetEdgeSetArrayName(int index)
00600     { return this->GetObjectName(EDGE_SET, index); }
00601   int GetEdgeSetArrayStatus(const char* name)
00602     { return this->GetObjectStatus(EDGE_SET, name); }
00603   void SetEdgeSetArrayStatus(const char* name, int flag)
00604     { this->SetObjectStatus(EDGE_SET, name, flag); }
00605 
00606   int GetNumberOfFaceSetArrays()
00607     { return this->GetNumberOfObjects(FACE_SET); }
00608   const char* GetFaceSetArrayName(int index)
00609     { return this->GetObjectName(FACE_SET, index); }
00610   int GetFaceSetArrayStatus(const char* name)
00611     { return this->GetObjectStatus(FACE_SET, name); }
00612   void SetFaceSetArrayStatus(const char* name, int flag)
00613     { this->SetObjectStatus(FACE_SET, name, flag); }
00614   
00615   int GetNumberOfElementSetArrays()
00616     { return this->GetNumberOfObjects(ELEM_SET); }
00617   const char* GetElementSetArrayName(int index)
00618     { return this->GetObjectName(ELEM_SET, index); }
00619   int GetElementSetArrayStatus(const char* name)
00620     { return this->GetObjectStatus(ELEM_SET, name); }
00621   void SetElementSetArrayStatus(const char* name, int flag)
00622     { this->SetObjectStatus(ELEM_SET, name, flag); }
00623   
00624   
00625   int GetNumberOfNodeSetResultArrays()
00626     { return this->GetNumberOfObjectArrays(NODE_SET); }
00627   const char* GetNodeSetResultArrayName(int index)
00628     { return this->GetObjectArrayName(NODE_SET, index); }
00629   int GetNodeSetResultArrayStatus(const char* name)
00630     { return this->GetObjectArrayStatus(NODE_SET, name); }
00631   void SetNodeSetResultArrayStatus(const char* name, int flag)
00632     { this->SetObjectArrayStatus(NODE_SET, name, flag); }
00633   
00634   int GetNumberOfSideSetResultArrays()
00635     { return this->GetNumberOfObjectArrays(SIDE_SET); }
00636   const char* GetSideSetResultArrayName(int index)
00637     { return this->GetObjectArrayName(SIDE_SET, index); }
00638   int GetSideSetResultArrayStatus(const char* name)
00639     { return this->GetObjectArrayStatus(SIDE_SET, name); }
00640   void SetSideSetResultArrayStatus(const char* name, int flag)
00641     { this->SetObjectArrayStatus(SIDE_SET, name, flag); }
00642   
00643   int GetNumberOfEdgeSetResultArrays()
00644     { return this->GetNumberOfObjectArrays(EDGE_SET); }
00645   const char* GetEdgeSetResultArrayName(int index)
00646     { return this->GetObjectArrayName(EDGE_SET, index); }
00647   int GetEdgeSetResultArrayStatus(const char* name)
00648     { return this->GetObjectArrayStatus(EDGE_SET, name); }
00649   void SetEdgeSetResultArrayStatus(const char* name, int flag)
00650     { this->SetObjectArrayStatus(EDGE_SET, name, flag); }
00651 
00652   int GetNumberOfFaceSetResultArrays()
00653     { return this->GetNumberOfObjectArrays(FACE_SET); }
00654   const char* GetFaceSetResultArrayName(int index)
00655     { return this->GetObjectArrayName(FACE_SET, index); }
00656   int GetFaceSetResultArrayStatus(const char* name)
00657     { return this->GetObjectArrayStatus(FACE_SET, name); }
00658   void SetFaceSetResultArrayStatus(const char* name, int flag)
00659     { this->SetObjectArrayStatus(FACE_SET, name, flag); }
00660   
00661   int GetNumberOfElementSetResultArrays()
00662     { return this->GetNumberOfObjectArrays(ELEM_SET); }
00663   const char* GetElementSetResultArrayName(int index)
00664     { return this->GetObjectArrayName(ELEM_SET, index); }
00665   int GetElementSetResultArrayStatus(const char* name)
00666     { return this->GetObjectArrayStatus(ELEM_SET, name); }
00667   void SetElementSetResultArrayStatus(const char* name, int flag)
00668     { this->SetObjectArrayStatus(ELEM_SET, name, flag); }
00669 
00685   void SetFastPathObjectType(const char *type);
00687 
00690   void SetFastPathIdType(const char *type);
00691   void SetFastPathObjectId(vtkIdType id);
00693 
00694 
00699   void Reset();
00700 
00706   void ResetSettings();
00707 
00709   void ResetCache();
00710 
00712   void SetCacheSize(double CacheSize);
00713 
00715   double GetCacheSize();
00716 
00719   virtual void UpdateTimeInformation();
00720 
00721   virtual void Dump();
00722 
00725   vtkGraph* GetSIL();
00726 
00728 
00729   vtkGetMacro(SILUpdateStamp, int);
00731 
00733 
00735   vtkGetMacro(ProducedFastPathOutput, bool);
00737 
00738 protected:
00739   vtkExodusIIReader();
00740   ~vtkExodusIIReader();
00741 
00744   virtual void NewExodusModel();
00745 
00746   // helper for finding IDs
00747   static int GetIDHelper ( const char *arrayName, vtkDataSet *data, int localID, int searchType );
00748   static int GetGlobalID( const char *arrayName, vtkDataSet *data, int localID, int searchType );
00749 
00750   virtual void SetMetadata( vtkExodusIIReaderPrivate* );
00751   vtkGetObjectMacro(Metadata,vtkExodusIIReaderPrivate);
00752 
00758   bool FindXMLFile();
00759 
00760   // Time query function. Called by ExecuteInformation().
00761   // Fills the TimestepValues array.
00762   void GetAllTimes(vtkInformationVector*); 
00763 
00765   void AdvertiseTimeSteps( vtkInformation* outputInfo );
00766 
00767   virtual void SetExodusModel( vtkExodusModel* em );
00768 
00769   int ProcessRequest( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00770   int RequestInformation( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00771   int RequestData( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00772   //int RequestDataOverTime( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00773 
00774   // Parameters for controlling what is read in.
00775   char* FileName;
00776   char* XMLFileName;
00777   int TimeStep;
00778   int TimeStepRange[2];
00779   vtkTimeStamp FileNameMTime;
00780   vtkTimeStamp XMLFileNameMTime;
00781   
00782   // Information specific for exodus files.
00783 
00784   //1=display Block names
00785   //2=display Part names
00786   //3=display Material names
00787   int DisplayType;
00788  
00789   // Metadata containing a description of the currently open file.
00790   vtkExodusIIReaderPrivate* Metadata;
00791 
00792   vtkExodusModel *ExodusModel;
00793   int PackExodusModelOntoOutput;
00794   int ExodusModelMetadata;
00795 
00796   int SILUpdateStamp;
00797   bool ProducedFastPathOutput;
00798 private:
00799   vtkExodusIIReader(const vtkExodusIIReader&); // Not implemented
00800   void operator=(const vtkExodusIIReader&); // Not implemented
00801 
00802   void AddDisplacements(vtkUnstructuredGrid* output);
00803 };
00804 
00805 #endif