VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/IO/Exodus/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 "vtkIOExodusModule.h" // For export macro
00043 #include "vtkMultiBlockDataSetAlgorithm.h"
00044 
00045 class vtkDataArray;
00046 class vtkDataSet;
00047 class vtkExodusIICache;
00048 class vtkExodusIIReaderPrivate;
00049 class vtkFloatArray;
00050 class vtkGraph;
00051 class vtkIntArray;
00052 class vtkPoints;
00053 class vtkUnstructuredGrid;
00054 
00055 class VTKIOEXODUS_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 
00106   virtual int* GetModeShapesRange()
00107     {
00108     this->ModeShapesRange[0] = this->TimeStepRange[0] + 1;
00109     this->ModeShapesRange[1] = this->TimeStepRange[1] + 1;
00110     return this->ModeShapesRange;
00111     }
00113 
00115 
00116   vtkGetVector2Macro(TimeStepRange,int);
00117   vtkSetVector2Macro(TimeStepRange,int);
00119 
00121 
00130   virtual void SetGenerateObjectIdCellArray( int g );
00131   int GetGenerateObjectIdCellArray();
00132   vtkBooleanMacro(GenerateObjectIdCellArray, int);
00133   static const char *GetObjectIdArrayName() { return "ObjectId"; }
00135 
00136   virtual void SetGenerateGlobalElementIdArray( int g );
00137   int GetGenerateGlobalElementIdArray();
00138   vtkBooleanMacro(GenerateGlobalElementIdArray, int);
00139 
00140   virtual void SetGenerateGlobalNodeIdArray( int g );
00141   int GetGenerateGlobalNodeIdArray();
00142   vtkBooleanMacro(GenerateGlobalNodeIdArray, int);
00143 
00144   virtual void SetGenerateImplicitElementIdArray( int g );
00145   int GetGenerateImplicitElementIdArray();
00146   vtkBooleanMacro(GenerateImplicitElementIdArray, int);
00147 
00148   virtual void SetGenerateImplicitNodeIdArray( int g );
00149   int GetGenerateImplicitNodeIdArray();
00150   vtkBooleanMacro(GenerateImplicitNodeIdArray, int);
00151 
00152   virtual void SetGenerateFileIdArray( int f );
00153   int GetGenerateFileIdArray();
00154   vtkBooleanMacro(GenerateFileIdArray, int);
00155   virtual void SetFileId( int f );
00156   int GetFileId();
00157 
00158 //BTX
00160 
00165   enum {
00166     SEARCH_TYPE_ELEMENT=0,
00167     SEARCH_TYPE_NODE,
00168     SEARCH_TYPE_ELEMENT_THEN_NODE,
00169     SEARCH_TYPE_NODE_THEN_ELEMENT,
00170     ID_NOT_FOUND=-234121312
00171   };
00172   // NOTE: GetNumberOfObjectTypes must be updated whenever you add an entry to enum ObjectType {...}
00173   enum ObjectType {
00174     // match Exodus macros from exodusII.h and exodusII_ext.h
00175     EDGE_BLOCK = 6,
00176     FACE_BLOCK = 8,
00177     ELEM_BLOCK = 1,
00178     NODE_SET = 2,
00179     EDGE_SET = 7,
00180     FACE_SET = 9,
00181     SIDE_SET = 3,
00182     ELEM_SET = 10,
00183     NODE_MAP = 5,
00184     EDGE_MAP = 11,
00185     FACE_MAP = 12,
00186     ELEM_MAP = 4,
00187     GLOBAL = 13,
00188     NODAL = 14,
00189     // extended values (not in Exodus headers) for use with SetAllArrayStatus:
00190     ASSEMBLY = 60,
00191     PART = 61,
00192     MATERIAL = 62,
00193     HIERARCHY = 63,
00194     // extended values (not in Exodus headers) for use in cache keys:
00195     QA_RECORDS = 103,          
00196     INFO_RECORDS = 104,        
00197     GLOBAL_TEMPORAL = 102,  
00198     NODAL_TEMPORAL = 101,      
00199     ELEM_BLOCK_TEMPORAL = 100,  
00200     GLOBAL_CONN = 99,          
00201     ELEM_BLOCK_ELEM_CONN = 98, 
00202     ELEM_BLOCK_FACE_CONN = 97, 
00203     ELEM_BLOCK_EDGE_CONN = 96, 
00204     FACE_BLOCK_CONN = 95,      
00205     EDGE_BLOCK_CONN = 94,      
00206     ELEM_SET_CONN = 93,        
00207     SIDE_SET_CONN = 92,        
00208     FACE_SET_CONN = 91,        
00209     EDGE_SET_CONN = 90,        
00210     NODE_SET_CONN = 89,        
00211     NODAL_COORDS = 88,         
00212     OBJECT_ID = 87,            
00213     IMPLICIT_ELEMENT_ID = 108, 
00214     IMPLICIT_NODE_ID = 107,    
00215     GLOBAL_ELEMENT_ID = 86,    
00216     GLOBAL_NODE_ID = 85,       
00217     ELEMENT_ID = 84,           
00218     NODE_ID = 83,              
00219     NODAL_SQUEEZEMAP = 82,     
00220     ELEM_BLOCK_ATTRIB = 81,    
00221     FACE_BLOCK_ATTRIB = 80,    
00222     EDGE_BLOCK_ATTRIB = 79,    
00223     FACE_ID = 105,             
00224     EDGE_ID = 106,             
00225     ENTITY_COUNTS = 109        
00226   };
00227 //ETX
00228   static const char* GetGlobalElementIdArrayName() { return "GlobalElementId"; }
00229   static const char* GetPedigreeElementIdArrayName() { return "PedigreeElementId"; }
00230   static int GetGlobalElementID( vtkDataSet *data, int localID );
00231   static int GetGlobalElementID ( vtkDataSet *data, int localID,
00232       int searchType );
00233   static const char* GetImplicitElementIdArrayName() { return "ImplicitElementId"; }
00235 
00236   static const char* GetGlobalFaceIdArrayName() { return "GlobalFaceId"; }
00237   static const char* GetPedigreeFaceIdArrayName() { return "PedigreeFaceId"; }
00238   static int GetGlobalFaceID( vtkDataSet *data, int localID );
00239   static int GetGlobalFaceID ( vtkDataSet *data, int localID,
00240       int searchType );
00241   static const char* GetImplicitFaceIdArrayName() { return "ImplicitFaceId"; }
00242 
00243   static const char* GetGlobalEdgeIdArrayName() { return "GlobalEdgeId"; }
00244   static const char* GetPedigreeEdgeIdArrayName() { return "PedigreeEdgeId"; }
00245   static int GetGlobalEdgeID( vtkDataSet *data, int localID );
00246   static int GetGlobalEdgeID ( vtkDataSet *data, int localID,
00247       int searchType );
00248   static const char* GetImplicitEdgeIdArrayName() { return "ImplicitEdgeId"; }
00249 
00251 
00255   static const char* GetGlobalNodeIdArrayName() { return "GlobalNodeId"; }
00256   static const char* GetPedigreeNodeIdArrayName() { return "PedigreeNodeId"; }
00257   static int GetGlobalNodeID( vtkDataSet *data, int localID );
00258   static int GetGlobalNodeID( vtkDataSet *data, int localID,
00259       int searchType );
00260   static const char* GetImplicitNodeIdArrayName() { return "ImplicitNodeId"; }
00262 
00265   static const char* GetSideSetSourceElementIdArrayName() { return "SourceElementId"; }
00266 
00269   static const char* GetSideSetSourceElementSideArrayName() { return "SourceElementSide"; }
00271 
00275   virtual void SetApplyDisplacements( int d );
00276   int GetApplyDisplacements();
00277   vtkBooleanMacro(ApplyDisplacements, int);
00278   virtual void SetDisplacementMagnitude( float s );
00279   float GetDisplacementMagnitude();
00281 
00283 
00286   virtual void SetHasModeShapes( int ms );
00287   int GetHasModeShapes();
00288   vtkBooleanMacro(HasModeShapes,int);
00290 
00292 
00298   virtual void SetModeShapeTime( double phase );
00299   double GetModeShapeTime();
00301 
00303 
00308   virtual void SetAnimateModeShapes(int flag);
00309   int GetAnimateModeShapes();
00310   vtkBooleanMacro(AnimateModeShapes, int);
00312 
00314 
00315   const char* GetTitle();
00316   int GetDimensionality();
00317   int GetNumberOfTimeSteps();
00319 
00320   int GetNumberOfNodesInFile();
00321   int GetNumberOfEdgesInFile();
00322   int GetNumberOfFacesInFile();
00323   int GetNumberOfElementsInFile();
00324 
00325   int GetObjectTypeFromName( const char* name );
00326   const char* GetObjectTypeName( int );
00327 
00328   int GetNumberOfNodes();
00329   int GetNumberOfObjects( int objectType );
00330   int GetNumberOfEntriesInObject( int objectType, int objectIndex );
00331   int GetObjectId( int objectType, int objectIndex );
00332   const char* GetObjectName( int objectType, int objectIndex );
00333   int GetObjectIndex( int objectType, const char* objectName );
00334   int GetObjectIndex( int objectType, int id );
00335   int GetObjectStatus( int objectType, int objectIndex );
00336   int GetObjectStatus( int objectType, const char* objectName )
00337     { return this->GetObjectStatus( objectType, this->GetObjectIndex( objectType, objectName ) ); }
00338   void SetObjectStatus( int objectType, int objectIndex, int status );
00339   void SetObjectStatus( int objectType, const char* objectName, int status );
00340 
00342 
00347   int GetNumberOfObjectArrays( int objectType );
00348   const char* GetObjectArrayName( int objectType, int arrayIndex );
00349   int GetObjectArrayIndex( int objectType, const char* arrayName );
00350   int GetNumberOfObjectArrayComponents( int objectType, int arrayIndex );
00351   int GetObjectArrayStatus( int objectType, int arrayIndex );
00352   int GetObjectArrayStatus( int objectType, const char* arrayName )
00353     { return this->GetObjectArrayStatus( objectType, this->GetObjectArrayIndex( objectType, arrayName ) ); }
00354   void SetObjectArrayStatus( int objectType, int arrayIndex, int status );
00355   void SetObjectArrayStatus( int objectType, const char* arrayName, int status );
00357 
00359 
00364   int GetNumberOfObjectAttributes( int objectType, int objectIndex );
00365   const char* GetObjectAttributeName( int objectType, int objectIndex, int attribIndex );
00366   int GetObjectAttributeIndex( int objectType, int objectIndex, const char* attribName );
00367   int GetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex );
00368   int GetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName )
00369     { return this->GetObjectAttributeStatus( objectType, objectIndex,
00370       this->GetObjectAttributeIndex( objectType, objectIndex, attribName ) ); }
00371   void SetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex, int status );
00372   void SetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName, int status )
00373     { this->SetObjectAttributeStatus( objectType, objectIndex,
00374       this->GetObjectAttributeIndex( objectType, objectIndex, attribName ), status ); }
00376 
00377   virtual vtkIdType GetTotalNumberOfNodes();
00378   virtual vtkIdType GetTotalNumberOfEdges();
00379   virtual vtkIdType GetTotalNumberOfFaces();
00380   virtual vtkIdType GetTotalNumberOfElements();
00381 
00383 
00387   int GetNumberOfPartArrays();
00388   const char* GetPartArrayName(int arrayIdx);
00389   int GetPartArrayID( const char *name );
00390   const char* GetPartBlockInfo(int arrayIdx);
00391   void SetPartArrayStatus(int index, int flag);
00392   void SetPartArrayStatus(const char*, int flag);
00393   int GetPartArrayStatus(int index);
00394   int GetPartArrayStatus(const char*);
00396 
00397 
00399 
00403   int GetNumberOfMaterialArrays();
00404   const char* GetMaterialArrayName(int arrayIdx);
00405   int GetMaterialArrayID( const char *name );
00406   void SetMaterialArrayStatus(int index, int flag);
00407   void SetMaterialArrayStatus(const char*, int flag);
00408   int GetMaterialArrayStatus(int index);
00409   int GetMaterialArrayStatus(const char*);
00411 
00413 
00417   int GetNumberOfAssemblyArrays();
00418   const char* GetAssemblyArrayName(int arrayIdx);
00419   int GetAssemblyArrayID( const char *name );
00420   void SetAssemblyArrayStatus(int index, int flag);
00421   void SetAssemblyArrayStatus(const char*, int flag);
00422   int GetAssemblyArrayStatus(int index);
00423   int GetAssemblyArrayStatus(const char*);
00425 
00427 
00434   int GetNumberOfHierarchyArrays();
00435   const char* GetHierarchyArrayName(int arrayIdx);
00436   void SetHierarchyArrayStatus(int index, int flag);
00437   void SetHierarchyArrayStatus(const char*, int flag);
00438   int GetHierarchyArrayStatus(int index);
00439   int GetHierarchyArrayStatus(const char*);
00441 
00442   vtkGetMacro(DisplayType,int);
00443   virtual void SetDisplayType(int type);
00444 
00446   int IsValidVariable( const char *type, const char *name );
00447 
00449   int GetVariableID ( const char *type, const char *name );
00450 
00451   void SetAllArrayStatus( int otype, int status );
00452   // Helper functions
00453   //static int StringsEqual(const char* s1, char* s2);
00454   //static void StringUppercase(const char* str, char* upperstr);
00455   //static char *StrDupWithNew(const char *s);
00456 
00457   // time series query functions
00458   int GetTimeSeriesData( int ID, const char *vName, const char *vType,
00459                          vtkFloatArray *result );
00460 
00461 
00462 
00463   int GetNumberOfEdgeBlockArrays()
00464     { return this->GetNumberOfObjects(EDGE_BLOCK); }
00465   const char* GetEdgeBlockArrayName(int index)
00466     { return this->GetObjectName(EDGE_BLOCK, index); }
00467   int GetEdgeBlockArrayStatus(const char* name)
00468     { return this->GetObjectStatus(EDGE_BLOCK, name); }
00469   void SetEdgeBlockArrayStatus(const char* name, int flag)
00470     { this->SetObjectStatus(EDGE_BLOCK, name, flag); }
00471 
00472   int GetNumberOfFaceBlockArrays()
00473     { return this->GetNumberOfObjects(FACE_BLOCK); }
00474   const char* GetFaceBlockArrayName(int index)
00475     { return this->GetObjectName(FACE_BLOCK, index); }
00476   int GetFaceBlockArrayStatus(const char* name)
00477     { return this->GetObjectStatus(FACE_BLOCK, name); }
00478   void SetFaceBlockArrayStatus(const char* name, int flag)
00479     { this->SetObjectStatus(FACE_BLOCK, name, flag); }
00480 
00481   int GetNumberOfElementBlockArrays()
00482     { return this->GetNumberOfObjects(ELEM_BLOCK); }
00483   const char* GetElementBlockArrayName(int index)
00484     { return this->GetObjectName(ELEM_BLOCK, index); }
00485   int GetElementBlockArrayStatus(const char* name)
00486     { return this->GetObjectStatus(ELEM_BLOCK, name); }
00487   void SetElementBlockArrayStatus(const char* name, int flag)
00488     { this->SetObjectStatus(ELEM_BLOCK, name, flag); }
00489 
00490   int GetNumberOfGlobalResultArrays()
00491     { return this->GetNumberOfObjectArrays(GLOBAL); }
00492   const char* GetGlobalResultArrayName(int index)
00493     { return this->GetObjectArrayName(GLOBAL, index); }
00494   int GetGlobalResultArrayStatus(const char* name)
00495     { return this->GetObjectArrayStatus(GLOBAL, name); }
00496   void SetGlobalResultArrayStatus(const char* name, int flag)
00497     { this->SetObjectArrayStatus(GLOBAL, name, flag); }
00498 
00499   int GetNumberOfPointResultArrays()
00500     { return this->GetNumberOfObjectArrays(NODAL); }
00501   const char* GetPointResultArrayName(int index)
00502     { return this->GetObjectArrayName(NODAL, index); }
00503   int GetPointResultArrayStatus(const char* name)
00504     { return this->GetObjectArrayStatus(NODAL, name); }
00505   void SetPointResultArrayStatus(const char* name, int flag)
00506     { this->SetObjectArrayStatus(NODAL, name, flag); }
00507 
00508   int GetNumberOfEdgeResultArrays()
00509     { return this->GetNumberOfObjectArrays(EDGE_BLOCK); }
00510   const char* GetEdgeResultArrayName(int index)
00511     { return this->GetObjectArrayName(EDGE_BLOCK, index); }
00512   int GetEdgeResultArrayStatus(const char* name)
00513     { return this->GetObjectArrayStatus(EDGE_BLOCK, name); }
00514   void SetEdgeResultArrayStatus(const char* name, int flag)
00515     { this->SetObjectArrayStatus(EDGE_BLOCK, name, flag); }
00516 
00517   int GetNumberOfFaceResultArrays()
00518     { return this->GetNumberOfObjectArrays(FACE_BLOCK); }
00519   const char* GetFaceResultArrayName(int index)
00520     { return this->GetObjectArrayName(FACE_BLOCK, index); }
00521   int GetFaceResultArrayStatus(const char* name)
00522     { return this->GetObjectArrayStatus(FACE_BLOCK, name); }
00523   void SetFaceResultArrayStatus(const char* name, int flag)
00524     { this->SetObjectArrayStatus(FACE_BLOCK, name, flag); }
00525 
00526   int GetNumberOfElementResultArrays()
00527     { return this->GetNumberOfObjectArrays(ELEM_BLOCK); }
00528   const char* GetElementResultArrayName(int index)
00529     { return this->GetObjectArrayName(ELEM_BLOCK, index); }
00530   int GetElementResultArrayStatus(const char* name)
00531     { return this->GetObjectArrayStatus(ELEM_BLOCK, name); }
00532   void SetElementResultArrayStatus(const char* name, int flag)
00533     { this->SetObjectArrayStatus(ELEM_BLOCK, name, flag); }
00534 
00535 
00536   int GetNumberOfNodeMapArrays()
00537     { return this->GetNumberOfObjects(NODE_MAP); }
00538   const char* GetNodeMapArrayName(int index)
00539     { return this->GetObjectName(NODE_MAP, index); }
00540   int GetNodeMapArrayStatus(const char* name)
00541     { return this->GetObjectStatus(NODE_MAP, name); }
00542   void SetNodeMapArrayStatus(const char* name, int flag)
00543     { this->SetObjectStatus(NODE_MAP, name, flag); }
00544 
00545   int GetNumberOfEdgeMapArrays()
00546     { return this->GetNumberOfObjects(EDGE_MAP); }
00547   const char* GetEdgeMapArrayName(int index)
00548     { return this->GetObjectName(EDGE_MAP, index); }
00549   int GetEdgeMapArrayStatus(const char* name)
00550     { return this->GetObjectStatus(EDGE_MAP, name); }
00551   void SetEdgeMapArrayStatus(const char* name, int flag)
00552     { this->SetObjectStatus(EDGE_MAP, name, flag); }
00553 
00554   int GetNumberOfFaceMapArrays()
00555     { return this->GetNumberOfObjects(FACE_MAP); }
00556   const char* GetFaceMapArrayName(int index)
00557     { return this->GetObjectName(FACE_MAP, index); }
00558   int GetFaceMapArrayStatus(const char* name)
00559     { return this->GetObjectStatus(FACE_MAP, name); }
00560   void SetFaceMapArrayStatus(const char* name, int flag)
00561     { this->SetObjectStatus(FACE_MAP, name, flag); }
00562 
00563   int GetNumberOfElementMapArrays()
00564     { return this->GetNumberOfObjects(ELEM_MAP); }
00565   const char* GetElementMapArrayName(int index)
00566     { return this->GetObjectName(ELEM_MAP, index); }
00567   int GetElementMapArrayStatus(const char* name)
00568     { return this->GetObjectStatus(ELEM_MAP, name); }
00569   void SetElementMapArrayStatus(const char* name, int flag)
00570     { this->SetObjectStatus(ELEM_MAP, name, flag); }
00571 
00572   int GetNumberOfNodeSetArrays()
00573     { return this->GetNumberOfObjects(NODE_SET); }
00574   const char* GetNodeSetArrayName(int index)
00575     { return this->GetObjectName(NODE_SET, index); }
00576   int GetNodeSetArrayStatus(const char* name)
00577     { return this->GetObjectStatus(NODE_SET, name); }
00578   void SetNodeSetArrayStatus(const char* name, int flag)
00579     { this->SetObjectStatus(NODE_SET, name, flag); }
00580 
00581   int GetNumberOfSideSetArrays()
00582     { return this->GetNumberOfObjects(SIDE_SET); }
00583   const char* GetSideSetArrayName(int index)
00584     { return this->GetObjectName(SIDE_SET, index); }
00585   int GetSideSetArrayStatus(const char* name)
00586     { return this->GetObjectStatus(SIDE_SET, name); }
00587   void SetSideSetArrayStatus(const char* name, int flag)
00588     { this->SetObjectStatus(SIDE_SET, name, flag); }
00589 
00590   int GetNumberOfEdgeSetArrays()
00591     { return this->GetNumberOfObjects(EDGE_SET); }
00592   const char* GetEdgeSetArrayName(int index)
00593     { return this->GetObjectName(EDGE_SET, index); }
00594   int GetEdgeSetArrayStatus(const char* name)
00595     { return this->GetObjectStatus(EDGE_SET, name); }
00596   void SetEdgeSetArrayStatus(const char* name, int flag)
00597     { this->SetObjectStatus(EDGE_SET, name, flag); }
00598 
00599   int GetNumberOfFaceSetArrays()
00600     { return this->GetNumberOfObjects(FACE_SET); }
00601   const char* GetFaceSetArrayName(int index)
00602     { return this->GetObjectName(FACE_SET, index); }
00603   int GetFaceSetArrayStatus(const char* name)
00604     { return this->GetObjectStatus(FACE_SET, name); }
00605   void SetFaceSetArrayStatus(const char* name, int flag)
00606     { this->SetObjectStatus(FACE_SET, name, flag); }
00607 
00608   int GetNumberOfElementSetArrays()
00609     { return this->GetNumberOfObjects(ELEM_SET); }
00610   const char* GetElementSetArrayName(int index)
00611     { return this->GetObjectName(ELEM_SET, index); }
00612   int GetElementSetArrayStatus(const char* name)
00613     { return this->GetObjectStatus(ELEM_SET, name); }
00614   void SetElementSetArrayStatus(const char* name, int flag)
00615     { this->SetObjectStatus(ELEM_SET, name, flag); }
00616 
00617 
00618   int GetNumberOfNodeSetResultArrays()
00619     { return this->GetNumberOfObjectArrays(NODE_SET); }
00620   const char* GetNodeSetResultArrayName(int index)
00621     { return this->GetObjectArrayName(NODE_SET, index); }
00622   int GetNodeSetResultArrayStatus(const char* name)
00623     { return this->GetObjectArrayStatus(NODE_SET, name); }
00624   void SetNodeSetResultArrayStatus(const char* name, int flag)
00625     { this->SetObjectArrayStatus(NODE_SET, name, flag); }
00626 
00627   int GetNumberOfSideSetResultArrays()
00628     { return this->GetNumberOfObjectArrays(SIDE_SET); }
00629   const char* GetSideSetResultArrayName(int index)
00630     { return this->GetObjectArrayName(SIDE_SET, index); }
00631   int GetSideSetResultArrayStatus(const char* name)
00632     { return this->GetObjectArrayStatus(SIDE_SET, name); }
00633   void SetSideSetResultArrayStatus(const char* name, int flag)
00634     { this->SetObjectArrayStatus(SIDE_SET, name, flag); }
00635 
00636   int GetNumberOfEdgeSetResultArrays()
00637     { return this->GetNumberOfObjectArrays(EDGE_SET); }
00638   const char* GetEdgeSetResultArrayName(int index)
00639     { return this->GetObjectArrayName(EDGE_SET, index); }
00640   int GetEdgeSetResultArrayStatus(const char* name)
00641     { return this->GetObjectArrayStatus(EDGE_SET, name); }
00642   void SetEdgeSetResultArrayStatus(const char* name, int flag)
00643     { this->SetObjectArrayStatus(EDGE_SET, name, flag); }
00644 
00645   int GetNumberOfFaceSetResultArrays()
00646     { return this->GetNumberOfObjectArrays(FACE_SET); }
00647   const char* GetFaceSetResultArrayName(int index)
00648     { return this->GetObjectArrayName(FACE_SET, index); }
00649   int GetFaceSetResultArrayStatus(const char* name)
00650     { return this->GetObjectArrayStatus(FACE_SET, name); }
00651   void SetFaceSetResultArrayStatus(const char* name, int flag)
00652     { this->SetObjectArrayStatus(FACE_SET, name, flag); }
00653 
00654   int GetNumberOfElementSetResultArrays()
00655     { return this->GetNumberOfObjectArrays(ELEM_SET); }
00656   const char* GetElementSetResultArrayName(int index)
00657     { return this->GetObjectArrayName(ELEM_SET, index); }
00658   int GetElementSetResultArrayStatus(const char* name)
00659     { return this->GetObjectArrayStatus(ELEM_SET, name); }
00660   void SetElementSetResultArrayStatus(const char* name, int flag)
00661     { this->SetObjectArrayStatus(ELEM_SET, name, flag); }
00662 
00667   void Reset();
00668 
00674   void ResetSettings();
00675 
00677   void ResetCache();
00678 
00680   void SetCacheSize(double CacheSize);
00681 
00683   double GetCacheSize();
00684 
00686 
00695   void SetSqueezePoints(bool sp);
00696   bool GetSqueezePoints();
00698 
00699 
00702   virtual void UpdateTimeInformation();
00703 
00704   virtual void Dump();
00705 
00708   vtkGraph* GetSIL();
00709 
00711 
00712   vtkGetMacro(SILUpdateStamp, int);
00714 
00715 protected:
00716   vtkExodusIIReader();
00717   ~vtkExodusIIReader();
00718 
00719   // helper for finding IDs
00720   static int GetIDHelper ( const char *arrayName, vtkDataSet *data, int localID, int searchType );
00721   static int GetGlobalID( const char *arrayName, vtkDataSet *data, int localID, int searchType );
00722 
00723   virtual void SetMetadata( vtkExodusIIReaderPrivate* );
00724   vtkGetObjectMacro(Metadata,vtkExodusIIReaderPrivate);
00725 
00731   bool FindXMLFile();
00732 
00733   // Time query function. Called by ExecuteInformation().
00734   // Fills the TimestepValues array.
00735   void GetAllTimes(vtkInformationVector*);
00736 
00738   void AdvertiseTimeSteps( vtkInformation* outputInfo );
00739 
00740   int ProcessRequest( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00741   int RequestInformation( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00742   int RequestData( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00743   //int RequestDataOverTime( vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00744 
00745   // Parameters for controlling what is read in.
00746   char* FileName;
00747   char* XMLFileName;
00748   int TimeStep;
00749   int TimeStepRange[2];
00750   vtkTimeStamp FileNameMTime;
00751   vtkTimeStamp XMLFileNameMTime;
00752 
00753   // Information specific for exodus files.
00754 
00755   //1=display Block names
00756   //2=display Part names
00757   //3=display Material names
00758   int DisplayType;
00759 
00760   // Metadata containing a description of the currently open file.
00761   vtkExodusIIReaderPrivate* Metadata;
00762 
00763   int SILUpdateStamp;
00764 private:
00765   vtkExodusIIReader(const vtkExodusIIReader&); // Not implemented
00766   void operator=(const vtkExodusIIReader&); // Not implemented
00767 
00768   void AddDisplacements(vtkUnstructuredGrid* output);
00769   int ModeShapesRange[2];
00770 };
00771 
00772 #endif