VTK
|
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 00255 static const char* GetSideSetSourceElementIdArrayName() { return "SourceElementId"; } 00256 00259 static const char* GetSideSetSourceElementSideArrayName() { return "SourceElementSide"; } 00261 00265 virtual void SetApplyDisplacements( int d ); 00266 int GetApplyDisplacements(); 00267 vtkBooleanMacro(ApplyDisplacements, int); 00268 virtual void SetDisplacementMagnitude( float s ); 00269 float GetDisplacementMagnitude(); 00271 00273 00276 virtual void SetHasModeShapes( int ms ); 00277 int GetHasModeShapes(); 00278 vtkBooleanMacro(HasModeShapes,int); 00280 00282 00288 virtual void SetModeShapeTime( double phase ); 00289 double GetModeShapeTime(); 00291 00293 00298 virtual void SetAnimateModeShapes(int flag); 00299 int GetAnimateModeShapes(); 00300 vtkBooleanMacro(AnimateModeShapes, int); 00302 00304 00305 const char* GetTitle(); 00306 int GetDimensionality(); 00307 int GetNumberOfTimeSteps(); 00309 00310 int GetNumberOfNodesInFile(); 00311 int GetNumberOfEdgesInFile(); 00312 int GetNumberOfFacesInFile(); 00313 int GetNumberOfElementsInFile(); 00314 00315 int GetObjectTypeFromName( const char* name ); 00316 const char* GetObjectTypeName( int ); 00317 00318 int GetNumberOfNodes(); 00319 int GetNumberOfObjects( int objectType ); 00320 int GetNumberOfEntriesInObject( int objectType, int objectIndex ); 00321 int GetObjectId( int objectType, int objectIndex ); 00322 const char* GetObjectName( int objectType, int objectIndex ); 00323 int GetObjectIndex( int objectType, const char* objectName ); 00324 int GetObjectIndex( int objectType, int id ); 00325 int GetObjectStatus( int objectType, int objectIndex ); 00326 int GetObjectStatus( int objectType, const char* objectName ) 00327 { return this->GetObjectStatus( objectType, this->GetObjectIndex( objectType, objectName ) ); } 00328 void SetObjectStatus( int objectType, int objectIndex, int status ); 00329 void SetObjectStatus( int objectType, const char* objectName, int status ); 00330 00332 00337 int GetNumberOfObjectArrays( int objectType ); 00338 const char* GetObjectArrayName( int objectType, int arrayIndex ); 00339 int GetObjectArrayIndex( int objectType, const char* arrayName ); 00340 int GetNumberOfObjectArrayComponents( int objectType, int arrayIndex ); 00341 int GetObjectArrayStatus( int objectType, int arrayIndex ); 00342 int GetObjectArrayStatus( int objectType, const char* arrayName ) 00343 { return this->GetObjectArrayStatus( objectType, this->GetObjectArrayIndex( objectType, arrayName ) ); } 00344 void SetObjectArrayStatus( int objectType, int arrayIndex, int status ); 00345 void SetObjectArrayStatus( int objectType, const char* arrayName, int status ); 00347 00349 00354 int GetNumberOfObjectAttributes( int objectType, int objectIndex ); 00355 const char* GetObjectAttributeName( int objectType, int objectIndex, int attribIndex ); 00356 int GetObjectAttributeIndex( int objectType, int objectIndex, const char* attribName ); 00357 int GetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex ); 00358 int GetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName ) 00359 { return this->GetObjectAttributeStatus( objectType, objectIndex, 00360 this->GetObjectAttributeIndex( objectType, objectIndex, attribName ) ); } 00361 void SetObjectAttributeStatus( int objectType, int objectIndex, int attribIndex, int status ); 00362 void SetObjectAttributeStatus( int objectType, int objectIndex, const char* attribName, int status ) 00363 { this->SetObjectAttributeStatus( objectType, objectIndex, 00364 this->GetObjectAttributeIndex( objectType, objectIndex, attribName ), status ); } 00366 00367 virtual vtkIdType GetTotalNumberOfNodes(); 00368 virtual vtkIdType GetTotalNumberOfEdges(); 00369 virtual vtkIdType GetTotalNumberOfFaces(); 00370 virtual vtkIdType GetTotalNumberOfElements(); 00371 00373 00377 int GetNumberOfPartArrays(); 00378 const char* GetPartArrayName(int arrayIdx); 00379 int GetPartArrayID( const char *name ); 00380 const char* GetPartBlockInfo(int arrayIdx); 00381 void SetPartArrayStatus(int index, int flag); 00382 void SetPartArrayStatus(const char*, int flag); 00383 int GetPartArrayStatus(int index); 00384 int GetPartArrayStatus(const char*); 00386 00387 00389 00393 int GetNumberOfMaterialArrays(); 00394 const char* GetMaterialArrayName(int arrayIdx); 00395 int GetMaterialArrayID( const char *name ); 00396 void SetMaterialArrayStatus(int index, int flag); 00397 void SetMaterialArrayStatus(const char*, int flag); 00398 int GetMaterialArrayStatus(int index); 00399 int GetMaterialArrayStatus(const char*); 00401 00403 00407 int GetNumberOfAssemblyArrays(); 00408 const char* GetAssemblyArrayName(int arrayIdx); 00409 int GetAssemblyArrayID( const char *name ); 00410 void SetAssemblyArrayStatus(int index, int flag); 00411 void SetAssemblyArrayStatus(const char*, int flag); 00412 int GetAssemblyArrayStatus(int index); 00413 int GetAssemblyArrayStatus(const char*); 00415 00417 00424 int GetNumberOfHierarchyArrays(); 00425 const char* GetHierarchyArrayName(int arrayIdx); 00426 void SetHierarchyArrayStatus(int index, int flag); 00427 void SetHierarchyArrayStatus(const char*, int flag); 00428 int GetHierarchyArrayStatus(int index); 00429 int GetHierarchyArrayStatus(const char*); 00431 00432 vtkGetMacro(DisplayType,int); 00433 virtual void SetDisplayType(int type); 00434 00440 vtkBooleanMacro(ExodusModelMetadata, int); 00441 vtkSetMacro(ExodusModelMetadata, int); 00442 vtkGetMacro(ExodusModelMetadata, int); 00443 00445 00446 vtkGetObjectMacro(ExodusModel,vtkExodusModel); 00448 00456 vtkSetMacro(PackExodusModelOntoOutput, int); 00457 vtkGetMacro(PackExodusModelOntoOutput, int); 00458 vtkBooleanMacro(PackExodusModelOntoOutput, int); 00459 00461 int IsValidVariable( const char *type, const char *name ); 00462 00464 int GetVariableID ( const char *type, const char *name ); 00465 00466 void SetAllArrayStatus( int otype, int status ); 00467 // Helper functions 00468 //static int StringsEqual(const char* s1, char* s2); 00469 //static void StringUppercase(const char* str, char* upperstr); 00470 //static char *StrDupWithNew(const char *s); 00471 00472 // time series query functions 00473 int GetTimeSeriesData( int ID, const char *vName, const char *vType, 00474 vtkFloatArray *result ); 00475 00476 00477 00478 int GetNumberOfEdgeBlockArrays() 00479 { return this->GetNumberOfObjects(EDGE_BLOCK); } 00480 const char* GetEdgeBlockArrayName(int index) 00481 { return this->GetObjectName(EDGE_BLOCK, index); } 00482 int GetEdgeBlockArrayStatus(const char* name) 00483 { return this->GetObjectStatus(EDGE_BLOCK, name); } 00484 void SetEdgeBlockArrayStatus(const char* name, int flag) 00485 { this->SetObjectStatus(EDGE_BLOCK, name, flag); } 00486 00487 int GetNumberOfFaceBlockArrays() 00488 { return this->GetNumberOfObjects(FACE_BLOCK); } 00489 const char* GetFaceBlockArrayName(int index) 00490 { return this->GetObjectName(FACE_BLOCK, index); } 00491 int GetFaceBlockArrayStatus(const char* name) 00492 { return this->GetObjectStatus(FACE_BLOCK, name); } 00493 void SetFaceBlockArrayStatus(const char* name, int flag) 00494 { this->SetObjectStatus(FACE_BLOCK, name, flag); } 00495 00496 int GetNumberOfElementBlockArrays() 00497 { return this->GetNumberOfObjects(ELEM_BLOCK); } 00498 const char* GetElementBlockArrayName(int index) 00499 { return this->GetObjectName(ELEM_BLOCK, index); } 00500 int GetElementBlockArrayStatus(const char* name) 00501 { return this->GetObjectStatus(ELEM_BLOCK, name); } 00502 void SetElementBlockArrayStatus(const char* name, int flag) 00503 { this->SetObjectStatus(ELEM_BLOCK, name, flag); } 00504 00505 int GetNumberOfGlobalResultArrays() 00506 { return this->GetNumberOfObjectArrays(GLOBAL); } 00507 const char* GetGlobalResultArrayName(int index) 00508 { return this->GetObjectArrayName(GLOBAL, index); } 00509 int GetGlobalResultArrayStatus(const char* name) 00510 { return this->GetObjectArrayStatus(GLOBAL, name); } 00511 void SetGlobalResultArrayStatus(const char* name, int flag) 00512 { this->SetObjectArrayStatus(GLOBAL, name, flag); } 00513 00514 int GetNumberOfPointResultArrays() 00515 { return this->GetNumberOfObjectArrays(NODAL); } 00516 const char* GetPointResultArrayName(int index) 00517 { return this->GetObjectArrayName(NODAL, index); } 00518 int GetPointResultArrayStatus(const char* name) 00519 { return this->GetObjectArrayStatus(NODAL, name); } 00520 void SetPointResultArrayStatus(const char* name, int flag) 00521 { this->SetObjectArrayStatus(NODAL, name, flag); } 00522 00523 int GetNumberOfEdgeResultArrays() 00524 { return this->GetNumberOfObjectArrays(EDGE_BLOCK); } 00525 const char* GetEdgeResultArrayName(int index) 00526 { return this->GetObjectArrayName(EDGE_BLOCK, index); } 00527 int GetEdgeResultArrayStatus(const char* name) 00528 { return this->GetObjectArrayStatus(EDGE_BLOCK, name); } 00529 void SetEdgeResultArrayStatus(const char* name, int flag) 00530 { this->SetObjectArrayStatus(EDGE_BLOCK, name, flag); } 00531 00532 int GetNumberOfFaceResultArrays() 00533 { return this->GetNumberOfObjectArrays(FACE_BLOCK); } 00534 const char* GetFaceResultArrayName(int index) 00535 { return this->GetObjectArrayName(FACE_BLOCK, index); } 00536 int GetFaceResultArrayStatus(const char* name) 00537 { return this->GetObjectArrayStatus(FACE_BLOCK, name); } 00538 void SetFaceResultArrayStatus(const char* name, int flag) 00539 { this->SetObjectArrayStatus(FACE_BLOCK, name, flag); } 00540 00541 int GetNumberOfElementResultArrays() 00542 { return this->GetNumberOfObjectArrays(ELEM_BLOCK); } 00543 const char* GetElementResultArrayName(int index) 00544 { return this->GetObjectArrayName(ELEM_BLOCK, index); } 00545 int GetElementResultArrayStatus(const char* name) 00546 { return this->GetObjectArrayStatus(ELEM_BLOCK, name); } 00547 void SetElementResultArrayStatus(const char* name, int flag) 00548 { this->SetObjectArrayStatus(ELEM_BLOCK, name, flag); } 00549 00550 00551 int GetNumberOfNodeMapArrays() 00552 { return this->GetNumberOfObjects(NODE_MAP); } 00553 const char* GetNodeMapArrayName(int index) 00554 { return this->GetObjectName(NODE_MAP, index); } 00555 int GetNodeMapArrayStatus(const char* name) 00556 { return this->GetObjectStatus(NODE_MAP, name); } 00557 void SetNodeMapArrayStatus(const char* name, int flag) 00558 { this->SetObjectStatus(NODE_MAP, name, flag); } 00559 00560 int GetNumberOfEdgeMapArrays() 00561 { return this->GetNumberOfObjects(EDGE_MAP); } 00562 const char* GetEdgeMapArrayName(int index) 00563 { return this->GetObjectName(EDGE_MAP, index); } 00564 int GetEdgeMapArrayStatus(const char* name) 00565 { return this->GetObjectStatus(EDGE_MAP, name); } 00566 void SetEdgeMapArrayStatus(const char* name, int flag) 00567 { this->SetObjectStatus(EDGE_MAP, name, flag); } 00568 00569 int GetNumberOfFaceMapArrays() 00570 { return this->GetNumberOfObjects(FACE_MAP); } 00571 const char* GetFaceMapArrayName(int index) 00572 { return this->GetObjectName(FACE_MAP, index); } 00573 int GetFaceMapArrayStatus(const char* name) 00574 { return this->GetObjectStatus(FACE_MAP, name); } 00575 void SetFaceMapArrayStatus(const char* name, int flag) 00576 { this->SetObjectStatus(FACE_MAP, name, flag); } 00577 00578 int GetNumberOfElementMapArrays() 00579 { return this->GetNumberOfObjects(ELEM_MAP); } 00580 const char* GetElementMapArrayName(int index) 00581 { return this->GetObjectName(ELEM_MAP, index); } 00582 int GetElementMapArrayStatus(const char* name) 00583 { return this->GetObjectStatus(ELEM_MAP, name); } 00584 void SetElementMapArrayStatus(const char* name, int flag) 00585 { this->SetObjectStatus(ELEM_MAP, name, flag); } 00586 00587 int GetNumberOfNodeSetArrays() 00588 { return this->GetNumberOfObjects(NODE_SET); } 00589 const char* GetNodeSetArrayName(int index) 00590 { return this->GetObjectName(NODE_SET, index); } 00591 int GetNodeSetArrayStatus(const char* name) 00592 { return this->GetObjectStatus(NODE_SET, name); } 00593 void SetNodeSetArrayStatus(const char* name, int flag) 00594 { this->SetObjectStatus(NODE_SET, name, flag); } 00595 00596 int GetNumberOfSideSetArrays() 00597 { return this->GetNumberOfObjects(SIDE_SET); } 00598 const char* GetSideSetArrayName(int index) 00599 { return this->GetObjectName(SIDE_SET, index); } 00600 int GetSideSetArrayStatus(const char* name) 00601 { return this->GetObjectStatus(SIDE_SET, name); } 00602 void SetSideSetArrayStatus(const char* name, int flag) 00603 { this->SetObjectStatus(SIDE_SET, name, flag); } 00604 00605 int GetNumberOfEdgeSetArrays() 00606 { return this->GetNumberOfObjects(EDGE_SET); } 00607 const char* GetEdgeSetArrayName(int index) 00608 { return this->GetObjectName(EDGE_SET, index); } 00609 int GetEdgeSetArrayStatus(const char* name) 00610 { return this->GetObjectStatus(EDGE_SET, name); } 00611 void SetEdgeSetArrayStatus(const char* name, int flag) 00612 { this->SetObjectStatus(EDGE_SET, name, flag); } 00613 00614 int GetNumberOfFaceSetArrays() 00615 { return this->GetNumberOfObjects(FACE_SET); } 00616 const char* GetFaceSetArrayName(int index) 00617 { return this->GetObjectName(FACE_SET, index); } 00618 int GetFaceSetArrayStatus(const char* name) 00619 { return this->GetObjectStatus(FACE_SET, name); } 00620 void SetFaceSetArrayStatus(const char* name, int flag) 00621 { this->SetObjectStatus(FACE_SET, name, flag); } 00622 00623 int GetNumberOfElementSetArrays() 00624 { return this->GetNumberOfObjects(ELEM_SET); } 00625 const char* GetElementSetArrayName(int index) 00626 { return this->GetObjectName(ELEM_SET, index); } 00627 int GetElementSetArrayStatus(const char* name) 00628 { return this->GetObjectStatus(ELEM_SET, name); } 00629 void SetElementSetArrayStatus(const char* name, int flag) 00630 { this->SetObjectStatus(ELEM_SET, name, flag); } 00631 00632 00633 int GetNumberOfNodeSetResultArrays() 00634 { return this->GetNumberOfObjectArrays(NODE_SET); } 00635 const char* GetNodeSetResultArrayName(int index) 00636 { return this->GetObjectArrayName(NODE_SET, index); } 00637 int GetNodeSetResultArrayStatus(const char* name) 00638 { return this->GetObjectArrayStatus(NODE_SET, name); } 00639 void SetNodeSetResultArrayStatus(const char* name, int flag) 00640 { this->SetObjectArrayStatus(NODE_SET, name, flag); } 00641 00642 int GetNumberOfSideSetResultArrays() 00643 { return this->GetNumberOfObjectArrays(SIDE_SET); } 00644 const char* GetSideSetResultArrayName(int index) 00645 { return this->GetObjectArrayName(SIDE_SET, index); } 00646 int GetSideSetResultArrayStatus(const char* name) 00647 { return this->GetObjectArrayStatus(SIDE_SET, name); } 00648 void SetSideSetResultArrayStatus(const char* name, int flag) 00649 { this->SetObjectArrayStatus(SIDE_SET, name, flag); } 00650 00651 int GetNumberOfEdgeSetResultArrays() 00652 { return this->GetNumberOfObjectArrays(EDGE_SET); } 00653 const char* GetEdgeSetResultArrayName(int index) 00654 { return this->GetObjectArrayName(EDGE_SET, index); } 00655 int GetEdgeSetResultArrayStatus(const char* name) 00656 { return this->GetObjectArrayStatus(EDGE_SET, name); } 00657 void SetEdgeSetResultArrayStatus(const char* name, int flag) 00658 { this->SetObjectArrayStatus(EDGE_SET, name, flag); } 00659 00660 int GetNumberOfFaceSetResultArrays() 00661 { return this->GetNumberOfObjectArrays(FACE_SET); } 00662 const char* GetFaceSetResultArrayName(int index) 00663 { return this->GetObjectArrayName(FACE_SET, index); } 00664 int GetFaceSetResultArrayStatus(const char* name) 00665 { return this->GetObjectArrayStatus(FACE_SET, name); } 00666 void SetFaceSetResultArrayStatus(const char* name, int flag) 00667 { this->SetObjectArrayStatus(FACE_SET, name, flag); } 00668 00669 int GetNumberOfElementSetResultArrays() 00670 { return this->GetNumberOfObjectArrays(ELEM_SET); } 00671 const char* GetElementSetResultArrayName(int index) 00672 { return this->GetObjectArrayName(ELEM_SET, index); } 00673 int GetElementSetResultArrayStatus(const char* name) 00674 { return this->GetObjectArrayStatus(ELEM_SET, name); } 00675 void SetElementSetResultArrayStatus(const char* name, int flag) 00676 { this->SetObjectArrayStatus(ELEM_SET, name, flag); } 00677 00693 void SetFastPathObjectType(const char *type); 00695 00698 void SetFastPathIdType(const char *type); 00699 void SetFastPathObjectId(vtkIdType id); 00701 00702 00707 void Reset(); 00708 00714 void ResetSettings(); 00715 00717 void ResetCache(); 00718 00720 void SetCacheSize(double CacheSize); 00721 00723 double GetCacheSize(); 00724 00726 00735 void SetSqueezePoints(bool sp); 00736 bool GetSqueezePoints(); 00738 00739 00742 virtual void UpdateTimeInformation(); 00743 00744 virtual void Dump(); 00745 00748 vtkGraph* GetSIL(); 00749 00751 00752 vtkGetMacro(SILUpdateStamp, int); 00754 00756 00758 vtkGetMacro(ProducedFastPathOutput, bool); 00760 00761 protected: 00762 vtkExodusIIReader(); 00763 ~vtkExodusIIReader(); 00764 00767 virtual void NewExodusModel(); 00768 00769 // helper for finding IDs 00770 static int GetIDHelper ( const char *arrayName, vtkDataSet *data, int localID, int searchType ); 00771 static int GetGlobalID( const char *arrayName, vtkDataSet *data, int localID, int searchType ); 00772 00773 virtual void SetMetadata( vtkExodusIIReaderPrivate* ); 00774 vtkGetObjectMacro(Metadata,vtkExodusIIReaderPrivate); 00775 00781 bool FindXMLFile(); 00782 00783 // Time query function. Called by ExecuteInformation(). 00784 // Fills the TimestepValues array. 00785 void GetAllTimes(vtkInformationVector*); 00786 00788 void AdvertiseTimeSteps( vtkInformation* outputInfo ); 00789 00790 virtual void SetExodusModel( vtkExodusModel* em ); 00791 00792 int ProcessRequest( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00793 int RequestInformation( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00794 int RequestData( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00795 //int RequestDataOverTime( vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00796 00797 // Parameters for controlling what is read in. 00798 char* FileName; 00799 char* XMLFileName; 00800 int TimeStep; 00801 int TimeStepRange[2]; 00802 vtkTimeStamp FileNameMTime; 00803 vtkTimeStamp XMLFileNameMTime; 00804 00805 // Information specific for exodus files. 00806 00807 //1=display Block names 00808 //2=display Part names 00809 //3=display Material names 00810 int DisplayType; 00811 00812 // Metadata containing a description of the currently open file. 00813 vtkExodusIIReaderPrivate* Metadata; 00814 00815 vtkExodusModel *ExodusModel; 00816 int PackExodusModelOntoOutput; 00817 int ExodusModelMetadata; 00818 00819 int SILUpdateStamp; 00820 bool ProducedFastPathOutput; 00821 private: 00822 vtkExodusIIReader(const vtkExodusIIReader&); // Not implemented 00823 void operator=(const vtkExodusIIReader&); // Not implemented 00824 00825 void AddDisplacements(vtkUnstructuredGrid* output); 00826 }; 00827 00828 #endif