From 9cb04b815ba4498469f6eec4096a4a309e239a93 Mon Sep 17 00:00:00 2001
From: Rafael Ravedutti <rafaelravedutti@gmail.com>
Date: Sun, 20 Feb 2022 17:24:58 +0100
Subject: [PATCH] Remove (some) useless generated property accesses when
 writing to properties

Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
---
 examples/kernels              | 1532 ++++++++++++++++-----------------
 examples/kernels.pdf          |  Bin 44739 -> 44739 bytes
 examples/lj_ns.cpp            |  193 +++--
 src/pairs/analysis/bin_ops.py |   10 +-
 src/pairs/code_gen/cgen.py    |   14 +-
 src/pairs/sim/pbc.py          |    3 +-
 6 files changed, 881 insertions(+), 871 deletions(-)

diff --git a/examples/kernels b/examples/kernels
index 14ac907..b676adc 100644
--- a/examples/kernels
+++ b/examples/kernels
@@ -1,770 +1,770 @@
 digraph AST {
 	node [color=lightblue2 style=filled]
 	size="6,6"
-	n140355025086840 [label=Block]
-	n140355025140984 [label=Module]
-	n140355025086840 -> n140355025140984
-	n140355025141040 [label=Module]
-	n140355025086840 -> n140355025141040
-	n140355025140984 [label=Module]
-	n140355025140928 [label=Block]
-	n140355025140984 -> n140355025140928
-	n140355025140928 [label=Block]
-	n140355025138688 [label=ParticleFor]
-	n140355025140928 -> n140355025138688
-	n140355025138688 [label=ParticleFor]
-	n140355024390632 [label=Block]
-	n140355025138688 -> n140355024390632
-	n140355027620920 [label=nlocal]
-	n140355025138688 -> n140355027620920
-	n140355024390632 [label=Block]
-	n140355024390800 [label=For]
-	n140355024390632 -> n140355024390800
-	n140355024391080 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024391080 -> n140355024390464
-	n140355025137792 [label=neighborlist_capacity]
-	n140355024391080 -> n140355025137792
-	n140355024390464 [label="Iter(14)"]
-	n140355025137792 [label=neighborlist_capacity]
-	n140355024391304 [label=PropertyAccess]
-	n140355025087064 [label=position]
-	n140355024391304 -> n140355025087064
-	n140355024390464 [label="Iter(14)"]
-	n140355024391304 -> n140355024390464
-	n140355024417120 [label="*"]
-	n140355024391304 -> n140355024417120
-	n140355024418968 [label="+"]
-	n140355024391304 -> n140355024418968
-	n140355024420760 [label="+"]
-	n140355024391304 -> n140355024420760
-	n140355025087064 [label=position]
-	n140355024417120 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024417120 -> n140355024390464
-	n140355024417176 [label=3]
-	n140355024417120 -> n140355024417176
-	n140355024417176 [label=3]
-	n140355024418968 [label="+"]
-	n140355024418800 [label="*"]
-	n140355024418968 -> n140355024418800
-	n140355024419024 [label=1]
-	n140355024418968 -> n140355024419024
-	n140355024418800 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024418800 -> n140355024390464
-	n140355024418856 [label=3]
-	n140355024418800 -> n140355024418856
-	n140355024418856 [label=3]
-	n140355024419024 [label=1]
-	n140355024420760 [label="+"]
-	n140355024420592 [label="*"]
-	n140355024420760 -> n140355024420592
-	n140355024420816 [label=2]
-	n140355024420760 -> n140355024420816
-	n140355024420592 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024420592 -> n140355024390464
-	n140355024420648 [label=3]
-	n140355024420592 -> n140355024420648
-	n140355024420648 [label=3]
-	n140355024420816 [label=2]
-	n140355024391696 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024391696 -> n140355024390464
-	n140355024391752 [label=3]
-	n140355024391696 -> n140355024391752
-	n140355024391752 [label=3]
-	n140355024418016 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024418016 -> n140355024390464
-	n140355024418072 [label=3]
-	n140355024418016 -> n140355024418072
-	n140355024418072 [label=3]
-	n140355024418184 [label="+"]
-	n140355024418016 [label="*"]
-	n140355024418184 -> n140355024418016
-	n140355024418240 [label=1]
-	n140355024418184 -> n140355024418240
-	n140355024418240 [label=1]
-	n140355024419808 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355024419808 -> n140355024390464
-	n140355024419864 [label=3]
-	n140355024419808 -> n140355024419864
-	n140355024419864 [label=3]
-	n140355024419976 [label="+"]
-	n140355024419808 [label="*"]
-	n140355024419976 -> n140355024419808
-	n140355024420032 [label=2]
-	n140355024419976 -> n140355024420032
-	n140355024420032 [label=2]
-	n140355025282160 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025282160 -> n140355024390464
-	n140355025282216 [label=3]
-	n140355025282160 -> n140355025282216
-	n140355025282216 [label=3]
-	n140355025282552 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025282552 -> n140355024390464
-	n140355025282608 [label=3]
-	n140355025282552 -> n140355025282608
-	n140355025282608 [label=3]
-	n140355025283056 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025283056 -> n140355024390464
-	n140355025283112 [label=3]
-	n140355025283056 -> n140355025283112
-	n140355025283112 [label=3]
-	n140355025283224 [label="+"]
-	n140355025283056 [label="*"]
-	n140355025283224 -> n140355025283056
-	n140355025283280 [label=1]
-	n140355025283224 -> n140355025283280
-	n140355025283280 [label=1]
-	n140355025283448 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025283448 -> n140355024390464
-	n140355025283504 [label=3]
-	n140355025283448 -> n140355025283504
-	n140355025283504 [label=3]
-	n140355025283616 [label="+"]
-	n140355025283448 [label="*"]
-	n140355025283616 -> n140355025283448
-	n140355025283672 [label=1]
-	n140355025283616 -> n140355025283672
-	n140355025283672 [label=1]
-	n140355025283952 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025283952 -> n140355024390464
-	n140355025284008 [label=3]
-	n140355025283952 -> n140355025284008
-	n140355025284008 [label=3]
-	n140355025284120 [label="+"]
-	n140355025283952 [label="*"]
-	n140355025284120 -> n140355025283952
-	n140355025284176 [label=2]
-	n140355025284120 -> n140355025284176
-	n140355025284176 [label=2]
-	n140355025284344 [label="*"]
-	n140355024390464 [label="Iter(14)"]
-	n140355025284344 -> n140355024390464
-	n140355025284400 [label=3]
-	n140355025284344 -> n140355025284400
-	n140355025284400 [label=3]
-	n140355025284512 [label="+"]
-	n140355025284344 [label="*"]
-	n140355025284512 -> n140355025284344
-	n140355025284568 [label=2]
-	n140355025284512 -> n140355025284568
-	n140355025284568 [label=2]
-	n140355024390800 [label=For]
-	n140355024390856 [label="Iter(15)"]
-	n140355024390800 -> n140355024390856
-	n140355024390968 [label=Block]
-	n140355024390800 -> n140355024390968
-	n140355024390912 [label=0]
-	n140355024390800 -> n140355024390912
-	n140355024390744 [label=ArrayAccess]
-	n140355024390800 -> n140355024390744
-	n140355024390856 [label="Iter(15)"]
-	n140355024390968 [label=Block]
-	n140355024454544 [label=Filter]
-	n140355024390968 -> n140355024454544
-	n140355024391192 [label="+"]
-	n140355024391080 [label="*"]
-	n140355024391192 -> n140355024391080
-	n140355024390856 [label="Iter(15)"]
-	n140355024391192 -> n140355024390856
-	n140355024391416 [label=PropertyAccess]
-	n140355025087064 [label=position]
-	n140355024391416 -> n140355025087064
-	n140355024391024 [label=ArrayAccess]
-	n140355024391416 -> n140355024391024
-	n140355024417456 [label="*"]
-	n140355024391416 -> n140355024417456
-	n140355024419304 [label="+"]
-	n140355024391416 -> n140355024419304
-	n140355024453928 [label="+"]
-	n140355024391416 -> n140355024453928
-	n140355024391024 [label=ArrayAccess]
-	n140355025137848 [label=neighborlists]
-	n140355024391024 -> n140355025137848
-	n140355024391192 [label="+"]
-	n140355024391024 -> n140355024391192
-	n140355025137848 [label=neighborlists]
-	n140355024417456 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024417456 -> n140355024391024
-	n140355024417512 [label=3]
-	n140355024417456 -> n140355024417512
-	n140355024417512 [label=3]
-	n140355024419304 [label="+"]
-	n140355024419136 [label="*"]
-	n140355024419304 -> n140355024419136
-	n140355024419360 [label=1]
-	n140355024419304 -> n140355024419360
-	n140355024419136 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024419136 -> n140355024391024
-	n140355024419192 [label=3]
-	n140355024419136 -> n140355024419192
-	n140355024419192 [label=3]
-	n140355024419360 [label=1]
-	n140355024453928 [label="+"]
-	n140355024453760 [label="*"]
-	n140355024453928 -> n140355024453760
-	n140355024453984 [label=2]
-	n140355024453928 -> n140355024453984
-	n140355024453760 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024453760 -> n140355024391024
-	n140355024453816 [label=3]
-	n140355024453760 -> n140355024453816
-	n140355024453816 [label=3]
-	n140355024453984 [label=2]
-	n140355024391528 [label="-"]
-	n140355024391304 [label=PropertyAccess]
-	n140355024391528 -> n140355024391304
-	n140355024391416 [label=PropertyAccess]
-	n140355024391528 -> n140355024391416
-	n140355024392032 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024392032 -> n140355024391024
-	n140355024392088 [label=3]
-	n140355024392032 -> n140355024392088
-	n140355024392088 [label=3]
-	n140355024417848 [label="*"]
-	n140355024417008 [label=VectorAccess]
-	n140355024417848 -> n140355024417008
-	n140355024417792 [label=VectorAccess]
-	n140355024417848 -> n140355024417792
-	n140355024417008 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024417008 -> n140355024391528
-	n140355024417792 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024417792 -> n140355024391528
-	n140355024418352 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024418352 -> n140355024391024
-	n140355024418408 [label=3]
-	n140355024418352 -> n140355024418408
-	n140355024418408 [label=3]
-	n140355024418520 [label="+"]
-	n140355024418352 [label="*"]
-	n140355024418520 -> n140355024418352
-	n140355024418576 [label=1]
-	n140355024418520 -> n140355024418576
-	n140355024418576 [label=1]
-	n140355024419528 [label="*"]
-	n140355024418688 [label=VectorAccess]
-	n140355024419528 -> n140355024418688
-	n140355024419472 [label=VectorAccess]
-	n140355024419528 -> n140355024419472
-	n140355024418688 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024418688 -> n140355024391528
-	n140355024419472 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024419472 -> n140355024391528
-	n140355024419640 [label="+"]
-	n140355024417848 [label="*"]
-	n140355024419640 -> n140355024417848
-	n140355024419528 [label="*"]
-	n140355024419640 -> n140355024419528
-	n140355024420144 [label="*"]
-	n140355024391024 [label=ArrayAccess]
-	n140355024420144 -> n140355024391024
-	n140355024420200 [label=3]
-	n140355024420144 -> n140355024420200
-	n140355024420200 [label=3]
-	n140355024420312 [label="+"]
-	n140355024420144 [label="*"]
-	n140355024420312 -> n140355024420144
-	n140355024420368 [label=2]
-	n140355024420312 -> n140355024420368
-	n140355024420368 [label=2]
-	n140355024454152 [label="*"]
-	n140355024420480 [label=VectorAccess]
-	n140355024454152 -> n140355024420480
-	n140355024454096 [label=VectorAccess]
-	n140355024454152 -> n140355024454096
-	n140355024420480 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024420480 -> n140355024391528
-	n140355024454096 [label=VectorAccess]
-	n140355024391528 [label="-"]
-	n140355024454096 -> n140355024391528
-	n140355024454264 [label="+"]
-	n140355024419640 [label="+"]
-	n140355024454264 -> n140355024419640
-	n140355024454152 [label="*"]
-	n140355024454264 -> n140355024454152
-	n140355024454376 [label="<"]
-	n140355024454264 [label="+"]
-	n140355024454376 -> n140355024454264
-	n140355024454432 [label=2.5]
-	n140355024454376 -> n140355024454432
-	n140355024454432 [label=2.5]
-	n140355024454544 [label=Filter]
-	n140355024454376 [label="<"]
-	n140355024454544 -> n140355024454376
-	n140355025140872 [label=Block]
-	n140355024454544 -> n140355025140872
-	n140355025140872 [label=Block]
-	n140355025282048 [label=Assign]
-	n140355025140872 -> n140355025282048
-	n140355025141208 [label="/"]
-	n140355025141264 [label=1.0]
-	n140355025141208 -> n140355025141264
-	n140355024454264 [label="+"]
-	n140355025141208 -> n140355024454264
-	n140355025141264 [label=1.0]
-	n140355025141376 [label="*"]
-	n140355025141208 [label="/"]
-	n140355025141376 -> n140355025141208
-	n140355025141208 [label="/"]
-	n140355025141376 -> n140355025141208
-	n140355025141488 [label="*"]
-	n140355025141376 [label="*"]
-	n140355025141488 -> n140355025141376
-	n140355025141208 [label="/"]
-	n140355025141488 -> n140355025141208
-	n140355025141152 [label=PropertyAccess]
-	n140355025087176 [label=force]
-	n140355025141152 -> n140355025087176
-	n140355024390464 [label="Iter(14)"]
-	n140355025141152 -> n140355024390464
-	n140355025282552 [label="*"]
-	n140355025141152 -> n140355025282552
-	n140355025283616 [label="+"]
-	n140355025141152 -> n140355025283616
-	n140355025284512 [label="+"]
-	n140355025141152 -> n140355025284512
-	n140355025087176 [label=force]
-	n140355025281096 [label="*"]
-	n140355024391528 [label="-"]
-	n140355025281096 -> n140355024391528
-	n140355025281152 [label=48.0]
-	n140355025281096 -> n140355025281152
-	n140355025281152 [label=48.0]
-	n140355025281264 [label="*"]
-	n140355024391528 [label="-"]
-	n140355025281264 -> n140355024391528
-	n140355024827392 [label="*"]
-	n140355025281264 -> n140355024827392
-	n140355024827392 [label="*"]
-	n140355025281152 [label=48.0]
-	n140355024827392 -> n140355025281152
-	n140355025141488 [label="*"]
-	n140355024827392 -> n140355025141488
-	n140355025281376 [label="-"]
-	n140355025141488 [label="*"]
-	n140355025281376 -> n140355025141488
-	n140355025281432 [label=0.5]
-	n140355025281376 -> n140355025281432
-	n140355025281432 [label=0.5]
-	n140355025281544 [label="*"]
-	n140355024391528 [label="-"]
-	n140355025281544 -> n140355024391528
-	n140355024803320 [label="*"]
-	n140355025281544 -> n140355024803320
-	n140355024803320 [label="*"]
-	n140355024827392 [label="*"]
-	n140355024803320 -> n140355024827392
-	n140355025281376 [label="-"]
-	n140355024803320 -> n140355025281376
-	n140355025281656 [label="*"]
-	n140355024391528 [label="-"]
-	n140355025281656 -> n140355024391528
-	n140355024803040 [label="*"]
-	n140355025281656 -> n140355024803040
-	n140355024803040 [label="*"]
-	n140355024803320 [label="*"]
-	n140355024803040 -> n140355024803320
-	n140355025141208 [label="/"]
-	n140355024803040 -> n140355025141208
-	n140355025281936 [label="+"]
-	n140355025141152 [label=PropertyAccess]
-	n140355025281936 -> n140355025141152
-	n140355025281656 [label="*"]
-	n140355025281936 -> n140355025281656
-	n140355025282048 [label=Assign]
-	n140355025282944 [label=VectorAccess]
-	n140355025282048 -> n140355025282944
-	n140355025282496 [label=VectorAccess]
-	n140355025282048 -> n140355025282496
-	n140355025283840 [label=VectorAccess]
-	n140355025282048 -> n140355025283840
-	n140355025283392 [label=VectorAccess]
-	n140355025282048 -> n140355025283392
-	n140355025284736 [label=VectorAccess]
-	n140355025282048 -> n140355025284736
-	n140355025284288 [label=VectorAccess]
-	n140355025282048 -> n140355025284288
-	n140355025282944 [label=VectorAccess]
-	n140355025141152 [label=PropertyAccess]
-	n140355025282944 -> n140355025141152
-	n140355025282496 [label=VectorAccess]
-	n140355025281936 [label="+"]
-	n140355025282496 -> n140355025281936
-	n140355025283840 [label=VectorAccess]
-	n140355025141152 [label=PropertyAccess]
-	n140355025283840 -> n140355025141152
-	n140355025283392 [label=VectorAccess]
-	n140355025281936 [label="+"]
-	n140355025283392 -> n140355025281936
-	n140355025284736 [label=VectorAccess]
-	n140355025141152 [label=PropertyAccess]
-	n140355025284736 -> n140355025141152
-	n140355025284288 [label=VectorAccess]
-	n140355025281936 [label="+"]
-	n140355025284288 -> n140355025281936
-	n140355024390912 [label=0]
-	n140355024390744 [label=ArrayAccess]
-	n140355025137904 [label=numneighs]
-	n140355024390744 -> n140355025137904
-	n140355024390464 [label="Iter(14)"]
-	n140355024390744 -> n140355024390464
-	n140355025137904 [label=numneighs]
-	n140355027620920 [label=nlocal]
-	n140355025141040 [label=Module]
-	n140355025138352 [label=Block]
-	n140355025141040 -> n140355025138352
-	n140355025138352 [label=Block]
-	n140355025140536 [label=ParticleFor]
-	n140355025138352 -> n140355025140536
-	n140355025140536 [label=ParticleFor]
-	n140355025138576 [label=Block]
-	n140355025140536 -> n140355025138576
-	n140355027620920 [label=nlocal]
-	n140355025140536 -> n140355027620920
-	n140355025138576 [label=Block]
-	n140355024802312 [label=Assign]
-	n140355025138576 -> n140355024802312
-	n140355024827112 [label=Assign]
-	n140355025138576 -> n140355024827112
-	n140355025284848 [label=PropertyAccess]
-	n140355025087120 [label=velocity]
-	n140355025284848 -> n140355025087120
-	n140355025139584 [label="Iter(0)"]
-	n140355025284848 -> n140355025139584
-	n140355024802816 [label="*"]
-	n140355025284848 -> n140355024802816
-	n140355024804552 [label="+"]
-	n140355025284848 -> n140355024804552
-	n140355024805784 [label="+"]
-	n140355025284848 -> n140355024805784
-	n140355025087120 [label=velocity]
-	n140355025139584 [label="Iter(0)"]
-	n140355024802816 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024802816 -> n140355025139584
-	n140355024803208 [label=3]
-	n140355024802816 -> n140355024803208
-	n140355024803208 [label=3]
-	n140355024804552 [label="+"]
-	n140355024804048 [label="*"]
-	n140355024804552 -> n140355024804048
-	n140355024804608 [label=1]
-	n140355024804552 -> n140355024804608
-	n140355024804048 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024804048 -> n140355025139584
-	n140355024804440 [label=3]
-	n140355024804048 -> n140355024804440
-	n140355024804440 [label=3]
-	n140355024804608 [label=1]
-	n140355024805784 [label="+"]
-	n140355024805280 [label="*"]
-	n140355024805784 -> n140355024805280
-	n140355024805840 [label=2]
-	n140355024805784 -> n140355024805840
-	n140355024805280 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024805280 -> n140355025139584
-	n140355024805672 [label=3]
-	n140355024805280 -> n140355024805672
-	n140355024805672 [label=3]
-	n140355024805840 [label=2]
-	n140355025284960 [label=PropertyAccess]
-	n140355025087176 [label=force]
-	n140355025284960 -> n140355025087176
-	n140355025139584 [label="Iter(0)"]
-	n140355025284960 -> n140355025139584
-	n140355024802872 [label="*"]
-	n140355025284960 -> n140355024802872
-	n140355024804272 [label="+"]
-	n140355025284960 -> n140355024804272
-	n140355024805504 [label="+"]
-	n140355025284960 -> n140355024805504
-	n140355024802872 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024802872 -> n140355025139584
-	n140355024802928 [label=3]
-	n140355024802872 -> n140355024802928
-	n140355024802928 [label=3]
-	n140355024804272 [label="+"]
-	n140355024804104 [label="*"]
-	n140355024804272 -> n140355024804104
-	n140355024804328 [label=1]
-	n140355024804272 -> n140355024804328
-	n140355024804104 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024804104 -> n140355025139584
-	n140355024804160 [label=3]
-	n140355024804104 -> n140355024804160
-	n140355024804160 [label=3]
-	n140355024804328 [label=1]
-	n140355024805504 [label="+"]
-	n140355024805336 [label="*"]
-	n140355024805504 -> n140355024805336
-	n140355024805560 [label=2]
-	n140355024805504 -> n140355024805560
-	n140355024805336 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024805336 -> n140355025139584
-	n140355024805392 [label=3]
-	n140355024805336 -> n140355024805392
-	n140355024805392 [label=3]
-	n140355024805560 [label=2]
-	n140355025285072 [label="*"]
-	n140355024801864 [label=0.005]
-	n140355025285072 -> n140355024801864
-	n140355025284960 [label=PropertyAccess]
-	n140355025285072 -> n140355025284960
-	n140355024801864 [label=0.005]
-	n140355024801976 [label=PropertyAccess]
-	n140355025087008 [label=mass]
-	n140355024801976 -> n140355025087008
-	n140355025139584 [label="Iter(0)"]
-	n140355024801976 -> n140355025139584
-	n140355025087008 [label=mass]
-	n140355024802088 [label="/"]
-	n140355025285072 [label="*"]
-	n140355024802088 -> n140355025285072
-	n140355024801976 [label=PropertyAccess]
-	n140355024802088 -> n140355024801976
-	n140355024802200 [label="+"]
-	n140355025284848 [label=PropertyAccess]
-	n140355024802200 -> n140355025284848
-	n140355024802088 [label="/"]
-	n140355024802200 -> n140355024802088
-	n140355024802424 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024802424 -> n140355025139584
-	n140355024802480 [label=3]
-	n140355024802424 -> n140355024802480
-	n140355024802480 [label=3]
-	n140355024803656 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024803656 -> n140355025139584
-	n140355024803712 [label=3]
-	n140355024803656 -> n140355024803712
-	n140355024803712 [label=3]
-	n140355024803824 [label="+"]
-	n140355024803656 [label="*"]
-	n140355024803824 -> n140355024803656
-	n140355024803880 [label=1]
-	n140355024803824 -> n140355024803880
-	n140355024803880 [label=1]
-	n140355024804888 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024804888 -> n140355025139584
-	n140355024804944 [label=3]
-	n140355024804888 -> n140355024804944
-	n140355024804944 [label=3]
-	n140355024805056 [label="+"]
-	n140355024804888 [label="*"]
-	n140355024805056 -> n140355024804888
-	n140355024805112 [label=2]
-	n140355024805056 -> n140355024805112
-	n140355024805112 [label=2]
-	n140355024802312 [label=Assign]
-	n140355024803544 [label=VectorAccess]
-	n140355024802312 -> n140355024803544
-	n140355024802760 [label=VectorAccess]
-	n140355024802312 -> n140355024802760
-	n140355024804776 [label=VectorAccess]
-	n140355024802312 -> n140355024804776
-	n140355024803992 [label=VectorAccess]
-	n140355024802312 -> n140355024803992
-	n140355024826552 [label=VectorAccess]
-	n140355024802312 -> n140355024826552
-	n140355024805224 [label=VectorAccess]
-	n140355024802312 -> n140355024805224
-	n140355024803544 [label=VectorAccess]
-	n140355025284848 [label=PropertyAccess]
-	n140355024803544 -> n140355025284848
-	n140355024802760 [label=VectorAccess]
-	n140355024802200 [label="+"]
-	n140355024802760 -> n140355024802200
-	n140355024804776 [label=VectorAccess]
-	n140355025284848 [label=PropertyAccess]
-	n140355024804776 -> n140355025284848
-	n140355024803992 [label=VectorAccess]
-	n140355024802200 [label="+"]
-	n140355024803992 -> n140355024802200
-	n140355024826552 [label=VectorAccess]
-	n140355025284848 [label=PropertyAccess]
-	n140355024826552 -> n140355025284848
-	n140355024805224 [label=VectorAccess]
-	n140355024802200 [label="+"]
-	n140355024805224 -> n140355024802200
-	n140355024826608 [label=PropertyAccess]
-	n140355025087064 [label=position]
-	n140355024826608 -> n140355025087064
-	n140355025139584 [label="Iter(0)"]
-	n140355024826608 -> n140355025139584
-	n140355024827952 [label="*"]
-	n140355024826608 -> n140355024827952
-	n140355024829352 [label="+"]
-	n140355024826608 -> n140355024829352
-	n140355028299112 [label="+"]
-	n140355024826608 -> n140355028299112
-	n140355024827952 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024827952 -> n140355025139584
-	n140355024828008 [label=3]
-	n140355024827952 -> n140355024828008
-	n140355024828008 [label=3]
-	n140355024829352 [label="+"]
-	n140355024829184 [label="*"]
-	n140355024829352 -> n140355024829184
-	n140355024829408 [label=1]
-	n140355024829352 -> n140355024829408
-	n140355024829184 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024829184 -> n140355025139584
-	n140355024829240 [label=3]
-	n140355024829184 -> n140355024829240
-	n140355024829240 [label=3]
-	n140355024829408 [label=1]
-	n140355028299112 [label="+"]
-	n140355024830416 [label="*"]
-	n140355028299112 -> n140355024830416
-	n140355024851128 [label=2]
-	n140355028299112 -> n140355024851128
-	n140355024830416 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024830416 -> n140355025139584
-	n140355024851016 [label=3]
-	n140355024830416 -> n140355024851016
-	n140355024851016 [label=3]
-	n140355024851128 [label=2]
-	n140355024826720 [label=PropertyAccess]
-	n140355025087120 [label=velocity]
-	n140355024826720 -> n140355025087120
-	n140355025139584 [label="Iter(0)"]
-	n140355024826720 -> n140355025139584
-	n140355024827616 [label="*"]
-	n140355024826720 -> n140355024827616
-	n140355024829016 [label="+"]
-	n140355024826720 -> n140355024829016
-	n140355024830248 [label="+"]
-	n140355024826720 -> n140355024830248
-	n140355024827616 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024827616 -> n140355025139584
-	n140355024827672 [label=3]
-	n140355024827616 -> n140355024827672
-	n140355024827672 [label=3]
-	n140355024829016 [label="+"]
-	n140355024828848 [label="*"]
-	n140355024829016 -> n140355024828848
-	n140355024829072 [label=1]
-	n140355024829016 -> n140355024829072
-	n140355024828848 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024828848 -> n140355025139584
-	n140355024828904 [label=3]
-	n140355024828848 -> n140355024828904
-	n140355024828904 [label=3]
-	n140355024829072 [label=1]
-	n140355024830248 [label="+"]
-	n140355024830080 [label="*"]
-	n140355024830248 -> n140355024830080
-	n140355024830304 [label=2]
-	n140355024830248 -> n140355024830304
-	n140355024830080 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024830080 -> n140355025139584
-	n140355024830136 [label=3]
-	n140355024830080 -> n140355024830136
-	n140355024830136 [label=3]
-	n140355024830304 [label=2]
-	n140355024826832 [label="*"]
-	n140355024826888 [label=0.005]
-	n140355024826832 -> n140355024826888
-	n140355024826720 [label=PropertyAccess]
-	n140355024826832 -> n140355024826720
-	n140355024826888 [label=0.005]
-	n140355024827000 [label="+"]
-	n140355024826608 [label=PropertyAccess]
-	n140355024827000 -> n140355024826608
-	n140355024826832 [label="*"]
-	n140355024827000 -> n140355024826832
-	n140355024827224 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024827224 -> n140355025139584
-	n140355024827280 [label=3]
-	n140355024827224 -> n140355024827280
-	n140355024827280 [label=3]
-	n140355024828456 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024828456 -> n140355025139584
-	n140355024828512 [label=3]
-	n140355024828456 -> n140355024828512
-	n140355024828512 [label=3]
-	n140355024828624 [label="+"]
-	n140355024828456 [label="*"]
-	n140355024828624 -> n140355024828456
-	n140355024828680 [label=1]
-	n140355024828624 -> n140355024828680
-	n140355024828680 [label=1]
-	n140355024829688 [label="*"]
-	n140355025139584 [label="Iter(0)"]
-	n140355024829688 -> n140355025139584
-	n140355024829744 [label=3]
-	n140355024829688 -> n140355024829744
-	n140355024829744 [label=3]
-	n140355024829856 [label="+"]
-	n140355024829688 [label="*"]
-	n140355024829856 -> n140355024829688
-	n140355024829912 [label=2]
-	n140355024829856 -> n140355024829912
-	n140355024829912 [label=2]
-	n140355024827112 [label=Assign]
-	n140355024828344 [label=VectorAccess]
-	n140355024827112 -> n140355024828344
-	n140355024827560 [label=VectorAccess]
-	n140355024827112 -> n140355024827560
-	n140355024829576 [label=VectorAccess]
-	n140355024827112 -> n140355024829576
-	n140355024828792 [label=VectorAccess]
-	n140355024827112 -> n140355024828792
-	n140355024851296 [label=VectorAccess]
-	n140355024827112 -> n140355024851296
-	n140355024830024 [label=VectorAccess]
-	n140355024827112 -> n140355024830024
-	n140355024828344 [label=VectorAccess]
-	n140355024826608 [label=PropertyAccess]
-	n140355024828344 -> n140355024826608
-	n140355024827560 [label=VectorAccess]
-	n140355024827000 [label="+"]
-	n140355024827560 -> n140355024827000
-	n140355024829576 [label=VectorAccess]
-	n140355024826608 [label=PropertyAccess]
-	n140355024829576 -> n140355024826608
-	n140355024828792 [label=VectorAccess]
-	n140355024827000 [label="+"]
-	n140355024828792 -> n140355024827000
-	n140355024851296 [label=VectorAccess]
-	n140355024826608 [label=PropertyAccess]
-	n140355024851296 -> n140355024826608
-	n140355024830024 [label=VectorAccess]
-	n140355024827000 [label="+"]
-	n140355024830024 -> n140355024827000
+	n139718004412312 [label=Block]
+	n139718004022408 [label=Module]
+	n139718004412312 -> n139718004022408
+	n139718004022464 [label=Module]
+	n139718004412312 -> n139718004022464
+	n139718004022408 [label=Module]
+	n139718004022352 [label=Block]
+	n139718004022408 -> n139718004022352
+	n139718004022352 [label=Block]
+	n139718004020224 [label=ParticleFor]
+	n139718004022352 -> n139718004020224
+	n139718004020224 [label=ParticleFor]
+	n139718003272448 [label=Block]
+	n139718004020224 -> n139718003272448
+	n139718006498360 [label=nlocal]
+	n139718004020224 -> n139718006498360
+	n139718003272448 [label=Block]
+	n139718003272616 [label=For]
+	n139718003272448 -> n139718003272616
+	n139718003272896 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003272896 -> n139718003272280
+	n139718003965848 [label=neighborlist_capacity]
+	n139718003272896 -> n139718003965848
+	n139718003272280 [label="Iter(14)"]
+	n139718003965848 [label=neighborlist_capacity]
+	n139718003273120 [label=PropertyAccess]
+	n139718003964336 [label=position]
+	n139718003273120 -> n139718003964336
+	n139718003272280 [label="Iter(14)"]
+	n139718003273120 -> n139718003272280
+	n139718003303032 [label="*"]
+	n139718003273120 -> n139718003303032
+	n139718003304880 [label="+"]
+	n139718003273120 -> n139718003304880
+	n139718003339504 [label="+"]
+	n139718003273120 -> n139718003339504
+	n139718003964336 [label=position]
+	n139718003303032 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003303032 -> n139718003272280
+	n139718003303088 [label=3]
+	n139718003303032 -> n139718003303088
+	n139718003303088 [label=3]
+	n139718003304880 [label="+"]
+	n139718003304712 [label="*"]
+	n139718003304880 -> n139718003304712
+	n139718003304936 [label=1]
+	n139718003304880 -> n139718003304936
+	n139718003304712 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003304712 -> n139718003272280
+	n139718003304768 [label=3]
+	n139718003304712 -> n139718003304768
+	n139718003304768 [label=3]
+	n139718003304936 [label=1]
+	n139718003339504 [label="+"]
+	n139718003339336 [label="*"]
+	n139718003339504 -> n139718003339336
+	n139718003339560 [label=2]
+	n139718003339504 -> n139718003339560
+	n139718003339336 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003339336 -> n139718003272280
+	n139718003339392 [label=3]
+	n139718003339336 -> n139718003339392
+	n139718003339392 [label=3]
+	n139718003339560 [label=2]
+	n139718003273512 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003273512 -> n139718003272280
+	n139718003273568 [label=3]
+	n139718003273512 -> n139718003273568
+	n139718003273568 [label=3]
+	n139718003303928 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003303928 -> n139718003272280
+	n139718003303984 [label=3]
+	n139718003303928 -> n139718003303984
+	n139718003303984 [label=3]
+	n139718003304096 [label="+"]
+	n139718003303928 [label="*"]
+	n139718003304096 -> n139718003303928
+	n139718003304152 [label=1]
+	n139718003304096 -> n139718003304152
+	n139718003304152 [label=1]
+	n139718003305720 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718003305720 -> n139718003272280
+	n139718003305776 [label=3]
+	n139718003305720 -> n139718003305776
+	n139718003305776 [label=3]
+	n139718003305888 [label="+"]
+	n139718003305720 [label="*"]
+	n139718003305888 -> n139718003305720
+	n139718003305944 [label=2]
+	n139718003305888 -> n139718003305944
+	n139718003305944 [label=2]
+	n139718004167680 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004167680 -> n139718003272280
+	n139718004167736 [label=3]
+	n139718004167680 -> n139718004167736
+	n139718004167736 [label=3]
+	n139718004168072 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004168072 -> n139718003272280
+	n139718004168128 [label=3]
+	n139718004168072 -> n139718004168128
+	n139718004168128 [label=3]
+	n139718004168576 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004168576 -> n139718003272280
+	n139718004168632 [label=3]
+	n139718004168576 -> n139718004168632
+	n139718004168632 [label=3]
+	n139718004168744 [label="+"]
+	n139718004168576 [label="*"]
+	n139718004168744 -> n139718004168576
+	n139718004168800 [label=1]
+	n139718004168744 -> n139718004168800
+	n139718004168800 [label=1]
+	n139718004168968 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004168968 -> n139718003272280
+	n139718004169024 [label=3]
+	n139718004168968 -> n139718004169024
+	n139718004169024 [label=3]
+	n139718004169136 [label="+"]
+	n139718004168968 [label="*"]
+	n139718004169136 -> n139718004168968
+	n139718004169192 [label=1]
+	n139718004169136 -> n139718004169192
+	n139718004169192 [label=1]
+	n139718004169472 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004169472 -> n139718003272280
+	n139718004169528 [label=3]
+	n139718004169472 -> n139718004169528
+	n139718004169528 [label=3]
+	n139718004169640 [label="+"]
+	n139718004169472 [label="*"]
+	n139718004169640 -> n139718004169472
+	n139718004169696 [label=2]
+	n139718004169640 -> n139718004169696
+	n139718004169696 [label=2]
+	n139718004169864 [label="*"]
+	n139718003272280 [label="Iter(14)"]
+	n139718004169864 -> n139718003272280
+	n139718004169920 [label=3]
+	n139718004169864 -> n139718004169920
+	n139718004169920 [label=3]
+	n139718004170032 [label="+"]
+	n139718004169864 [label="*"]
+	n139718004170032 -> n139718004169864
+	n139718004170088 [label=2]
+	n139718004170032 -> n139718004170088
+	n139718004170088 [label=2]
+	n139718003272616 [label=For]
+	n139718003272672 [label="Iter(15)"]
+	n139718003272616 -> n139718003272672
+	n139718003272784 [label=Block]
+	n139718003272616 -> n139718003272784
+	n139718003272728 [label=0]
+	n139718003272616 -> n139718003272728
+	n139718003272560 [label=ArrayAccess]
+	n139718003272616 -> n139718003272560
+	n139718003272672 [label="Iter(15)"]
+	n139718003272784 [label=Block]
+	n139718003340456 [label=Filter]
+	n139718003272784 -> n139718003340456
+	n139718003273008 [label="+"]
+	n139718003272896 [label="*"]
+	n139718003273008 -> n139718003272896
+	n139718003272672 [label="Iter(15)"]
+	n139718003273008 -> n139718003272672
+	n139718003273232 [label=PropertyAccess]
+	n139718003964336 [label=position]
+	n139718003273232 -> n139718003964336
+	n139718003272840 [label=ArrayAccess]
+	n139718003273232 -> n139718003272840
+	n139718003303368 [label="*"]
+	n139718003273232 -> n139718003303368
+	n139718003305216 [label="+"]
+	n139718003273232 -> n139718003305216
+	n139718003339840 [label="+"]
+	n139718003273232 -> n139718003339840
+	n139718003272840 [label=ArrayAccess]
+	n139718003965904 [label=neighborlists]
+	n139718003272840 -> n139718003965904
+	n139718003273008 [label="+"]
+	n139718003272840 -> n139718003273008
+	n139718003965904 [label=neighborlists]
+	n139718003303368 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003303368 -> n139718003272840
+	n139718003303424 [label=3]
+	n139718003303368 -> n139718003303424
+	n139718003303424 [label=3]
+	n139718003305216 [label="+"]
+	n139718003305048 [label="*"]
+	n139718003305216 -> n139718003305048
+	n139718003305272 [label=1]
+	n139718003305216 -> n139718003305272
+	n139718003305048 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003305048 -> n139718003272840
+	n139718003305104 [label=3]
+	n139718003305048 -> n139718003305104
+	n139718003305104 [label=3]
+	n139718003305272 [label=1]
+	n139718003339840 [label="+"]
+	n139718003339672 [label="*"]
+	n139718003339840 -> n139718003339672
+	n139718003339896 [label=2]
+	n139718003339840 -> n139718003339896
+	n139718003339672 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003339672 -> n139718003272840
+	n139718003339728 [label=3]
+	n139718003339672 -> n139718003339728
+	n139718003339728 [label=3]
+	n139718003339896 [label=2]
+	n139718003273344 [label="-"]
+	n139718003273120 [label=PropertyAccess]
+	n139718003273344 -> n139718003273120
+	n139718003273232 [label=PropertyAccess]
+	n139718003273344 -> n139718003273232
+	n139718003302584 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003302584 -> n139718003272840
+	n139718003302640 [label=3]
+	n139718003302584 -> n139718003302640
+	n139718003302640 [label=3]
+	n139718003303760 [label="*"]
+	n139718003302920 [label=VectorAccess]
+	n139718003303760 -> n139718003302920
+	n139718003303704 [label=VectorAccess]
+	n139718003303760 -> n139718003303704
+	n139718003302920 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003302920 -> n139718003273344
+	n139718003303704 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003303704 -> n139718003273344
+	n139718003304264 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003304264 -> n139718003272840
+	n139718003304320 [label=3]
+	n139718003304264 -> n139718003304320
+	n139718003304320 [label=3]
+	n139718003304432 [label="+"]
+	n139718003304264 [label="*"]
+	n139718003304432 -> n139718003304264
+	n139718003304488 [label=1]
+	n139718003304432 -> n139718003304488
+	n139718003304488 [label=1]
+	n139718003305440 [label="*"]
+	n139718003304600 [label=VectorAccess]
+	n139718003305440 -> n139718003304600
+	n139718003305384 [label=VectorAccess]
+	n139718003305440 -> n139718003305384
+	n139718003304600 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003304600 -> n139718003273344
+	n139718003305384 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003305384 -> n139718003273344
+	n139718003305552 [label="+"]
+	n139718003303760 [label="*"]
+	n139718003305552 -> n139718003303760
+	n139718003305440 [label="*"]
+	n139718003305552 -> n139718003305440
+	n139718003306056 [label="*"]
+	n139718003272840 [label=ArrayAccess]
+	n139718003306056 -> n139718003272840
+	n139718003306112 [label=3]
+	n139718003306056 -> n139718003306112
+	n139718003306112 [label=3]
+	n139718003306224 [label="+"]
+	n139718003306056 [label="*"]
+	n139718003306224 -> n139718003306056
+	n139718003306280 [label=2]
+	n139718003306224 -> n139718003306280
+	n139718003306280 [label=2]
+	n139718003340064 [label="*"]
+	n139718003306392 [label=VectorAccess]
+	n139718003340064 -> n139718003306392
+	n139718003340008 [label=VectorAccess]
+	n139718003340064 -> n139718003340008
+	n139718003306392 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003306392 -> n139718003273344
+	n139718003340008 [label=VectorAccess]
+	n139718003273344 [label="-"]
+	n139718003340008 -> n139718003273344
+	n139718003340176 [label="+"]
+	n139718003305552 [label="+"]
+	n139718003340176 -> n139718003305552
+	n139718003340064 [label="*"]
+	n139718003340176 -> n139718003340064
+	n139718003340288 [label="<"]
+	n139718003340176 [label="+"]
+	n139718003340288 -> n139718003340176
+	n139718003340344 [label=2.5]
+	n139718003340288 -> n139718003340344
+	n139718003340344 [label=2.5]
+	n139718003340456 [label=Filter]
+	n139718003340288 [label="<"]
+	n139718003340456 -> n139718003340288
+	n139718004022296 [label=Block]
+	n139718003340456 -> n139718004022296
+	n139718004022296 [label=Block]
+	n139718004167568 [label=Assign]
+	n139718004022296 -> n139718004167568
+	n139718004022632 [label="/"]
+	n139718004022688 [label=1.0]
+	n139718004022632 -> n139718004022688
+	n139718003340176 [label="+"]
+	n139718004022632 -> n139718003340176
+	n139718004022688 [label=1.0]
+	n139718004022800 [label="*"]
+	n139718004022632 [label="/"]
+	n139718004022800 -> n139718004022632
+	n139718004022632 [label="/"]
+	n139718004022800 -> n139718004022632
+	n139718004022912 [label="*"]
+	n139718004022800 [label="*"]
+	n139718004022912 -> n139718004022800
+	n139718004022632 [label="/"]
+	n139718004022912 -> n139718004022632
+	n139718004022576 [label=PropertyAccess]
+	n139718003964448 [label=force]
+	n139718004022576 -> n139718003964448
+	n139718003272280 [label="Iter(14)"]
+	n139718004022576 -> n139718003272280
+	n139718004168072 [label="*"]
+	n139718004022576 -> n139718004168072
+	n139718004169136 [label="+"]
+	n139718004022576 -> n139718004169136
+	n139718004170032 [label="+"]
+	n139718004022576 -> n139718004170032
+	n139718003964448 [label=force]
+	n139718004023248 [label="*"]
+	n139718003273344 [label="-"]
+	n139718004023248 -> n139718003273344
+	n139718004019832 [label=48.0]
+	n139718004023248 -> n139718004019832
+	n139718004019832 [label=48.0]
+	n139718004166784 [label="*"]
+	n139718003273344 [label="-"]
+	n139718004166784 -> n139718003273344
+	n139718003712912 [label="*"]
+	n139718004166784 -> n139718003712912
+	n139718003712912 [label="*"]
+	n139718004019832 [label=48.0]
+	n139718003712912 -> n139718004019832
+	n139718004022912 [label="*"]
+	n139718003712912 -> n139718004022912
+	n139718004166896 [label="-"]
+	n139718004022912 [label="*"]
+	n139718004166896 -> n139718004022912
+	n139718004166952 [label=0.5]
+	n139718004166896 -> n139718004166952
+	n139718004166952 [label=0.5]
+	n139718004167064 [label="*"]
+	n139718003273344 [label="-"]
+	n139718004167064 -> n139718003273344
+	n139718003688840 [label="*"]
+	n139718004167064 -> n139718003688840
+	n139718003688840 [label="*"]
+	n139718003712912 [label="*"]
+	n139718003688840 -> n139718003712912
+	n139718004166896 [label="-"]
+	n139718003688840 -> n139718004166896
+	n139718004167176 [label="*"]
+	n139718003273344 [label="-"]
+	n139718004167176 -> n139718003273344
+	n139718003688560 [label="*"]
+	n139718004167176 -> n139718003688560
+	n139718003688560 [label="*"]
+	n139718003688840 [label="*"]
+	n139718003688560 -> n139718003688840
+	n139718004022632 [label="/"]
+	n139718003688560 -> n139718004022632
+	n139718004167456 [label="+"]
+	n139718004022576 [label=PropertyAccess]
+	n139718004167456 -> n139718004022576
+	n139718004167176 [label="*"]
+	n139718004167456 -> n139718004167176
+	n139718004167568 [label=Assign]
+	n139718004168464 [label=VectorAccess]
+	n139718004167568 -> n139718004168464
+	n139718004168016 [label=VectorAccess]
+	n139718004167568 -> n139718004168016
+	n139718004169360 [label=VectorAccess]
+	n139718004167568 -> n139718004169360
+	n139718004168912 [label=VectorAccess]
+	n139718004167568 -> n139718004168912
+	n139718004170256 [label=VectorAccess]
+	n139718004167568 -> n139718004170256
+	n139718004169808 [label=VectorAccess]
+	n139718004167568 -> n139718004169808
+	n139718004168464 [label=VectorAccess]
+	n139718004022576 [label=PropertyAccess]
+	n139718004168464 -> n139718004022576
+	n139718004168016 [label=VectorAccess]
+	n139718004167456 [label="+"]
+	n139718004168016 -> n139718004167456
+	n139718004169360 [label=VectorAccess]
+	n139718004022576 [label=PropertyAccess]
+	n139718004169360 -> n139718004022576
+	n139718004168912 [label=VectorAccess]
+	n139718004167456 [label="+"]
+	n139718004168912 -> n139718004167456
+	n139718004170256 [label=VectorAccess]
+	n139718004022576 [label=PropertyAccess]
+	n139718004170256 -> n139718004022576
+	n139718004169808 [label=VectorAccess]
+	n139718004167456 [label="+"]
+	n139718004169808 -> n139718004167456
+	n139718003272728 [label=0]
+	n139718003272560 [label=ArrayAccess]
+	n139718004019272 [label=numneighs]
+	n139718003272560 -> n139718004019272
+	n139718003272280 [label="Iter(14)"]
+	n139718003272560 -> n139718003272280
+	n139718004019272 [label=numneighs]
+	n139718006498360 [label=nlocal]
+	n139718004022464 [label=Module]
+	n139718004019720 [label=Block]
+	n139718004022464 -> n139718004019720
+	n139718004019720 [label=Block]
+	n139718004022016 [label=ParticleFor]
+	n139718004019720 -> n139718004022016
+	n139718004022016 [label=ParticleFor]
+	n139718004019944 [label=Block]
+	n139718004022016 -> n139718004019944
+	n139718006498360 [label=nlocal]
+	n139718004022016 -> n139718006498360
+	n139718004019944 [label=Block]
+	n139718003687832 [label=Assign]
+	n139718004019944 -> n139718003687832
+	n139718003712632 [label=Assign]
+	n139718004019944 -> n139718003712632
+	n139718004170368 [label=PropertyAccess]
+	n139718003964392 [label=velocity]
+	n139718004170368 -> n139718003964392
+	n139718004021008 [label="Iter(0)"]
+	n139718004170368 -> n139718004021008
+	n139718003688336 [label="*"]
+	n139718004170368 -> n139718003688336
+	n139718003690072 [label="+"]
+	n139718004170368 -> n139718003690072
+	n139718003691304 [label="+"]
+	n139718004170368 -> n139718003691304
+	n139718003964392 [label=velocity]
+	n139718004021008 [label="Iter(0)"]
+	n139718003688336 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003688336 -> n139718004021008
+	n139718003688728 [label=3]
+	n139718003688336 -> n139718003688728
+	n139718003688728 [label=3]
+	n139718003690072 [label="+"]
+	n139718003689568 [label="*"]
+	n139718003690072 -> n139718003689568
+	n139718003690128 [label=1]
+	n139718003690072 -> n139718003690128
+	n139718003689568 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003689568 -> n139718004021008
+	n139718003689960 [label=3]
+	n139718003689568 -> n139718003689960
+	n139718003689960 [label=3]
+	n139718003690128 [label=1]
+	n139718003691304 [label="+"]
+	n139718003690800 [label="*"]
+	n139718003691304 -> n139718003690800
+	n139718003691360 [label=2]
+	n139718003691304 -> n139718003691360
+	n139718003690800 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003690800 -> n139718004021008
+	n139718003691192 [label=3]
+	n139718003690800 -> n139718003691192
+	n139718003691192 [label=3]
+	n139718003691360 [label=2]
+	n139718004170480 [label=PropertyAccess]
+	n139718003964448 [label=force]
+	n139718004170480 -> n139718003964448
+	n139718004021008 [label="Iter(0)"]
+	n139718004170480 -> n139718004021008
+	n139718003688392 [label="*"]
+	n139718004170480 -> n139718003688392
+	n139718003689792 [label="+"]
+	n139718004170480 -> n139718003689792
+	n139718003691024 [label="+"]
+	n139718004170480 -> n139718003691024
+	n139718003688392 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003688392 -> n139718004021008
+	n139718003688448 [label=3]
+	n139718003688392 -> n139718003688448
+	n139718003688448 [label=3]
+	n139718003689792 [label="+"]
+	n139718003689624 [label="*"]
+	n139718003689792 -> n139718003689624
+	n139718003689848 [label=1]
+	n139718003689792 -> n139718003689848
+	n139718003689624 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003689624 -> n139718004021008
+	n139718003689680 [label=3]
+	n139718003689624 -> n139718003689680
+	n139718003689680 [label=3]
+	n139718003689848 [label=1]
+	n139718003691024 [label="+"]
+	n139718003690856 [label="*"]
+	n139718003691024 -> n139718003690856
+	n139718003691080 [label=2]
+	n139718003691024 -> n139718003691080
+	n139718003690856 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003690856 -> n139718004021008
+	n139718003690912 [label=3]
+	n139718003690856 -> n139718003690912
+	n139718003690912 [label=3]
+	n139718003691080 [label=2]
+	n139718004170592 [label="*"]
+	n139718004170648 [label=0.005]
+	n139718004170592 -> n139718004170648
+	n139718004170480 [label=PropertyAccess]
+	n139718004170592 -> n139718004170480
+	n139718004170648 [label=0.005]
+	n139718003687496 [label=PropertyAccess]
+	n139718003964280 [label=mass]
+	n139718003687496 -> n139718003964280
+	n139718004021008 [label="Iter(0)"]
+	n139718003687496 -> n139718004021008
+	n139718003964280 [label=mass]
+	n139718003687608 [label="/"]
+	n139718004170592 [label="*"]
+	n139718003687608 -> n139718004170592
+	n139718003687496 [label=PropertyAccess]
+	n139718003687608 -> n139718003687496
+	n139718003687720 [label="+"]
+	n139718004170368 [label=PropertyAccess]
+	n139718003687720 -> n139718004170368
+	n139718003687608 [label="/"]
+	n139718003687720 -> n139718003687608
+	n139718003687944 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003687944 -> n139718004021008
+	n139718003688000 [label=3]
+	n139718003687944 -> n139718003688000
+	n139718003688000 [label=3]
+	n139718003689176 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003689176 -> n139718004021008
+	n139718003689232 [label=3]
+	n139718003689176 -> n139718003689232
+	n139718003689232 [label=3]
+	n139718003689344 [label="+"]
+	n139718003689176 [label="*"]
+	n139718003689344 -> n139718003689176
+	n139718003689400 [label=1]
+	n139718003689344 -> n139718003689400
+	n139718003689400 [label=1]
+	n139718003690408 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003690408 -> n139718004021008
+	n139718003690464 [label=3]
+	n139718003690408 -> n139718003690464
+	n139718003690464 [label=3]
+	n139718003690576 [label="+"]
+	n139718003690408 [label="*"]
+	n139718003690576 -> n139718003690408
+	n139718003690632 [label=2]
+	n139718003690576 -> n139718003690632
+	n139718003690632 [label=2]
+	n139718003687832 [label=Assign]
+	n139718003689064 [label=VectorAccess]
+	n139718003687832 -> n139718003689064
+	n139718003688280 [label=VectorAccess]
+	n139718003687832 -> n139718003688280
+	n139718003690296 [label=VectorAccess]
+	n139718003687832 -> n139718003690296
+	n139718003689512 [label=VectorAccess]
+	n139718003687832 -> n139718003689512
+	n139718003712072 [label=VectorAccess]
+	n139718003687832 -> n139718003712072
+	n139718003690744 [label=VectorAccess]
+	n139718003687832 -> n139718003690744
+	n139718003689064 [label=VectorAccess]
+	n139718004170368 [label=PropertyAccess]
+	n139718003689064 -> n139718004170368
+	n139718003688280 [label=VectorAccess]
+	n139718003687720 [label="+"]
+	n139718003688280 -> n139718003687720
+	n139718003690296 [label=VectorAccess]
+	n139718004170368 [label=PropertyAccess]
+	n139718003690296 -> n139718004170368
+	n139718003689512 [label=VectorAccess]
+	n139718003687720 [label="+"]
+	n139718003689512 -> n139718003687720
+	n139718003712072 [label=VectorAccess]
+	n139718004170368 [label=PropertyAccess]
+	n139718003712072 -> n139718004170368
+	n139718003690744 [label=VectorAccess]
+	n139718003687720 [label="+"]
+	n139718003690744 -> n139718003687720
+	n139718003712128 [label=PropertyAccess]
+	n139718003964336 [label=position]
+	n139718003712128 -> n139718003964336
+	n139718004021008 [label="Iter(0)"]
+	n139718003712128 -> n139718004021008
+	n139718003713472 [label="*"]
+	n139718003712128 -> n139718003713472
+	n139718003714872 [label="+"]
+	n139718003712128 -> n139718003714872
+	n139718003736648 [label="+"]
+	n139718003712128 -> n139718003736648
+	n139718003713472 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003713472 -> n139718004021008
+	n139718003713528 [label=3]
+	n139718003713472 -> n139718003713528
+	n139718003713528 [label=3]
+	n139718003714872 [label="+"]
+	n139718003714704 [label="*"]
+	n139718003714872 -> n139718003714704
+	n139718003714928 [label=1]
+	n139718003714872 -> n139718003714928
+	n139718003714704 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003714704 -> n139718004021008
+	n139718003714760 [label=3]
+	n139718003714704 -> n139718003714760
+	n139718003714760 [label=3]
+	n139718003714928 [label=1]
+	n139718003736648 [label="+"]
+	n139718003715936 [label="*"]
+	n139718003736648 -> n139718003715936
+	n139718003736704 [label=2]
+	n139718003736648 -> n139718003736704
+	n139718003715936 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003715936 -> n139718004021008
+	n139718003715992 [label=3]
+	n139718003715936 -> n139718003715992
+	n139718003715992 [label=3]
+	n139718003736704 [label=2]
+	n139718003712240 [label=PropertyAccess]
+	n139718003964392 [label=velocity]
+	n139718003712240 -> n139718003964392
+	n139718004021008 [label="Iter(0)"]
+	n139718003712240 -> n139718004021008
+	n139718003713136 [label="*"]
+	n139718003712240 -> n139718003713136
+	n139718003714536 [label="+"]
+	n139718003712240 -> n139718003714536
+	n139718003715768 [label="+"]
+	n139718003712240 -> n139718003715768
+	n139718003713136 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003713136 -> n139718004021008
+	n139718003713192 [label=3]
+	n139718003713136 -> n139718003713192
+	n139718003713192 [label=3]
+	n139718003714536 [label="+"]
+	n139718003714368 [label="*"]
+	n139718003714536 -> n139718003714368
+	n139718003714592 [label=1]
+	n139718003714536 -> n139718003714592
+	n139718003714368 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003714368 -> n139718004021008
+	n139718003714424 [label=3]
+	n139718003714368 -> n139718003714424
+	n139718003714424 [label=3]
+	n139718003714592 [label=1]
+	n139718003715768 [label="+"]
+	n139718003715600 [label="*"]
+	n139718003715768 -> n139718003715600
+	n139718003715824 [label=2]
+	n139718003715768 -> n139718003715824
+	n139718003715600 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003715600 -> n139718004021008
+	n139718003715656 [label=3]
+	n139718003715600 -> n139718003715656
+	n139718003715656 [label=3]
+	n139718003715824 [label=2]
+	n139718003712352 [label="*"]
+	n139718003712408 [label=0.005]
+	n139718003712352 -> n139718003712408
+	n139718003712240 [label=PropertyAccess]
+	n139718003712352 -> n139718003712240
+	n139718003712408 [label=0.005]
+	n139718003712520 [label="+"]
+	n139718003712128 [label=PropertyAccess]
+	n139718003712520 -> n139718003712128
+	n139718003712352 [label="*"]
+	n139718003712520 -> n139718003712352
+	n139718003712744 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003712744 -> n139718004021008
+	n139718003712800 [label=3]
+	n139718003712744 -> n139718003712800
+	n139718003712800 [label=3]
+	n139718003713976 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003713976 -> n139718004021008
+	n139718003714032 [label=3]
+	n139718003713976 -> n139718003714032
+	n139718003714032 [label=3]
+	n139718003714144 [label="+"]
+	n139718003713976 [label="*"]
+	n139718003714144 -> n139718003713976
+	n139718003714200 [label=1]
+	n139718003714144 -> n139718003714200
+	n139718003714200 [label=1]
+	n139718003715208 [label="*"]
+	n139718004021008 [label="Iter(0)"]
+	n139718003715208 -> n139718004021008
+	n139718003715264 [label=3]
+	n139718003715208 -> n139718003715264
+	n139718003715264 [label=3]
+	n139718003715376 [label="+"]
+	n139718003715208 [label="*"]
+	n139718003715376 -> n139718003715208
+	n139718003715432 [label=2]
+	n139718003715376 -> n139718003715432
+	n139718003715432 [label=2]
+	n139718003712632 [label=Assign]
+	n139718003713864 [label=VectorAccess]
+	n139718003712632 -> n139718003713864
+	n139718003713080 [label=VectorAccess]
+	n139718003712632 -> n139718003713080
+	n139718003715096 [label=VectorAccess]
+	n139718003712632 -> n139718003715096
+	n139718003714312 [label=VectorAccess]
+	n139718003712632 -> n139718003714312
+	n139718003736872 [label=VectorAccess]
+	n139718003712632 -> n139718003736872
+	n139718003715544 [label=VectorAccess]
+	n139718003712632 -> n139718003715544
+	n139718003713864 [label=VectorAccess]
+	n139718003712128 [label=PropertyAccess]
+	n139718003713864 -> n139718003712128
+	n139718003713080 [label=VectorAccess]
+	n139718003712520 [label="+"]
+	n139718003713080 -> n139718003712520
+	n139718003715096 [label=VectorAccess]
+	n139718003712128 [label=PropertyAccess]
+	n139718003715096 -> n139718003712128
+	n139718003714312 [label=VectorAccess]
+	n139718003712520 [label="+"]
+	n139718003714312 -> n139718003712520
+	n139718003736872 [label=VectorAccess]
+	n139718003712128 [label=PropertyAccess]
+	n139718003736872 -> n139718003712128
+	n139718003715544 [label=VectorAccess]
+	n139718003712520 [label="+"]
+	n139718003715544 -> n139718003712520
 }
diff --git a/examples/kernels.pdf b/examples/kernels.pdf
index 2ae7d50bbeb33be1effdcfd77b3fea29fa17df1c..e8449858f70d1ead5c5491e1366f807fb9f44430 100644
GIT binary patch
delta 23
fcmX?nm+A0brVXrXIgAVp&5eu<j5hPG-Npz2aUKX`

delta 23
fcmX?nm+A0brVXrXISeff%}mS<EjIJ6-Npz2am)yJ

diff --git a/examples/lj_ns.cpp b/examples/lj_ns.cpp
index f0db776..3c37b59 100644
--- a/examples/lj_ns.cpp
+++ b/examples/lj_ns.cpp
@@ -15,13 +15,13 @@ void module_0(int neighborlist_capacity, int nlocal, int *neighborlists, int *nu
     for(int i14 = 0; i14 < nlocal; i14++) {
         const int e369 = i14 * neighborlist_capacity;
         const int e376 = i14 * 3;
-        const double p23_0 = position[e376];
+        const double p26_0 = position[e376];
         const int e385 = i14 * 3;
         const int e386 = e385 + 1;
-        const double p23_1 = position[e386];
+        const double p26_1 = position[e386];
         const int e395 = i14 * 3;
         const int e396 = e395 + 2;
-        const double p23_2 = position[e396];
+        const double p26_2 = position[e396];
         const int e14 = i14 * 3;
         const int e18 = i14 * 3;
         const int e19 = e18 + 1;
@@ -32,16 +32,16 @@ void module_0(int neighborlist_capacity, int nlocal, int *neighborlists, int *nu
             const int e370 = e369 + i15;
             const int a57 = neighborlists[e370];
             const int e378 = a57 * 3;
-            const double p24_0 = position[e378];
+            const double p27_0 = position[e378];
             const int e387 = a57 * 3;
             const int e388 = e387 + 1;
-            const double p24_1 = position[e388];
+            const double p27_1 = position[e388];
             const int e397 = a57 * 3;
             const int e398 = e397 + 2;
-            const double p24_2 = position[e398];
-            const double e371_0 = p23_0 - p24_0;
-            const double e371_1 = p23_1 - p24_1;
-            const double e371_2 = p23_2 - p24_2;
+            const double p27_2 = position[e398];
+            const double e371_0 = p26_0 - p27_0;
+            const double e371_1 = p26_1 - p27_1;
+            const double e371_2 = p26_2 - p27_2;
             const double e380 = e371_0 * e371_0;
             const double e389 = e371_1 * e371_1;
             const double e390 = e380 + e389;
@@ -236,29 +236,26 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
         const int e204 = e203 + 2;
         const double p7_2 = position[e204];
         const int e156 = nlocal + (*npbc);
-        const int e188 = e156 * 3;
-        const double p8_0 = position[e188];
-        const int e195 = e156 * 3;
-        const int e196 = e195 + 1;
-        const double p8_1 = position[e196];
-        const int e201 = e156 * 3;
-        const int e202 = e201 + 2;
-        const double p8_2 = position[e202];
         const bool e161 = p7_0 < e160;
         if(e161) {
             pbc_map[(*npbc)] = i6;
             const int e162 = (*npbc) * 3;
             pbc_mult[e162] = 1;
+            const int e164 = e156 * 3;
             const double e168 = p7_0 + e157;
-            position[e188] = e168;
+            position[e164] = e168;
             const int e169 = (*npbc) * 3;
             const int e170 = e169 + 1;
             pbc_mult[e170] = 0;
-            position[e196] = p7_1;
+            const int e171 = e156 * 3;
+            const int e172 = e171 + 1;
+            position[e172] = p7_1;
             const int e175 = (*npbc) * 3;
             const int e176 = e175 + 2;
             pbc_mult[e176] = 0;
-            position[e202] = p7_2;
+            const int e177 = e156 * 3;
+            const int e178 = e177 + 2;
+            position[e178] = p7_2;
             const int e181 = (*npbc) + 1;
             const int e446 = e181 + 1;
             const bool e447 = e446 >= pbc_capacity;
@@ -273,15 +270,20 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
             pbc_map[(*npbc)] = i6;
             const int e186 = (*npbc) * 3;
             pbc_mult[e186] = -1;
+            const int e188 = e156 * 3;
             const double e192 = p7_0 - e157;
             position[e188] = e192;
             const int e193 = (*npbc) * 3;
             const int e194 = e193 + 1;
             pbc_mult[e194] = 0;
+            const int e195 = e156 * 3;
+            const int e196 = e195 + 1;
             position[e196] = p7_1;
             const int e199 = (*npbc) * 3;
             const int e200 = e199 + 2;
             pbc_mult[e200] = 0;
+            const int e201 = e156 * 3;
+            const int e202 = e201 + 2;
             position[e202] = p7_2;
             const int e205 = (*npbc) + 1;
             const int e448 = e205 + 1;
@@ -299,37 +301,34 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
     const double e235 = grid0_d1_max - 2.8;
     for(int i7 = 0; i7 < e206; i7++) {
         const int e248 = i7 * 3;
-        const double p9_0 = position[e248];
+        const double p10_0 = position[e248];
         const int e241 = i7 * 3;
         const int e242 = e241 + 1;
-        const double p9_1 = position[e242];
+        const double p10_1 = position[e242];
         const int e254 = i7 * 3;
         const int e255 = e254 + 2;
-        const double p9_2 = position[e255];
+        const double p10_2 = position[e255];
         const int e207 = nlocal + (*npbc);
-        const int e246 = e207 * 3;
-        const double p10_0 = position[e246];
-        const int e239 = e207 * 3;
-        const int e240 = e239 + 1;
-        const double p10_1 = position[e240];
-        const int e252 = e207 * 3;
-        const int e253 = e252 + 2;
-        const double p10_2 = position[e253];
-        const bool e212 = p9_1 < e211;
+        const bool e212 = p10_1 < e211;
         if(e212) {
             pbc_map[(*npbc)] = i7;
             const int e213 = (*npbc) * 3;
             const int e214 = e213 + 1;
             pbc_mult[e214] = 1;
-            const double e219 = p9_1 + e208;
-            position[e240] = e219;
+            const int e215 = e207 * 3;
+            const int e216 = e215 + 1;
+            const double e219 = p10_1 + e208;
+            position[e216] = e219;
             const int e220 = (*npbc) * 3;
             pbc_mult[e220] = 0;
-            position[e246] = p9_0;
+            const int e222 = e207 * 3;
+            position[e222] = p10_0;
             const int e226 = (*npbc) * 3;
             const int e227 = e226 + 2;
             pbc_mult[e227] = 0;
-            position[e253] = p9_2;
+            const int e228 = e207 * 3;
+            const int e229 = e228 + 2;
+            position[e229] = p10_2;
             const int e232 = (*npbc) + 1;
             const int e450 = e232 + 1;
             const bool e451 = e450 >= pbc_capacity;
@@ -339,21 +338,26 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
                 (*npbc) = e232;
             }
         }
-        const bool e236 = p9_1 > e235;
+        const bool e236 = p10_1 > e235;
         if(e236) {
             pbc_map[(*npbc)] = i7;
             const int e237 = (*npbc) * 3;
             const int e238 = e237 + 1;
             pbc_mult[e238] = -1;
-            const double e243 = p9_1 - e208;
+            const int e239 = e207 * 3;
+            const int e240 = e239 + 1;
+            const double e243 = p10_1 - e208;
             position[e240] = e243;
             const int e244 = (*npbc) * 3;
             pbc_mult[e244] = 0;
-            position[e246] = p9_0;
+            const int e246 = e207 * 3;
+            position[e246] = p10_0;
             const int e250 = (*npbc) * 3;
             const int e251 = e250 + 2;
             pbc_mult[e251] = 0;
-            position[e253] = p9_2;
+            const int e252 = e207 * 3;
+            const int e253 = e252 + 2;
+            position[e253] = p10_2;
             const int e256 = (*npbc) + 1;
             const int e452 = e256 + 1;
             const bool e453 = e452 >= pbc_capacity;
@@ -370,37 +374,34 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
     const double e286 = grid0_d2_max - 2.8;
     for(int i8 = 0; i8 < e257; i8++) {
         const int e299 = i8 * 3;
-        const double p11_0 = position[e299];
+        const double p13_0 = position[e299];
         const int e305 = i8 * 3;
         const int e306 = e305 + 1;
-        const double p11_1 = position[e306];
+        const double p13_1 = position[e306];
         const int e292 = i8 * 3;
         const int e293 = e292 + 2;
-        const double p11_2 = position[e293];
+        const double p13_2 = position[e293];
         const int e258 = nlocal + (*npbc);
-        const int e297 = e258 * 3;
-        const double p12_0 = position[e297];
-        const int e303 = e258 * 3;
-        const int e304 = e303 + 1;
-        const double p12_1 = position[e304];
-        const int e290 = e258 * 3;
-        const int e291 = e290 + 2;
-        const double p12_2 = position[e291];
-        const bool e263 = p11_2 < e262;
+        const bool e263 = p13_2 < e262;
         if(e263) {
             pbc_map[(*npbc)] = i8;
             const int e264 = (*npbc) * 3;
             const int e265 = e264 + 2;
             pbc_mult[e265] = 1;
-            const double e270 = p11_2 + e259;
-            position[e291] = e270;
+            const int e266 = e258 * 3;
+            const int e267 = e266 + 2;
+            const double e270 = p13_2 + e259;
+            position[e267] = e270;
             const int e271 = (*npbc) * 3;
             pbc_mult[e271] = 0;
-            position[e297] = p11_0;
+            const int e273 = e258 * 3;
+            position[e273] = p13_0;
             const int e277 = (*npbc) * 3;
             const int e278 = e277 + 1;
             pbc_mult[e278] = 0;
-            position[e304] = p11_1;
+            const int e279 = e258 * 3;
+            const int e280 = e279 + 1;
+            position[e280] = p13_1;
             const int e283 = (*npbc) + 1;
             const int e454 = e283 + 1;
             const bool e455 = e454 >= pbc_capacity;
@@ -410,21 +411,26 @@ void setup_pbc(int nlocal, double grid0_d0_max, double grid0_d0_min, int pbc_cap
                 (*npbc) = e283;
             }
         }
-        const bool e287 = p11_2 > e286;
+        const bool e287 = p13_2 > e286;
         if(e287) {
             pbc_map[(*npbc)] = i8;
             const int e288 = (*npbc) * 3;
             const int e289 = e288 + 2;
             pbc_mult[e289] = -1;
-            const double e294 = p11_2 - e259;
+            const int e290 = e258 * 3;
+            const int e291 = e290 + 2;
+            const double e294 = p13_2 - e259;
             position[e291] = e294;
             const int e295 = (*npbc) * 3;
             pbc_mult[e295] = 0;
-            position[e297] = p11_0;
+            const int e297 = e258 * 3;
+            position[e297] = p13_0;
             const int e301 = (*npbc) * 3;
             const int e302 = e301 + 1;
             pbc_mult[e302] = 0;
-            position[e304] = p11_1;
+            const int e303 = e258 * 3;
+            const int e304 = e303 + 1;
+            position[e304] = p13_1;
             const int e307 = (*npbc) + 1;
             const int e456 = e307 + 1;
             const bool e457 = e456 >= pbc_capacity;
@@ -443,42 +449,39 @@ void update_pbc(double grid0_d0_max, double grid0_d0_min, double grid0_d1_max, d
     for(int i9 = 0; i9 < npbc; i9++) {
         const int e308 = nlocal + i9;
         const int e309 = e308 * 3;
-        const double p13_0 = position[e309];
         const int a39 = pbc_map[i9];
         const int e311 = a39 * 3;
-        const double p14_0 = position[e311];
+        const double p17_0 = position[e311];
         const int e313 = i9 * 3;
         const int a40 = pbc_mult[e313];
         const double e316 = a40 * e315;
-        const double e317 = p14_0 + e316;
+        const double e317 = p17_0 + e316;
         position[e309] = e317;
         const int e318 = nlocal + i9;
         const int e319 = e318 * 3;
         const int e320 = e319 + 1;
-        const double p15_1 = position[e320];
         const int a41 = pbc_map[i9];
         const int e321 = a41 * 3;
         const int e322 = e321 + 1;
-        const double p16_1 = position[e322];
+        const double p19_1 = position[e322];
         const int e323 = i9 * 3;
         const int e324 = e323 + 1;
         const int a42 = pbc_mult[e324];
         const double e326 = a42 * e325;
-        const double e327 = p16_1 + e326;
+        const double e327 = p19_1 + e326;
         position[e320] = e327;
         const int e328 = nlocal + i9;
         const int e329 = e328 * 3;
         const int e330 = e329 + 2;
-        const double p17_2 = position[e330];
         const int a43 = pbc_map[i9];
         const int e331 = a43 * 3;
         const int e332 = e331 + 2;
-        const double p18_2 = position[e332];
+        const double p21_2 = position[e332];
         const int e333 = i9 * 3;
         const int e334 = e333 + 2;
         const int a44 = pbc_mult[e334];
         const double e336 = a44 * e335;
-        const double e337 = p18_2 + e336;
+        const double e337 = p21_2 + e336;
         position[e330] = e337;
     }
 }
@@ -489,18 +492,18 @@ void build_cell_lists(int ncells, double grid0_d0_min, double grid0_d1_min, doub
     const int e541 = nlocal + npbc;
     for(int i11 = 0; i11 < e541; i11++) {
         const int e338 = i11 * 3;
-        const double p19_0 = position[e338];
-        const double e340 = p19_0 - grid0_d0_min;
+        const double p22_0 = position[e338];
+        const double e340 = p22_0 - grid0_d0_min;
         const double e341 = e340 / 2.8;
         const int e342 = i11 * 3;
         const int e343 = e342 + 1;
-        const double p20_1 = position[e343];
-        const double e344 = p20_1 - grid0_d1_min;
+        const double p23_1 = position[e343];
+        const double e344 = p23_1 - grid0_d1_min;
         const double e345 = e344 / 2.8;
         const int e346 = i11 * 3;
         const int e347 = e346 + 2;
-        const double p21_2 = position[e347];
-        const double e348 = p21_2 - grid0_d2_min;
+        const double p24_2 = position[e347];
+        const double e348 = p24_2 - grid0_d2_min;
         const double e349 = e348 / 2.8;
         const int a46 = dim_cells[1];
         const int e350 = (int)(e341) * a46;
@@ -543,13 +546,13 @@ void neighbor_lists_build(int nlocal, int ncells, int cell_capacity, int neighbo
             if(e406) {
                 const int e407 = e403 * cell_capacity;
                 const int e415 = i16 * 3;
-                const double p25_0 = position[e415];
+                const double p28_0 = position[e415];
                 const int e424 = i16 * 3;
                 const int e425 = e424 + 1;
-                const double p25_1 = position[e425];
+                const double p28_1 = position[e425];
                 const int e434 = i16 * 3;
                 const int e435 = e434 + 2;
-                const double p25_2 = position[e435];
+                const double p28_2 = position[e435];
                 const int e360 = i16 * neighborlist_capacity;
                 const int a60 = cell_sizes[e403];
                 for(int i18 = 0; i18 < a60; i18++) {
@@ -558,16 +561,16 @@ void neighbor_lists_build(int nlocal, int ncells, int cell_capacity, int neighbo
                     const bool e409 = a61 != i16;
                     if(e409) {
                         const int e417 = a61 * 3;
-                        const double p26_0 = position[e417];
+                        const double p29_0 = position[e417];
                         const int e426 = a61 * 3;
                         const int e427 = e426 + 1;
-                        const double p26_1 = position[e427];
+                        const double p29_1 = position[e427];
                         const int e436 = a61 * 3;
                         const int e437 = e436 + 2;
-                        const double p26_2 = position[e437];
-                        const double e410_0 = p25_0 - p26_0;
-                        const double e410_1 = p25_1 - p26_1;
-                        const double e410_2 = p25_2 - p26_2;
+                        const double p29_2 = position[e437];
+                        const double e410_0 = p28_0 - p29_0;
+                        const double e410_1 = p28_1 - p29_1;
+                        const double e410_2 = p28_2 - p29_2;
                         const double e419 = e410_0 * e410_0;
                         const double e428 = e410_1 * e410_1;
                         const double e429 = e419 + e428;
@@ -596,13 +599,13 @@ void neighbor_lists_build(int nlocal, int ncells, int cell_capacity, int neighbo
 void reset_volatile_properties(int nlocal, double *force) {
     for(int i13 = 0; i13 < nlocal; i13++) {
         const int e363 = i13 * 3;
-        const double p22_0 = force[e363];
+        const double p25_0 = force[e363];
         const int e365 = i13 * 3;
         const int e366 = e365 + 1;
-        const double p22_1 = force[e366];
+        const double p25_1 = force[e366];
         const int e367 = i13 * 3;
         const int e368 = e367 + 2;
-        const double p22_2 = force[e368];
+        const double p25_2 = force[e368];
         force[e363] = 0.0;
         force[e366] = 0.0;
         force[e368] = 0.0;
@@ -860,28 +863,28 @@ int main() {
         prop_hflags[0] = e530;
         module_0(neighborlist_capacity, nlocal, d_neighborlists, d_numneighs, d_position, d_force);
         const unsigned long long int a131 = prop_dflags[0];
-        const unsigned long long int e531 = a131 & 4;
+        const unsigned long long int e531 = a131 & 8;
         const bool e532 = e531 == 0;
         if(e532) {
-            pairs::copy_to_device(velocity, d_velocity)
+            pairs::copy_to_device(force, d_force)
         }
         const unsigned long long int a132 = prop_dflags[0];
-        const unsigned long long int e533 = a132 & 1;
+        const unsigned long long int e533 = a132 & 2;
         const bool e534 = e533 == 0;
         if(e534) {
-            pairs::copy_to_device(mass, d_mass)
+            pairs::copy_to_device(position, d_position)
         }
         const unsigned long long int a133 = prop_dflags[0];
-        const unsigned long long int e535 = a133 & 8;
+        const unsigned long long int e535 = a133 & 4;
         const bool e536 = e535 == 0;
         if(e536) {
-            pairs::copy_to_device(force, d_force)
+            pairs::copy_to_device(velocity, d_velocity)
         }
         const unsigned long long int a134 = prop_dflags[0];
-        const unsigned long long int e537 = a134 & 2;
+        const unsigned long long int e537 = a134 & 1;
         const bool e538 = e537 == 0;
         if(e538) {
-            pairs::copy_to_device(position, d_position)
+            pairs::copy_to_device(mass, d_mass)
         }
         const unsigned long long int a136 = prop_dflags[0];
         const unsigned long long int e539 = a136 | 15;
diff --git a/src/pairs/analysis/bin_ops.py b/src/pairs/analysis/bin_ops.py
index 3750caa..e19a3a2 100644
--- a/src/pairs/analysis/bin_ops.py
+++ b/src/pairs/analysis/bin_ops.py
@@ -41,6 +41,13 @@ class SetUsedBinOps(Visitor):
     def __init__(self, ast):
         super().__init__(ast)
         self.bin_ops = []
+        self.writing = False
+
+    def visit_Assign(self, ast_node):
+        self.writing = True
+        self.visit(ast_node.destinations())
+        self.writing = False
+        self.visit(ast_node.sources())
 
     def visit_BinOp(self, ast_node):
         ast_node.decl.used = True
@@ -50,5 +57,6 @@ class SetUsedBinOps(Visitor):
         pass
 
     def visit_PropertyAccess(self, ast_node):
-        ast_node.decl.used = True
+        ast_node.decl.used = not self.writing
+        self.writing = False
         self.visit_children(ast_node)
diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py
index b8afb91..99d37fc 100644
--- a/src/pairs/code_gen/cgen.py
+++ b/src/pairs/code_gen/cgen.py
@@ -141,10 +141,8 @@ class CGen:
 
         # TODO: Why there are Decls for other types?
         if isinstance(ast_node, Decl):
-            if isinstance(ast_node.elem, BinOp):
+            if isinstance(ast_node.elem, BinOp) and (bypass_checking or ast_node.used):
                 bin_op = ast_node.elem
-                if not bypass_checking and (not isinstance(bin_op, BinOp) or not ast_node.used):
-                    return None
 
                 if bin_op.inlined is False and bin_op.generated is False:
                     if bin_op.is_vector_kind():
@@ -152,7 +150,6 @@ class CGen:
                             lhs = self.generate_expression(bin_op.lhs, bin_op.mem, index=i)
                             rhs = self.generate_expression(bin_op.rhs, index=i)
                             self.print(f"const double e{bin_op.id()}_{i} = {lhs} {bin_op.operator()} {rhs};")
-
                     else:
                         lhs = self.generate_expression(bin_op.lhs, bin_op.mem)
                         rhs = self.generate_expression(bin_op.rhs)
@@ -161,7 +158,7 @@ class CGen:
 
                 ast_node.elem.generated = True
 
-            if isinstance(ast_node.elem, PropertyAccess):
+            if isinstance(ast_node.elem, PropertyAccess) and (bypass_checking or ast_node.used):
                 prop_access = ast_node.elem
                 prop_name = prop_access.prop.name()
                 acc_ref = f"p{prop_access.id()}"
@@ -170,7 +167,6 @@ class CGen:
                     for i in prop_access.indexes():
                         i_expr = self.generate_expression(prop_access.get_index_expression(i))
                         self.print(f"const double {acc_ref}_{i} = {prop_name}[{i_expr}];")
-
                 else:
                     tkw = Types.c_keyword(prop_access.type())
                     index_g = self.generate_expression(prop_access.index)
@@ -237,6 +233,8 @@ class CGen:
         if isinstance(ast_node, ModuleCall):
             module = ast_node.module
             module_params = ""
+            device_cond = module.run_on_device and self.target.is_gpu()
+
             for var in module.read_only_variables():
                 decl = var.name()
                 module_params += decl if len(module_params) <= 0 else f", {decl}"
@@ -246,11 +244,11 @@ class CGen:
                 module_params += decl if len(module_params) <= 0 else f", {decl}"
 
             for array in module.arrays():
-                decl = f"d_{array.name()}" if module.run_on_device else array.name()
+                decl = f"d_{array.name()}" if device_cond else array.name()
                 module_params += decl if len(module_params) <= 0 else f", {decl}"
 
             for prop in module.properties():
-                decl = f"d_{prop.name()}" if module.run_on_device else prop.name()
+                decl = f"d_{prop.name()}" if device_cond else prop.name()
                 module_params += decl if len(module_params) <= 0 else f", {decl}"
 
             self.print(f"{module.name}({module_params});")
diff --git a/src/pairs/sim/pbc.py b/src/pairs/sim/pbc.py
index bb73102..f4e50b5 100644
--- a/src/pairs/sim/pbc.py
+++ b/src/pairs/sim/pbc.py
@@ -92,11 +92,11 @@ class SetupPBC(Lowerable):
             for i in For(sim, 0, nlocal + npbc):
                 pos = positions[i]
                 last_id = nlocal + npbc
-                last_pos = positions[last_id]
 
                 grid_length = grid.length(d)
                 # TODO: VecFilter?
                 for _ in Filter(sim, pos[d] < grid.min(d) + cutneigh):
+                    last_pos = positions[last_id]
                     pbc_map[npbc].set(i)
                     pbc_mult[npbc][d].set(1)
                     last_pos[d].set(pos[d] + grid_length)
@@ -108,6 +108,7 @@ class SetupPBC(Lowerable):
                     npbc.add(1)
 
                 for _ in Filter(sim, pos[d] > grid.max(d) - cutneigh):
+                    last_pos = positions[last_id]
                     pbc_map[npbc].set(i)
                     pbc_mult[npbc][d].set(-1)
                     last_pos[d].set(pos[d] - grid_length)
-- 
GitLab