VTK  9.3.20240419
vtkPPainterCommunicator.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
14 #ifndef vtkPPainterCommunicator_h
15 #define vtkPPainterCommunicator_h
16 
17 #include "vtkPainterCommunicator.h"
18 #include "vtkRenderingParallelLICModule.h" // for export macro
19 
20 VTK_ABI_NAMESPACE_BEGIN
21 class vtkPPainterCommunicatorInternals;
22 class vtkMPICommunicatorOpaqueComm;
23 
24 class VTKRENDERINGPARALLELLIC_EXPORT vtkPPainterCommunicator : public vtkPainterCommunicator
25 {
26 public:
29 
34  : vtkPainterCommunicator(other)
35  {
36  this->Copy(&other, false);
37  }
38 
40  {
41  this->Copy(&other, false);
42  return *this;
43  }
44 
48  void Copy(const vtkPainterCommunicator* other, bool ownership) override;
49 
53  void Duplicate(const vtkPainterCommunicator* other) override;
54 
56 
59  int GetRank() override;
60  int GetSize() override;
61  bool GetIsNull() override;
63 
65 
68  int GetWorldRank() override;
69  int GetWorldSize() override;
71 
77 
78  static bool MPIInitialized();
79  static bool MPIFinalized();
80 
82 
88  void SetCommunicator(vtkMPICommunicatorOpaqueComm* comm);
89  void GetCommunicator(vtkMPICommunicatorOpaqueComm* comm);
90  void* GetCommunicator();
92 
100  void SubsetCommunicator(vtkMPICommunicatorOpaqueComm* comm, int include);
101 
106  static vtkMPICommunicatorOpaqueComm* GetGlobalCommunicator();
107 
108 private:
109  // PImpl for MPI datatypes
110  vtkPPainterCommunicatorInternals* Internals;
111 };
112 
113 VTK_ABI_NAMESPACE_END
114 #endif
115 // VTK-HeaderTest-Exclude: vtkPPainterCommunicator.h
int GetSize() override
Query MPI for information about the communicator.
static vtkMPICommunicatorOpaqueComm * GetGlobalCommunicator()
Get VTK's world communicator.
void * GetCommunicator()
Set/Get the communicator.
int GetWorldSize() override
Query MPI for information about the world communicator.
void Copy(const vtkPainterCommunicator *other, bool ownership) override
Copy the communicator.
vtkPPainterCommunicator(const vtkPPainterCommunicator &other)
Copier and assignment operators.
void Duplicate(const vtkPainterCommunicator *other) override
Duplicate the communicator.
vtkPPainterCommunicator & operator=(const vtkPPainterCommunicator &other)
static bool MPIFinalized()
void SubsetCommunicator(vtkMPICommunicatorOpaqueComm *comm, int include)
Creates a new communicator with/without the calling processes as indicated by the passed in flag,...
static bool MPIInitialized()
void SetCommunicator(vtkMPICommunicatorOpaqueComm *comm)
Set/Get the communicator.
int GetRank() override
Query MPI for information about the communicator.
void GetCommunicator(vtkMPICommunicatorOpaqueComm *comm)
Set/Get the communicator.
int GetWorldRank() override
Query MPI for information about the world communicator.
bool GetMPIInitialized() override
Query MPI state.
bool GetIsNull() override
Query MPI for information about the communicator.
~vtkPPainterCommunicator() override
A communicator that can safely be used inside a painter.
virtual void Copy(const vtkPainterCommunicator *, bool)
Copy the communicator, the flag indicates if ownership should be assumed.