VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/IO/Xdmf2/vtkXdmfWriter.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkXdmfWriter.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 
00028 #ifndef _vtkXdmfWriter_h
00029 #define _vtkXdmfWriter_h
00030 
00031 #include "vtkIOXdmf2Module.h" // For export macro
00032 
00033 #include "vtkDataObjectAlgorithm.h"
00034 
00035 class vtkExecutive;
00036 
00037 class vtkCompositeDataSet;
00038 class vtkDataArray;
00039 class vtkDataSet;
00040 class vtkDataObject;
00041 class vtkFieldData;
00042 class vtkInformation;
00043 class vtkInformationVector;
00044 class vtkXdmfWriterDomainMemoryHandler;
00045 
00046 namespace xdmf2
00047 {
00048 class XdmfArray;
00049 class XdmfDOM;
00050 class XdmfGrid;
00051 }
00052 
00053 class VTKIOXDMF2_EXPORT vtkXdmfWriter : public vtkDataObjectAlgorithm
00054 {
00055 public:
00056   static vtkXdmfWriter *New();
00057   vtkTypeMacro(vtkXdmfWriter,vtkDataObjectAlgorithm);
00058   void PrintSelf(ostream& os, vtkIndent indent);
00059 
00061   virtual void SetInputData(vtkDataObject* dobj);
00062 
00064 
00065   vtkSetStringMacro(FileName);
00066   vtkGetStringMacro(FileName);
00068 
00070 
00072   vtkSetStringMacro(HeavyDataFileName);
00073   vtkGetStringMacro(HeavyDataFileName);
00075 
00077 
00079   vtkSetStringMacro(HeavyDataGroupName);
00080   vtkGetStringMacro(HeavyDataGroupName);
00082 
00086   virtual int Write();
00087 
00089 
00091   vtkSetMacro(LightDataLimit, int);
00092   vtkGetMacro(LightDataLimit, int);
00094 
00096 
00098   vtkSetMacro(WriteAllTimeSteps, int);
00099   vtkGetMacro(WriteAllTimeSteps, int);
00100   vtkBooleanMacro(WriteAllTimeSteps, int);
00102 
00104 
00106   vtkSetMacro(Piece, int);
00107   vtkSetMacro(NumberOfPieces, int);
00109 
00110   //TODO: control choice of heavy data format (xml, hdf5, sql, raw)
00111 
00112   //TODO: These controls are available in vtkXdmfWriter, but are not used here.
00113   //GridsOnly
00114   //Append to Domain
00115 
00116 protected:
00117   vtkXdmfWriter();
00118   ~vtkXdmfWriter();
00119 
00120   //Choose composite executive by default for time.
00121   virtual vtkExecutive* CreateDefaultExecutive();
00122 
00123   //Can take any one data object
00124   virtual int FillInputPortInformation(int port, vtkInformation *info);
00125 
00126   //Overridden to ...
00127   virtual int RequestInformation(vtkInformation*,
00128                                  vtkInformationVector**,
00129                                  vtkInformationVector*);
00130   //Overridden to ...
00131   virtual int RequestUpdateExtent(vtkInformation*,
00132                                   vtkInformationVector**,
00133                                   vtkInformationVector*);
00134   //Overridden to ...
00135   virtual int RequestData(vtkInformation*,
00136                           vtkInformationVector**,
00137                           vtkInformationVector*);
00138 
00139   //These do the work: recursively parse down input's structure all the way to arrays,
00140   //use XDMF lib to dump everything to file.
00141 
00142   virtual int CreateTopology(vtkDataSet *ds, xdmf2::XdmfGrid *grid, vtkIdType PDims[3], vtkIdType CDims[3], vtkIdType &PRank, vtkIdType &CRank, void *staticdata);
00143   virtual int CreateGeometry(vtkDataSet *ds, xdmf2::XdmfGrid *grid, void *staticdata);
00144 
00145   virtual int WriteDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid);
00146   virtual int WriteCompositeDataSet(vtkCompositeDataSet *dobj, xdmf2::XdmfGrid *grid);
00147   virtual int WriteAtomicDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid);
00148   virtual int WriteArrays(vtkFieldData* dsa, xdmf2::XdmfGrid *grid, int association,
00149                            vtkIdType rank, vtkIdType *dims, const char *name);
00150   virtual void ConvertVToXArray(vtkDataArray *vda, xdmf2::XdmfArray *xda,
00151                                 vtkIdType rank, vtkIdType *dims,
00152                                 int AllocStrategy, const char *heavyprefix);
00153 
00154   char *FileName;
00155   char *HeavyDataFileName;
00156   char *HeavyDataGroupName;
00157 
00158   int LightDataLimit;
00159 
00160   int WriteAllTimeSteps;
00161   int NumberOfTimeSteps;
00162   int CurrentTimeIndex;
00163 
00164   int Piece;
00165   int NumberOfPieces;
00166 
00167   xdmf2::XdmfDOM *DOM;
00168   xdmf2::XdmfGrid *TopTemporalGrid;
00169 
00170   vtkXdmfWriterDomainMemoryHandler *DomainMemoryHandler;
00171 
00172 private:
00173   vtkXdmfWriter(const vtkXdmfWriter&); // Not implemented
00174   void operator=(const vtkXdmfWriter&); // Not implemented
00175 };
00176 
00177 #endif /* _vtkXdmfWriter_h */