43           "No operator()(unsigned) for this element type!!");
 
   54           "No operator()(unsigned,unsigned) for this element type!!");
 
   65           "No operator()(unsigned,unsigned,unsigned) for this element type!!");
 
   81     ParticleList.insert(ParticleList.begin()+LocalSize, M, 
T());
 
   83     attributeIsDirty_ = 
true;
 
  111     if ((I + M) > (LocalSize - M))
 
  115     while (getloc != endloc)
 
  116       *putloc++ = *getloc++;
 
  118     ParticleList.erase(endloc - M, endloc);
 
  123     ParticleList.erase(loc, loc + M);
 
  126   attributeIsDirty_ = 
true;
 
  145   if (dlist.empty()) 
return;
 
  146   typedef std::vector< std::pair<size_t,size_t> > dlist_t;
 
  149     dlist_t::const_reverse_iterator rbeg, rend = dlist.rend();
 
  155     size_t I, M, numParts=0;
 
  156     for (rbeg = dlist.rbegin(); rbeg != rend; ++rbeg) {
 
  161       putloc = ParticleList.begin() + I;
 
  163       if ((I + M) > ((getloc - ParticleList.begin()) - M)) {
 
  168         while (getloc != saveloc) {
 
  169           *putloc++ = *getloc++;
 
  179         for (
size_t m=0; m<M; ++m)
 
  180           *putloc++ = *getloc++;
 
  187     ParticleList.erase( endloc - numParts, endloc );
 
  191     dlist_t::const_iterator dnext = dlist.begin(), dend = dlist.end();
 
  192     size_t putIndex, getIndex, endIndex = LocalSize;
 
  193     putIndex = (*dnext).first;  
 
  194     getIndex = putIndex + (*dnext).second;  
 
  197     while (dnext != dend && getIndex == (*dnext).first) {
 
  198       getIndex += (*dnext).second;  
 
  201     while (dnext != dend) {
 
  203       ParticleList[putIndex++] = ParticleList[getIndex++];
 
  205       while (dnext != dend && getIndex == (*dnext).first) {
 
  206         getIndex += (*dnext).second;  
 
  211     while (getIndex < endIndex) {
 
  213       ParticleList[putIndex++] = ParticleList[getIndex++];
 
  217     ParticleList.erase(loc, ParticleList.begin()+LocalSize);
 
  218     LocalSize -= ParticleList.begin()+LocalSize - loc;
 
  221   attributeIsDirty_ = 
true;
 
  255                               const std::vector<size_t>& putList)
 
  258   std::vector<size_t>::size_type M = putList.size();
 
  290       size_t currsize = size();
 
  335     ParticleList.insert(ParticleList.end(), M, 
T());
 
  347     ParticleList.erase(ParticleList.begin() + LocalSize + I, ParticleList.begin() + LocalSize + I + M);
 
  358       size_t currsize = ParticleList.size();
 
  374   o << 
"PAttr: size = " << ParticleList.size()
 
  375     << 
", capacity = " << ParticleList.capacity()
 
  376     << 
", temporary = " << isTemporary();
 
  390 #define PA_SORT_COMPARE_SCALAR(SCALAR)                                  \ 
  392 struct PASortCompare<SCALAR>                                            \ 
  394   static bool compare(const SCALAR &a, const SCALAR &b, bool ascending) \ 
  396     return (ascending ? (a < b) : (a > b));                             \ 
  430   SortList_t::size_type slsize = slist.size();
 
  431   size_t mysize = size();
 
  432   if (slsize < mysize) {
 
  441   for (i=0; i < mysize; ++i)
 
  448   int lastindx = (mysize - 1);
 
  449   for (i=0; i < mysize; ++i) {
 
  450     int currindx = firstindx;
 
  451     T currval = ParticleList[currindx];
 
  453     for (j=(firstindx + 1); j <= lastindx; ++j) {
 
  460           currval = ParticleList[currindx];
 
  473     while (slist[firstindx] >= 0 && firstindx < lastindx)
 
  475     while (slist[lastindx] >= 0 && firstindx < lastindx)
 
  501     int i = 0, j = 0, k = -1, mysize = size();
 
  502     while ( i < mysize ) {
 
  507         if ( i == k || slist[i] < 0 ) {
 
  514         j = ( k > 0 ) ? k : slist[i];
 
  521         std::iter_swap(ParticleList.begin() + i, ParticleList.begin() + j);
 
  532     for (i=0; i < mysize; ++i) {
 
  560 template <
class FT, 
unsigned Dim, 
class M, 
class C, 
class PT, 
class IntOp>
 
  563         const IntOp& , FT val) {
 
  574   for (ppiter = pp.
cbegin(); i < pp.
size(); ++i,++ppiter)
 
  584 template <
class FT, 
unsigned Dim, 
class M, 
class C, 
class PT,
 
  585           class IntOp, 
class CacheData>
 
  600   for (ppiter = pp.
begin(); i < pp.
size(); ++i, ++ppiter, ++citer)
 
  610 template <
class FT, 
unsigned Dim, 
class M, 
class C,
 
  611           class IntOp, 
class CacheData>
 
  623   for (citer = cache.
begin(); citer != cend; ++citer)
 
T * value_type(const SliceIterator< T > &)
void putMessage(Message &m, const T &t)
void getMessage_iter(Message &m, OutputIterator o)
void getMessage(Message &m, T &t)
void scatter(Field< FT, Dim, M, C > &f, const ParticleAttrib< Vektor< PT, Dim > > &pp, const IntOp &, FT val)
#define PA_SORT_COMPARE_SCALAR(SCALAR)
#define INCIPPLSTAT(stat)
std::string::iterator iterator
Mesh_t & get_mesh() const
ParticleAttribElem< T, 1U > operator()(unsigned)
virtual void printDebug(Inform &)
ParticleAttribBase::SortList_t SortList_t
virtual void ghostCreate(size_t)
virtual void sort(SortList_t &slist)
virtual size_t ghostGetMessage(Message &, size_t)
virtual size_t putMessage(Message &, size_t, size_t)
virtual void destroy(size_t M, size_t I, bool optDestroy=true)
virtual size_t getMessage(Message &, size_t)
const_iterator cbegin() const
virtual size_t ghostDestroy(size_t, size_t)
virtual size_t ghostPutMessage(Message &, size_t, size_t)
virtual void create(size_t)
void setGuardCells(const T &) const
static bool compare(const T &, const T &, bool)