00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00051 #ifndef __vtkSpyPlotReader_h
00052 #define __vtkSpyPlotReader_h
00053
00054 #include "vtkHierarchicalDataSetAlgorithm.h"
00055
00056 class vtkDataArraySelection;
00057 class vtkCallbackCommand;
00058 class vtkSpyPlotReaderMap;
00059 class vtkMultiProcessController;
00060 class vtkDataSetAttributes;
00061 class vtkDataArray;
00062
00063 class VTK_EXPORT vtkSpyPlotReader : public vtkHierarchicalDataSetAlgorithm
00064 {
00065 public:
00066 static vtkSpyPlotReader* New();
00067 vtkTypeRevisionMacro(vtkSpyPlotReader,vtkHierarchicalDataSetAlgorithm);
00068 void PrintSelf(ostream& os, vtkIndent indent);
00069
00071
00073 vtkSetStringMacro(FileName);
00074 vtkGetStringMacro(FileName);
00076
00078
00080 vtkSetMacro(TimeStep, int);
00081 vtkGetMacro(TimeStep, int);
00083
00085
00090 vtkSetMacro(DistributeFiles,int);
00091 vtkGetMacro(DistributeFiles,int);
00092 vtkBooleanMacro(DistributeFiles,int);
00094
00096
00098 vtkSetMacro(GenerateLevelArray,int);
00099 vtkGetMacro(GenerateLevelArray,int);
00100 vtkBooleanMacro(GenerateLevelArray,int);
00102
00104
00106 vtkSetMacro(GenerateBlockIdArray,int);
00107 vtkGetMacro(GenerateBlockIdArray,int);
00108 vtkBooleanMacro(GenerateBlockIdArray,int);
00110
00112
00114 void SetDownConvertVolumeFraction(int vf);
00115 vtkGetMacro(DownConvertVolumeFraction,int);
00116 vtkBooleanMacro(DownConvertVolumeFraction,int);
00118
00120
00121 vtkGetVector2Macro(TimeStepRange, int);
00123
00125
00127 vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
00129
00131
00132 int GetNumberOfCellArrays();
00133 const char* GetCellArrayName(int idx);
00134 int GetCellArrayStatus(const char *name);
00135 void SetCellArrayStatus(const char *name, int status);
00137
00139 void SetController(vtkMultiProcessController* controller);
00140
00141
00142
00143 vtkGetObjectMacro(Controller,vtkMultiProcessController);
00144
00146 virtual int CanReadFile(const char* fname);
00147
00148 protected:
00149 vtkSpyPlotReader();
00150 ~vtkSpyPlotReader();
00151
00152
00153 vtkDataArraySelection *CellDataArraySelection;
00154
00155
00156
00157 virtual int RequestInformation(vtkInformation *request,
00158 vtkInformationVector **inputVector,
00159 vtkInformationVector *outputVector);
00160
00161
00162
00163 virtual int RequestData(vtkInformation *request,
00164 vtkInformationVector **inputVector,
00165 vtkInformationVector *outputVector);
00166
00167
00168 static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid,
00169 void *clientdata, void *calldata);
00170
00172
00175 int UpdateMetaData(vtkInformation* request,
00176 vtkInformationVector* outputVector);
00178
00180
00181 int UpdateCaseFile(const char *fname,
00182 vtkInformation* request,
00183 vtkInformationVector* outputVector);
00185
00187
00189 int UpdateNoCaseFile(const char *ext,
00190 vtkInformation* request,
00191 vtkInformationVector* outputVector);
00193
00194 void AddGhostLevelArray(int numLevels);
00195
00197
00199 vtkSetStringMacro(CurrentFileName);
00200 vtkGetStringMacro(CurrentFileName);
00202
00203
00204
00205 vtkCallbackCommand *SelectionObserver;
00206 char *FileName;
00207 char *CurrentFileName;
00208 int TimeStep;
00209 int TimeStepRange[2];
00210 int CurrentTimeStep;
00211
00212 int IsAMR;
00213
00214
00215 vtkMultiProcessController *Controller;
00216
00217
00218
00219
00220 void MergeVectors(vtkDataSetAttributes *da);
00221 int MergeVectors(vtkDataSetAttributes *da,
00222 vtkDataArray *a1,
00223 vtkDataArray *a2);
00224 int MergeVectors(vtkDataSetAttributes *da,
00225 vtkDataArray *a1,
00226 vtkDataArray *a2,
00227 vtkDataArray *a3);
00228
00229 vtkSpyPlotReaderMap *Map;
00230
00232
00234 int GetParentProcessor(int proc);
00235 int GetLeftChildProcessor(int proc);
00237
00238 int DistributeFiles;
00239
00240 double Bounds[6];
00241
00242 int GenerateLevelArray;
00243 int GenerateBlockIdArray;
00244
00245 int DownConvertVolumeFraction;
00246
00247 private:
00248 vtkSpyPlotReader(const vtkSpyPlotReader&);
00249 void operator=(const vtkSpyPlotReader&);
00250 };
00251
00252 #endif