VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkExodusIIReader.h,v $ 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 vtkTypeRevisionMacro(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 00096 vtkGetVector2Macro(TimeStepRange,int); 00097 vtkSetVector2Macro(TimeStepRange,int); 00099 00101 00110 virtual void SetGenerateObjectIdCellArray( int g ); 00111 int GetGenerateObjectIdCellArray(); 00112 vtkBooleanMacro(GenerateObjectIdCellArray, int); 00113 static const char *GetObjectIdArrayName() { return "ObjectId"; } 00115 00116 virtual void SetGenerateGlobalElementIdArray( int g ); 00117 int GetGenerateGlobalElementIdArray(); 00118 vtkBooleanMacro(GenerateGlobalElementIdArray, int); 00119 00120 virtual void SetGenerateGlobalNodeIdArray( int g ); 00121 int GetGenerateGlobalNodeIdArray(); 00122 vtkBooleanMacro(GenerateGlobalNodeIdArray, int); 00123 00124 virtual void SetGenerateFileIdArray( int f ); 00125 int GetGenerateFileIdArray(); 00126 vtkBooleanMacro(GenerateFileIdArray, int); 00127 virtual void SetFileId( int f ); 00128 int GetFileId(); 00129 00131 00136 enum { 00137 SEARCH_TYPE_ELEMENT=0, 00138 SEARCH_TYPE_NODE, 00139 SEARCH_TYPE_ELEMENT_THEN_NODE, 00140 SEARCH_TYPE_NODE_THEN_ELEMENT, 00141 ID_NOT_FOUND=-234121312 00142 }; 00143 // NOTE: GetNumberOfObjectTypes must be updated whenever you add an entry to enum ObjectType {...} 00144 enum ObjectType { 00145 // match Exodus macros from exodusII.h and exodusII_ext.h 00146 EDGE_BLOCK = 6, 00147 FACE_BLOCK = 8, 00148 ELEM_BLOCK = 1, 00149 NODE_SET = 2, 00150 EDGE_SET = 7, 00151 FACE_SET = 9, 00152 SIDE_SET = 3, 00153 ELEM_SET = 10, 00154 NODE_MAP = 5, 00155 EDGE_MAP = 11, 00156 FACE_MAP = 12, 00157 ELEM_MAP = 4, 00158 GLOBAL = 13, 00159 NODAL = 14, 00160 // extended values (not in Exodus headers) for use with SetAllArrayStatus: 00161 ASSEMBLY = 60, 00162 PART = 61, 00163 MATERIAL = 62, 00164 HIERARCHY = 63, 00165 // extended values (not in Exodus headers) for use in cache keys: 00166 QA_RECORDS = 103, 00167 INFO_RECORDS = 104, 00168 GLOBAL_TEMPORAL = 102, 00169 NODAL_TEMPORAL = 101, 00170 ELEM_BLOCK_TEMPORAL = 100, 00171 GLOBAL_CONN = 99, 00172 ELEM_BLOCK_ELEM_CONN = 98, 00173 ELEM_BLOCK_FACE_CONN = 97, 00174 ELEM_BLOCK_EDGE_CONN = 96, 00175 FACE_BLOCK_CONN = 95, 00176 EDGE_BLOCK_CONN = 94, 00177 ELEM_SET_CONN = 93, 00178 SIDE_SET_CONN = 92, 00179 FACE_SET_CONN = 91, 00180 EDGE_SET_CONN = 90, 00181 NODE_SET_CONN = 89, 00182 NODAL_COORDS = 88, 00183 OBJECT_ID = 87, 00184 GLOBAL_ELEMENT_ID = 86, 00185 GLOBAL_NODE_ID = 85, 00186 ELEMENT_ID = 84, 00187 NODE_ID = 83, 00188 NODAL_SQUEEZEMAP = 82, 00189 ELEM_BLOCK_ATTRIB = 81, 00190 FACE_BLOCK_ATTRIB = 80, 00191 EDGE_BLOCK_ATTRIB = 79, 00192 FACE_ID = 105, 00193 EDGE_ID = 106 00194 }; 00196 enum DecorationType { 00197 NONE = 0, 00198 GLYPHS, 00199 CORNER_AVERAGED 00200 }; 00202 //ETX 00203 static const char* GetGlobalElementIdArrayName() { return "GlobalElementId"; } 00204 static const char* GetPedigreeElementIdArrayName() { return "PedigreeElementId"; } 00205 static int GetGlobalElementID( vtkDataSet *data, int localID ); 00206 static int GetGlobalElementID ( vtkDataSet *data, int localID, 00207 int searchType ); 00208 00209 static const char* GetGlobalFaceIdArrayName() { return "GlobalFaceId"; } 00210 static const char* GetPedigreeFaceIdArrayName() { return "PedigreeFaceId"; } 00211 static int GetGlobalFaceID( vtkDataSet *data, int localID ); 00212 static int GetGlobalFaceID ( vtkDataSet *data, int localID, 00213 int searchType ); 00214 00215 static const char* GetGlobalEdgeIdArrayName() { return "GlobalEdgeId"; } 00216 static const char* GetPedigreeEdgeIdArrayName() { return "PedigreeEdgeId"; } 00217 static int GetGlobalEdgeID( vtkDataSet *data, int localID ); 00218 static int GetGlobalEdgeID ( vtkDataSet *data, int localID, 00219 int searchType ); 00220 00222 00226 static const char* GetGlobalNodeIdArrayName() { return "GlobalNodeId"; } 00227 static const char* GetPedigreeNodeIdArrayName() { return "PedigreeNodeId"; } 00228 static int GetGlobalNodeID( vtkDataSet *data, int localID ); 00229 static int GetGlobalNodeID( vtkDataSet *data, int localID, 00230 int searchType ); 00232 00234 00238 virtual void SetApplyDisplacements( int d ); 00239 int GetApplyDisplacements(); 00240 vtkBooleanMacro(ApplyDisplacements, int); 00241 virtual void SetDisplacementMagnitude( float s ); 00242 float GetDisplacementMagnitude(); 00244 00246 00249 virtual void SetHasModeShapes( int ms ); 00250 int GetHasModeShapes(); 00251 vtkBooleanMacro(HasModeShapes,int); 00253 00255 00261 virtual void SetModeShapeTime( double phase ); 00262 double GetModeShapeTime(); 00264 00266 00267 virtual void SetEdgeFieldDecorations( int d ); 00268 int GetEdgeFieldDecorations(); 00269 void EdgeFieldDecorationsNone() { this->SetEdgeFieldDecorations( NONE ); } 00270 void EdgeFieldDecorationsGlyphs() { this->SetEdgeFieldDecorations( GLYPHS ); } 00271 void EdgeFieldDecorationsCornerAveraged() { this->SetEdgeFieldDecorations( CORNER_AVERAGED ); } 00273 00275 00276 virtual void SetFaceFieldDecorations( int d ); 00277 int GetFaceFieldDecorations(); 00278 void FaceFieldDecorationsNone() { this->SetFaceFieldDecorations( NONE ); } 00279 void FaceFieldDecorationsGlyphs() { this->SetFaceFieldDecorations( GLYPHS ); } 00280 void FaceFieldDecorationsCornerAveraged() { this->SetFaceFieldDecorations( CORNER_AVERAGED ); } 00282 00284 00285 const char* GetTitle(); 00286 int GetDimensionality(); 00287 int GetNumberOfTimeSteps(); 00289 00290 int GetNumberOfNodesInFile(); 00291 int GetNumberOfEdgesInFile(); 00292 int GetNumberOfFacesInFile(); 00293 int GetNumberOfElementsInFile(); 00294 00295 int GetObjectTypeFromName( const char* name ); 00296 const char* GetObjectTypeName( int ); 00297 00298 int GetNumberOfNodes(); 00299 int GetNumberOfObjects( int objectType ); 00300 int GetNumberOfEntriesInObject( int objectType, int objectIndex ); 00301 int GetObjectId( int objectType, int objectIndex ); 00302 const char* GetObjectName( int objectType, int objectIndex ); 00303 int GetObjectIndex( int objectType, const char* objectName ); 00304 int GetObjectIndex( int objectType, int id ); 00305 int GetObjectStatus( int objectType, int objectIndex ); 00306 int GetObjectStatus( int objectType, const char* objectName ) 00307 { return this->GetObjectStatus( objectType, this->GetObjectIndex( objectType, objectName ) ); } 00308 void SetObjectStatus( int objectType, int objectIndex, int status ); 00309 void SetObjectStatus( int objectType, const char* objectName, int status ); 00310 00312 00317 int GetNumberOfObjectArrays( int objectType ); 00318 const char* GetObjectArrayName( int objectType, int arrayIndex ); 00319 int GetObjectArrayIndex( int objectType, const char* arrayName ); 00320 int GetNumberOfObjectArrayComponents( int objectType, int arrayIndex ); 00321 int GetObjectArrayStatus( int objectType, int arrayIndex ); 00322 int GetObjectArrayStatus( int objectType, const char* arrayName ) 00323 { return this->GetObjectArrayStatus( objectType, this->GetObjectArrayIndex( objectType, arrayName ) ); } 00324 void SetObjectArrayStatus( int objectType, int arrayIndex, int status ); 00325 void SetObjectArrayStatus( int objectType, const char* arrayName, int status ); 00327 00329 00334 int GetNumberOfObjectAttributes( int objectType, int objectIndex ); 00335 const char* GetObjectAttributeName( int objectType, int objectIndex, int attribIndex ); 00336 int GetObjectAttributeIndex( int objectType, int objectIndex, const char* attribName ); 00337 int GetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex ); 00338 int GetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName ) 00339 { return this->GetObjectAttributeStatus( objectType, objectIndex, 00340 this->GetObjectAttributeIndex( objectType, objectIndex, attribName ) ); } 00341 void SetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex, int status ); 00342 void SetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName, int status ) 00343 { this->SetObjectAttributeStatus( objectType, objectIndex, 00344 this->GetObjectAttributeIndex( objectType, objectIndex, attribName ), status ); } 00346 00347 virtual vtkIdType GetTotalNumberOfNodes(); 00348 virtual vtkIdType GetTotalNumberOfEdges(); 00349 virtual vtkIdType GetTotalNumberOfFaces(); 00350 virtual vtkIdType GetTotalNumberOfElements(); 00351 00353 00357 int GetNumberOfPartArrays(); 00358 const char* GetPartArrayName(int arrayIdx); 00359 int GetPartArrayID( const char *name ); 00360 const char* GetPartBlockInfo(int arrayIdx); 00361 void SetPartArrayStatus(int index, int flag); 00362 void SetPartArrayStatus(const char*, int flag); 00363 int GetPartArrayStatus(int index); 00364 int GetPartArrayStatus(const char*); 00366 00367 00369 00373 int GetNumberOfMaterialArrays(); 00374 const char* GetMaterialArrayName(int arrayIdx); 00375 int GetMaterialArrayID( const char *name ); 00376 void SetMaterialArrayStatus(int index, int flag); 00377 void SetMaterialArrayStatus(const char*, int flag); 00378 int GetMaterialArrayStatus(int index); 00379 int GetMaterialArrayStatus(const char*); 00381 00383 00387 int GetNumberOfAssemblyArrays(); 00388 const char* GetAssemblyArrayName(int arrayIdx); 00389 int GetAssemblyArrayID( const char *name ); 00390 void SetAssemblyArrayStatus(int index, int flag); 00391 void SetAssemblyArrayStatus(const char*, int flag); 00392 int GetAssemblyArrayStatus(int index); 00393 int GetAssemblyArrayStatus(const char*); 00395 00397 00404 int GetNumberOfHierarchyArrays(); 00405 const char* GetHierarchyArrayName(int arrayIdx); 00406 void SetHierarchyArrayStatus(int index, int flag); 00407 void SetHierarchyArrayStatus(const char*, int flag); 00408 int GetHierarchyArrayStatus(int index); 00409 int GetHierarchyArrayStatus(const char*); 00411 00412 vtkGetMacro(DisplayType,int); 00413 virtual void SetDisplayType(int type); 00414 00420 vtkBooleanMacro(ExodusModelMetadata, int); 00421 vtkSetMacro(ExodusModelMetadata, int); 00422 vtkGetMacro(ExodusModelMetadata, int); 00423 00425 00426 vtkGetObjectMacro(ExodusModel,vtkExodusModel); 00428 00436 vtkSetMacro(PackExodusModelOntoOutput, int); 00437 vtkGetMacro(PackExodusModelOntoOutput, int); 00438 vtkBooleanMacro(PackExodusModelOntoOutput, int); 00439 00441 int IsValidVariable( const char *type, const char *name ); 00442 00444 int GetVariableID ( const char *type, const char *name ); 00445 00446 void SetAllArrayStatus( int otype, int status ); 00447 // Helper functions 00448 //static int StringsEqual(const char* s1, char* s2); 00449 //static void StringUppercase(const char* str, char* upperstr); 00450 //static char *StrDupWithNew(const char *s); 00451 00452 // time series query functions 00453 int GetTimeSeriesData( int ID, const char *vName, const char *vType, 00454 vtkFloatArray *result ); 00455 00456 00457 00458 int GetNumberOfEdgeBlockArrays() 00459 { return this->GetNumberOfObjects(EDGE_BLOCK); } 00460 const char* GetEdgeBlockArrayName(int index) 00461 { return this->GetObjectName(EDGE_BLOCK, index); } 00462 int GetEdgeBlockArrayStatus(const char* name) 00463 { return this->GetObjectStatus(EDGE_BLOCK, name); } 00464 void SetEdgeBlockArrayStatus(const char* name, int flag) 00465 { this->SetObjectStatus(EDGE_BLOCK, name, flag); } 00466 00467 int GetNumberOfFaceBlockArrays() 00468 { return this->GetNumberOfObjects(FACE_BLOCK); } 00469 const char* GetFaceBlockArrayName(int index) 00470 { return this->GetObjectName(FACE_BLOCK, index); } 00471 int GetFaceBlockArrayStatus(const char* name) 00472 { return this->GetObjectStatus(FACE_BLOCK, name); } 00473 void SetFaceBlockArrayStatus(const char* name, int flag) 00474 { this->SetObjectStatus(FACE_BLOCK, name, flag); } 00475 00476 int GetNumberOfElementBlockArrays() 00477 { return this->GetNumberOfObjects(ELEM_BLOCK); } 00478 const char* GetElementBlockArrayName(int index) 00479 { return this->GetObjectName(ELEM_BLOCK, index); } 00480 int GetElementBlockArrayStatus(const char* name) 00481 { return this->GetObjectStatus(ELEM_BLOCK, name); } 00482 void SetElementBlockArrayStatus(const char* name, int flag) 00483 { this->SetObjectStatus(ELEM_BLOCK, name, flag); } 00484 00485 int GetNumberOfGlobalResultArrays() 00486 { return this->GetNumberOfObjectArrays(GLOBAL); } 00487 const char* GetGlobalResultArrayName(int index) 00488 { return this->GetObjectArrayName(GLOBAL, index); } 00489 int GetGlobalResultArrayStatus(const char* name) 00490 { return this->GetObjectArrayStatus(GLOBAL, name); } 00491 void SetGlobalResultArrayStatus(const char* name, int flag) 00492 { this->SetObjectArrayStatus(GLOBAL, name, flag); } 00493 00494 int GetNumberOfPointResultArrays() 00495 { return this->GetNumberOfObjectArrays(NODAL); } 00496 const char* GetPointResultArrayName(int index) 00497 { return this->GetObjectArrayName(NODAL, index); } 00498 int GetPointResultArrayStatus(const char* name) 00499 { return this->GetObjectArrayStatus(NODAL, name); } 00500 void SetPointResultArrayStatus(const char* name, int flag) 00501 { this->SetObjectArrayStatus(NODAL, name, flag); } 00502 00503 int GetNumberOfEdgeResultArrays() 00504 { return this->GetNumberOfObjectArrays(EDGE_BLOCK); } 00505 const char* GetEdgeResultArrayName(int index) 00506 { return this->GetObjectArrayName(EDGE_BLOCK, index); } 00507 int GetEdgeResultArrayStatus(const char* name) 00508 { return this->GetObjectArrayStatus(EDGE_BLOCK, name); } 00509 void SetEdgeResultArrayStatus(const char* name, int flag) 00510 { this->SetObjectArrayStatus(EDGE_BLOCK, name, flag); } 00511 00512 int GetNumberOfFaceResultArrays() 00513 { return this->GetNumberOfObjectArrays(FACE_BLOCK); } 00514 const char* GetFaceResultArrayName(int index) 00515 { return this->GetObjectArrayName(FACE_BLOCK, index); } 00516 int GetFaceResultArrayStatus(const char* name) 00517 { return this->GetObjectArrayStatus(FACE_BLOCK, name); } 00518 void SetFaceResultArrayStatus(const char* name, int flag) 00519 { this->SetObjectArrayStatus(FACE_BLOCK, name, flag); } 00520 00521 int GetNumberOfElementResultArrays() 00522 { return this->GetNumberOfObjectArrays(ELEM_BLOCK); } 00523 const char* GetElementResultArrayName(int index) 00524 { return this->GetObjectArrayName(ELEM_BLOCK, index); } 00525 int GetElementResultArrayStatus(const char* name) 00526 { return this->GetObjectArrayStatus(ELEM_BLOCK, name); } 00527 void SetElementResultArrayStatus(const char* name, int flag) 00528 { this->SetObjectArrayStatus(ELEM_BLOCK, name, flag); } 00529 00530 00531 int GetNumberOfNodeMapArrays() 00532 { return this->GetNumberOfObjects(NODE_MAP); } 00533 const char* GetNodeMapArrayName(int index) 00534 { return this->GetObjectName(NODE_MAP, index); } 00535 int GetNodeMapArrayStatus(const char* name) 00536 { return this->GetObjectStatus(NODE_MAP, name); } 00537 void SetNodeMapArrayStatus(const char* name, int flag) 00538 { this->SetObjectStatus(NODE_MAP, name, flag); } 00539 00540 int GetNumberOfEdgeMapArrays() 00541 { return this->GetNumberOfObjects(EDGE_MAP); } 00542 const char* GetEdgeMapArrayName(int index) 00543 { return this->GetObjectName(EDGE_MAP, index); } 00544 int GetEdgeMapArrayStatus(const char* name) 00545 { return this->GetObjectStatus(EDGE_MAP, name); } 00546 void SetEdgeMapArrayStatus(const char* name, int flag) 00547 { this->SetObjectStatus(EDGE_MAP, name, flag); } 00548 00549 int GetNumberOfFaceMapArrays() 00550 { return this->GetNumberOfObjects(FACE_MAP); } 00551 const char* GetFaceMapArrayName(int index) 00552 { return this->GetObjectName(FACE_MAP, index); } 00553 int GetFaceMapArrayStatus(const char* name) 00554 { return this->GetObjectStatus(FACE_MAP, name); } 00555 void SetFaceMapArrayStatus(const char* name, int flag) 00556 { this->SetObjectStatus(FACE_MAP, name, flag); } 00557 00558 int GetNumberOfElementMapArrays() 00559 { return this->GetNumberOfObjects(ELEM_MAP); } 00560 const char* GetElementMapArrayName(int index) 00561 { return this->GetObjectName(ELEM_MAP, index); } 00562 int GetElementMapArrayStatus(const char* name) 00563 { return this->GetObjectStatus(ELEM_MAP, name); } 00564 void SetElementMapArrayStatus(const char* name, int flag) 00565 { this->SetObjectStatus(ELEM_MAP, name, flag); } 00566 00567 int GetNumberOfNodeSetArrays() 00568 { return this->GetNumberOfObjects(NODE_SET); } 00569 const char* GetNodeSetArrayName(int index) 00570 { return this->GetObjectName(NODE_SET, index); } 00571 int GetNodeSetArrayStatus(const char* name) 00572 { return this->GetObjectStatus(NODE_SET, name); } 00573 void SetNodeSetArrayStatus(const char* name, int flag) 00574 { this->SetObjectStatus(NODE_SET, name, flag); } 00575 00576 int GetNumberOfSideSetArrays() 00577 { return this->GetNumberOfObjects(SIDE_SET); } 00578 const char* GetSideSetArrayName(int index) 00579 { return this->GetObjectName(SIDE_SET, index); } 00580 int GetSideSetArrayStatus(const char* name) 00581 { return this->GetObjectStatus(SIDE_SET, name); } 00582 void SetSideSetArrayStatus(const char* name, int flag) 00583 { this->SetObjectStatus(SIDE_SET, name, flag); } 00584 00585 int GetNumberOfEdgeSetArrays() 00586 { return this->GetNumberOfObjects(EDGE_SET); } 00587 const char* GetEdgeSetArrayName(int index) 00588 { return this->GetObjectName(EDGE_SET, index); } 00589 int GetEdgeSetArrayStatus(const char* name) 00590 { return this->GetObjectStatus(EDGE_SET, name); } 00591 void SetEdgeSetArrayStatus(const char* name, int flag) 00592 { this->SetObjectStatus(EDGE_SET, name, flag); } 00593 00594 int GetNumberOfFaceSetArrays() 00595 { return this->GetNumberOfObjects(FACE_SET); } 00596 const char* GetFaceSetArrayName(int index) 00597 { return this->GetObjectName(FACE_SET, index); } 00598 int GetFaceSetArrayStatus(const char* name) 00599 { return this->GetObjectStatus(FACE_SET, name); } 00600 void SetFaceSetArrayStatus(const char* name, int flag) 00601 { this->SetObjectStatus(FACE_SET, name, flag); } 00602 00603 int GetNumberOfElementSetArrays() 00604 { return this->GetNumberOfObjects(ELEM_SET); } 00605 const char* GetElementSetArrayName(int index) 00606 { return this->GetObjectName(ELEM_SET, index); } 00607 int GetElementSetArrayStatus(const char* name) 00608 { return this->GetObjectStatus(ELEM_SET, name); } 00609 void SetElementSetArrayStatus(const char* name, int flag) 00610 { this->SetObjectStatus(ELEM_SET, name, flag); } 00611 00612 00613 int GetNumberOfNodeSetResultArrays() 00614 { return this->GetNumberOfObjectArrays(NODE_SET); } 00615 const char* GetNodeSetResultArrayName(int index) 00616 { return this->GetObjectArrayName(NODE_SET, index); } 00617 int GetNodeSetResultArrayStatus(const char* name) 00618 { return this->GetObjectArrayStatus(NODE_SET, name); } 00619 void SetNodeSetResultArrayStatus(const char* name, int flag) 00620 { this->SetObjectArrayStatus(NODE_SET, name, flag); } 00621 00622 int GetNumberOfSideSetResultArrays() 00623 { return this->GetNumberOfObjectArrays(SIDE_SET); } 00624 const char* GetSideSetResultArrayName(int index) 00625 { return this->GetObjectArrayName(SIDE_SET, index); } 00626 int GetSideSetResultArrayStatus(const char* name) 00627 { return this->GetObjectArrayStatus(SIDE_SET, name); } 00628 void SetSideSetResultArrayStatus(const char* name, int flag) 00629 { this->SetObjectArrayStatus(SIDE_SET, name, flag); } 00630 00631 int GetNumberOfEdgeSetResultArrays() 00632 { return this->GetNumberOfObjectArrays(EDGE_SET); } 00633 const char* GetEdgeSetResultArrayName(int index) 00634 { return this->GetObjectArrayName(EDGE_SET, index); } 00635 int GetEdgeSetResultArrayStatus(const char* name) 00636 { return this->GetObjectArrayStatus(EDGE_SET, name); } 00637 void SetEdgeSetResultArrayStatus(const char* name, int flag) 00638 { this->SetObjectArrayStatus(EDGE_SET, name, flag); } 00639 00640 int GetNumberOfFaceSetResultArrays() 00641 { return this->GetNumberOfObjectArrays(FACE_SET); } 00642 const char* GetFaceSetResultArrayName(int index) 00643 { return this->GetObjectArrayName(FACE_SET, index); } 00644 int GetFaceSetResultArrayStatus(const char* name) 00645 { return this->GetObjectArrayStatus(FACE_SET, name); } 00646 void SetFaceSetResultArrayStatus(const char* name, int flag) 00647 { this->SetObjectArrayStatus(FACE_SET, name, flag); } 00648 00649 int GetNumberOfElementSetResultArrays() 00650 { return this->GetNumberOfObjectArrays(ELEM_SET); } 00651 const char* GetElementSetResultArrayName(int index) 00652 { return this->GetObjectArrayName(ELEM_SET, index); } 00653 int GetElementSetResultArrayStatus(const char* name) 00654 { return this->GetObjectArrayStatus(ELEM_SET, name); } 00655 void SetElementSetResultArrayStatus(const char* name, int flag) 00656 { this->SetObjectArrayStatus(ELEM_SET, name, flag); } 00657 00670 00671 00674 void SetFastPathObjectType(const char *type); 00675 // Description: 00676 // Possible argument values: "INDEX","GLOBAL" 00677 // "GLOBAL" means the id refers to a global id 00678 // "INDEX" means the id refers to an index into the VTK array 00679 void SetFastPathIdType(const char *type); 00680 void SetFastPathObjectId(vtkIdType id); 00682 00683 00688 void Reset(); 00689 00695 void ResetSettings(); 00696 00698 void ResetCache(); 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 00721 virtual void NewExodusModel(); 00722 00723 // helper for finding IDs 00724 static int GetIDHelper ( const char *arrayName, vtkDataSet *data, int localID, int searchType ); 00725 static int GetGlobalID( const char *arrayName, vtkDataSet *data, int localID, int searchType ); 00726 00727 virtual void SetMetadata( vtkExodusIIReaderPrivate* ); 00728 vtkGetObjectMacro(Metadata,vtkExodusIIReaderPrivate); 00729 00735 bool FindXMLFile(); 00736 00737 // Time query function. Called by ExecuteInformation(). 00738 // Fills the TimestepValues array. 00739 void GetAllTimes(vtkInformationVector*); 00740 00742 void AdvertiseTimeSteps( vtkInformation* outputInfo ); 00743 00744 virtual void SetExodusModel( vtkExodusModel* em ); 00745 00746 int ProcessRequest( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00747 int RequestInformation( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00748 int RequestData( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00749 //int RequestDataOverTime( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00750 00751 // Parameters for controlling what is read in. 00752 char* FileName; 00753 char* XMLFileName; 00754 int TimeStep; 00755 int TimeStepRange[2]; 00756 vtkTimeStamp FileNameMTime; 00757 vtkTimeStamp XMLFileNameMTime; 00758 00759 // Information specific for exodus files. 00760 00761 //1=display Block names 00762 //2=display Part names 00763 //3=display Material names 00764 int DisplayType; 00765 00766 // Metadata containing a description of the currently open file. 00767 vtkExodusIIReaderPrivate* Metadata; 00768 00769 vtkExodusModel *ExodusModel; 00770 int PackExodusModelOntoOutput; 00771 int ExodusModelMetadata; 00772 00773 int SILUpdateStamp; 00774 00775 private: 00776 vtkExodusIIReader(const vtkExodusIIReader&); // Not implemented 00777 void operator=(const vtkExodusIIReader&); // Not implemented 00778 00779 void AddDisplacements(vtkUnstructuredGrid* output); 00780 }; 00781 00782 #endif