xref: /phasta/phastaIO/vtkPhastaReader.h (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
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