13 #include "Foundation/vec3.h"
14 #include "Fields/ScalarInteractionFieldSlave.h"
15 #include "Fields/CheckedScalarInteractionFieldSlave.h"
16 #include "Fields/ScalarInteractionFieldSlaveTagged.h"
17 #include "Fields/CheckedScalarInteractionFieldSlaveTagged.h"
18 #include "Fields/VectorInteractionFieldSlave.h"
20 #include "ppa/src/pp_array.h"
25 return m_ppa->isInInner(it->getPosFirst());
40 for (Iterator it = begin; it != end; it++) {
52 return (m_numRemaining > 0);
56 typename TParallelInteractionStorage<I>::InteractionIterator::Interaction &
59 while (!isInner(m_it)) {
62 Interaction &i = *m_it;
71 return m_numRemaining;
93 vector<pair<Vec3,P> > res;
95 for(
typename list<I>::iterator iter=m_interactions.begin();
96 iter!=m_interactions.end();
98 Vec3 pos=iter->getPosFirst();
99 if(m_ppa->isInInner(pos)) res.push_back(make_pair(iter->getPos(),((*iter).*rdf)()));
111 template <
typename I>
112 template <
typename P>
113 vector<pair<typename TParallelInteractionStorage<I>::Raw2Data,P> >
116 vector<pair<Raw2Data,P> > res;
118 for(
typename list<I>::iterator iter=m_interactions.begin();
119 iter!=m_interactions.end();
121 if(m_ppa->isInInner(iter->getPosFirst())) {
122 const Raw2Data data = iter->getRaw2Data();
123 res.push_back(pair<Raw2Data,P>(data,((*iter).*rdf)()));
136 template <
typename I>
137 template <
typename P>
138 vector<pair<typename TParallelInteractionStorage<I>::DataWithPosID,P> >
141 vector<pair<DataWithPosID,P> > res;
143 for(
typename list<I>::iterator iter=m_interactions.begin();
144 iter!=m_interactions.end();
146 if(m_ppa->isInInner(iter->getPosFirst())) {
147 vector<int> ids=iter->getAllID();
155 const Raw2Data data = iter->getRaw2Data();
156 Vec3 pos1=data.get<0>();
157 Vec3 pos2=data.get<2>();
158 Vec3 ipos=data.get<4>();
159 res.push_back(pair<DataWithPosID,P>(
DataWithPosID(id1,id2,pos1,pos2,ipos),((*iter).*rdf)()));
172 template <
typename I>
173 template <
typename P>
174 vector<pair<typename TParallelInteractionStorage<I>::DataWithID,P> >
177 vector<pair<DataWithID,P> > res;
179 for(
typename list<I>::iterator iter=m_interactions.begin();
180 iter!=m_interactions.end();
182 if(m_ppa->isInInner(iter->getPosFirst())) {
183 vector<int> ids=iter->getAllID();
191 Vec3 pos=iter->getPos();
192 res.push_back(pair<DataWithID,P>(
DataWithID(id1,id2,pos),((*iter).*rdf)()));
207 template <
typename I>
208 template <
typename P>
211 for(
typename list<I>::iterator iter=m_interactions.begin();
212 iter!=m_interactions.end();
214 Vec3 pos=iter->getPosFirst();
215 if(m_ppa->isInInner(pos)) cont.push_back(((*iter).*rdf)());
229 template <
typename I>
230 template <
typename P>
233 vector<pair<Vec3,P> > res;
235 for(
typename list<I>::iterator iter=m_interactions.begin();
236 iter!=m_interactions.end();
238 Vec3 pos=iter->getPosFirst();
239 if(iter->hasTag(tag,mask)){
240 if(m_ppa->isInInner(pos)) res.push_back(make_pair(iter->getPos(),((*iter).*rdf)()));
256 template <
typename I>
257 template <
typename P>
260 for(
typename list<I>::iterator iter=m_interactions.begin();
261 iter!=m_interactions.end();
263 Vec3 pos=iter->getPosFirst();
264 if(iter->hasTag(tag,mask)){
265 if(m_ppa->isInInner(pos)) cont.push_back(((*iter).*rdf)());
280 template <
typename I>
287 typename I::ScalarFieldFunction rdf=I::getScalarFieldFunction(fieldname);
294 typename I::CheckedScalarFieldFunction rdf=I::getCheckedScalarFieldFunction(fieldname);
315 template <
typename I>
322 typename I::VectorFieldFunction rdf=I::getVectorFieldFunction(fieldname);