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