From 78d7192df670791925f017b2a7413ff3ae7478d2 Mon Sep 17 00:00:00 2001
From: Rafael Ravedutti <rafaelravedutti@gmail.com>
Date: Sat, 27 Nov 2021 01:22:19 +0100
Subject: [PATCH] Add first compilable version separated in modules

Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
---
 src/pairs/code_gen/cgen.py  |  2 +-
 src/pairs/sim/pbc.py        | 10 +++++-----
 src/pairs/sim/simulation.py | 10 +++++++++-
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py
index d6261dc..51ada58 100644
--- a/src/pairs/code_gen/cgen.py
+++ b/src/pairs/code_gen/cgen.py
@@ -326,7 +326,7 @@ class CGen:
 
         if isinstance(ast_node, Deref):
             var = self.generate_expression(ast_node.var)
-            return f"*{var}"
+            return f"(*{var})"
 
         if isinstance(ast_node, Iter):
             assert mem is False, "Iterator is not lvalue!"
diff --git a/src/pairs/sim/pbc.py b/src/pairs/sim/pbc.py
index 08a5d96..f91dd13 100644
--- a/src/pairs/sim/pbc.py
+++ b/src/pairs/sim/pbc.py
@@ -89,12 +89,12 @@ class SetupPBC(Lowerable):
         sim.check_resize(pbc_capacity, npbc)
 
         npbc.set(0)
-        for i in For(sim, 0, nlocal + npbc):
-            pos = positions[i]
-            last_id = nlocal + npbc
-            last_pos = positions[last_id]
+        for d in range(0, ndims):
+            for i in For(sim, 0, nlocal + npbc):
+                pos = positions[i]
+                last_id = nlocal + npbc
+                last_pos = positions[last_id]
 
-            for d in range(0, ndims):
                 grid_length = grid.length(d)
                 # TODO: VecFilter?
                 for _ in Filter(sim, pos[d] < grid.min(d) + cutneigh):
diff --git a/src/pairs/sim/simulation.py b/src/pairs/sim/simulation.py
index 8e30895..8ef7b4f 100644
--- a/src/pairs/sim/simulation.py
+++ b/src/pairs/sim/simulation.py
@@ -71,7 +71,15 @@ class Simulation:
         self.module_list.append(module)
 
     def modules(self):
-        return self.module_list
+        sorted_mods = []
+        main_mod = None
+        for m in self.module_list:
+            if m.name != 'main':
+                sorted_mods.append(m)
+            else:
+                main_mod = m
+
+        return sorted_mods + [main_mod]
 
     def ndims(self):
         return self.dims
-- 
GitLab