File: VTXSchemaManager.h

package info (click to toggle)
paraview 5.11.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 497,236 kB
  • sloc: cpp: 3,171,290; ansic: 1,315,072; python: 134,290; xml: 103,324; sql: 65,887; sh: 5,286; javascript: 4,901; yacc: 4,383; java: 3,977; perl: 2,363; lex: 1,909; f90: 1,255; objc: 143; makefile: 119; tcl: 59; pascal: 50; fortran: 29
file content (99 lines) | stat: -rw-r--r-- 2,596 bytes parent folder | download
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*=========================================================================

 Program:   Visualization Toolkit
 Module:    VTXSchemaManager.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.

 =========================================================================*/

/*
 * VTXSchemaManager.h : reusable class that manages a reader that
 *                         is a derived type of VTXSchema
 *
 *  Created on: May 31, 2019
 *      Author: William F Godoy godoywf@ornl.gov
 */

#ifndef VTK_IO_ADIOS2_VTX_VTXSchemaManager_H_
#define VTK_IO_ADIOS2_VTX_VTXSchemaManager_H_

#include <memory>
#include <set>
#include <string>

#include "vtkMultiBlockDataSet.h"

#include "schema/VTXSchema.h"
#include <adios2.h>

namespace vtx
{
VTK_ABI_NAMESPACE_BEGIN

class VTXSchemaManager
{
public:
  /** current time*/
  double Time = 0.;
  /** current adios2 step */
  size_t Step = 0;

  /** managed polymorphic reader, could be extended in a container */
  std::unique_ptr<VTXSchema> Reader;

  VTXSchemaManager() = default;
  ~VTXSchemaManager() = default;

  /**
   * Updates metadata if stream is changed
   * @param streamName input current stream name
   * @param step input current step
   * @param schemaName schema name to look for either as attribute or separate
   * file
   */
  void Update(const std::string& streamName, const size_t step = 0,
    const std::string& schemaName = "vtk.xml");

  /**
   * Fill multiblock data
   * @param multiblock output structure to be filled by m_Reader
   * @param step input data for one step at a time
   */
  void Fill(vtkMultiBlockDataSet* multiblock, const size_t step = 0);

private:
  /** Current stream name */
  std::string StreamName;

  /** Single ADIOS object alive during the entire run */
  std::unique_ptr<adios2::ADIOS> ADIOS;

  /** Current ADIOS2 IO used for getting variables */
  adios2::IO IO;

  /** Current ADIOS2 Engine doing the heavy work */
  adios2::Engine Engine;

  /** carries the schema information */
  std::string SchemaName;

  static const std::set<std::string> SupportedTypes;

  /** we can extend this to add more schemas */
  void InitReader();

  /** Called within InitReader */
  bool InitReaderXMLVTK();
};

VTK_ABI_NAMESPACE_END
} // end namespace adios2vtk

#endif /* VTK_IO_ADIOS2_VTX_VTXSchemaManager_h */