VTK  9.3.20240425
PIOData.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright (c) 2021, Triad National Security, LLC
3// SPDX-License-Identifier: LicenseRef-BSD-3-Clause-LANL-Triad-USGov
16#if !defined(_PIODATA_H)
17#define _PIODATA_H
18
19#include "vtkABINamespace.h"
20
21#include <cstdint>
22#include <fstream>
23#include <iostream>
24#include <list>
25#include <map>
26#include <set>
27#include <sstream>
28#include <string.h>
29#include <string>
30#include <valarray>
31
32VTK_ABI_NAMESPACE_BEGIN
34{
35 bool operator()(const char* p, const char* q) const { return strcmp(p, q) < 0; };
36};
37
38// Class Declarations
40{
41public:
42 char* pio_name;
43 int index; // index = 0 is scalar, index = 1 is vector, index = -1 is request from input deck
44 int64_t length;
45 int64_t position;
46 int64_t chksum;
47 size_t cdata_len;
49 friend class PIO_DATA;
50 friend class PIO_DATA_PIO;
51 friend class PIO_DATA_HDF5;
52
53 double* data;
54 char* cdata;
55}; // End class PIO_FIELD
56
57// Typedefs for the mapping between the names of the PIO blocks in the PIO file and
58// the PIO_FIELD's used to store the data values in the PIO blocks.
59typedef std::multimap<const char*, PIO_FIELD*, Cstring_less> VAR_MAP;
60typedef VAR_MAP::iterator VMI;
61typedef VAR_MAP::const_iterator CVMI;
62typedef std::pair<VMI, VMI> VMP;
63typedef std::pair<CVMI, CVMI> CVMP;
64
66{
67public:
69 virtual ~PIO_DATA() = 0;
70
71 // stuff needed for interface, used in PIOAdaptor
72 virtual bool good_read() = 0;
73 virtual bool set_scalar_field(std::valarray<int>&, const char*) = 0;
74 virtual bool set_scalar_field(std::valarray<int64_t>&, const char*) = 0;
75 virtual bool set_scalar_field(std::valarray<double>&, const char*) = 0;
76 virtual bool set_vector_field(std::valarray<std::valarray<double>>&, const char*) = 0;
77 virtual int get_pio_num() const = 0;
78 virtual PIO_FIELD* get_pio_field() const = 0;
79 virtual int get_num_components(const char*) const = 0;
80 virtual int get_num_materials() const = 0;
81 virtual int64_t get_num_cells() = 0;
82 virtual int get_cycle() = 0;
83 virtual double get_simtime() = 0;
84 virtual int get_dimension() = 0;
85 virtual bool get_gridsize(std::valarray<int>&) = 0;
86 virtual bool get_gridscale(std::valarray<double>&) = 0;
87 virtual bool get_gridorigin(std::valarray<double>&) = 0;
88 virtual std::string get_eap_version() = 0;
89 virtual std::string get_username() = 0;
90 virtual std::string get_problemname() = 0;
91 virtual bool get_material_names(std::valarray<std::string>&) = 0;
92 virtual bool get_tracer_variable_names(std::valarray<std::string>&) = 0;
93
94 virtual bool has_field(const char*) = 0; // true if field exists
95 virtual bool reconstruct_chunk_field(int64_t numcell, std::valarray<double>& va,
96 const char* prefix, const char* var, int materialId) = 0;
97
98 VAR_MAP VarMMap; // Multimap from pio_name to a PIO_FIELD class
99
100}; // End class PIO_DATA
101
102// Locations of various data items from the input arrays, amhc_i, amhc_r8,
103// amch_l, and controller_r8
104enum
105{
106 Ntime = 0, // time = controller_r8[Ntime];
107 Nnumdim = 42, // numdim = amhc_i[Nnumdim]
108 Nmesh0 = 16, // N[0] = amhc_i[Nmesh0]
109 Nmesh1 = 17, // N[1] = amhc_i[Nmesh1]
110 Nmesh2 = 29, // N[2] = amhc_i[Nmesh2]
111 Nd0 = 21, // d[0] = amhc_r8[Nd0]
112 Nd1 = 22, // d[1] = amhc_r8[Nd1]
113 Nd2 = 38, // d[2] = amhc_r8[Nd2]
114 NZero0 = 19, // Zero[0] = amhc_r8[NZero0]
115 NZero1 = 20, // Zero[1] = amhc_r8[NZero1]
116 NZero2 = 35, // Zero[2] = amhc_r8[NZero2]
117 Ncylin = 1, // cylindrically (axisymmetric) symmetric
118 // geometry if amhc_l[Ncylin]!=0
119 Nsphere = 8 // spherically symmetirc geometry if
120 // amhc_l[Nsphere]!=0
122
123VTK_ABI_NAMESPACE_END
124#endif
@ NZero2
Definition PIOData.h:116
@ Nsphere
Definition PIOData.h:119
@ Nmesh2
Definition PIOData.h:110
@ Nmesh1
Definition PIOData.h:109
@ NZero1
Definition PIOData.h:115
@ Nmesh0
Definition PIOData.h:108
@ Nd1
Definition PIOData.h:112
@ Nd2
Definition PIOData.h:113
@ Nd0
Definition PIOData.h:111
@ Nnumdim
Definition PIOData.h:107
@ Ncylin
Definition PIOData.h:117
@ NZero0
Definition PIOData.h:114
@ Ntime
Definition PIOData.h:106
std::pair< VMI, VMI > VMP
Definition PIOData.h:62
std::pair< CVMI, CVMI > CVMP
Definition PIOData.h:63
VAR_MAP::iterator VMI
Definition PIOData.h:60
std::multimap< const char *, PIO_FIELD *, Cstring_less > VAR_MAP
Definition PIOData.h:59
VAR_MAP::const_iterator CVMI
Definition PIOData.h:61
class for reading PIO (Parallel Input Output) files in HDF5 format
Definition PIODataHDF5.h:48
class for reading PIO (Parallel Input Output) data files
Definition PIODataPIO.h:37
class for reading PIO (Parallel Input Output) data files
Definition PIOData.h:66
virtual bool has_field(const char *)=0
virtual bool set_scalar_field(std::valarray< double > &, const char *)=0
virtual PIO_FIELD * get_pio_field() const =0
virtual bool set_scalar_field(std::valarray< int > &, const char *)=0
virtual bool set_vector_field(std::valarray< std::valarray< double > > &, const char *)=0
virtual bool reconstruct_chunk_field(int64_t numcell, std::valarray< double > &va, const char *prefix, const char *var, int materialId)=0
virtual std::string get_username()=0
virtual double get_simtime()=0
virtual int get_dimension()=0
virtual std::string get_problemname()=0
virtual int get_pio_num() const =0
virtual int64_t get_num_cells()=0
virtual bool get_tracer_variable_names(std::valarray< std::string > &)=0
virtual int get_num_materials() const =0
virtual bool get_material_names(std::valarray< std::string > &)=0
virtual int get_num_components(const char *) const =0
virtual ~PIO_DATA()=0
virtual bool set_scalar_field(std::valarray< int64_t > &, const char *)=0
virtual bool get_gridorigin(std::valarray< double > &)=0
virtual bool good_read()=0
virtual bool get_gridsize(std::valarray< int > &)=0
virtual bool get_gridscale(std::valarray< double > &)=0
virtual std::string get_eap_version()=0
VAR_MAP VarMMap
Definition PIOData.h:98
virtual int get_cycle()=0
int64_t chksum
Definition PIOData.h:46
int index
Definition PIOData.h:43
bool read_field_data
Definition PIOData.h:48
char * pio_name
Definition PIOData.h:42
int64_t length
Definition PIOData.h:44
char * cdata
Definition PIOData.h:54
int64_t position
Definition PIOData.h:45
double * data
Definition PIOData.h:53
size_t cdata_len
Definition PIOData.h:47
bool operator()(const char *p, const char *q) const
Definition PIOData.h:35