Small changes in interface - Updated by PK
authorKumaresh P <kpattab2@uiuc.edu>
Tue, 22 Apr 2008 08:14:07 +0000 (08:14 +0000)
committerKumaresh P <kpattab2@uiuc.edu>
Tue, 22 Apr 2008 08:14:07 +0000 (08:14 +0000)
examples/charm++/Molecular/main.C
examples/charm++/Molecular/main.ci

index 05fc7acec1172efd9404ecef221bf260ed9bf4aa..d45af8f275573395bd19947f02cad46bc2923e94 100644 (file)
@@ -22,8 +22,8 @@
 #define DEFAULT_FINALSTEPCOUNT 2
 
 /* readonly */ CProxy_Main mainProxy;
-/* readonly */ CProxy_Cell cellArray; /* CHECKME */
-/* readonly */ CProxy_Interaction interactionArray; /* CHECKME */
+/* readonly */ CProxy_Cell cellArray;
+/* readonly */ CProxy_Interaction interactionArray;
 
 /* readonly */ int numParts;
 /* readonly */ int m; // Number of Chare Rows
@@ -36,7 +36,7 @@
 class Cell : public CBase_Cell {
   private:
     CkVec<Particle> particles;
-               CkVec<Particle> incomingParts;
+               CkVec<Particle> incomingParticles;
     int forceCount;                                                                                                                                    // to count the returns from interactions
     int stepCount;                                                                                                                                     // to count the number of steps, and decide when to stop
                int updateCount;
@@ -47,8 +47,8 @@ class Cell : public CBase_Cell {
     ~Cell();
 
     void start();
-    void updateParticles(CkVec<Particle> updates);
-    void force(CkVec<Particle> particles);
+    void updateParticles(CkVec<Particle>&);
+    void updateForces(CkVec<Particle>&);
     void stepDone();
 };
 
@@ -193,7 +193,8 @@ Cell::Cell() {
 
        // starting random generator
        srand48(time(NULL));
-
+  
+       /* Particle initialization */
        // initializing a number of particles
        for(i = 0; i < numParts / (m * n); i++){
                particles.push_back(Particle());
@@ -201,14 +202,11 @@ Cell::Cell() {
     particles[i].y = drand48() * L + thisIndex.y * L;
        }       
 
-       /* Particle initialization */
-
   forceCount = 0;
   stepCount = 0;
 }
 
 // Constructor needed for chare object migration (ignore for now)
-// NOTE: This constructor does not need to appear in the ".ci" file
 Cell::Cell(CkMigrateMessage *msg) { }                                         
 Cell::~Cell() {
   /* FIXME */ // Deallocate particle lists
@@ -265,16 +263,16 @@ void Cell::start() {
 
 }
 
-void Cell::force(CkVec<Particle> particles) {
+void Cell::updateForces(CkVec<Particle> &particles) {
   forceCount++;
   if( forceCount >= 9) {
     
     // Received all it's forces from the interactions.
-    
     stepCount++;
     forceCount = 0;
     
-    /* FIX ME*/ // Methods to migrate atoms.
+    /* FIX ME*/ // Update forces on own particles and determine which of them are being displaced to neighbors
+    /* FIX ME*/ // Calls to updateParticles on neighbours.
       
     #ifdef DEBUG
       CkPrintf("STEP: %d DONE:( %d , %d )\n", stepCount, thisIndex.x, thisIndex.y);
@@ -290,16 +288,27 @@ void Cell::force(CkVec<Particle> particles) {
 }
 
 // Function that receives a set of particles and updates the forces of them into the local set
-void Cell::updateParticles(CkVec<Particle> updates) {
-       updateCount++;
+void Cell::updateParticles(CkVec<Particle> &updates) {
+
+  updateCount++;
+
+  for( int i=0; i < updates.length(); i++) {
+    incomingParticles.push_back(updates[i]);
+  }
 
-       //CHECKincomingParts.append(updates);
+
+  
+       //CHECKincomingParticles.append(updates);
+
+  
 
        if(updateCount >= 8 ) {
-       
-               
                
-               updateCount = 0;
+               /* FIXME Synchronisation?? */
+       
+  
+    updateCount = 0;
+    /* FIXME Empty incomingParticles vector after appending it with particles */
        }
 
 }
@@ -326,11 +335,11 @@ void Interaction::interact(CkVec<Particle> particles, int x, int y ) {
       CkPrintf("SELF: ( %d , %d )\n", thisIndex.x, thisIndex.y );
       cellCount = 0;
                        interact(particles,particles);
-      cellArray( x, y).force(particles);
+      cellArray( x, y).updateForces(particles);
     } else {
                         bufferedX = x;
         bufferedY = y;
-                        bufferedParticles = particles;
+                        bufferedParticles = particles; /* CHECKME */
                }
 
   }
@@ -345,8 +354,8 @@ void Interaction::interact(CkVec<Particle> particles, int x, int y ) {
 
                interact(bufferedParticles,particles);
 
-    cellArray(bufferedX, bufferedY).force(bufferedParticles);
-    cellArray(x, y).force(particles);
+    cellArray(bufferedX, bufferedY).updateForces(bufferedParticles);
+    cellArray(x, y).updateForces(particles);
 
   }
 }
index 8e2f384667beb685c1f4aef90aa063d8e819c168..93a43733e9a84150de514190ee9234d8512b4937 100644 (file)
@@ -19,7 +19,7 @@ mainmodule main {
   array [2D] Cell {
     entry Cell();
     entry void start();
-    entry void force(CkVec<Particle> particles);
+    entry void updateForces(CkVec<Particle> particles);
                entry void updateParticles(CkVec<Particle> updates);
   };