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
8 #include "vtkPVAdaptorsCTHModule.h"
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 
20 class VTKPVADAPTORSCTH_EXPORT vtkCTHSource
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
vtkAMRBox
vtkCTHDataArray
Definition: vtkCTHDataArray.h:11
vtkCTHSource::Block::box
vtkAMRBox * box
Definition: vtkCTHSource.h:82
vtkCTHSource::Block::z
double * z
Definition: vtkCTHSource.h:73
vtkCTHSource::AMRSet
vtkSmartPointer< vtkNonOverlappingAMR > AMRSet
Definition: vtkCTHSource.h:85
vtkCTHSource::MFieldNames
std::vector< std::vector< std::string > > MFieldNames
Definition: vtkCTHSource.h:60
vtkCTHSource::MaxLevel
int MaxLevel
Definition: vtkCTHSource.h:52
vtkCTHSource::Block::allocated
int allocated
Definition: vtkCTHSource.h:69
vtkCTHSource::Bounds
vtkBoundingBox Bounds
Definition: vtkCTHSource.h:57
vtkCTHSource::NeighborArray
vtkIntArray * NeighborArray
Definition: vtkCTHSource.h:62
vtkCTHSource::Block::active
int active
Definition: vtkCTHSource.h:70
vtkUniformGrid
vtkSmartPointer< vtkNonOverlappingAMR >
top
top
vtkCTHSource::CFieldNames
std::vector< std::string > CFieldNames
Definition: vtkCTHSource.h:59
vtkCTHSource::MinLevel
int MinLevel
Definition: vtkCTHSource.h:53
vtkCTHSource::Block::CFieldData
std::vector< vtkSmartPointer< vtkCTHDataArray > > CFieldData
Definition: vtkCTHSource.h:78
vtkCPInputDataDescription
Definition: vtkCPInputDataDescription.h:17
vtkBoundingBox
level
level
vtkCTHSource::Block
Definition: vtkCTHSource.h:66
vtkCTHSource::Block::Nz
int Nz
Definition: vtkCTHSource.h:72
vtkCTHSource::AllocationsChanged
bool AllocationsChanged
Definition: vtkCTHSource.h:64
vtkCTHSource::Block::level
int level
Definition: vtkCTHSource.h:71
vtkIntArray
vtkSmartPointer.h
vtkBoundingBox.h
vtkCTHSource::Block::actualMaterials
int actualMaterials
Definition: vtkCTHSource.h:79
vtkCTHSource::Block::ug
vtkUniformGrid * ug
Definition: vtkCTHSource.h:81
vtkCTHSource::Block::id
int id
Definition: vtkCTHSource.h:68
vtkCTHSource::Blocks
std::vector< Block > Blocks
Definition: vtkCTHSource.h:84
vtkCTHSource::Block::MFieldData
std::vector< std::vector< vtkSmartPointer< vtkCTHDataArray > > > MFieldData
Definition: vtkCTHSource.h:80
vtkNonOverlappingAMR
vtkCTHSource
Definition: vtkCTHSource.h:20