You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
5.8 KiB
169 lines
5.8 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkPExodusReader.h,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/*----------------------------------------------------------------------------
|
|
Copyright (c) Sandia Corporation
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
|
|
----------------------------------------------------------------------------*/
|
|
|
|
// .NAME vtkPExodusReader - Read exodus 2 files .ex2
|
|
// .SECTION Description
|
|
// vtkPExodusReader is a unstructured grid source object that reads
|
|
// PExodusReaderII files. Most of the meta data associated with the
|
|
// file is loaded when UpdateInformation is called. This includes
|
|
// information like Title, number of blocks, number and names of
|
|
// arrays. This data can be retrieved from methods in this
|
|
// reader. Separate arrays that are meant to be a single vector, are
|
|
// combined internally for convenience. To be combined, the array
|
|
// names have to be identical except for a trailing X,Y and Z (or
|
|
// x,y,z). By default all cell and point arrays are loaded. However,
|
|
// the user can flag arrays not to load with the methods
|
|
// "SetPointDataArrayLoadFlag" and "SetCellDataArrayLoadFlag". The
|
|
// reader responds to piece requests by loading only a range of the
|
|
// possible blocks. Unused points are filtered out internally.
|
|
|
|
|
|
#ifndef __vtkPExodusReader_h
|
|
#define __vtkPExodusReader_h
|
|
|
|
#include "vtkExodusReader.h"
|
|
|
|
#include <vtkstd/vector> // Required for vector
|
|
|
|
class vtkTimerLog;
|
|
|
|
class VTK_HYBRID_EXPORT vtkPExodusReader : public vtkExodusReader
|
|
{
|
|
public:
|
|
static vtkPExodusReader *New();
|
|
vtkTypeRevisionMacro(vtkPExodusReader,vtkExodusReader);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// These methods tell the reader that the data is ditributed across
|
|
// multiple files. This is for distributed execution. It this case,
|
|
// pieces are mapped to files. The pattern should have one %d to
|
|
// format the file number. FileNumberRange is used to generate file
|
|
// numbers. I was thinking of having an arbitrary list of file
|
|
// numbers. This may happen in the future. (That is why there is no
|
|
// GetFileNumberRange method.
|
|
vtkSetStringMacro(FilePattern);
|
|
vtkGetStringMacro(FilePattern);
|
|
vtkSetStringMacro(FilePrefix);
|
|
vtkGetStringMacro(FilePrefix);
|
|
|
|
// Description:
|
|
// Set the range of files that are being loaded. The range for single
|
|
// file should add to 0.
|
|
void SetFileRange(int,int);
|
|
void SetFileRange(int* r) { this->SetFileRange(r[0], r[1]); }
|
|
vtkGetVector2Macro(FileRange, int);
|
|
|
|
// Description:
|
|
// Provide an arbitrary list of file names instead of a prefix,
|
|
// pattern and range. Overrides any prefix, pattern and range
|
|
// that is specified. vtkPExodusReader makes it's own copy
|
|
// of your file names.
|
|
void SetFileNames(int nfiles, const char **names);
|
|
|
|
virtual void SetFileName(const char *name);
|
|
|
|
// Description:
|
|
// Return pointer to list of file names set in SetFileNames
|
|
char **GetFileNames(){return this->FileNames;}
|
|
|
|
// Description:
|
|
// Return number of file names set in SetFileNames
|
|
int GetNumberOfFileNames(){return this->NumberOfFileNames;}
|
|
|
|
// Description:
|
|
// Return the number of files to be read.
|
|
vtkGetMacro(NumberOfFiles, int);
|
|
|
|
// Description:
|
|
// Extra cell data array that can be generated. By default, this array
|
|
// is OFF. The value of the array is the integer id which is part of
|
|
// the name of the file from which the cell was read.
|
|
// The name of the array is "vtkFileId".
|
|
|
|
void SetGenerateFileIdArray(int flag);
|
|
vtkGetMacro(GenerateFileIdArray, int);
|
|
vtkBooleanMacro(GenerateFileIdArray, int);
|
|
|
|
|
|
//begin USE_EXO_DSP_FILTERS
|
|
int GetNumberOfVariableArrays();
|
|
const char *GetVariableArrayName(int a_which);
|
|
void EnableDSPFiltering();
|
|
void AddFilter(vtkDSPFilterDefinition *a_filter);
|
|
void StartAddingFilter();
|
|
void AddFilterInputVar(char *name);
|
|
void AddFilterOutputVar(char *name);
|
|
void AddFilterNumeratorWeight(double weight);
|
|
void AddFilterForwardNumeratorWeight(double weight);
|
|
void AddFilterDenominatorWeight(double weight);
|
|
void FinishAddingFilter();
|
|
void RemoveFilter(char *a_outputVariableName);
|
|
//end USE_EXO_DSP_FILTERS
|
|
|
|
|
|
protected:
|
|
vtkPExodusReader();
|
|
~vtkPExodusReader();
|
|
|
|
//begin USE_EXO_DSP_FILTERS
|
|
void GetDSPOutputArrays(int exoid, vtkUnstructuredGrid* output);
|
|
//end USE_EXO_DSP_FILTERS
|
|
|
|
// Description:
|
|
// Try to "guess" the pattern of files.
|
|
int DeterminePattern(const char* file);
|
|
static int DetermineFileId(const char* file);
|
|
|
|
// This method sets up a ugrid with
|
|
// all meta data but zero cells
|
|
void SetUpEmptyGrid();
|
|
|
|
// **KEN** Previous discussions concluded with std classes in header
|
|
// files is bad. Perhaps we should change readerList.
|
|
|
|
char* FilePattern;
|
|
char* CurrentFilePattern;
|
|
char* FilePrefix;
|
|
char* CurrentFilePrefix;
|
|
char* MultiFileName;
|
|
int FileRange[2];
|
|
int CurrentFileRange[2];
|
|
int NumberOfFiles;
|
|
char **FileNames;
|
|
int NumberOfFileNames;
|
|
int GenerateFileIdArray;
|
|
//BTX
|
|
vtkstd::vector<vtkExodusReader*> readerList;
|
|
//ETX
|
|
|
|
int Timing;
|
|
vtkTimerLog *TimerLog;
|
|
|
|
int RequestInformation(
|
|
vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
|
int RequestData(
|
|
vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
|
|
|
private:
|
|
vtkPExodusReader(const vtkPExodusReader&); // Not implemented
|
|
void operator=(const vtkPExodusReader&); // Not implemented
|
|
};
|
|
|
|
#endif
|
|
|