SENSEI
A frame work for generic in situ analytics
ConfigurableInTransitDataAdaptor.h
1 #ifndef sensei_ConfigurableInTransitDataAdaptor_h
2 #define sensei_ConfigurableInTransitDataAdaptor_h
3 
4 #include "InTransitDataAdaptor.h"
5 
6 #include "senseiConfig.h"
7 #include "svtkObjectBase.h"
8 
9 #include <vector>
10 #include <string>
11 #include <memory>
12 
13 class svtkDataObject;
14 
15 namespace sensei
16 {
17 
18 /** The ConfigurableInTransitDataAdaptor implements the InTransitDataAdaptor
19  * interface, provides a factory for creating a concrete instance of the
20  * InTransitDataAdpator from an XML configuration, and delegates in coming calls
21  * through the InTransitDataAdapotor/DataAdaptor API to the instance. The
22  * purpose of this class is to provide run-time configurability of the
23  * concrete InTransitDataAdaptors.
24  *
25  * Configurartion shold be placed in an element of type `transport`, the
26  * `type` attribute names the concrete class to create and initialize.
27  * Each concrete class will have a number of attributes used for configuration.
28  *
29  * The supported transport types are:
30  *
31  * adios_1, adios_2, hdf5, libis
32  *
33  * Illustrative example of the XML:
34  *
35  * ```xml
36  * <sensei>
37  * <transport type="adios_1" file_name="test.bp" read_method="FLEXPATH">
38  * <paritioner type="block"/>
39  * </transport>
40  * <sensei>
41  * ```
42  */
44 {
45 public:
48 
49  int Initialize(const std::string &fileName);
50 
51  int SetConnectionInfo(const std::string &info) override;
52  const std::string &GetConnectionInfo() const override;
53 
54  int Initialize(pugi::xml_node &node) override;
55 
56  int GetSenderMeshMetadata(unsigned int id,
57  MeshMetadataPtr &metadata) override;
58 
59  int GetReceiverMeshMetadata(unsigned int id,
60  MeshMetadataPtr &metadata) override;
61 
62  int SetReceiverMeshMetadata(unsigned int id,
63  MeshMetadataPtr &metadata) override;
64 
65  void SetPartitioner(const sensei::PartitionerPtr &partitioner) override;
66  sensei::PartitionerPtr GetPartitioner() override;
67 
68  int OpenStream() override;
69  int CloseStream() override;
70  int AdvanceStream() override;
71  int StreamGood() override;
72  int Finalize() override;
73 
74  int GetNumberOfMeshes(unsigned int &numMeshes) override;
75  int GetMeshMetadata(unsigned int id, MeshMetadataPtr &metadata) override;
76 
77  int GetMesh(const std::string &meshName,
78  bool structureOnly, svtkDataObject *&mesh) override;
79 
80  int AddGhostNodesArray(svtkDataObject* mesh,
81  const std::string &meshName) override;
82 
83  int AddGhostCellsArray(svtkDataObject* mesh,
84  const std::string &meshName) override;
85 
86  int AddArray(svtkDataObject* mesh, const std::string &meshName,
87  int association, const std::string &arrayName) override;
88 
89  int AddArrays(svtkDataObject* mesh, const std::string &meshName,
90  int association, const std::vector<std::string> &arrayName) override;
91 
92  int ReleaseData() override;
93  double GetDataTime() override;
94  void SetDataTime(double time) override;
95  long GetDataTimeStep() override;
96  void SetDataTimeStep(long index) override;
97 
98 protected:
101 
103  void operator=(const ConfigurableInTransitDataAdaptor&) = delete;
104 
105  struct InternalsType;
106  InternalsType *Internals;
107 };
108 
109 }
110 #endif
int Initialize(MPI_Comm comm, const std::string &fileName, InTransitDataAdaptor *&dataAdaptor)
Creates a sensei::ConfigurableAnalysis adaptor and sensei::InTransitDataAdaptor based on a SENSEI XML...
The ConfigurableInTransitDataAdaptor implements the InTransitDataAdaptor interface, provides a factory for creating a concrete instance of the InTransitDataAdpator from an XML configuration, and delegates in coming calls through the InTransitDataAdapotor/DataAdaptor API to the instance.
Definition: ConfigurableInTransitDataAdaptor.h:43
Defines the control API for in transit data movement.
Definition: InTransitDataAdaptor.h:27
SENSEI.
Definition: ADIOS2AnalysisAdaptor.h:27