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