VTK
ADIOSWriter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: ADIOSWriter.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
15// .NAME ADIOSWriter - The utility class performing ADIOS Write operations
16
17#ifndef _ADIOSWriter_h
18#define _ADIOSWriter_h
19
20#include <limits>
21#include <sstream>
22#include <stdexcept>
23#include <string>
24#include <vector>
25
26#include <adios_mpi.h>
27
28#include "ADIOSDefs.h"
29#include "ADIOSUtilities.h"
30
31namespace ADIOS
32{
33
34// An array dimension as either a string or integer
36{
37 ArrayDim(size_t i) : ValueI(i), ValueS("") { }
38 ArrayDim(const std::string& var) : ValueI(0), ValueS(var) { }
39
40 size_t ValueI;
42};
43
44class Writer
45{
46public:
47 static bool SetCommunicator(MPI_Comm);
48
49public:
50 Writer(ADIOS::TransportMethod transport, const std::string& transportArgs);
51
53
54 // Description:
55 // Define scalar attributes
56 template<typename TN>
57 void DefineAttribute(const std::string& path, const TN& value)
58 {
59 std::stringstream ss;
60 ss << value;
61 this->DefineAttribute(path, Type::NativeToADIOS<TN>(), ss.str());
62 }
63
64 // Description:
65 // Define scalars for later writing
66 template<typename TN>
67 int DefineScalar(const std::string& path)
68 {
69 return this->DefineScalar(path, Type::NativeToADIOS<TN>());
70 }
71
72 // Define an array for later writing
73 template<typename TN>
75 const std::vector<ArrayDim>& dims, Transform xfm = Transform_NONE)
76 {
77 return this->DefineLocalArray(path, Type::NativeToADIOS<TN>(), dims, xfm);
78 }
79 int DefineLocalArray(const std::string& path, ADIOS_DATATYPES adiosType,
80 const std::vector<ArrayDim>& dims, Transform xfm = Transform_NONE);
81
82 // Description:
83 // Enqueue a scalar for writing
84 template<typename TN>
85 void WriteScalar(const std::string& path, const TN& val)
86 {
87 this->WriteScalar(path, Type::NativeToADIOS<TN>(), &val);
88 }
89 void WriteScalar(const std::string& path, ADIOS_DATATYPES adiosType,
90 const void* val);
91
92 // Description:
93 // Enqueue an array for writing
94 void WriteArray(const std::string& path, const void* val);
95
96 // Description:
97 // Perform all writes for the current time step
98 void Commit(const std::string& fileName, bool append = false);
99
100private:
101 struct InitContext;
102 InitContext *Ctx;
103
104 struct WriterImpl;
105 WriterImpl *Impl;
106
107 void DefineAttribute(const std::string& path, ADIOS_DATATYPES adiosType,
108 const std::string& value);
109 int DefineScalar(const std::string& path, ADIOS_DATATYPES adiosType);
110};
111
112}
113#endif // _ADIOSWriter_h
int DefineScalar(const std::string &path)
Definition: ADIOSWriter.h:67
void Commit(const std::string &fileName, bool append=false)
int DefineLocalArray(const std::string &path, ADIOS_DATATYPES adiosType, const std::vector< ArrayDim > &dims, Transform xfm=Transform_NONE)
Writer(ADIOS::TransportMethod transport, const std::string &transportArgs)
void WriteArray(const std::string &path, const void *val)
void WriteScalar(const std::string &path, const TN &val)
Definition: ADIOSWriter.h:85
void DefineAttribute(const std::string &path, const TN &value)
Definition: ADIOSWriter.h:57
static bool SetCommunicator(MPI_Comm)
int DefineLocalArray(const std::string &path, const std::vector< ArrayDim > &dims, Transform xfm=Transform_NONE)
Definition: ADIOSWriter.h:74
void WriteScalar(const std::string &path, ADIOS_DATATYPES adiosType, const void *val)
Transform
Definition: ADIOSDefs.h:40
@ Transform_NONE
Definition: ADIOSDefs.h:41
TransportMethod
Definition: ADIOSDefs.h:24
@ value
Definition: vtkX3D.h:220
@ string
Definition: vtkX3D.h:490
std::string ValueS
Definition: ADIOSWriter.h:41
ArrayDim(size_t i)
Definition: ADIOSWriter.h:37
ArrayDim(const std::string &var)
Definition: ADIOSWriter.h:38