]> git.unchartedbackwaters.co.uk Git - francis/ofc.git/commitdiff
Move more PPD-related expressions into new symbols.
authorFrancis Russell <francis@unchartedbackwaters.co.uk>
Sat, 7 Apr 2012 09:34:05 +0000 (10:34 +0100)
committerFrancis Russell <francis@unchartedbackwaters.co.uk>
Sat, 7 Apr 2012 09:34:05 +0000 (10:34 +0100)
src/ofc/codegen/ProducerStatement.scala
src/ofc/generators/onetep/PPDFunctionSet.scala

index c734264b2ae5c90554ff3189c76c44021c15bbfb..23ba91f10e079d6a68285ff0b07904072547fa7a 100644 (file)
@@ -111,7 +111,8 @@ class ProducerStatement extends Statement {
         }
       }
     }
-
+    
+    scope += statement
     block
   }
 }
index 9d21ce70efde8e1ca858dca7f3bd7d3e8b6c3126..2a6239a93199058b3fb53e7c36ddbba9607525ba 100644 (file)
@@ -17,10 +17,10 @@ class PPDFunctionSet(val basisName: String, dataName: String) extends FunctionSe
     val ppdIndex = producer.addIteration("ppd_index", 1, numPPDs)
     val ppdGlobalCount = (~(basis % FieldSymbol[PointerType[ArrayType[IntType]]]("ppd_list"))).readAt(ppdIndex, 1) - 1
 
-    // We need to calculate the integer co-ordinates of the PPD (0-based)
-    val a3pos = ppdGlobalCount / (cellWidthInPPDs(0)*cellWidthInPPDs(1))
-    val a2pos = (ppdGlobalCount % (cellWidthInPPDs(0)*cellWidthInPPDs(1)))/cellWidthInPPDs(0)
-    val a1pos = ppdGlobalCount % cellWidthInPPDs(0)
+    // The integer co-ordinates of the PPD (0-based)
+    val a3pos = producer.addExpression("ppd_pos1", ppdGlobalCount / (cellWidthInPPDs(0)*cellWidthInPPDs(1)))
+    val a2pos = producer.addExpression("ppd_pos2", (ppdGlobalCount % (cellWidthInPPDs(0)*cellWidthInPPDs(1)))/cellWidthInPPDs(0))
+    val a1pos = producer.addExpression("ppd_pos3", ppdGlobalCount % cellWidthInPPDs(0))
     val ppdPos = List(a1pos, a2pos, a3pos)
 
     val tightbox = (~(basis % FieldSymbol[PointerType[ArrayType[StructType]]]("tight_boxes"))).readAt(sphereIndex)
@@ -29,11 +29,11 @@ class PPDFunctionSet(val basisName: String, dataName: String) extends FunctionSe
     val ppdStartOffsets = for(dim <- 1 to 3) yield tightbox % FieldSymbol[IntType]("start_pts"+dim)
     val ppdFinishOffsets = for(dim <- 1 to 3) yield tightbox % FieldSymbol[IntType]("finish_pts"+dim)
 
-    // The first and last PPDs in PPD co-ordinates (inside simulation cell)
+    // The first and last PPDs in PPD co-ordinates (0-based, inside simulation cell)
     val startPPDs = for(dim <- 0 to 2) yield 
-      producer.addExpression("start_ppd"+(dim+1), (tightbox % FieldSymbol[IntType]("start_ppd"+(dim+1)) + cellWidthInPPDs(dim)) % cellWidthInPPDs(dim))
+      producer.addExpression("start_ppd"+(dim+1), (tightbox % FieldSymbol[IntType]("start_ppd"+(dim+1)) + cellWidthInPPDs(dim)-1) % cellWidthInPPDs(dim))
     val finishPPDs = for(dim <- 0 to 2) yield 
-      producer.addExpression("finish_ppd"+(dim+1),(tightbox % FieldSymbol[IntType]("finish_ppd"+(dim+1)) + cellWidthInPPDs(dim)) % cellWidthInPPDs(dim))
+      producer.addExpression("finish_ppd"+(dim+1),(tightbox % FieldSymbol[IntType]("finish_ppd"+(dim+1)) + cellWidthInPPDs(dim)-1) % cellWidthInPPDs(dim))
 
     // Offsets for the current PPD being iterated over
     val loopStarts = for(dim <- 0 to 2) yield