The following commit has been merged in the master branch:
commit 3d93a61f7a533450f009764e87701a8780811719
Author: Anton Gladky <[email protected]>
Date:   Tue Mar 22 12:33:51 2011 +0100

    Deleted patches, aplied by upstream in 0.60.2

diff --git a/debian/patches/fix-forcecontainer-crash-lp724396.patch 
b/debian/patches/fix-forcecontainer-crash-lp724396.patch
deleted file mode 100644
index daaa258..0000000
--- a/debian/patches/fix-forcecontainer-crash-lp724396.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-Description: fixes crash in forceContainer after adding particles into the 
simulation
-Author: Sergei Dorofeenko <[email protected]>, Václav Šmilauer 
<[email protected]>, Anton Gladky <[email protected]>
-Bug: https://bugs.launchpad.net/bugs/724396
-Applied-Upstream: http://bazaar.launchpad.net/~yade-dev/yade/0.60/revision/2567
-
---- a/core/ForceContainer.hpp
-+++ b/core/ForceContainer.hpp
-@@ -4,7 +4,6 @@
- #include<string.h>
- #include<vector>
- #include<yade/lib-base/Math.hpp>
--// for Body::id_t
- #include<yade/core/Body.hpp>
- 
- #include<boost/static_assert.hpp>
-@@ -52,14 +51,17 @@
-               std::vector<vvector> _moveData;
-               std::vector<vvector> _rotData;
-               vvector _force, _torque, _move, _rot;
-+              std::vector<size_t> sizeOfThreads;
-               size_t size;
-+              bool syncedSizes;
-               int nThreads;
-               bool synced,moveRotUsed;
-               boost::mutex globalMutex;
-+              Vector3r _zero;
- 
--              inline void ensureSize(Body::id_t id){
-+              inline void ensureSize(Body::id_t id, int threadN){
-                       assert(nThreads>omp_get_thread_num());
--                      if (size<=(size_t)id) 
resize(min((size_t)1.5*(id+100),(size_t)(id+2000)));
-+                      if (sizeOfThreads[threadN]<=(size_t)id) 
resize(min((size_t)1.5*(id+100),(size_t)(id+2000)),threadN);
-               }
- 
-               inline void ensureSynced(){ if(!synced) throw 
runtime_error("ForceContainer not thread-synchronized; call sync() first!"); }
-@@ -74,30 +76,43 @@
-               // dummy function to avoid template resolution failure
-               friend class boost::serialization::access; template<class 
ArchiveT> void serialize(ArchiveT & ar, unsigned int version){}
-       public:
--              ForceContainer(): size(0), 
synced(true),moveRotUsed(false),syncCount(0), lastReset(0){
-+              ForceContainer(): 
size(0),syncedSizes(true),synced(true),moveRotUsed(false),_zero(Vector3r::Zero()),syncCount(0),lastReset(0){
-                       nThreads=omp_get_max_threads();
-                       for(int i=0; i<nThreads; i++){
-                               _forceData.push_back(vvector()); 
_torqueData.push_back(vvector());
--                              _moveData.push_back(vvector()); 
_rotData.push_back(vvector());
-+                              _moveData.push_back(vvector());  
_rotData.push_back(vvector());
-+                              sizeOfThreads.push_back(0);
-                       }
-               }
- 
--              const Vector3r& getForce(Body::id_t id)         { 
ensureSize(id); ensureSynced(); return _force[id]; }
--              void  addForce(Body::id_t id, const Vector3r& f){ 
ensureSize(id); synced=false;   _forceData[omp_get_thread_num()][id]+=f;}
--              const Vector3r& getTorque(Body::id_t id)        { 
ensureSize(id); ensureSynced(); return _torque[id]; }
--              void addTorque(Body::id_t id, const Vector3r& t){ 
ensureSize(id); synced=false;   _torqueData[omp_get_thread_num()][id]+=t;}
--              const Vector3r& getMove(Body::id_t id)          { 
ensureSize(id); ensureSynced(); return _move[id]; }
--              void  addMove(Body::id_t id, const Vector3r& m) { 
ensureSize(id); synced=false; moveRotUsed=true; 
_moveData[omp_get_thread_num()][id]+=m;}
--              const Vector3r& getRot(Body::id_t id)           { 
ensureSize(id); ensureSynced(); return _rot[id]; }
--              void  addRot(Body::id_t id, const Vector3r& r)  { 
ensureSize(id); synced=false; moveRotUsed=true; 
_rotData[omp_get_thread_num()][id]+=r;}
-+              const Vector3r& getForce(Body::id_t id)         { 
ensureSynced(); return ((size_t)id<size)?_force[id]:_zero; }
-+              void  addForce(Body::id_t id, const Vector3r& f){ 
ensureSize(id,omp_get_thread_num()); synced=false;   
_forceData[omp_get_thread_num()][id]+=f;}
-+              const Vector3r& getTorque(Body::id_t id)        { 
ensureSynced(); return ((size_t)id<size)?_torque[id]:_zero; }
-+              void addTorque(Body::id_t id, const Vector3r& t){ 
ensureSize(id,omp_get_thread_num()); synced=false;   
_torqueData[omp_get_thread_num()][id]+=t;}
-+              const Vector3r& getMove(Body::id_t id)          { 
ensureSynced(); return ((size_t)id<size)?_move[id]:_zero; }
-+              void  addMove(Body::id_t id, const Vector3r& m) { 
ensureSize(id,omp_get_thread_num()); synced=false; moveRotUsed=true; 
_moveData[omp_get_thread_num()][id]+=m;}
-+              const Vector3r& getRot(Body::id_t id)           { 
ensureSynced(); return ((size_t)id<size)?_rot[id]:_zero; }
-+              void  addRot(Body::id_t id, const Vector3r& r)  { 
ensureSize(id,omp_get_thread_num()); synced=false; moveRotUsed=true; 
_rotData[omp_get_thread_num()][id]+=r;}
-               /* To be benchmarked: sum thread data in getForce/getTorque 
upon request for each body individually instead of by the sync() function 
globally */
-               // this function is used from python so that running simulation 
is not slowed down by sync'ing on occasions
-               // since Vector3r writes are not atomic, it might (rarely) 
return wrong value, if the computation is running meanwhile
--              Vector3r getForceSingle (Body::id_t id){ ensureSize(id); 
Vector3r ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ ret+=_forceData 
[t][id]; } return ret; }
--              Vector3r getTorqueSingle(Body::id_t id){ ensureSize(id); 
Vector3r ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ 
ret+=_torqueData[t][id]; } return ret; }
--              Vector3r getMoveSingle  (Body::id_t id){ ensureSize(id); 
Vector3r ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ ret+=_moveData  
[t][id]; } return ret; }
--              Vector3r getRotSingle   (Body::id_t id){ ensureSize(id); 
Vector3r ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ ret+=_rotData   
[t][id]; } return ret; }
--
-+              Vector3r getForceSingle (Body::id_t id){ Vector3r 
ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ 
ret+=((size_t)id<sizeOfThreads[t])?_forceData [t][id]:_zero; } return ret; }
-+              Vector3r getTorqueSingle(Body::id_t id){ Vector3r 
ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ 
ret+=((size_t)id<sizeOfThreads[t])?_torqueData[t][id]:_zero; } return ret; }
-+              Vector3r getMoveSingle  (Body::id_t id){ Vector3r 
ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ 
ret+=((size_t)id<sizeOfThreads[t])?_moveData  [t][id]:_zero; } return ret; }
-+              Vector3r getRotSingle   (Body::id_t id){ Vector3r 
ret(Vector3r::Zero()); for(int t=0; t<nThreads; t++){ 
ret+=((size_t)id<sizeOfThreads[t])?_rotData   [t][id]:_zero; } return ret; }
-+              
-+              inline void syncSizesOfContainers() {
-+                      if (syncedSizes) return;
-+                      //check whether all containers have equal length, and 
if not resize it
-+                      for(int i=0; i<nThreads; i++){
-+                              if (sizeOfThreads[i]<size) resize(size,i);
-+                      }
-+                      _force.resize(size,Vector3r::Zero());
-+                      _torque.resize(size,Vector3r::Zero());
-+                      _move.resize(size,Vector3r::Zero());
-+                      _rot.resize(size,Vector3r::Zero());
-+                      syncedSizes=true;
-+              }
-               /* Sum contributions from all threads, save to _force&_torque.
-                * Locks globalMutex, since one thread modifies common data 
(_force&_torque).
-                * Must be called before get* methods are used. Exception is 
thrown otherwise, since data are not consistent. */
-@@ -105,7 +120,9 @@
-                       if(synced) return;
-                       boost::mutex::scoped_lock lock(globalMutex);
-                       if(synced) return; // if synced meanwhile
--                      // #pragma omp parallel for schedule(static)
-+
-+                      syncSizesOfContainers();
-+
-                       for(long id=0; id<(long)size; id++){
-                               Vector3r sumF(Vector3r::Zero()), 
sumT(Vector3r::Zero());
-                               for(int thread=0; thread<nThreads; thread++){ 
sumF+=_forceData[thread][id]; sumT+=_torqueData[thread][id];}
-@@ -123,31 +140,24 @@
-               unsigned long syncCount;
-               long lastReset;
- 
--              /* Change size of containers (number of bodies).
--               * Locks globalMutex, since on threads modifies other threads' 
data.
--               * Called very rarely (a few times at the beginning of the 
simulation). */
--              void resize(size_t newSize){
--                      boost::mutex::scoped_lock lock(globalMutex);
--                      if(size>=newSize) return; // in case on thread was 
waiting for resize, but it was already satisfied by another one
--                      for(int thread=0; thread<nThreads; thread++){
--                              _forceData 
[thread].resize(newSize,Vector3r::Zero());
--                              
_torqueData[thread].resize(newSize,Vector3r::Zero());
--                              
_moveData[thread].resize(newSize,Vector3r::Zero());
--                              
_rotData[thread].resize(newSize,Vector3r::Zero());
--                      }
--                      _force.resize(newSize,Vector3r::Zero()); 
_torque.resize(newSize,Vector3r::Zero());
--                      _move.resize(newSize,Vector3r::Zero()); 
_rot.resize(newSize,Vector3r::Zero());
--                      size=newSize;
-+              void resize(size_t newSize, int threadN){
-+                      _forceData [threadN].resize(newSize,Vector3r::Zero());
-+                      _torqueData[threadN].resize(newSize,Vector3r::Zero());
-+                      _moveData[threadN].resize(newSize,Vector3r::Zero());
-+                      _rotData[threadN].resize(newSize,Vector3r::Zero());
-+                      sizeOfThreads[threadN] = newSize;
-+                      if (size<newSize) size=newSize;
-+                      syncedSizes=false;
-               }
-               /*! Reset all data, also reset summary forces/torques and mark 
the container clean. */
-               // perhaps should be private and friend Scene or whatever the 
only caller should be
-               void reset(long iter){
-                       for(int thread=0; thread<nThreads; thread++){
--                              memset(&_forceData 
[thread][0],0,sizeof(Vector3r)*size);
--                              
memset(&_torqueData[thread][0],0,sizeof(Vector3r)*size);
-+                              memset(&_forceData 
[thread][0],0,sizeof(Vector3r)*sizeOfThreads[thread]);
-+                              
memset(&_torqueData[thread][0],0,sizeof(Vector3r)*sizeOfThreads[thread]);
-                               if(moveRotUsed){
--                                      memset(&_moveData  
[thread][0],0,sizeof(Vector3r)*size);
--                                      memset(&_rotData   
[thread][0],0,sizeof(Vector3r)*size);
-+                                      memset(&_moveData  
[thread][0],0,sizeof(Vector3r)*sizeOfThreads[thread]);
-+                                      memset(&_rotData   
[thread][0],0,sizeof(Vector3r)*sizeOfThreads[thread]);
-                               }
-                       }
-                       memset(&_force [0], 0,sizeof(Vector3r)*size);
-@@ -226,5 +236,4 @@
-               const bool& getMoveRotUsed() const {return moveRotUsed;}
- };
- 
--
- #endif
---- a/core/Scene.cpp
-+++ b/core/Scene.cpp
-@@ -70,7 +70,6 @@
-       if(needsInitializers){
-               checkStateTypes();
-               FOREACH(shared_ptr<Engine> e, initializers){ e->scene=this; 
if(e->dead || !e->isActivated()) continue; e->action(); } 
--              forces.resize(bodies->size());
-               needsInitializers=false;
-       }
-       if(!subStepping && subStep<0){
diff --git 
a/debian/patches/fix-memory-leak-in-InsertionSortCollider-lp721107.patch 
b/debian/patches/fix-memory-leak-in-InsertionSortCollider-lp721107.patch
deleted file mode 100644
index cfe3078..0000000
--- a/debian/patches/fix-memory-leak-in-InsertionSortCollider-lp721107.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Description: fixes memory leak in insertionsortcollider
-Author: Sergei Dorofeenko <[email protected]>, Václav Šmilauer 
<[email protected]>
-Bug: https://bugs.launchpad.net/bugs/721107
-Applied-Upstream: http://bazaar.launchpad.net/~yade-dev/yade/0.60/revision/2565
-
---- a/pkg/common/InsertionSortCollider.cpp
-+++ b/pkg/common/InsertionSortCollider.cpp
-@@ -92,7 +92,7 @@
-               // or the time of scheduled run already came, or we were never 
scheduled yet
-               if(!strideActive) return true;
-               if(!newton || (nBins>=1 && !newton->velocityBins)) return true;
--              if(nBins>=1 && 
newton->velocityBins->incrementDists_shouldCollide(scene->dt)) return true;
-+              if(nBins>=1 && 
newton->velocityBins->checkSize_incrementDists_shouldCollide(scene)) return 
true;
-               if(nBins<=0){
-                       if(fastestBodyMaxDist<0){fastestBodyMaxDist=0; return 
true;}
-                       
fastestBodyMaxDist+=sqrt(newton->maxVelocitySq)*scene->dt;
---- a/pkg/common/VelocityBins.cpp
-+++ b/pkg/common/VelocityBins.cpp
-@@ -9,8 +9,12 @@
- #endif
- CREATE_LOGGER(VelocityBins);
- 
--bool VelocityBins::incrementDists_shouldCollide(Real dt){
-+bool VelocityBins::checkSize_incrementDists_shouldCollide(const Scene* scene){
-+      // number of particles increased, recollision necessary
-+      // smaller number of particles is handled in setBins
-+      if(bodyBins.size()<scene->bodies->size()) { 
bodyBins.resize(scene->bodies->size(),/* put new particles to the slowest bin*/ 
bins.size()-1); return true; }
-       int i=0;
-+      const Real& dt=scene->dt;
-       FOREACH(Bin& bin, bins){
-               // NOTE: this mimics the integration scheme of NewtonIntegrator
-               // if you use different integration method, it must be changed 
(or the infrastructure somehow modified to allow for that)
---- a/pkg/common/VelocityBins.hpp
-+++ b/pkg/common/VelocityBins.hpp
-@@ -23,7 +23,7 @@
-       struct Bin{
-               Bin(): binMinVelSq(-1), binMaxVelSq(-1), maxDist(0), 
currDist(0), currMaxVelSq(0), nBodies(0){
-                       #ifdef YADE_OPENMP
--                              threadMaxVelSq.resize(omp_get_max_threads());
-+                              threadMaxVelSq.resize(omp_get_max_threads(),0.);
-                       #endif
-               };
-               // limits for bin memebrship
-@@ -60,7 +60,8 @@
-       void setBins(Scene*, Real currMaxVelSq, Real refSweepLength);
- 
-       // Increment maximum per-bin distances and tell whether some bodies may 
be      already getting out of the swept bbox (in that case, we need to 
recompute bounding volumes and run the collider)
--      bool incrementDists_shouldCollide(Real dt);
-+      // Also returns true if number of particles changed, in which case it 
adjusts internal storage accordingly
-+      bool checkSize_incrementDists_shouldCollide(const Scene*);
-       
-       /* NOTE: following 3 functions are separated because of multi-threaded 
operation of NewtonIntegrator
-       in that case, every thread must have its own per-bin maximum and 
binVelSqFinalize will assign the
diff --git a/debian/patches/series b/debian/patches/series
index 0618eb2..e69de29 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +0,0 @@
-fix-memory-leak-in-InsertionSortCollider-lp721107.patch
-vtkNetCDF-is-deleted-from-libs.patch
-fix-forcecontainer-crash-lp724396.patch
diff --git a/debian/patches/vtkNetCDF-is-deleted-from-libs.patch 
b/debian/patches/vtkNetCDF-is-deleted-from-libs.patch
deleted file mode 100644
index 43f41b3..0000000
--- a/debian/patches/vtkNetCDF-is-deleted-from-libs.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Description: vtkNetCDF was deleted from libs due to absence in libvtk5.6-dev. 
Seems, functionality is not corrupted.
-Author: Anton Gladky <[email protected]>
-Applied-Upstream: http://bazaar.launchpad.net/~yade-dev/yade/0.60/revision/2566
-
---- a/SConstruct
-+++ b/SConstruct
-@@ -377,7 +377,7 @@
-                       else: featureNotOK('qt4','Building with Qt4 implies the 
QGLViewer library installed (package libqglviewer-qt4-dev package in 
debian/ubuntu, libQGLViewer in RPM-based distributions)')
-       if 'vtk' in env['features']:
-               
ok=conf.CheckLibWithHeader(['vtkCommon'],'vtkInstantiator.h','c++','vtkInstantiator::New();',autoadd=1)
--              
env.Append(LIBS=['vtkHybrid','vtkFiltering','vtkRendering','vtkIO','vtkexoIIc','vtkParallel','vtkGraphics','vtkverdict','vtkImaging','vtkftgl','vtkDICOMParser','vtkmetaio','vtksqlite','vtkNetCDF'])
-+              
env.Append(LIBS=['vtkHybrid','vtkFiltering','vtkRendering','vtkIO','vtkexoIIc','vtkParallel','vtkGraphics','vtkverdict','vtkImaging','vtkftgl','vtkDICOMParser','vtkmetaio','vtksqlite'])
-               if not ok: featureNotOK('vtk',note="Installer can`t find 
vtk-library. Be sure you have it installed (usually, libvtk5-dev package). Or 
you might have to add VTK header directory (e.g. /usr/include/vtk-5.4) to 
CPPPATH.")
-       if 'gts' in env['features']:
-               env.ParseConfig('pkg-config gts --cflags --libs');

-- 
Yet Another Dynamic Engine. Platform for discrete element modeling.

_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to