1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkMPIMultiBlockPLOT3DReader.h
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.
=========================================================================*/
/**
* @class vtkMPIMultiBlockPLOT3DReader
* @brief vtkMultiBlockPLOT3DReader subclass that
* uses MPI-IO to efficiently read binary files for 3D domains in parallel using
* MPI-IO.
*
* vtkMPIMultiBlockPLOT3DReader extends vtkMultiBlockPLOT3DReader to use MPI-IO
* instead of POSIX IO to read file in parallel.
*/
#ifndef vtkMPIMultiBlockPLOT3DReader_h
#define vtkMPIMultiBlockPLOT3DReader_h
#include "vtkIOMPIParallelModule.h" // For export macro
#include "vtkMultiBlockPLOT3DReader.h"
VTK_ABI_NAMESPACE_BEGIN
class VTKIOMPIPARALLEL_EXPORT vtkMPIMultiBlockPLOT3DReader : public vtkMultiBlockPLOT3DReader
{
public:
static vtkMPIMultiBlockPLOT3DReader* New();
vtkTypeMacro(vtkMPIMultiBlockPLOT3DReader, vtkMultiBlockPLOT3DReader);
void PrintSelf(ostream& os, vtkIndent indent) override;
///@{
/**
* Use this to override using MPI-IO. When set to false (default is true),
* this class will simply forward all method calls to the superclass.
*/
vtkSetMacro(UseMPIIO, bool);
vtkGetMacro(UseMPIIO, bool);
vtkBooleanMacro(UseMPIIO, bool);
///@}
protected:
vtkMPIMultiBlockPLOT3DReader();
~vtkMPIMultiBlockPLOT3DReader() override;
/**
* Determines we should use MPI-IO for the current file. We don't use MPI-IO
* for 2D files or ASCII files.
*/
bool CanUseMPIIO();
int OpenFileForDataRead(void*& fp, const char* fname) override;
void CloseFile(void* fp) override;
int ReadIntScalar(void* vfp, int extent[6], int wextent[6], vtkDataArray* scalar,
vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord& currentRecord) override;
int ReadScalar(void* vfp, int extent[6], int wextent[6], vtkDataArray* scalar,
vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord& currentRecord) override;
int ReadVector(void* vfp, int extent[6], int wextent[6], int numDims, vtkDataArray* vector,
vtkTypeUInt64 offset, const vtkMultiBlockPLOT3DReaderRecord& currentRecord) override;
bool UseMPIIO;
private:
vtkMPIMultiBlockPLOT3DReader(const vtkMPIMultiBlockPLOT3DReader&) = delete;
void operator=(const vtkMPIMultiBlockPLOT3DReader&) = delete;
};
VTK_ABI_NAMESPACE_END
#endif
|