Ignore:
Timestamp:
Aug 30, 2012, 12:30:33 PM (13 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
b57b9b
Parents:
185795
Message:

Remove average force term in order to avoid particle drift.

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@2000 5161e1c8-67bf-11de-9fd5-51895aff932f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/units/particle/interface_particles.cpp

    r185795 r2d3854  
    216216      }
    217217
     218  /* Remove average force term */
     219  Vector average_force = 0.0;
     220  for (std::list<Particle::Particle>::const_iterator iter=particles.begin(); iter!=particles.end(); ++iter)
     221    average_force += iter->Charge() * iter->Field();
     222  const vmg_int& npl = MG::GetFactory().GetObjectStorageVal<vmg_int>("PARTICLE_NUM_LOCAL");
     223  const vmg_int num_particles_global = comm.GlobalSum(npl);
     224  average_force /= num_particles_global;
     225  comm.GlobalSumArray(average_force.vec(), 3);
     226  for (std::list<Particle::Particle>::iterator iter=particles.begin(); iter!=particles.end(); ++iter)
     227    iter->Field() -= average_force / iter->Charge();
     228
    218229  comm.CommParticlesBack(particles);
    219230
Note: See TracChangeset for help on using the changeset viewer.