vtkCTHSource.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
3 
4 #ifndef vtkCTHSource_h
5 #define vtkCTHSource_h
6 
7 #include "vtkBoundingBox.h" // For bounding box
9 #include "vtkSmartPointer.h" // for AMRSets
10 
11 #include <vector> // For field names
12 
13 class vtkCTHDataArray;
14 class vtkIntArray;
16 class vtkAMRBox;
17 class vtkUniformGrid;
19 
21 {
22 public:
23  vtkCTHSource();
24  virtual ~vtkCTHSource();
25 
26  // Description:
27  // Initializes the model parameters
28  void Initialize(int igm, int n_blocks, int nmat, int max_mat, int NCFields, int NMFields,
29  double* x0, double* x1, int max_level);
30  // Description:
31  // Initialize block parameters for block_id
32  void InitializeBlock(int block_id, int Nx, int Ny, int Nz, double* x, double* y, double* z,
33  int allocated, int active, int level);
34  // Description:
35  // Initialize field parameters for field_id
36  void SetCellFieldName(int field_id, char* field_name, char* comment, int matid);
37  void SetMaterialFieldName(int field_id, char* field_name, char* command);
38  // Description:
39  // Set data pointer for horizontal field data strip
40  void SetCellFieldPointer(int block_id, int field_id, int k, int j, double* istrip);
41  void SetMaterialFieldPointer(int block_id, int field_id, int mat, int k, int j, double* istrip);
42  // Description:
43  // Update block parameters for block_id (due to refinement/coarsening)
44  void UpdateBlock(int block_id, int allocated, int active, int level, int max_level, int bxbot,
45  int bxtop, int bybot, int bytop, int bzbot, int bztop, int* neighb_proc, int* neighb_block);
46 
47  virtual int FillInputData(vtkCPInputDataDescription* input);
48 
49 protected:
50  void UpdateRepresentation();
51 
52  int MaxLevel;
53  int MinLevel;
54  double MinLevelSpacing[3];
55  int GlobalBlockSize[3];
56 
58 
59  std::vector<std::string> CFieldNames;
60  std::vector<std::vector<std::string>> MFieldNames;
61 
63 
65 
66  struct Block
67  {
68  int id;
69  int allocated;
70  int active;
71  int level;
72  int Nx, Ny, Nz;
73  double *x, *y, *z;
74  int bot[3];
75  int top[3];
76  int neighbor_proc[24];
77  int neighbor_block[24];
78  std::vector<vtkSmartPointer<vtkCTHDataArray>> CFieldData;
80  std::vector<std::vector<vtkSmartPointer<vtkCTHDataArray>>> MFieldData;
83  };
84  std::vector<Block> Blocks;
86 
87  void AllocateBlock(Block& b);
88  bool GetBounds(Block& b, int loCorner[3], int hiCorner[3]);
89  void AddGhostArray(Block& b, int dx, int dy, int dz);
90  void AddBlockIdArray(Block& b, int dx, int dy, int dz);
91  void AddNeighborArray(Block& b);
92  void AddAMRLevelArray(Block& b, int dx, int dy, int dz);
93  void AddFieldArrays(Block& b);
94  void AddFieldArrays(Block& b, int loCorner[3], int hiCorner[3]);
95  void AddActivationArray(Block& b);
96  void AddAttributesToAMR(vtkNonOverlappingAMR* amr);
97 
98 private:
99  vtkCTHSource(const vtkCTHSource&) = delete;
100  void operator=(const vtkCTHSource&) = delete;
101 };
102 
103 #endif /* vtkCTHSource_h */
104 
105 // VTK-HeaderTest-Exclude: vtkCTHSource.h
vtkIntArray * NeighborArray
Definition: vtkCTHSource.h:62
#define VTKPVADAPTORSCTH_EXPORT
vtkUniformGrid * ug
Definition: vtkCTHSource.h:81
std::vector< std::vector< std::string > > MFieldNames
Definition: vtkCTHSource.h:60
This class provides the data description for each input for the coprocessor pipelines.
level
vtkSmartPointer< vtkNonOverlappingAMR > AMRSet
Definition: vtkCTHSource.h:85
vtkBoundingBox Bounds
Definition: vtkCTHSource.h:57
std::vector< std::vector< vtkSmartPointer< vtkCTHDataArray > > > MFieldData
Definition: vtkCTHSource.h:80
bool AllocationsChanged
Definition: vtkCTHSource.h:64
std::vector< std::string > CFieldNames
Definition: vtkCTHSource.h:59
std::vector< vtkSmartPointer< vtkCTHDataArray > > CFieldData
Definition: vtkCTHSource.h:78
top
std::vector< Block > Blocks
Definition: vtkCTHSource.h:84