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 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