1*59599516SKenneth E. Jansen /*========================================================================= 2*59599516SKenneth E. Jansen 3*59599516SKenneth E. Jansen Program: Visualization Toolkit 4*59599516SKenneth E. Jansen Module: $RCSfile: vtkPhastaReader.h,v $ 5*59599516SKenneth E. Jansen 6*59599516SKenneth E. Jansen Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 7*59599516SKenneth E. Jansen All rights reserved. 8*59599516SKenneth E. Jansen See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 9*59599516SKenneth E. Jansen 10*59599516SKenneth E. Jansen This software is distributed WITHOUT ANY WARRANTY; without even 11*59599516SKenneth E. Jansen the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 12*59599516SKenneth E. Jansen PURPOSE. See the above copyright notice for more information. 13*59599516SKenneth E. Jansen 14*59599516SKenneth E. Jansen =========================================================================*/ 15*59599516SKenneth E. Jansen // .NAME vtkPhastaReader - Reader for RPI's PHASTA software 16*59599516SKenneth E. Jansen // .SECTION Description 17*59599516SKenneth E. Jansen // vtkPhastaReader reads RPI's Scorec's PHASTA (Parallel Hierarchic 18*59599516SKenneth E. Jansen // Adaptive Stabilized Transient Analysis) dumps. See 19*59599516SKenneth E. Jansen // http://www.scorec.rpi.edu/software_products.html or contact Scorec for 20*59599516SKenneth E. Jansen // information on PHASTA. 21*59599516SKenneth E. Jansen 22*59599516SKenneth E. Jansen #ifndef __vtkPhastaReader_h 23*59599516SKenneth E. Jansen #define __vtkPhastaReader_h 24*59599516SKenneth E. Jansen 25*59599516SKenneth E. Jansen #include "vtkUnstructuredGridAlgorithm.h" 26*59599516SKenneth E. Jansen #include "vtkPPhastaReader.h" 27*59599516SKenneth E. Jansen 28*59599516SKenneth E. Jansen class vtkUnstructuredGrid; 29*59599516SKenneth E. Jansen class vtkPoints; 30*59599516SKenneth E. Jansen class vtkDataSetAttributes; 31*59599516SKenneth E. Jansen class vtkInformationVector; 32*59599516SKenneth E. Jansen 33*59599516SKenneth E. Jansen ///////////////////// 34*59599516SKenneth E. Jansen class vtkPVXMLParser; 35*59599516SKenneth E. Jansen class vtkPhastaReader; 36*59599516SKenneth E. Jansen ////////////////////// 37*59599516SKenneth E. Jansen 38*59599516SKenneth E. Jansen //BTX 39*59599516SKenneth E. Jansen struct vtkPhastaReaderInternal; 40*59599516SKenneth E. Jansen //ETX 41*59599516SKenneth E. Jansen 42*59599516SKenneth E. Jansen class VTK_EXPORT vtkPhastaReader : public vtkUnstructuredGridAlgorithm 43*59599516SKenneth E. Jansen { 44*59599516SKenneth E. Jansen public: 45*59599516SKenneth E. Jansen static vtkPhastaReader *New(); 46*59599516SKenneth E. Jansen vtkTypeRevisionMacro(vtkPhastaReader,vtkUnstructuredGridAlgorithm); 47*59599516SKenneth E. Jansen void PrintSelf(ostream& os, vtkIndent indent); 48*59599516SKenneth E. Jansen 49*59599516SKenneth E. Jansen // Description: 50*59599516SKenneth E. Jansen // Specify file name of Phasta geometry file to read. 51*59599516SKenneth E. Jansen vtkSetStringMacro(GeometryFileName); 52*59599516SKenneth E. Jansen vtkGetStringMacro(GeometryFileName); 53*59599516SKenneth E. Jansen 54*59599516SKenneth E. Jansen // Description: 55*59599516SKenneth E. Jansen // Specify file name of Phasta field file to read. 56*59599516SKenneth E. Jansen vtkSetStringMacro(FieldFileName); 57*59599516SKenneth E. Jansen vtkGetStringMacro(FieldFileName); 58*59599516SKenneth E. Jansen 59*59599516SKenneth E. Jansen // Description: 60*59599516SKenneth E. Jansen // Clear/Set info. in FieldInfoMap for object of vtkPhastaReaderInternal 61*59599516SKenneth E. Jansen void ClearFieldInfo(); 62*59599516SKenneth E. Jansen void SetFieldInfo(const char *paraviewFieldTag, 63*59599516SKenneth E. Jansen const char* phastaFieldTag, 64*59599516SKenneth E. Jansen int index, 65*59599516SKenneth E. Jansen int numOfComps, 66*59599516SKenneth E. Jansen int dataDependency, 67*59599516SKenneth E. Jansen const char* dataType); 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansen protected: 70*59599516SKenneth E. Jansen vtkPhastaReader(); 71*59599516SKenneth E. Jansen ~vtkPhastaReader(); 72*59599516SKenneth E. Jansen 73*59599516SKenneth E. Jansen virtual int RequestData(vtkInformation* request, 74*59599516SKenneth E. Jansen vtkInformationVector** inputVector, 75*59599516SKenneth E. Jansen vtkInformationVector* outputVector); 76*59599516SKenneth E. Jansen 77*59599516SKenneth E. Jansen void ReadGeomFile(char *GeomFileName, 78*59599516SKenneth E. Jansen int &firstVertexNo, 79*59599516SKenneth E. Jansen vtkPoints *points, 80*59599516SKenneth E. Jansen int &noOfNodes, 81*59599516SKenneth E. Jansen int &noOfCells); 82*59599516SKenneth E. Jansen void ReadFieldFile(char *fieldFileName , 83*59599516SKenneth E. Jansen int firstVertexNo, 84*59599516SKenneth E. Jansen vtkDataSetAttributes *field, 85*59599516SKenneth E. Jansen int &noOfNodes); 86*59599516SKenneth E. Jansen void ReadFieldFile(char *fieldFileName, 87*59599516SKenneth E. Jansen int firstVertexNo, 88*59599516SKenneth E. Jansen vtkUnstructuredGrid *output, 89*59599516SKenneth E. Jansen int &noOfDatas); 90*59599516SKenneth E. Jansen 91*59599516SKenneth E. Jansen private: 92*59599516SKenneth E. Jansen char *GeometryFileName; 93*59599516SKenneth E. Jansen char *FieldFileName; 94*59599516SKenneth E. Jansen 95*59599516SKenneth E. Jansen //////////////////// 96*59599516SKenneth E. Jansen vtkPVXMLParser* Parser; 97*59599516SKenneth E. Jansen char* FileName; 98*59599516SKenneth E. Jansen /////////////////// 99*59599516SKenneth E. Jansen 100*59599516SKenneth E. Jansen int NumberOfVariables; //number of variable in the field file 101*59599516SKenneth E. Jansen 102*59599516SKenneth E. Jansen static char* StringStripper( const char istring[] ); 103*59599516SKenneth E. Jansen static int cscompare( const char teststring[], 104*59599516SKenneth E. Jansen const char targetstring[] ); 105*59599516SKenneth E. Jansen static void isBinary( const char iotype[] ); 106*59599516SKenneth E. Jansen static size_t typeSize( const char typestring[] ); 107*59599516SKenneth E. Jansen //CHANGE//////////////////////////////////////////////////// 108*59599516SKenneth E. Jansen 109*59599516SKenneth E. Jansen static void queryphmpiio_( const char filename[], 110*59599516SKenneth E. Jansen int *nfields, 111*59599516SKenneth E. Jansen int *nppf ); 112*59599516SKenneth E. Jansen static void finalizephmpiio_( int *fileDescriptor ); 113*59599516SKenneth E. Jansen 114*59599516SKenneth E. Jansen //CHANGE END/////////////////////////////////////////////// 115*59599516SKenneth E. Jansen static int readHeader( FILE* fileObject, 116*59599516SKenneth E. Jansen const char phrase[], 117*59599516SKenneth E. Jansen int* params, 118*59599516SKenneth E. Jansen int expect ); 119*59599516SKenneth E. Jansen static void SwapArrayByteOrder_( void* array, 120*59599516SKenneth E. Jansen int nbytes, 121*59599516SKenneth E. Jansen int nItems ); 122*59599516SKenneth E. Jansen static void openfile( const char filename[], 123*59599516SKenneth E. Jansen const char mode[], 124*59599516SKenneth E. Jansen int* fileDescriptor ); 125*59599516SKenneth E. Jansen static void closefile( int* fileDescriptor, 126*59599516SKenneth E. Jansen const char mode[] ); 127*59599516SKenneth E. Jansen static void readheader( int* fileDescriptor, 128*59599516SKenneth E. Jansen const char keyphrase[], 129*59599516SKenneth E. Jansen void* valueArray, 130*59599516SKenneth E. Jansen int* nItems, 131*59599516SKenneth E. Jansen const char datatype[], 132*59599516SKenneth E. Jansen const char iotype[] ); 133*59599516SKenneth E. Jansen static void readdatablock( int* fileDescriptor, 134*59599516SKenneth E. Jansen const char keyphrase[], 135*59599516SKenneth E. Jansen void* valueArray, 136*59599516SKenneth E. Jansen int* nItems, 137*59599516SKenneth E. Jansen const char datatype[], 138*59599516SKenneth E. Jansen const char iotype[] ); 139*59599516SKenneth E. Jansen 140*59599516SKenneth E. Jansen 141*59599516SKenneth E. Jansen 142*59599516SKenneth E. Jansen 143*59599516SKenneth E. Jansen private: 144*59599516SKenneth E. Jansen vtkPhastaReaderInternal *Internal; 145*59599516SKenneth E. Jansen 146*59599516SKenneth E. Jansen vtkPhastaReader(const vtkPhastaReader&); // Not implemented 147*59599516SKenneth E. Jansen void operator=(const vtkPhastaReader&); // Not implemented 148*59599516SKenneth E. Jansen }; 149*59599516SKenneth E. Jansen 150*59599516SKenneth E. Jansen #endif 151*59599516SKenneth E. Jansen 152*59599516SKenneth E. Jansen 153