Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

122 lines
3.2 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkMPIGroup.h,v $
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.
=========================================================================*/
// .NAME vtkMPIGroup - Class for creating MPI groups.
// .SECTION Description
// This class is used to create MPI groups. A vtkMPIGroup object
// has to be initialized by passing the controller. Then the
// group can be modified by adding, removing ids and copying the contents
// of another group.
// .SECTION See Also
// vtkMPIController vtkMPICommunicator
#ifndef __vtkMPIGroup_h
#define __vtkMPIGroup_h
#include "vtkObject.h"
class vtkMPIController;
class vtkMPICommunicator;
class VTK_PARALLEL_EXPORT vtkMPIGroup : public vtkObject
{
public:
vtkTypeRevisionMacro( vtkMPIGroup,vtkObject);
// Description:
// Construct a vtkMPIGroup with the following initial state:
// Processes = 0, MaximumNumberOfProcesses = 0.
static vtkMPIGroup* New();
virtual void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Allocate memory for N process ids where
// N = controller->NumberOfProcesses
void Initialize(vtkMPIController* controller);
// Description:
// Add a process id to the end of the list (if it is not already
// in the group). Returns non-zero on success.
// This will not add a process id >= MaximumNumberOfProcessIds.
int AddProcessId(int processId);
// Description:
// Remove the given process id from the list and
// shift all ids, starting from the position of the removed
// id, left by one.
void RemoveProcessId(int processId);
// Description:
// Find the location of a process id in the group.
// Returns -1 if the process id is not on the list.
int FindProcessId(int processId);
// Description:
// Get the process id at position pos.
// Returns -1 if pos >= max. available pos.
int GetProcessId(int pos);
// Description:
// Copy the process ids from a given group.
// This will copy N ids, where N is the smallest
// MaximumNumberOfProcessIds.
void CopyProcessIdsFrom(vtkMPIGroup* group);
// Description:
// Returns the number of ids currently stored.
int GetNumberOfProcessIds()
{
return this->CurrentPosition;
}
//BTX
friend class vtkMPICommunicator;
//ETX
protected:
// Description:
// Copies all the information from group, erasing
// previously stored data. Similar to copy constructor
void CopyFrom(vtkMPIGroup* group);
// Description:
// Allocate memory for numProcIds process ids
void Initialize(int numProcIds);
int* ProcessIds;
int MaximumNumberOfProcessIds;
int Initialized;
int CurrentPosition;
vtkMPIGroup();
~vtkMPIGroup();
private:
vtkMPIGroup(const vtkMPIGroup&); // Not implemented.
void operator=(const vtkMPIGroup&); // Not implemented.
};
#endif