48 vector<pair<int,double> > data_vec;
49 vector<pair<int,double> > rad_vec;
50 vector<pair<int,Vec3> > pos_vec;
52 data_vec=m_ppa->forAllInnerParticlesGetIndexed(m_rdf);
53 pos_vec=m_ppa->forAllInnerParticlesGetIndexed(
typename T::VectorFieldFunction(&T::getPos));
54 rad_vec=m_ppa->forAllInnerParticlesGetIndexed(
typename T::ScalarFieldFunction(&T::getRad));
57 m_comm->send_gather(data_vec,0);
58 m_comm->send_gather(pos_vec,0);
59 m_comm->send_gather(rad_vec,0);
68 vector<double> data_vec;
71 m_ppa->forAllInnerParticlesGet(data_vec,m_rdf);
75 for(vector<double>::iterator iter=data_vec.begin();
81 vector<double> sum_vec;
82 sum_vec.push_back(sum);
83 m_comm->send_gather(sum_vec,0);
92 vector<double> data_vec;
95 m_ppa->forAllInnerParticlesGet(data_vec,m_rdf);
98 double max=*(data_vec.begin());
99 for(vector<double>::iterator iter=data_vec.begin();
100 iter!=data_vec.end();
102 max=(*iter > max) ? *iter : max;
105 vector<double> max_vec;
106 max_vec.push_back(max);
107 m_comm->send_gather(max_vec,0);
113 template <
typename T>
117 m_comm->recv_broadcast(coll_type,0);
120 case 1: SendDataFull();
break;
121 case 2: SendDataSum();
break;
122 case 3: SendDataMax();
break;
123 default: std::cerr <<
"unknown collection type" << std::endl;