mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
@ -0,0 +1,68 @@
|
||||
#include "FEDataStructures.h"
|
||||
#include <mpi.h>
|
||||
#include <iostream>
|
||||
|
||||
#include "FEAdaptor.h"
|
||||
|
||||
void SubCommunicatorDriver(int argc, char* argv[], MPI_Comm* handle)
|
||||
{
|
||||
Grid grid;
|
||||
unsigned int numPoints[3] = {70, 60, 44};
|
||||
double spacing[3] = {1, 1.1, 1.3};
|
||||
grid.Initialize(numPoints, spacing);
|
||||
Attributes attributes;
|
||||
attributes.Initialize(&grid);
|
||||
|
||||
FEAdaptor::Initialize(argc, argv, handle);
|
||||
unsigned int numberOfTimeSteps = 100;
|
||||
for(unsigned int timeStep=0;timeStep<numberOfTimeSteps;timeStep++)
|
||||
{
|
||||
// use a time step length of 0.1
|
||||
double time = timeStep * 0.1;
|
||||
attributes.UpdateFields(time);
|
||||
FEAdaptor::CoProcess(grid, attributes, time, timeStep, timeStep == numberOfTimeSteps-1);
|
||||
}
|
||||
|
||||
FEAdaptor::Finalize();
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
MPI_Init(&argc, &argv);
|
||||
int myrank, numprocs;
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
|
||||
|
||||
MPI_Group orig_group;
|
||||
MPI_Comm_group(MPI_COMM_WORLD, &orig_group);
|
||||
|
||||
std::vector<int> subranks;
|
||||
for(int i=0;i<numprocs/2;i++)
|
||||
subranks.push_back(i);
|
||||
if(subranks.empty())
|
||||
{
|
||||
subranks.push_back(0);
|
||||
}
|
||||
MPI_Group subgroup;
|
||||
MPI_Group_incl(orig_group, subranks.size(), &(subranks[0]), &subgroup);
|
||||
MPI_Comm subcommunicator;
|
||||
MPI_Comm_create(MPI_COMM_WORLD, subgroup, &subcommunicator);
|
||||
|
||||
if (myrank < static_cast<int>(subranks.size()))
|
||||
{
|
||||
int newrank;
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &newrank);
|
||||
std::cout << "got a rank\n";
|
||||
|
||||
SubCommunicatorDriver(argc, argv, &subcommunicator);
|
||||
std::cout << "Process " << myrank << " did some co-processing.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "Process " << myrank << " did not do any co-processing.\n";
|
||||
}
|
||||
|
||||
MPI_Finalize();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user