From 7023107ec4e2a3a6a2a3c21f4114e8178d61ca88 Mon Sep 17 00:00:00 2001 From: Rafael Ravedutti <rafaelravedutti@gmail.com> Date: Mon, 1 Nov 2021 23:39:34 +0100 Subject: [PATCH] Include ParticlesInteraction approach to abstract interactions at IR level Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com> --- examples/kernels | 1679 +++++++++--------- examples/kernels.pdf | Bin 47768 -> 47981 bytes examples/lj_func.py | 8 +- examples/lj_ns.cpp | 1307 +++++++------- src/pairs/coupling/parse_cpp.py | 11 +- src/pairs/ir/branches.py | 4 +- src/pairs/ir/loops.py | 26 - src/pairs/ir/symbols.py | 19 + src/pairs/ir/variables.py | 1 + src/pairs/mapping/funcs.py | 18 +- src/pairs/sim/cell_lists.py | 2 +- src/pairs/sim/interaction.py | 81 + src/pairs/sim/neighbor_lists.py | 27 +- src/pairs/sim/pbc.py | 6 +- src/pairs/sim/simulation.py | 54 +- src/pairs/transformations/replace_symbols.py | 14 + 16 files changed, 1675 insertions(+), 1582 deletions(-) create mode 100644 src/pairs/ir/symbols.py create mode 100644 src/pairs/sim/interaction.py create mode 100644 src/pairs/transformations/replace_symbols.py diff --git a/examples/kernels b/examples/kernels index 1f341d0..d3669ab 100644 --- a/examples/kernels +++ b/examples/kernels @@ -1,846 +1,841 @@ digraph AST { node [color=lightblue2 style=filled] size="6,6" - n140112198557368 [label=Block] - n140112198162136 [label=KernelBlock] - n140112198557368 -> n140112198162136 - n140112198279352 [label=KernelBlock] - n140112198557368 -> n140112198279352 - n140112198162136 [label=KernelBlock] - n140112198161856 [label=Block] - n140112198162136 -> n140112198161856 - n140112198161856 [label=Block] - n140112198587056 [label=ParticleFor] - n140112198161856 -> n140112198587056 - n140112198587056 [label=ParticleFor] - n140112198161912 [label="Iter(0)"] - n140112198587056 -> n140112198161912 - n140112198162080 [label=Block] - n140112198587056 -> n140112198162080 - n140112198161968 [label=0] - n140112198587056 -> n140112198161968 - n140112198162024 [label=0] - n140112198587056 -> n140112198162024 - n140112198161912 [label="Iter(0)"] - n140112198162080 [label=Block] - n140112198162248 [label=For] - n140112198162080 -> n140112198162248 - n140112198162528 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198162528 -> n140112198161912 - n140112198589072 [label=neighborlist_capacity] - n140112198162528 -> n140112198589072 - n140112198589072 [label=neighborlist_capacity] - n140112198162752 [label=PropertyAccess] - n140112198557592 [label=position] - n140112198162752 -> n140112198557592 - n140112198161912 [label="Iter(0)"] - n140112198162752 -> n140112198161912 - n140112198281984 [label="*"] - n140112198162752 -> n140112198281984 - n140112198316552 [label="+"] - n140112198162752 -> n140112198316552 - n140112198318120 [label="+"] - n140112198162752 -> n140112198318120 - n140112198557592 [label=position] - n140112198281984 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198281984 -> n140112198161912 - n140112198282040 [label=3] - n140112198281984 -> n140112198282040 - n140112198282040 [label=3] - n140112198316552 [label="+"] - n140112198316384 [label="*"] - n140112198316552 -> n140112198316384 - n140112198316608 [label=1] - n140112198316552 -> n140112198316608 - n140112198316384 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198316384 -> n140112198161912 - n140112198316440 [label=3] - n140112198316384 -> n140112198316440 - n140112198316440 [label=3] - n140112198316608 [label=1] - n140112198318120 [label="+"] - n140112198317952 [label="*"] - n140112198318120 -> n140112198317952 - n140112198318176 [label=2] - n140112198318120 -> n140112198318176 - n140112198317952 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198317952 -> n140112198161912 - n140112198318008 [label=3] - n140112198317952 -> n140112198318008 - n140112198318008 [label=3] - n140112198318176 [label=2] - n140112198163144 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198163144 -> n140112198161912 - n140112198163200 [label=3] - n140112198163144 -> n140112198163200 - n140112198163200 [label=3] - n140112198163928 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198163928 -> n140112198161912 - n140112198163984 [label=3] - n140112198163928 -> n140112198163984 - n140112198163984 [label=3] - n140112198209888 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198209888 -> n140112198161912 - n140112198209720 [label=3] - n140112198209888 -> n140112198209720 - n140112198209720 [label=3] - n140112198210112 [label="+"] - n140112198209888 [label="*"] - n140112198210112 -> n140112198209888 - n140112198211568 [label=1] - n140112198210112 -> n140112198211568 - n140112198211568 [label=1] - n140112198210672 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198210672 -> n140112198161912 - n140112198210728 [label=3] - n140112198210672 -> n140112198210728 - n140112198210728 [label=3] - n140112198210840 [label="+"] - n140112198210672 [label="*"] - n140112198210840 -> n140112198210672 - n140112198210896 [label=1] - n140112198210840 -> n140112198210896 - n140112198210896 [label=1] - n140112198211792 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198211792 -> n140112198161912 - n140112198211960 [label=3] - n140112198211792 -> n140112198211960 - n140112198211960 [label=3] - n140112198211904 [label="+"] - n140112198211792 [label="*"] - n140112198211904 -> n140112198211792 - n140112198211848 [label=2] - n140112198211904 -> n140112198211848 - n140112198211848 [label=2] - n140112198212464 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198212464 -> n140112198161912 - n140112198212520 [label=3] - n140112198212464 -> n140112198212520 - n140112198212520 [label=3] - n140112198212632 [label="+"] - n140112198212464 [label="*"] - n140112198212632 -> n140112198212464 - n140112198212688 [label=2] - n140112198212632 -> n140112198212688 - n140112198212688 [label=2] - n140112198281312 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198281312 -> n140112198161912 - n140112198281368 [label=3] - n140112198281312 -> n140112198281368 - n140112198281368 [label=3] - n140112198281704 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198281704 -> n140112198161912 - n140112198281760 [label=3] - n140112198281704 -> n140112198281760 - n140112198281760 [label=3] - n140112198282880 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198282880 -> n140112198161912 - n140112198282936 [label=3] - n140112198282880 -> n140112198282936 - n140112198282936 [label=3] - n140112198283048 [label="+"] - n140112198282880 [label="*"] - n140112198283048 -> n140112198282880 - n140112198283104 [label=1] - n140112198283048 -> n140112198283104 - n140112198283104 [label=1] - n140112198316104 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198316104 -> n140112198161912 - n140112198316160 [label=3] - n140112198316104 -> n140112198316160 - n140112198316160 [label=3] - n140112198316272 [label="+"] - n140112198316104 [label="*"] - n140112198316272 -> n140112198316104 - n140112198316328 [label=1] - n140112198316272 -> n140112198316328 - n140112198316328 [label=1] - n140112198317280 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198317280 -> n140112198161912 - n140112198317336 [label=3] - n140112198317280 -> n140112198317336 - n140112198317336 [label=3] - n140112198317448 [label="+"] - n140112198317280 [label="*"] - n140112198317448 -> n140112198317280 - n140112198317504 [label=2] - n140112198317448 -> n140112198317504 - n140112198317504 [label=2] - n140112198317672 [label="*"] - n140112198161912 [label="Iter(0)"] - n140112198317672 -> n140112198161912 - n140112198317728 [label=3] - n140112198317672 -> n140112198317728 - n140112198317728 [label=3] - n140112198317840 [label="+"] - n140112198317672 [label="*"] - n140112198317840 -> n140112198317672 - n140112198317896 [label=2] - n140112198317840 -> n140112198317896 - n140112198317896 [label=2] - n140112198162248 [label=For] - n140112198162304 [label="Iter(1)"] - n140112198162248 -> n140112198162304 - n140112198162416 [label=Block] - n140112198162248 -> n140112198162416 - n140112198162360 [label=0] - n140112198162248 -> n140112198162360 - n140112198162192 [label=ArrayAccess] - n140112198162248 -> n140112198162192 - n140112198162304 [label="Iter(1)"] - n140112198162416 [label=Block] - n140112198279240 [label=Filter] - n140112198162416 -> n140112198279240 - n140112198162640 [label="+"] - n140112198162528 [label="*"] - n140112198162640 -> n140112198162528 - n140112198162304 [label="Iter(1)"] - n140112198162640 -> n140112198162304 - n140112198162864 [label=PropertyAccess] - n140112198557592 [label=position] - n140112198162864 -> n140112198557592 - n140112198162472 [label=ArrayAccess] - n140112198162864 -> n140112198162472 - n140112198282320 [label="*"] - n140112198162864 -> n140112198282320 - n140112198316888 [label="+"] - n140112198162864 -> n140112198316888 - n140112198318456 [label="+"] - n140112198162864 -> n140112198318456 - n140112198162472 [label=ArrayAccess] - n140112198589128 [label=neighborlists] - n140112198162472 -> n140112198589128 - n140112198162640 [label="+"] - n140112198162472 -> n140112198162640 - n140112198589128 [label=neighborlists] - n140112198282320 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198282320 -> n140112198162472 - n140112198282376 [label=3] - n140112198282320 -> n140112198282376 - n140112198282376 [label=3] - n140112198316888 [label="+"] - n140112198316720 [label="*"] - n140112198316888 -> n140112198316720 - n140112198316944 [label=1] - n140112198316888 -> n140112198316944 - n140112198316720 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198316720 -> n140112198162472 - n140112198316776 [label=3] - n140112198316720 -> n140112198316776 - n140112198316776 [label=3] - n140112198316944 [label=1] - n140112198318456 [label="+"] - n140112198318288 [label="*"] - n140112198318456 -> n140112198318288 - n140112198318512 [label=2] - n140112198318456 -> n140112198318512 - n140112198318288 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198318288 -> n140112198162472 - n140112198318344 [label=3] - n140112198318288 -> n140112198318344 - n140112198318344 [label=3] - n140112198318512 [label=2] - n140112198162976 [label="-"] - n140112198162752 [label=PropertyAccess] - n140112198162976 -> n140112198162752 - n140112198162864 [label=PropertyAccess] - n140112198162976 -> n140112198162864 - n140112198163480 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198163480 -> n140112198162472 - n140112198163536 [label=3] - n140112198163480 -> n140112198163536 - n140112198163536 [label=3] - n140112198164264 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198164264 -> n140112198162472 - n140112198164320 [label=3] - n140112198164264 -> n140112198164320 - n140112198164320 [label=3] - n140112198209944 [label="*"] - n140112198163816 [label=VectorAccess] - n140112198209944 -> n140112198163816 - n140112198209664 [label=VectorAccess] - n140112198209944 -> n140112198209664 - n140112198163816 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198163816 -> n140112198162976 - n140112198209664 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198209664 -> n140112198162976 - n140112198210224 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198210224 -> n140112198162472 - n140112198210280 [label=3] - n140112198210224 -> n140112198210280 - n140112198210280 [label=3] - n140112198210392 [label="+"] - n140112198210224 [label="*"] - n140112198210392 -> n140112198210224 - n140112198210448 [label=1] - n140112198210392 -> n140112198210448 - n140112198210448 [label=1] - n140112198211008 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198211008 -> n140112198162472 - n140112198211064 [label=3] - n140112198211008 -> n140112198211064 - n140112198211064 [label=3] - n140112198211176 [label="+"] - n140112198211008 [label="*"] - n140112198211176 -> n140112198211008 - n140112198211232 [label=1] - n140112198211176 -> n140112198211232 - n140112198211232 [label=1] - n140112198211400 [label="*"] - n140112198210560 [label=VectorAccess] - n140112198211400 -> n140112198210560 - n140112198211344 [label=VectorAccess] - n140112198211400 -> n140112198211344 - n140112198210560 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198210560 -> n140112198162976 - n140112198211344 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198211344 -> n140112198162976 - n140112198211512 [label="+"] - n140112198209944 [label="*"] - n140112198211512 -> n140112198209944 - n140112198211400 [label="*"] - n140112198211512 -> n140112198211400 - n140112198213472 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198213472 -> n140112198162472 - n140112198212072 [label=3] - n140112198213472 -> n140112198212072 - n140112198212072 [label=3] - n140112198212184 [label="+"] - n140112198213472 [label="*"] - n140112198212184 -> n140112198213472 - n140112198212240 [label=2] - n140112198212184 -> n140112198212240 - n140112198212240 [label=2] - n140112198212800 [label="*"] - n140112198162472 [label=ArrayAccess] - n140112198212800 -> n140112198162472 - n140112198212856 [label=3] - n140112198212800 -> n140112198212856 - n140112198212856 [label=3] - n140112198212968 [label="+"] - n140112198212800 [label="*"] - n140112198212968 -> n140112198212800 - n140112198213024 [label=2] - n140112198212968 -> n140112198213024 - n140112198213024 [label=2] - n140112198213192 [label="*"] - n140112198212352 [label=VectorAccess] - n140112198213192 -> n140112198212352 - n140112198213136 [label=VectorAccess] - n140112198213192 -> n140112198213136 - n140112198212352 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198212352 -> n140112198162976 - n140112198213136 [label=VectorAccess] - n140112198162976 [label="-"] - n140112198213136 -> n140112198162976 - n140112198213304 [label="+"] - n140112198211512 [label="+"] - n140112198213304 -> n140112198211512 - n140112198213192 [label="*"] - n140112198213304 -> n140112198213192 - n140112198213416 [label="<"] - n140112198213304 [label="+"] - n140112198213416 -> n140112198213304 - n140112198213584 [label=2.5] - n140112198213416 -> n140112198213584 - n140112198213584 [label=2.5] - n140112198279240 [label=Filter] - n140112198213416 [label="<"] - n140112198279240 -> n140112198213416 - n140112198279296 [label=Block] - n140112198279240 -> n140112198279296 - n140112198279296 [label=Block] - n140112198281200 [label=Assign] - n140112198279296 -> n140112198281200 - n140112198279632 [label="/"] - n140112198279688 [label=1.0] - n140112198279632 -> n140112198279688 - n140112198213304 [label="+"] - n140112198279632 -> n140112198213304 - n140112198279688 [label=1.0] - n140112198279800 [label="*"] - n140112198279632 [label="/"] - n140112198279800 -> n140112198279632 - n140112198279632 [label="/"] - n140112198279800 -> n140112198279632 - n140112198279912 [label="*"] - n140112198279800 [label="*"] - n140112198279912 -> n140112198279800 - n140112198279632 [label="/"] - n140112198279912 -> n140112198279632 - n140112198279576 [label=PropertyAccess] - n140112198586440 [label=force] - n140112198279576 -> n140112198586440 - n140112198161912 [label="Iter(0)"] - n140112198279576 -> n140112198161912 - n140112198281704 [label="*"] - n140112198279576 -> n140112198281704 - n140112198316272 [label="+"] - n140112198279576 -> n140112198316272 - n140112198317840 [label="+"] - n140112198279576 -> n140112198317840 - n140112198586440 [label=force] - n140112198280248 [label="*"] - n140112198162976 [label="-"] - n140112198280248 -> n140112198162976 - n140112198280304 [label=48.0] - n140112198280248 -> n140112198280304 - n140112198280304 [label=48.0] - n140112198280416 [label="*"] - n140112198162976 [label="-"] - n140112198280416 -> n140112198162976 - n140112197071032 [label="*"] - n140112198280416 -> n140112197071032 - n140112197071032 [label="*"] - n140112198280304 [label=48.0] - n140112197071032 -> n140112198280304 - n140112198279912 [label="*"] - n140112197071032 -> n140112198279912 - n140112198280528 [label="-"] - n140112198279912 [label="*"] - n140112198280528 -> n140112198279912 - n140112198280584 [label=0.5] - n140112198280528 -> n140112198280584 - n140112198280584 [label=0.5] - n140112198280696 [label="*"] - n140112198162976 [label="-"] - n140112198280696 -> n140112198162976 - n140112197071144 [label="*"] - n140112198280696 -> n140112197071144 - n140112197071144 [label="*"] - n140112197071032 [label="*"] - n140112197071144 -> n140112197071032 - n140112198280528 [label="-"] - n140112197071144 -> n140112198280528 - n140112198280808 [label="*"] - n140112198162976 [label="-"] - n140112198280808 -> n140112198162976 - n140112197071256 [label="*"] - n140112198280808 -> n140112197071256 - n140112197071256 [label="*"] - n140112197071144 [label="*"] - n140112197071256 -> n140112197071144 - n140112198279632 [label="/"] - n140112197071256 -> n140112198279632 - n140112198280920 [label="*"] - n140112198162976 [label="-"] - n140112198280920 -> n140112198162976 - n140112197071256 [label="*"] - n140112198280920 -> n140112197071256 - n140112198281088 [label="+"] - n140112198279576 [label=PropertyAccess] - n140112198281088 -> n140112198279576 - n140112198280920 [label="*"] - n140112198281088 -> n140112198280920 - n140112198281200 [label=Assign] - n140112198282768 [label=VectorAccess] - n140112198281200 -> n140112198282768 - n140112198281648 [label=VectorAccess] - n140112198281200 -> n140112198281648 - n140112198317168 [label=VectorAccess] - n140112198281200 -> n140112198317168 - n140112198283216 [label=VectorAccess] - n140112198281200 -> n140112198283216 - n140112198318736 [label=VectorAccess] - n140112198281200 -> n140112198318736 - n140112198317616 [label=VectorAccess] - n140112198281200 -> n140112198317616 - n140112198282768 [label=VectorAccess] - n140112198279576 [label=PropertyAccess] - n140112198282768 -> n140112198279576 - n140112198281648 [label=VectorAccess] - n140112198281088 [label="+"] - n140112198281648 -> n140112198281088 - n140112198317168 [label=VectorAccess] - n140112198279576 [label=PropertyAccess] - n140112198317168 -> n140112198279576 - n140112198283216 [label=VectorAccess] - n140112198281088 [label="+"] - n140112198283216 -> n140112198281088 - n140112198318736 [label=VectorAccess] - n140112198279576 [label=PropertyAccess] - n140112198318736 -> n140112198279576 - n140112198317616 [label=VectorAccess] - n140112198281088 [label="+"] - n140112198317616 -> n140112198281088 - n140112198162360 [label=0] - n140112198162192 [label=ArrayAccess] - n140112198589184 [label=numneighs] - n140112198162192 -> n140112198589184 - n140112198161912 [label="Iter(0)"] - n140112198162192 -> n140112198161912 - n140112198589184 [label=numneighs] - n140112198161968 [label=0] - n140112198162024 [label=0] - n140112198279352 [label=KernelBlock] - n140112198589688 [label=Block] - n140112198279352 -> n140112198589688 - n140112198589688 [label=Block] - n140112198589632 [label=ParticleFor] - n140112198589688 -> n140112198589632 - n140112198589632 [label=ParticleFor] - n140112198590304 [label="Iter(2)"] - n140112198589632 -> n140112198590304 - n140112198589856 [label=Block] - n140112198589632 -> n140112198589856 - n140112198589520 [label=0] - n140112198589632 -> n140112198589520 - n140112198589968 [label=0] - n140112198589632 -> n140112198589968 - n140112198590304 [label="Iter(2)"] - n140112198589856 [label=Block] - n140112198319520 [label=Assign] - n140112198589856 -> n140112198319520 - n140112198356608 [label=Assign] - n140112198589856 -> n140112198356608 - n140112198318792 [label=PropertyAccess] - n140112198557648 [label=velocity] - n140112198318792 -> n140112198557648 - n140112198590304 [label="Iter(2)"] - n140112198318792 -> n140112198590304 - n140112198320024 [label="*"] - n140112198318792 -> n140112198320024 - n140112198354592 [label="+"] - n140112198318792 -> n140112198354592 - n140112198355824 [label="+"] - n140112198318792 -> n140112198355824 - n140112198557648 [label=velocity] - n140112198320024 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198320024 -> n140112198590304 - n140112198353248 [label=3] - n140112198320024 -> n140112198353248 - n140112198353248 [label=3] - n140112198354592 [label="+"] - n140112198354088 [label="*"] - n140112198354592 -> n140112198354088 - n140112198354648 [label=1] - n140112198354592 -> n140112198354648 - n140112198354088 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198354088 -> n140112198590304 - n140112198354480 [label=3] - n140112198354088 -> n140112198354480 - n140112198354480 [label=3] - n140112198354648 [label=1] - n140112198355824 [label="+"] - n140112198355320 [label="*"] - n140112198355824 -> n140112198355320 - n140112198355880 [label=2] - n140112198355824 -> n140112198355880 - n140112198355320 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198355320 -> n140112198590304 - n140112198355712 [label=3] - n140112198355320 -> n140112198355712 - n140112198355712 [label=3] - n140112198355880 [label=2] - n140112198318904 [label=PropertyAccess] - n140112198586440 [label=force] - n140112198318904 -> n140112198586440 - n140112198590304 [label="Iter(2)"] - n140112198318904 -> n140112198590304 - n140112198320080 [label="*"] - n140112198318904 -> n140112198320080 - n140112198354312 [label="+"] - n140112198318904 -> n140112198354312 - n140112198355544 [label="+"] - n140112198318904 -> n140112198355544 - n140112198320080 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198320080 -> n140112198590304 - n140112198352968 [label=3] - n140112198320080 -> n140112198352968 - n140112198352968 [label=3] - n140112198354312 [label="+"] - n140112198354144 [label="*"] - n140112198354312 -> n140112198354144 - n140112198354368 [label=1] - n140112198354312 -> n140112198354368 - n140112198354144 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198354144 -> n140112198590304 - n140112198354200 [label=3] - n140112198354144 -> n140112198354200 - n140112198354200 [label=3] - n140112198354368 [label=1] - n140112198355544 [label="+"] - n140112198355376 [label="*"] - n140112198355544 -> n140112198355376 - n140112198355600 [label=2] - n140112198355544 -> n140112198355600 - n140112198355376 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198355376 -> n140112198590304 - n140112198355432 [label=3] - n140112198355376 -> n140112198355432 - n140112198355432 [label=3] - n140112198355600 [label=2] - n140112198319016 [label="*"] - n140112198319072 [label=0.005] - n140112198319016 -> n140112198319072 - n140112198318904 [label=PropertyAccess] - n140112198319016 -> n140112198318904 - n140112198319072 [label=0.005] - n140112198319184 [label=PropertyAccess] - n140112198557536 [label=mass] - n140112198319184 -> n140112198557536 - n140112198590304 [label="Iter(2)"] - n140112198319184 -> n140112198590304 - n140112198557536 [label=mass] - n140112198319296 [label="/"] - n140112198319016 [label="*"] - n140112198319296 -> n140112198319016 - n140112198319184 [label=PropertyAccess] - n140112198319296 -> n140112198319184 - n140112198319408 [label="+"] - n140112198318792 [label=PropertyAccess] - n140112198319408 -> n140112198318792 - n140112198319296 [label="/"] - n140112198319408 -> n140112198319296 - n140112198319632 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198319632 -> n140112198590304 - n140112198319688 [label=3] - n140112198319632 -> n140112198319688 - n140112198319688 [label=3] - n140112198353696 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198353696 -> n140112198590304 - n140112198353752 [label=3] - n140112198353696 -> n140112198353752 - n140112198353752 [label=3] - n140112198353864 [label="+"] - n140112198353696 [label="*"] - n140112198353864 -> n140112198353696 - n140112198353920 [label=1] - n140112198353864 -> n140112198353920 - n140112198353920 [label=1] - n140112198354928 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198354928 -> n140112198590304 - n140112198354984 [label=3] - n140112198354928 -> n140112198354984 - n140112198354984 [label=3] - n140112198355096 [label="+"] - n140112198354928 [label="*"] - n140112198355096 -> n140112198354928 - n140112198355152 [label=2] - n140112198355096 -> n140112198355152 - n140112198355152 [label=2] - n140112198319520 [label=Assign] - n140112198353584 [label=VectorAccess] - n140112198319520 -> n140112198353584 - n140112198319968 [label=VectorAccess] - n140112198319520 -> n140112198319968 - n140112198354816 [label=VectorAccess] - n140112198319520 -> n140112198354816 - n140112198354032 [label=VectorAccess] - n140112198319520 -> n140112198354032 - n140112198356048 [label=VectorAccess] - n140112198319520 -> n140112198356048 - n140112198355264 [label=VectorAccess] - n140112198319520 -> n140112198355264 - n140112198353584 [label=VectorAccess] - n140112198318792 [label=PropertyAccess] - n140112198353584 -> n140112198318792 - n140112198319968 [label=VectorAccess] - n140112198319408 [label="+"] - n140112198319968 -> n140112198319408 - n140112198354816 [label=VectorAccess] - n140112198318792 [label=PropertyAccess] - n140112198354816 -> n140112198318792 - n140112198354032 [label=VectorAccess] - n140112198319408 [label="+"] - n140112198354032 -> n140112198319408 - n140112198356048 [label=VectorAccess] - n140112198318792 [label=PropertyAccess] - n140112198356048 -> n140112198318792 - n140112198355264 [label=VectorAccess] - n140112198319408 [label="+"] - n140112198355264 -> n140112198319408 - n140112198356104 [label=PropertyAccess] - n140112198557592 [label=position] - n140112198356104 -> n140112198557592 - n140112198590304 [label="Iter(2)"] - n140112198356104 -> n140112198590304 - n140112197861896 [label="*"] - n140112198356104 -> n140112197861896 - n140112197863296 [label="+"] - n140112198356104 -> n140112197863296 - n140112197864528 [label="+"] - n140112198356104 -> n140112197864528 - n140112197861896 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197861896 -> n140112198590304 - n140112197861952 [label=3] - n140112197861896 -> n140112197861952 - n140112197861952 [label=3] - n140112197863296 [label="+"] - n140112197863128 [label="*"] - n140112197863296 -> n140112197863128 - n140112197863352 [label=1] - n140112197863296 -> n140112197863352 - n140112197863128 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197863128 -> n140112198590304 - n140112197863184 [label=3] - n140112197863128 -> n140112197863184 - n140112197863184 [label=3] - n140112197863352 [label=1] - n140112197864528 [label="+"] - n140112197864360 [label="*"] - n140112197864528 -> n140112197864360 - n140112197864584 [label=2] - n140112197864528 -> n140112197864584 - n140112197864360 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197864360 -> n140112198590304 - n140112197864416 [label=3] - n140112197864360 -> n140112197864416 - n140112197864416 [label=3] - n140112197864584 [label=2] - n140112198356216 [label=PropertyAccess] - n140112198557648 [label=velocity] - n140112198356216 -> n140112198557648 - n140112198590304 [label="Iter(2)"] - n140112198356216 -> n140112198590304 - n140112197861560 [label="*"] - n140112198356216 -> n140112197861560 - n140112197862960 [label="+"] - n140112198356216 -> n140112197862960 - n140112197864192 [label="+"] - n140112198356216 -> n140112197864192 - n140112197861560 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197861560 -> n140112198590304 - n140112197861616 [label=3] - n140112197861560 -> n140112197861616 - n140112197861616 [label=3] - n140112197862960 [label="+"] - n140112197862792 [label="*"] - n140112197862960 -> n140112197862792 - n140112197863016 [label=1] - n140112197862960 -> n140112197863016 - n140112197862792 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197862792 -> n140112198590304 - n140112197862848 [label=3] - n140112197862792 -> n140112197862848 - n140112197862848 [label=3] - n140112197863016 [label=1] - n140112197864192 [label="+"] - n140112197864024 [label="*"] - n140112197864192 -> n140112197864024 - n140112197864248 [label=2] - n140112197864192 -> n140112197864248 - n140112197864024 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197864024 -> n140112198590304 - n140112197864080 [label=3] - n140112197864024 -> n140112197864080 - n140112197864080 [label=3] - n140112197864248 [label=2] - n140112198356328 [label="*"] - n140112198356384 [label=0.005] - n140112198356328 -> n140112198356384 - n140112198356216 [label=PropertyAccess] - n140112198356328 -> n140112198356216 - n140112198356384 [label=0.005] - n140112198356496 [label="+"] - n140112198356104 [label=PropertyAccess] - n140112198356496 -> n140112198356104 - n140112198356328 [label="*"] - n140112198356496 -> n140112198356328 - n140112198356720 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112198356720 -> n140112198590304 - n140112198356776 [label=3] - n140112198356720 -> n140112198356776 - n140112198356776 [label=3] - n140112197862400 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197862400 -> n140112198590304 - n140112197862456 [label=3] - n140112197862400 -> n140112197862456 - n140112197862456 [label=3] - n140112197862568 [label="+"] - n140112197862400 [label="*"] - n140112197862568 -> n140112197862400 - n140112197862624 [label=1] - n140112197862568 -> n140112197862624 - n140112197862624 [label=1] - n140112197863632 [label="*"] - n140112198590304 [label="Iter(2)"] - n140112197863632 -> n140112198590304 - n140112197863688 [label=3] - n140112197863632 -> n140112197863688 - n140112197863688 [label=3] - n140112197863800 [label="+"] - n140112197863632 [label="*"] - n140112197863800 -> n140112197863632 - n140112197863856 [label=2] - n140112197863800 -> n140112197863856 - n140112197863856 [label=2] - n140112198356608 [label=Assign] - n140112197862288 [label=VectorAccess] - n140112198356608 -> n140112197862288 - n140112197861504 [label=VectorAccess] - n140112198356608 -> n140112197861504 - n140112197863520 [label=VectorAccess] - n140112198356608 -> n140112197863520 - n140112197862736 [label=VectorAccess] - n140112198356608 -> n140112197862736 - n140112197864752 [label=VectorAccess] - n140112198356608 -> n140112197864752 - n140112197863968 [label=VectorAccess] - n140112198356608 -> n140112197863968 - n140112197862288 [label=VectorAccess] - n140112198356104 [label=PropertyAccess] - n140112197862288 -> n140112198356104 - n140112197861504 [label=VectorAccess] - n140112198356496 [label="+"] - n140112197861504 -> n140112198356496 - n140112197863520 [label=VectorAccess] - n140112198356104 [label=PropertyAccess] - n140112197863520 -> n140112198356104 - n140112197862736 [label=VectorAccess] - n140112198356496 [label="+"] - n140112197862736 -> n140112198356496 - n140112197864752 [label=VectorAccess] - n140112198356104 [label=PropertyAccess] - n140112197864752 -> n140112198356104 - n140112197863968 [label=VectorAccess] - n140112198356496 [label="+"] - n140112197863968 -> n140112198356496 - n140112198589520 [label=0] - n140112198589968 [label=0] + n140589003589112 [label=Block] + n140589003139560 [label=KernelBlock] + n140589003589112 -> n140589003139560 + n140589003139616 [label=KernelBlock] + n140589003589112 -> n140589003139616 + n140589003139560 [label=KernelBlock] + n140589003139168 [label=Block] + n140589003139560 -> n140589003139168 + n140589003139168 [label=Block] + n140589002480104 [label=ParticleFor] + n140589003139168 -> n140589002480104 + n140589002480104 [label=ParticleFor] + n140589002480160 [label="Iter(14)"] + n140589002480104 -> n140589002480160 + n140589002480328 [label=Block] + n140589002480104 -> n140589002480328 + n140589002480216 [label=0] + n140589002480104 -> n140589002480216 + n140589002480272 [label=0] + n140589002480104 -> n140589002480272 + n140589002480160 [label="Iter(14)"] + n140589002480328 [label=Block] + n140589002480496 [label=For] + n140589002480328 -> n140589002480496 + n140589002480776 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002480776 -> n140589002480160 + n140589003590792 [label=neighborlist_capacity] + n140589002480776 -> n140589003590792 + n140589003590792 [label=neighborlist_capacity] + n140589002481000 [label=PropertyAccess] + n140589003589280 [label=position] + n140589002481000 -> n140589003589280 + n140589002480160 [label="Iter(14)"] + n140589002481000 -> n140589002480160 + n140589002519104 [label="*"] + n140589002481000 -> n140589002519104 + n140589002520952 [label="+"] + n140589002481000 -> n140589002520952 + n140589002547384 [label="+"] + n140589002481000 -> n140589002547384 + n140589003589280 [label=position] + n140589002519104 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002519104 -> n140589002480160 + n140589002519160 [label=3] + n140589002519104 -> n140589002519160 + n140589002519160 [label=3] + n140589002520952 [label="+"] + n140589002520784 [label="*"] + n140589002520952 -> n140589002520784 + n140589002521008 [label=1] + n140589002520952 -> n140589002521008 + n140589002520784 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002520784 -> n140589002480160 + n140589002520840 [label=3] + n140589002520784 -> n140589002520840 + n140589002520840 [label=3] + n140589002521008 [label=1] + n140589002547384 [label="+"] + n140589002522576 [label="*"] + n140589002547384 -> n140589002522576 + n140589002547440 [label=2] + n140589002547384 -> n140589002547440 + n140589002522576 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002522576 -> n140589002480160 + n140589002547272 [label=3] + n140589002522576 -> n140589002547272 + n140589002547272 [label=3] + n140589002547440 [label=2] + n140589002481392 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002481392 -> n140589002480160 + n140589002481448 [label=3] + n140589002481392 -> n140589002481448 + n140589002481448 [label=3] + n140589002520000 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002520000 -> n140589002480160 + n140589002520056 [label=3] + n140589002520000 -> n140589002520056 + n140589002520056 [label=3] + n140589002520168 [label="+"] + n140589002520000 [label="*"] + n140589002520168 -> n140589002520000 + n140589002520224 [label=1] + n140589002520168 -> n140589002520224 + n140589002520224 [label=1] + n140589002521792 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589002521792 -> n140589002480160 + n140589002521848 [label=3] + n140589002521792 -> n140589002521848 + n140589002521848 [label=3] + n140589002521960 [label="+"] + n140589002521792 [label="*"] + n140589002521960 -> n140589002521792 + n140589002522016 [label=2] + n140589002521960 -> n140589002522016 + n140589002522016 [label=2] + n140589003272432 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003272432 -> n140589002480160 + n140589003272488 [label=3] + n140589003272432 -> n140589003272488 + n140589003272488 [label=3] + n140589003272824 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003272824 -> n140589002480160 + n140589003272880 [label=3] + n140589003272824 -> n140589003272880 + n140589003272880 [label=3] + n140589003273328 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003273328 -> n140589002480160 + n140589003273384 [label=3] + n140589003273328 -> n140589003273384 + n140589003273384 [label=3] + n140589003273496 [label="+"] + n140589003273328 [label="*"] + n140589003273496 -> n140589003273328 + n140589003273552 [label=1] + n140589003273496 -> n140589003273552 + n140589003273552 [label=1] + n140589003273720 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003273720 -> n140589002480160 + n140589003273776 [label=3] + n140589003273720 -> n140589003273776 + n140589003273776 [label=3] + n140589003273888 [label="+"] + n140589003273720 [label="*"] + n140589003273888 -> n140589003273720 + n140589003273944 [label=1] + n140589003273888 -> n140589003273944 + n140589003273944 [label=1] + n140589003274224 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003274224 -> n140589002480160 + n140589003274280 [label=3] + n140589003274224 -> n140589003274280 + n140589003274280 [label=3] + n140589003274392 [label="+"] + n140589003274224 [label="*"] + n140589003274392 -> n140589003274224 + n140589003274448 [label=2] + n140589003274392 -> n140589003274448 + n140589003274448 [label=2] + n140589003274616 [label="*"] + n140589002480160 [label="Iter(14)"] + n140589003274616 -> n140589002480160 + n140589003274672 [label=3] + n140589003274616 -> n140589003274672 + n140589003274672 [label=3] + n140589003274784 [label="+"] + n140589003274616 [label="*"] + n140589003274784 -> n140589003274616 + n140589003274840 [label=2] + n140589003274784 -> n140589003274840 + n140589003274840 [label=2] + n140589002480496 [label=For] + n140589002480552 [label="Iter(15)"] + n140589002480496 -> n140589002480552 + n140589002480664 [label=Block] + n140589002480496 -> n140589002480664 + n140589002480608 [label=0] + n140589002480496 -> n140589002480608 + n140589002480440 [label=ArrayAccess] + n140589002480496 -> n140589002480440 + n140589002480552 [label="Iter(15)"] + n140589002480664 [label=Block] + n140589002548336 [label=Filter] + n140589002480664 -> n140589002548336 + n140589002480888 [label="+"] + n140589002480776 [label="*"] + n140589002480888 -> n140589002480776 + n140589002480552 [label="Iter(15)"] + n140589002480888 -> n140589002480552 + n140589002481112 [label=PropertyAccess] + n140589003589280 [label=position] + n140589002481112 -> n140589003589280 + n140589002480720 [label=ArrayAccess] + n140589002481112 -> n140589002480720 + n140589002519440 [label="*"] + n140589002481112 -> n140589002519440 + n140589002521288 [label="+"] + n140589002481112 -> n140589002521288 + n140589002547720 [label="+"] + n140589002481112 -> n140589002547720 + n140589002480720 [label=ArrayAccess] + n140589003590848 [label=neighborlists] + n140589002480720 -> n140589003590848 + n140589002480888 [label="+"] + n140589002480720 -> n140589002480888 + n140589003590848 [label=neighborlists] + n140589002519440 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002519440 -> n140589002480720 + n140589002519496 [label=3] + n140589002519440 -> n140589002519496 + n140589002519496 [label=3] + n140589002521288 [label="+"] + n140589002521120 [label="*"] + n140589002521288 -> n140589002521120 + n140589002521344 [label=1] + n140589002521288 -> n140589002521344 + n140589002521120 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002521120 -> n140589002480720 + n140589002521176 [label=3] + n140589002521120 -> n140589002521176 + n140589002521176 [label=3] + n140589002521344 [label=1] + n140589002547720 [label="+"] + n140589002547552 [label="*"] + n140589002547720 -> n140589002547552 + n140589002547776 [label=2] + n140589002547720 -> n140589002547776 + n140589002547552 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002547552 -> n140589002480720 + n140589002547608 [label=3] + n140589002547552 -> n140589002547608 + n140589002547608 [label=3] + n140589002547776 [label=2] + n140589002481224 [label="-"] + n140589002481000 [label=PropertyAccess] + n140589002481224 -> n140589002481000 + n140589002481112 [label=PropertyAccess] + n140589002481224 -> n140589002481112 + n140589002518656 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002518656 -> n140589002480720 + n140589002518712 [label=3] + n140589002518656 -> n140589002518712 + n140589002518712 [label=3] + n140589002519832 [label="*"] + n140589002518992 [label=VectorAccess] + n140589002519832 -> n140589002518992 + n140589002519776 [label=VectorAccess] + n140589002519832 -> n140589002519776 + n140589002518992 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002518992 -> n140589002481224 + n140589002519776 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002519776 -> n140589002481224 + n140589002520336 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002520336 -> n140589002480720 + n140589002520392 [label=3] + n140589002520336 -> n140589002520392 + n140589002520392 [label=3] + n140589002520504 [label="+"] + n140589002520336 [label="*"] + n140589002520504 -> n140589002520336 + n140589002520560 [label=1] + n140589002520504 -> n140589002520560 + n140589002520560 [label=1] + n140589002521512 [label="*"] + n140589002520672 [label=VectorAccess] + n140589002521512 -> n140589002520672 + n140589002521456 [label=VectorAccess] + n140589002521512 -> n140589002521456 + n140589002520672 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002520672 -> n140589002481224 + n140589002521456 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002521456 -> n140589002481224 + n140589002521624 [label="+"] + n140589002519832 [label="*"] + n140589002521624 -> n140589002519832 + n140589002521512 [label="*"] + n140589002521624 -> n140589002521512 + n140589002522128 [label="*"] + n140589002480720 [label=ArrayAccess] + n140589002522128 -> n140589002480720 + n140589002522184 [label=3] + n140589002522128 -> n140589002522184 + n140589002522184 [label=3] + n140589002522296 [label="+"] + n140589002522128 [label="*"] + n140589002522296 -> n140589002522128 + n140589002522352 [label=2] + n140589002522296 -> n140589002522352 + n140589002522352 [label=2] + n140589002547944 [label="*"] + n140589002522464 [label=VectorAccess] + n140589002547944 -> n140589002522464 + n140589002547888 [label=VectorAccess] + n140589002547944 -> n140589002547888 + n140589002522464 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002522464 -> n140589002481224 + n140589002547888 [label=VectorAccess] + n140589002481224 [label="-"] + n140589002547888 -> n140589002481224 + n140589002548056 [label="+"] + n140589002521624 [label="+"] + n140589002548056 -> n140589002521624 + n140589002547944 [label="*"] + n140589002548056 -> n140589002547944 + n140589002548168 [label="<"] + n140589002548056 [label="+"] + n140589002548168 -> n140589002548056 + n140589002548224 [label=2.5] + n140589002548168 -> n140589002548224 + n140589002548224 [label=2.5] + n140589002548336 [label=Filter] + n140589002548168 [label="<"] + n140589002548336 -> n140589002548168 + n140589003139504 [label=Block] + n140589002548336 -> n140589003139504 + n140589003139504 [label=Block] + n140589003272320 [label=Assign] + n140589003139504 -> n140589003272320 + n140589003139840 [label="/"] + n140589003139896 [label=1.0] + n140589003139840 -> n140589003139896 + n140589002548056 [label="+"] + n140589003139840 -> n140589002548056 + n140589003139896 [label=1.0] + n140589003140008 [label="*"] + n140589003139840 [label="/"] + n140589003140008 -> n140589003139840 + n140589003139840 [label="/"] + n140589003140008 -> n140589003139840 + n140589003140120 [label="*"] + n140589003140008 [label="*"] + n140589003140120 -> n140589003140008 + n140589003139840 [label="/"] + n140589003140120 -> n140589003139840 + n140589003139784 [label=PropertyAccess] + n140589003589392 [label=force] + n140589003139784 -> n140589003589392 + n140589002480160 [label="Iter(14)"] + n140589003139784 -> n140589002480160 + n140589003272824 [label="*"] + n140589003139784 -> n140589003272824 + n140589003273888 [label="+"] + n140589003139784 -> n140589003273888 + n140589003274784 [label="+"] + n140589003139784 -> n140589003274784 + n140589003589392 [label=force] + n140589003140456 [label="*"] + n140589002481224 [label="-"] + n140589003140456 -> n140589002481224 + n140589003140680 [label=48.0] + n140589003140456 -> n140589003140680 + n140589003140680 [label=48.0] + n140589003140792 [label="*"] + n140589002481224 [label="-"] + n140589003140792 -> n140589002481224 + n140589002859408 [label="*"] + n140589003140792 -> n140589002859408 + n140589002859408 [label="*"] + n140589003140680 [label=48.0] + n140589002859408 -> n140589003140680 + n140589003140120 [label="*"] + n140589002859408 -> n140589003140120 + n140589003140904 [label="-"] + n140589003140120 [label="*"] + n140589003140904 -> n140589003140120 + n140589003140960 [label=0.5] + n140589003140904 -> n140589003140960 + n140589003140960 [label=0.5] + n140589003589000 [label="*"] + n140589002481224 [label="-"] + n140589003589000 -> n140589002481224 + n140589002963264 [label="*"] + n140589003589000 -> n140589002963264 + n140589002963264 [label="*"] + n140589002859408 [label="*"] + n140589002963264 -> n140589002859408 + n140589003140904 [label="-"] + n140589002963264 -> n140589003140904 + n140589003591520 [label="*"] + n140589002481224 [label="-"] + n140589003591520 -> n140589002481224 + n140589002548952 [label="*"] + n140589003591520 -> n140589002548952 + n140589002548952 [label="*"] + n140589002963264 [label="*"] + n140589002548952 -> n140589002963264 + n140589003139840 [label="/"] + n140589002548952 -> n140589003139840 + n140589003591576 [label="*"] + n140589002481224 [label="-"] + n140589003591576 -> n140589002481224 + n140589002548952 [label="*"] + n140589003591576 -> n140589002548952 + n140589003591352 [label="+"] + n140589003139784 [label=PropertyAccess] + n140589003591352 -> n140589003139784 + n140589003591576 [label="*"] + n140589003591352 -> n140589003591576 + n140589003272320 [label=Assign] + n140589003273216 [label=VectorAccess] + n140589003272320 -> n140589003273216 + n140589003272768 [label=VectorAccess] + n140589003272320 -> n140589003272768 + n140589003274112 [label=VectorAccess] + n140589003272320 -> n140589003274112 + n140589003273664 [label=VectorAccess] + n140589003272320 -> n140589003273664 + n140589003275008 [label=VectorAccess] + n140589003272320 -> n140589003275008 + n140589003274560 [label=VectorAccess] + n140589003272320 -> n140589003274560 + n140589003273216 [label=VectorAccess] + n140589003139784 [label=PropertyAccess] + n140589003273216 -> n140589003139784 + n140589003272768 [label=VectorAccess] + n140589003591352 [label="+"] + n140589003272768 -> n140589003591352 + n140589003274112 [label=VectorAccess] + n140589003139784 [label=PropertyAccess] + n140589003274112 -> n140589003139784 + n140589003273664 [label=VectorAccess] + n140589003591352 [label="+"] + n140589003273664 -> n140589003591352 + n140589003275008 [label=VectorAccess] + n140589003139784 [label=PropertyAccess] + n140589003275008 -> n140589003139784 + n140589003274560 [label=VectorAccess] + n140589003591352 [label="+"] + n140589003274560 -> n140589003591352 + n140589002480608 [label=0] + n140589002480440 [label=ArrayAccess] + n140589003590904 [label=numneighs] + n140589002480440 -> n140589003590904 + n140589002480160 [label="Iter(14)"] + n140589002480440 -> n140589002480160 + n140589003590904 [label=numneighs] + n140589002480216 [label=0] + n140589002480272 [label=0] + n140589003139616 [label=KernelBlock] + n140589003138160 [label=Block] + n140589003139616 -> n140589003138160 + n140589003138160 [label=Block] + n140589003138216 [label=ParticleFor] + n140589003138160 -> n140589003138216 + n140589003138216 [label=ParticleFor] + n140589003138104 [label="Iter(0)"] + n140589003138216 -> n140589003138104 + n140589003137096 [label=Block] + n140589003138216 -> n140589003137096 + n140589003140624 [label=0] + n140589003138216 -> n140589003140624 + n140589003137152 [label=0] + n140589003138216 -> n140589003137152 + n140589003138104 [label="Iter(0)"] + n140589003137096 [label=Block] + n140589003275848 [label=Assign] + n140589003137096 -> n140589003275848 + n140589003321128 [label=Assign] + n140589003137096 -> n140589003321128 + n140589003275120 [label=PropertyAccess] + n140589003589336 [label=velocity] + n140589003275120 -> n140589003589336 + n140589003138104 [label="Iter(0)"] + n140589003275120 -> n140589003138104 + n140589003317376 [label="*"] + n140589003275120 -> n140589003317376 + n140589003319112 [label="+"] + n140589003275120 -> n140589003319112 + n140589003320344 [label="+"] + n140589003275120 -> n140589003320344 + n140589003589336 [label=velocity] + n140589003317376 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003317376 -> n140589003138104 + n140589003317768 [label=3] + n140589003317376 -> n140589003317768 + n140589003317768 [label=3] + n140589003319112 [label="+"] + n140589003318608 [label="*"] + n140589003319112 -> n140589003318608 + n140589003319168 [label=1] + n140589003319112 -> n140589003319168 + n140589003318608 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003318608 -> n140589003138104 + n140589003319000 [label=3] + n140589003318608 -> n140589003319000 + n140589003319000 [label=3] + n140589003319168 [label=1] + n140589003320344 [label="+"] + n140589003319840 [label="*"] + n140589003320344 -> n140589003319840 + n140589003320400 [label=2] + n140589003320344 -> n140589003320400 + n140589003319840 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003319840 -> n140589003138104 + n140589003320232 [label=3] + n140589003319840 -> n140589003320232 + n140589003320232 [label=3] + n140589003320400 [label=2] + n140589003275232 [label=PropertyAccess] + n140589003589392 [label=force] + n140589003275232 -> n140589003589392 + n140589003138104 [label="Iter(0)"] + n140589003275232 -> n140589003138104 + n140589003317432 [label="*"] + n140589003275232 -> n140589003317432 + n140589003318832 [label="+"] + n140589003275232 -> n140589003318832 + n140589003320064 [label="+"] + n140589003275232 -> n140589003320064 + n140589003317432 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003317432 -> n140589003138104 + n140589003317488 [label=3] + n140589003317432 -> n140589003317488 + n140589003317488 [label=3] + n140589003318832 [label="+"] + n140589003318664 [label="*"] + n140589003318832 -> n140589003318664 + n140589003318888 [label=1] + n140589003318832 -> n140589003318888 + n140589003318664 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003318664 -> n140589003138104 + n140589003318720 [label=3] + n140589003318664 -> n140589003318720 + n140589003318720 [label=3] + n140589003318888 [label=1] + n140589003320064 [label="+"] + n140589003319896 [label="*"] + n140589003320064 -> n140589003319896 + n140589003320120 [label=2] + n140589003320064 -> n140589003320120 + n140589003319896 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003319896 -> n140589003138104 + n140589003319952 [label=3] + n140589003319896 -> n140589003319952 + n140589003319952 [label=3] + n140589003320120 [label=2] + n140589003275344 [label="*"] + n140589003275400 [label=0.005] + n140589003275344 -> n140589003275400 + n140589003275232 [label=PropertyAccess] + n140589003275344 -> n140589003275232 + n140589003275400 [label=0.005] + n140589003275512 [label=PropertyAccess] + n140589003589224 [label=mass] + n140589003275512 -> n140589003589224 + n140589003138104 [label="Iter(0)"] + n140589003275512 -> n140589003138104 + n140589003589224 [label=mass] + n140589003275624 [label="/"] + n140589003275344 [label="*"] + n140589003275624 -> n140589003275344 + n140589003275512 [label=PropertyAccess] + n140589003275624 -> n140589003275512 + n140589003275736 [label="+"] + n140589003275120 [label=PropertyAccess] + n140589003275736 -> n140589003275120 + n140589003275624 [label="/"] + n140589003275736 -> n140589003275624 + n140589003275960 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003275960 -> n140589003138104 + n140589003276016 [label=3] + n140589003275960 -> n140589003276016 + n140589003276016 [label=3] + n140589003318216 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003318216 -> n140589003138104 + n140589003318272 [label=3] + n140589003318216 -> n140589003318272 + n140589003318272 [label=3] + n140589003318384 [label="+"] + n140589003318216 [label="*"] + n140589003318384 -> n140589003318216 + n140589003318440 [label=1] + n140589003318384 -> n140589003318440 + n140589003318440 [label=1] + n140589003319448 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003319448 -> n140589003138104 + n140589003319504 [label=3] + n140589003319448 -> n140589003319504 + n140589003319504 [label=3] + n140589003319616 [label="+"] + n140589003319448 [label="*"] + n140589003319616 -> n140589003319448 + n140589003319672 [label=2] + n140589003319616 -> n140589003319672 + n140589003319672 [label=2] + n140589003275848 [label=Assign] + n140589003318104 [label=VectorAccess] + n140589003275848 -> n140589003318104 + n140589003317320 [label=VectorAccess] + n140589003275848 -> n140589003317320 + n140589003319336 [label=VectorAccess] + n140589003275848 -> n140589003319336 + n140589003318552 [label=VectorAccess] + n140589003275848 -> n140589003318552 + n140589003320568 [label=VectorAccess] + n140589003275848 -> n140589003320568 + n140589003319784 [label=VectorAccess] + n140589003275848 -> n140589003319784 + n140589003318104 [label=VectorAccess] + n140589003275120 [label=PropertyAccess] + n140589003318104 -> n140589003275120 + n140589003317320 [label=VectorAccess] + n140589003275736 [label="+"] + n140589003317320 -> n140589003275736 + n140589003319336 [label=VectorAccess] + n140589003275120 [label=PropertyAccess] + n140589003319336 -> n140589003275120 + n140589003318552 [label=VectorAccess] + n140589003275736 [label="+"] + n140589003318552 -> n140589003275736 + n140589003320568 [label=VectorAccess] + n140589003275120 [label=PropertyAccess] + n140589003320568 -> n140589003275120 + n140589003319784 [label=VectorAccess] + n140589003275736 [label="+"] + n140589003319784 -> n140589003275736 + n140589003320624 [label=PropertyAccess] + n140589003589280 [label=position] + n140589003320624 -> n140589003589280 + n140589003138104 [label="Iter(0)"] + n140589003320624 -> n140589003138104 + n140589003354800 [label="*"] + n140589003320624 -> n140589003354800 + n140589003356200 [label="+"] + n140589003320624 -> n140589003356200 + n140589003357432 [label="+"] + n140589003320624 -> n140589003357432 + n140589003354800 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003354800 -> n140589003138104 + n140589003354856 [label=3] + n140589003354800 -> n140589003354856 + n140589003354856 [label=3] + n140589003356200 [label="+"] + n140589003356032 [label="*"] + n140589003356200 -> n140589003356032 + n140589003356256 [label=1] + n140589003356200 -> n140589003356256 + n140589003356032 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003356032 -> n140589003138104 + n140589003356088 [label=3] + n140589003356032 -> n140589003356088 + n140589003356088 [label=3] + n140589003356256 [label=1] + n140589003357432 [label="+"] + n140589003357264 [label="*"] + n140589003357432 -> n140589003357264 + n140589003357488 [label=2] + n140589003357432 -> n140589003357488 + n140589003357264 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003357264 -> n140589003138104 + n140589003357320 [label=3] + n140589003357264 -> n140589003357320 + n140589003357320 [label=3] + n140589003357488 [label=2] + n140589003320736 [label=PropertyAccess] + n140589003589336 [label=velocity] + n140589003320736 -> n140589003589336 + n140589003138104 [label="Iter(0)"] + n140589003320736 -> n140589003138104 + n140589003354464 [label="*"] + n140589003320736 -> n140589003354464 + n140589003355864 [label="+"] + n140589003320736 -> n140589003355864 + n140589003357096 [label="+"] + n140589003320736 -> n140589003357096 + n140589003354464 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003354464 -> n140589003138104 + n140589003354520 [label=3] + n140589003354464 -> n140589003354520 + n140589003354520 [label=3] + n140589003355864 [label="+"] + n140589003355696 [label="*"] + n140589003355864 -> n140589003355696 + n140589003355920 [label=1] + n140589003355864 -> n140589003355920 + n140589003355696 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003355696 -> n140589003138104 + n140589003355752 [label=3] + n140589003355696 -> n140589003355752 + n140589003355752 [label=3] + n140589003355920 [label=1] + n140589003357096 [label="+"] + n140589003356928 [label="*"] + n140589003357096 -> n140589003356928 + n140589003357152 [label=2] + n140589003357096 -> n140589003357152 + n140589003356928 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003356928 -> n140589003138104 + n140589003356984 [label=3] + n140589003356928 -> n140589003356984 + n140589003356984 [label=3] + n140589003357152 [label=2] + n140589003320848 [label="*"] + n140589003320904 [label=0.005] + n140589003320848 -> n140589003320904 + n140589003320736 [label=PropertyAccess] + n140589003320848 -> n140589003320736 + n140589003320904 [label=0.005] + n140589003321016 [label="+"] + n140589003320624 [label=PropertyAccess] + n140589003321016 -> n140589003320624 + n140589003320848 [label="*"] + n140589003321016 -> n140589003320848 + n140589003321240 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003321240 -> n140589003138104 + n140589003321296 [label=3] + n140589003321240 -> n140589003321296 + n140589003321296 [label=3] + n140589003355304 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003355304 -> n140589003138104 + n140589003355360 [label=3] + n140589003355304 -> n140589003355360 + n140589003355360 [label=3] + n140589003355472 [label="+"] + n140589003355304 [label="*"] + n140589003355472 -> n140589003355304 + n140589003355528 [label=1] + n140589003355472 -> n140589003355528 + n140589003355528 [label=1] + n140589003356536 [label="*"] + n140589003138104 [label="Iter(0)"] + n140589003356536 -> n140589003138104 + n140589003356592 [label=3] + n140589003356536 -> n140589003356592 + n140589003356592 [label=3] + n140589003356704 [label="+"] + n140589003356536 [label="*"] + n140589003356704 -> n140589003356536 + n140589003356760 [label=2] + n140589003356704 -> n140589003356760 + n140589003356760 [label=2] + n140589003321128 [label=Assign] + n140589003355192 [label=VectorAccess] + n140589003321128 -> n140589003355192 + n140589003354408 [label=VectorAccess] + n140589003321128 -> n140589003354408 + n140589003356424 [label=VectorAccess] + n140589003321128 -> n140589003356424 + n140589003355640 [label=VectorAccess] + n140589003321128 -> n140589003355640 + n140589003357656 [label=VectorAccess] + n140589003321128 -> n140589003357656 + n140589003356872 [label=VectorAccess] + n140589003321128 -> n140589003356872 + n140589003355192 [label=VectorAccess] + n140589003320624 [label=PropertyAccess] + n140589003355192 -> n140589003320624 + n140589003354408 [label=VectorAccess] + n140589003321016 [label="+"] + n140589003354408 -> n140589003321016 + n140589003356424 [label=VectorAccess] + n140589003320624 [label=PropertyAccess] + n140589003356424 -> n140589003320624 + n140589003355640 [label=VectorAccess] + n140589003321016 [label="+"] + n140589003355640 -> n140589003321016 + n140589003357656 [label=VectorAccess] + n140589003320624 [label=PropertyAccess] + n140589003357656 -> n140589003320624 + n140589003356872 [label=VectorAccess] + n140589003321016 [label="+"] + n140589003356872 -> n140589003321016 + n140589003140624 [label=0] + n140589003137152 [label=0] + n140589003137824 [label="%"] + n140589003139000 [label="Iter(1)"] + n140589003137824 -> n140589003139000 + n140589003137880 [label=20] + n140589003137824 -> n140589003137880 + n140589003139000 [label="Iter(1)"] + n140589003137880 [label=20] + n140589003137488 [label="=="] + n140589003137824 [label="%"] + n140589003137488 -> n140589003137824 + n140589003137320 [label=0] + n140589003137488 -> n140589003137320 + n140589003137320 [label=0] + n140589003138832 [label="%"] + n140589003139000 [label="Iter(1)"] + n140589003138832 -> n140589003139000 + n140589003138440 [label=20] + n140589003138832 -> n140589003138440 + n140589003138440 [label=20] + n140589003138608 [label="=="] + n140589003138832 [label="%"] + n140589003138608 -> n140589003138832 + n140589003138664 [label=0] + n140589003138608 -> n140589003138664 + n140589003138664 [label=0] + n140589003138888 [label="%"] + n140589003139000 [label="Iter(1)"] + n140589003138888 -> n140589003139000 + n140589003139112 [label=20] + n140589003138888 -> n140589003139112 + n140589003139112 [label=20] + n140589003139672 [label="=="] + n140589003138888 [label="%"] + n140589003139672 -> n140589003138888 + n140589003139728 [label=0] + n140589003139672 -> n140589003139728 + n140589003139728 [label=0] + n140589003357824 [label="%"] + n140589003139000 [label="Iter(1)"] + n140589003357824 -> n140589003139000 + n140589003357880 [label=20] + n140589003357824 -> n140589003357880 + n140589003357880 [label=20] + n140589003357992 [label="=="] + n140589003357824 [label="%"] + n140589003357992 -> n140589003357824 + n140589003358048 [label=0] + n140589003357992 -> n140589003358048 + n140589003358048 [label=0] + n140589003137432 [label="+"] + n140589003139000 [label="Iter(1)"] + n140589003137432 -> n140589003139000 + n140589002858680 [label=1] + n140589003137432 -> n140589002858680 + n140589002858680 [label=1] } diff --git a/examples/kernels.pdf b/examples/kernels.pdf index 12844fa0ef674cc8aac18d7586a87a09b51f5b94..ce7b3462a9f6380bce3b82a907317bc6979cfe78 100644 GIT binary patch delta 46661 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 delta 46499 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 diff --git a/examples/lj_func.py b/examples/lj_func.py index baba7a9..5ec2c46 100644 --- a/examples/lj_func.py +++ b/examples/lj_func.py @@ -4,8 +4,6 @@ import pairs def lj(i, j): sr2 = 1.0 / rsq sr6 = sr2 * sr2 * sr2 * sigma6 - #f = 48.0 * sr6 * (sr6 - 0.5) * sr2 * epsilon - #force[i] += delta * f force[i] += delta * 48.0 * sr6 * (sr6 - 0.5) * sr2 * epsilon @@ -23,7 +21,7 @@ sigma6 = sigma ** 6 psim = pairs.simulation("lj_ns") psim.add_real_property('mass', 1.0) -psim.add_vector_property('position') +psim.add_position('position') psim.add_vector_property('velocity') psim.add_vector_property('force', vol=True) psim.from_file("data/minimd_setup_4x4x4.input", ['mass', 'position', 'velocity']) @@ -31,6 +29,6 @@ psim.create_cell_lists(2.8, 2.8) psim.create_neighbor_lists() psim.periodic(2.8) psim.vtk_output("output/test") -psim.compute(psim, lj, cutoff_radius, 'position', {'sigma6': sigma6, 'epsilon': epsilon}) -psim.compute(psim, euler, symbols={'dt': dt}) +psim.compute(lj, cutoff_radius, {'sigma6': sigma6, 'epsilon': epsilon}) +psim.compute(euler, symbols={'dt': dt}) psim.generate() diff --git a/examples/lj_ns.cpp b/examples/lj_ns.cpp index 169705c..ac376f0 100644 --- a/examples/lj_ns.cpp +++ b/examples/lj_ns.cpp @@ -3,9 +3,9 @@ #include <stdio.h> #include <stdlib.h> //--- -#include "runtime/pairs.hpp" -#include "runtime/read_from_file.hpp" -#include "runtime/vtk.hpp" +#include "../src/pairs/runtime/pairs.hpp" +#include "../src/pairs/runtime/read_from_file.hpp" +#include "../src/pairs/runtime/vtk.hpp" using namespace pairs; @@ -27,7 +27,6 @@ int main() { int neighborlist_capacity = 32; int npbc = 0; int pbc_capacity = 100; - int resize = 0; double grid_buffer[6]; int dim_cells[3]; int *cell_particles = (int *) malloc((sizeof(int) * (ncells_capacity * cell_capacity))); @@ -60,429 +59,429 @@ int main() { grid0_d2_min = a4; const double a5 = grid_buffer[5]; grid0_d2_max = a5; - const double e462 = grid0_d0_max - grid0_d0_min; - const double e463 = e462 / 2.8; - const int e464 = ceil(e463) + 2; - dim_cells[0] = e464; - const double e466 = grid0_d1_max - grid0_d1_min; - const double e467 = e466 / 2.8; - const int e468 = ceil(e467) + 2; - dim_cells[1] = e468; - const int a54 = dim_cells[0]; - const int a56 = dim_cells[1]; - const int e469 = a54 * a56; - const double e470 = grid0_d2_max - grid0_d2_min; - const double e471 = e470 / 2.8; - const int e472 = ceil(e471) + 2; - dim_cells[2] = e472; - const int a58 = dim_cells[2]; - const int e473 = e469 * a58; - ncells = e473; - resize = 1; + const double e94 = grid0_d0_max - grid0_d0_min; + const double e95 = e94 / 2.8; + const int e96 = ceil(e95) + 2; + dim_cells[0] = e96; + const double e98 = grid0_d1_max - grid0_d1_min; + const double e99 = e98 / 2.8; + const int e100 = ceil(e99) + 2; + dim_cells[1] = e100; + const int a7 = dim_cells[0]; + const int a9 = dim_cells[1]; + const int e101 = a7 * a9; + const double e102 = grid0_d2_max - grid0_d2_min; + const double e103 = e102 / 2.8; + const int e104 = ceil(e103) + 2; + dim_cells[2] = e104; + const int a11 = dim_cells[2]; + const int e105 = e101 * a11; + ncells = e105; + int resize = 1; while((resize > 0)) { resize = 0; - const bool e475 = ncells >= ncells_capacity; - if(e475) { + const bool e107 = ncells >= ncells_capacity; + if(e107) { resize = ncells; } - const bool e476 = resize > 0; - if(e476) { + const bool e108 = resize > 0; + if(e108) { fprintf(stdout, "Resize ncells_capacity\n"); fflush(stdout); - const int e477 = resize * 2; - ncells_capacity = e477; + const int e109 = resize * 2; + ncells_capacity = e109; cell_particles = (int *) realloc(cell_particles, (sizeof(int) * (ncells_capacity * cell_capacity))); cell_sizes = (int *) realloc(cell_sizes, (sizeof(int) * ncells_capacity)); } } nstencil = 0; - for(int i15 = -1; i15 < 2; i15++) { - const int a59 = dim_cells[0]; - const int e481 = i15 * a59; - for(int i16 = -1; i16 < 2; i16++) { - const int e482 = e481 + i16; - const int a60 = dim_cells[1]; - const int e483 = e482 * a60; - for(int i17 = -1; i17 < 2; i17++) { - const int e484 = e483 + i17; - stencil[nstencil] = e484; - const int e485 = nstencil + 1; - nstencil = e485; + for(int i2 = -1; i2 < 2; i2++) { + const int a12 = dim_cells[0]; + const int e113 = i2 * a12; + for(int i3 = -1; i3 < 2; i3++) { + const int e114 = e113 + i3; + const int a13 = dim_cells[1]; + const int e115 = e114 * a13; + for(int i4 = -1; i4 < 2; i4++) { + const int e116 = e115 + i4; + stencil[nstencil] = e116; + const int e117 = nstencil + 1; + nstencil = e117; } } } - const int e486 = nlocal + npbc; + const int e118 = nlocal + npbc; pairs::vtk_write_data(ps, "output/test_local", 0, nlocal, 0); - pairs::vtk_write_data(ps, "output/test_pbc", nlocal, e486, 0); - for(int i14 = 0; i14 < 101; i14++) { - const int e452 = i14 % 20; - const bool e453 = e452 == 0; - if(e453) { - pairs::copy_to_device(position) - const double e115 = grid0_d0_max - grid0_d0_min; - const double e122 = grid0_d0_max - grid0_d0_min; - const double e129 = grid0_d1_max - grid0_d1_min; - const double e136 = grid0_d1_max - grid0_d1_min; - const double e143 = grid0_d2_max - grid0_d2_min; - const double e150 = grid0_d2_max - grid0_d2_min; - for(int i3 = 0; i3 < nlocal; i3++) { - const int e110 = i3 * 3; - const double p8_0 = position[e110]; - const bool e112 = p8_0 < grid0_d0_min; - if(e112) { - const int e113 = i3 * 3; - const double p9_0 = position[e113]; - const double e116 = p9_0 + e115; - position[e113] = e116; + pairs::vtk_write_data(ps, "output/test_pbc", nlocal, e118, 0); + for(int i1 = 0; i1 < 101; i1++) { + const int e65 = i1 % 20; + const bool e66 = e65 == 0; + if(e66) { + //pairs::copy_to_device(position) + const double e124 = grid0_d0_max - grid0_d0_min; + const double e131 = grid0_d0_max - grid0_d0_min; + const double e138 = grid0_d1_max - grid0_d1_min; + const double e145 = grid0_d1_max - grid0_d1_min; + const double e152 = grid0_d2_max - grid0_d2_min; + const double e159 = grid0_d2_max - grid0_d2_min; + for(int i5 = 0; i5 < nlocal; i5++) { + const int e119 = i5 * 3; + const double p6_0 = position[e119]; + const bool e121 = p6_0 < grid0_d0_min; + if(e121) { + const int e122 = i5 * 3; + const double p7_0 = position[e122]; + const double e125 = p7_0 + e124; + position[e122] = e125; } - const int e117 = i3 * 3; - const double p10_0 = position[e117]; - const bool e119 = p10_0 > grid0_d0_max; - if(e119) { - const int e120 = i3 * 3; - const double p11_0 = position[e120]; - const double e123 = p11_0 - e122; - position[e120] = e123; + const int e126 = i5 * 3; + const double p8_0 = position[e126]; + const bool e128 = p8_0 > grid0_d0_max; + if(e128) { + const int e129 = i5 * 3; + const double p9_0 = position[e129]; + const double e132 = p9_0 - e131; + position[e129] = e132; } - const int e124 = i3 * 3; - const int e125 = e124 + 1; - const double p12_1 = position[e125]; - const bool e126 = p12_1 < grid0_d1_min; - if(e126) { - const int e127 = i3 * 3; - const int e128 = e127 + 1; - const double p13_1 = position[e128]; - const double e130 = p13_1 + e129; - position[e128] = e130; + const int e133 = i5 * 3; + const int e134 = e133 + 1; + const double p10_1 = position[e134]; + const bool e135 = p10_1 < grid0_d1_min; + if(e135) { + const int e136 = i5 * 3; + const int e137 = e136 + 1; + const double p11_1 = position[e137]; + const double e139 = p11_1 + e138; + position[e137] = e139; } - const int e131 = i3 * 3; - const int e132 = e131 + 1; - const double p14_1 = position[e132]; - const bool e133 = p14_1 > grid0_d1_max; - if(e133) { - const int e134 = i3 * 3; - const int e135 = e134 + 1; - const double p15_1 = position[e135]; - const double e137 = p15_1 - e136; - position[e135] = e137; + const int e140 = i5 * 3; + const int e141 = e140 + 1; + const double p12_1 = position[e141]; + const bool e142 = p12_1 > grid0_d1_max; + if(e142) { + const int e143 = i5 * 3; + const int e144 = e143 + 1; + const double p13_1 = position[e144]; + const double e146 = p13_1 - e145; + position[e144] = e146; } - const int e138 = i3 * 3; - const int e139 = e138 + 2; - const double p16_2 = position[e139]; - const bool e140 = p16_2 < grid0_d2_min; - if(e140) { - const int e141 = i3 * 3; - const int e142 = e141 + 2; - const double p17_2 = position[e142]; - const double e144 = p17_2 + e143; - position[e142] = e144; + const int e147 = i5 * 3; + const int e148 = e147 + 2; + const double p14_2 = position[e148]; + const bool e149 = p14_2 < grid0_d2_min; + if(e149) { + const int e150 = i5 * 3; + const int e151 = e150 + 2; + const double p15_2 = position[e151]; + const double e153 = p15_2 + e152; + position[e151] = e153; } - const int e145 = i3 * 3; - const int e146 = e145 + 2; - const double p18_2 = position[e146]; - const bool e147 = p18_2 > grid0_d2_max; - if(e147) { - const int e148 = i3 * 3; - const int e149 = e148 + 2; - const double p19_2 = position[e149]; - const double e151 = p19_2 - e150; - position[e149] = e151; + const int e154 = i5 * 3; + const int e155 = e154 + 2; + const double p16_2 = position[e155]; + const bool e156 = p16_2 > grid0_d2_max; + if(e156) { + const int e157 = i5 * 3; + const int e158 = e157 + 2; + const double p17_2 = position[e158]; + const double e160 = p17_2 - e159; + position[e158] = e160; } } } - const int e454 = i14 % 20; - const bool e455 = e454 == 0; - if(e455) { + const int e67 = i1 % 20; + const bool e68 = e67 == 0; + if(e68) { resize = 1; while((resize > 0)) { resize = 0; npbc = 0; - const int e153 = nlocal + npbc; - const double e157 = grid0_d0_min + 2.8; - const double e168 = grid0_d0_max - grid0_d0_min; - const double e185 = grid0_d0_max - 2.8; - const double e196 = grid0_d0_max - grid0_d0_min; - for(int i4 = 0; i4 < e153; i4++) { - const int e154 = nlocal + npbc; - const int e155 = i4 * 3; - const double p20_0 = position[e155]; - const bool e158 = p20_0 < e157; - if(e158) { - const bool e159 = npbc >= pbc_capacity; - if(e159) { - const bool e160 = resize > npbc; - resize = (e160) ? ((resize + 1)) : (npbc); + const int e162 = nlocal + npbc; + const double e166 = grid0_d0_min + 2.8; + const double e177 = grid0_d0_max - grid0_d0_min; + const double e194 = grid0_d0_max - 2.8; + const double e205 = grid0_d0_max - grid0_d0_min; + for(int i6 = 0; i6 < e162; i6++) { + const int e163 = nlocal + npbc; + const int e164 = i6 * 3; + const double p18_0 = position[e164]; + const bool e167 = p18_0 < e166; + if(e167) { + const bool e168 = npbc >= pbc_capacity; + if(e168) { + const bool e169 = resize > npbc; + resize = (e169) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i4; - const int e162 = npbc * 3; - pbc_mult[e162] = 1; - const int e164 = e154 * 3; - const double p21_0 = position[e164]; - const int e166 = i4 * 3; - const double p22_0 = position[e166]; - const double e169 = p22_0 + e168; - position[e164] = e169; - const int e170 = npbc * 3; - const int e171 = e170 + 1; - pbc_mult[e171] = 0; - const int e172 = e154 * 3; - const int e173 = e172 + 1; - const double p23_1 = position[e173]; - const int e174 = i4 * 3; - const int e175 = e174 + 1; - const double p24_1 = position[e175]; - position[e173] = p24_1; - const int e176 = npbc * 3; - const int e177 = e176 + 2; - pbc_mult[e177] = 0; - const int e178 = e154 * 3; - const int e179 = e178 + 2; - const double p25_2 = position[e179]; - const int e180 = i4 * 3; - const int e181 = e180 + 2; - const double p26_2 = position[e181]; - position[e179] = p26_2; - const int e182 = npbc + 1; - npbc = e182; + pbc_map[npbc] = i6; + const int e171 = npbc * 3; + pbc_mult[e171] = 1; + const int e173 = e163 * 3; + const double p19_0 = position[e173]; + const int e175 = i6 * 3; + const double p20_0 = position[e175]; + const double e178 = p20_0 + e177; + position[e173] = e178; + const int e179 = npbc * 3; + const int e180 = e179 + 1; + pbc_mult[e180] = 0; + const int e181 = e163 * 3; + const int e182 = e181 + 1; + const double p21_1 = position[e182]; + const int e183 = i6 * 3; + const int e184 = e183 + 1; + const double p22_1 = position[e184]; + position[e182] = p22_1; + const int e185 = npbc * 3; + const int e186 = e185 + 2; + pbc_mult[e186] = 0; + const int e187 = e163 * 3; + const int e188 = e187 + 2; + const double p23_2 = position[e188]; + const int e189 = i6 * 3; + const int e190 = e189 + 2; + const double p24_2 = position[e190]; + position[e188] = p24_2; + const int e191 = npbc + 1; + npbc = e191; } } - const int e183 = i4 * 3; - const double p27_0 = position[e183]; - const bool e186 = p27_0 > e185; - if(e186) { - const bool e187 = npbc >= pbc_capacity; - if(e187) { - const bool e188 = resize > npbc; - resize = (e188) ? ((resize + 1)) : (npbc); + const int e192 = i6 * 3; + const double p25_0 = position[e192]; + const bool e195 = p25_0 > e194; + if(e195) { + const bool e196 = npbc >= pbc_capacity; + if(e196) { + const bool e197 = resize > npbc; + resize = (e197) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i4; - const int e190 = npbc * 3; - pbc_mult[e190] = -1; - const int e192 = e154 * 3; - const double p28_0 = position[e192]; - const int e194 = i4 * 3; - const double p29_0 = position[e194]; - const double e197 = p29_0 - e196; - position[e192] = e197; - const int e198 = npbc * 3; - const int e199 = e198 + 1; - pbc_mult[e199] = 0; - const int e200 = e154 * 3; - const int e201 = e200 + 1; - const double p30_1 = position[e201]; - const int e202 = i4 * 3; - const int e203 = e202 + 1; - const double p31_1 = position[e203]; - position[e201] = p31_1; - const int e204 = npbc * 3; - const int e205 = e204 + 2; - pbc_mult[e205] = 0; - const int e206 = e154 * 3; - const int e207 = e206 + 2; - const double p32_2 = position[e207]; - const int e208 = i4 * 3; - const int e209 = e208 + 2; - const double p33_2 = position[e209]; - position[e207] = p33_2; - const int e210 = npbc + 1; - npbc = e210; + pbc_map[npbc] = i6; + const int e199 = npbc * 3; + pbc_mult[e199] = -1; + const int e201 = e163 * 3; + const double p26_0 = position[e201]; + const int e203 = i6 * 3; + const double p27_0 = position[e203]; + const double e206 = p27_0 - e205; + position[e201] = e206; + const int e207 = npbc * 3; + const int e208 = e207 + 1; + pbc_mult[e208] = 0; + const int e209 = e163 * 3; + const int e210 = e209 + 1; + const double p28_1 = position[e210]; + const int e211 = i6 * 3; + const int e212 = e211 + 1; + const double p29_1 = position[e212]; + position[e210] = p29_1; + const int e213 = npbc * 3; + const int e214 = e213 + 2; + pbc_mult[e214] = 0; + const int e215 = e163 * 3; + const int e216 = e215 + 2; + const double p30_2 = position[e216]; + const int e217 = i6 * 3; + const int e218 = e217 + 2; + const double p31_2 = position[e218]; + position[e216] = p31_2; + const int e219 = npbc + 1; + npbc = e219; } } } - const int e211 = nlocal + npbc; - const double e215 = grid0_d1_min + 2.8; - const double e226 = grid0_d1_max - grid0_d1_min; - const double e243 = grid0_d1_max - 2.8; - const double e254 = grid0_d1_max - grid0_d1_min; - for(int i5 = 0; i5 < e211; i5++) { - const int e212 = nlocal + npbc; - const int e213 = i5 * 3; - const int e214 = e213 + 1; - const double p34_1 = position[e214]; - const bool e216 = p34_1 < e215; - if(e216) { - const bool e217 = npbc >= pbc_capacity; - if(e217) { - const bool e218 = resize > npbc; - resize = (e218) ? ((resize + 1)) : (npbc); + const int e220 = nlocal + npbc; + const double e224 = grid0_d1_min + 2.8; + const double e235 = grid0_d1_max - grid0_d1_min; + const double e252 = grid0_d1_max - 2.8; + const double e263 = grid0_d1_max - grid0_d1_min; + for(int i7 = 0; i7 < e220; i7++) { + const int e221 = nlocal + npbc; + const int e222 = i7 * 3; + const int e223 = e222 + 1; + const double p32_1 = position[e223]; + const bool e225 = p32_1 < e224; + if(e225) { + const bool e226 = npbc >= pbc_capacity; + if(e226) { + const bool e227 = resize > npbc; + resize = (e227) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i5; - const int e220 = npbc * 3; - const int e221 = e220 + 1; - pbc_mult[e221] = 1; - const int e222 = e212 * 3; - const int e223 = e222 + 1; - const double p35_1 = position[e223]; - const int e224 = i5 * 3; - const int e225 = e224 + 1; - const double p36_1 = position[e225]; - const double e227 = p36_1 + e226; - position[e223] = e227; - const int e228 = npbc * 3; - pbc_mult[e228] = 0; - const int e230 = e212 * 3; - const double p37_0 = position[e230]; - const int e232 = i5 * 3; - const double p38_0 = position[e232]; - position[e230] = p38_0; - const int e234 = npbc * 3; - const int e235 = e234 + 2; - pbc_mult[e235] = 0; - const int e236 = e212 * 3; - const int e237 = e236 + 2; - const double p39_2 = position[e237]; - const int e238 = i5 * 3; - const int e239 = e238 + 2; - const double p40_2 = position[e239]; - position[e237] = p40_2; - const int e240 = npbc + 1; - npbc = e240; + pbc_map[npbc] = i7; + const int e229 = npbc * 3; + const int e230 = e229 + 1; + pbc_mult[e230] = 1; + const int e231 = e221 * 3; + const int e232 = e231 + 1; + const double p33_1 = position[e232]; + const int e233 = i7 * 3; + const int e234 = e233 + 1; + const double p34_1 = position[e234]; + const double e236 = p34_1 + e235; + position[e232] = e236; + const int e237 = npbc * 3; + pbc_mult[e237] = 0; + const int e239 = e221 * 3; + const double p35_0 = position[e239]; + const int e241 = i7 * 3; + const double p36_0 = position[e241]; + position[e239] = p36_0; + const int e243 = npbc * 3; + const int e244 = e243 + 2; + pbc_mult[e244] = 0; + const int e245 = e221 * 3; + const int e246 = e245 + 2; + const double p37_2 = position[e246]; + const int e247 = i7 * 3; + const int e248 = e247 + 2; + const double p38_2 = position[e248]; + position[e246] = p38_2; + const int e249 = npbc + 1; + npbc = e249; } } - const int e241 = i5 * 3; - const int e242 = e241 + 1; - const double p41_1 = position[e242]; - const bool e244 = p41_1 > e243; - if(e244) { - const bool e245 = npbc >= pbc_capacity; - if(e245) { - const bool e246 = resize > npbc; - resize = (e246) ? ((resize + 1)) : (npbc); + const int e250 = i7 * 3; + const int e251 = e250 + 1; + const double p39_1 = position[e251]; + const bool e253 = p39_1 > e252; + if(e253) { + const bool e254 = npbc >= pbc_capacity; + if(e254) { + const bool e255 = resize > npbc; + resize = (e255) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i5; - const int e248 = npbc * 3; - const int e249 = e248 + 1; - pbc_mult[e249] = -1; - const int e250 = e212 * 3; - const int e251 = e250 + 1; - const double p42_1 = position[e251]; - const int e252 = i5 * 3; - const int e253 = e252 + 1; - const double p43_1 = position[e253]; - const double e255 = p43_1 - e254; - position[e251] = e255; - const int e256 = npbc * 3; - pbc_mult[e256] = 0; - const int e258 = e212 * 3; - const double p44_0 = position[e258]; - const int e260 = i5 * 3; - const double p45_0 = position[e260]; - position[e258] = p45_0; - const int e262 = npbc * 3; - const int e263 = e262 + 2; - pbc_mult[e263] = 0; - const int e264 = e212 * 3; - const int e265 = e264 + 2; - const double p46_2 = position[e265]; - const int e266 = i5 * 3; - const int e267 = e266 + 2; - const double p47_2 = position[e267]; - position[e265] = p47_2; - const int e268 = npbc + 1; - npbc = e268; + pbc_map[npbc] = i7; + const int e257 = npbc * 3; + const int e258 = e257 + 1; + pbc_mult[e258] = -1; + const int e259 = e221 * 3; + const int e260 = e259 + 1; + const double p40_1 = position[e260]; + const int e261 = i7 * 3; + const int e262 = e261 + 1; + const double p41_1 = position[e262]; + const double e264 = p41_1 - e263; + position[e260] = e264; + const int e265 = npbc * 3; + pbc_mult[e265] = 0; + const int e267 = e221 * 3; + const double p42_0 = position[e267]; + const int e269 = i7 * 3; + const double p43_0 = position[e269]; + position[e267] = p43_0; + const int e271 = npbc * 3; + const int e272 = e271 + 2; + pbc_mult[e272] = 0; + const int e273 = e221 * 3; + const int e274 = e273 + 2; + const double p44_2 = position[e274]; + const int e275 = i7 * 3; + const int e276 = e275 + 2; + const double p45_2 = position[e276]; + position[e274] = p45_2; + const int e277 = npbc + 1; + npbc = e277; } } } - const int e269 = nlocal + npbc; - const double e273 = grid0_d2_min + 2.8; - const double e284 = grid0_d2_max - grid0_d2_min; - const double e301 = grid0_d2_max - 2.8; - const double e312 = grid0_d2_max - grid0_d2_min; - for(int i6 = 0; i6 < e269; i6++) { - const int e270 = nlocal + npbc; - const int e271 = i6 * 3; - const int e272 = e271 + 2; - const double p48_2 = position[e272]; - const bool e274 = p48_2 < e273; - if(e274) { - const bool e275 = npbc >= pbc_capacity; - if(e275) { - const bool e276 = resize > npbc; - resize = (e276) ? ((resize + 1)) : (npbc); + const int e278 = nlocal + npbc; + const double e282 = grid0_d2_min + 2.8; + const double e293 = grid0_d2_max - grid0_d2_min; + const double e310 = grid0_d2_max - 2.8; + const double e321 = grid0_d2_max - grid0_d2_min; + for(int i8 = 0; i8 < e278; i8++) { + const int e279 = nlocal + npbc; + const int e280 = i8 * 3; + const int e281 = e280 + 2; + const double p46_2 = position[e281]; + const bool e283 = p46_2 < e282; + if(e283) { + const bool e284 = npbc >= pbc_capacity; + if(e284) { + const bool e285 = resize > npbc; + resize = (e285) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i6; - const int e278 = npbc * 3; - const int e279 = e278 + 2; - pbc_mult[e279] = 1; - const int e280 = e270 * 3; - const int e281 = e280 + 2; - const double p49_2 = position[e281]; - const int e282 = i6 * 3; - const int e283 = e282 + 2; - const double p50_2 = position[e283]; - const double e285 = p50_2 + e284; - position[e281] = e285; - const int e286 = npbc * 3; - pbc_mult[e286] = 0; - const int e288 = e270 * 3; - const double p51_0 = position[e288]; - const int e290 = i6 * 3; - const double p52_0 = position[e290]; - position[e288] = p52_0; - const int e292 = npbc * 3; - const int e293 = e292 + 1; - pbc_mult[e293] = 0; - const int e294 = e270 * 3; - const int e295 = e294 + 1; - const double p53_1 = position[e295]; - const int e296 = i6 * 3; - const int e297 = e296 + 1; - const double p54_1 = position[e297]; - position[e295] = p54_1; - const int e298 = npbc + 1; - npbc = e298; + pbc_map[npbc] = i8; + const int e287 = npbc * 3; + const int e288 = e287 + 2; + pbc_mult[e288] = 1; + const int e289 = e279 * 3; + const int e290 = e289 + 2; + const double p47_2 = position[e290]; + const int e291 = i8 * 3; + const int e292 = e291 + 2; + const double p48_2 = position[e292]; + const double e294 = p48_2 + e293; + position[e290] = e294; + const int e295 = npbc * 3; + pbc_mult[e295] = 0; + const int e297 = e279 * 3; + const double p49_0 = position[e297]; + const int e299 = i8 * 3; + const double p50_0 = position[e299]; + position[e297] = p50_0; + const int e301 = npbc * 3; + const int e302 = e301 + 1; + pbc_mult[e302] = 0; + const int e303 = e279 * 3; + const int e304 = e303 + 1; + const double p51_1 = position[e304]; + const int e305 = i8 * 3; + const int e306 = e305 + 1; + const double p52_1 = position[e306]; + position[e304] = p52_1; + const int e307 = npbc + 1; + npbc = e307; } } - const int e299 = i6 * 3; - const int e300 = e299 + 2; - const double p55_2 = position[e300]; - const bool e302 = p55_2 > e301; - if(e302) { - const bool e303 = npbc >= pbc_capacity; - if(e303) { - const bool e304 = resize > npbc; - resize = (e304) ? ((resize + 1)) : (npbc); + const int e308 = i8 * 3; + const int e309 = e308 + 2; + const double p53_2 = position[e309]; + const bool e311 = p53_2 > e310; + if(e311) { + const bool e312 = npbc >= pbc_capacity; + if(e312) { + const bool e313 = resize > npbc; + resize = (e313) ? ((resize + 1)) : (npbc); } else { - pbc_map[npbc] = i6; - const int e306 = npbc * 3; - const int e307 = e306 + 2; - pbc_mult[e307] = -1; - const int e308 = e270 * 3; - const int e309 = e308 + 2; - const double p56_2 = position[e309]; - const int e310 = i6 * 3; - const int e311 = e310 + 2; - const double p57_2 = position[e311]; - const double e313 = p57_2 - e312; - position[e309] = e313; - const int e314 = npbc * 3; - pbc_mult[e314] = 0; - const int e316 = e270 * 3; - const double p58_0 = position[e316]; - const int e318 = i6 * 3; - const double p59_0 = position[e318]; - position[e316] = p59_0; - const int e320 = npbc * 3; - const int e321 = e320 + 1; - pbc_mult[e321] = 0; - const int e322 = e270 * 3; - const int e323 = e322 + 1; - const double p60_1 = position[e323]; - const int e324 = i6 * 3; - const int e325 = e324 + 1; - const double p61_1 = position[e325]; - position[e323] = p61_1; - const int e326 = npbc + 1; - npbc = e326; + pbc_map[npbc] = i8; + const int e315 = npbc * 3; + const int e316 = e315 + 2; + pbc_mult[e316] = -1; + const int e317 = e279 * 3; + const int e318 = e317 + 2; + const double p54_2 = position[e318]; + const int e319 = i8 * 3; + const int e320 = e319 + 2; + const double p55_2 = position[e320]; + const double e322 = p55_2 - e321; + position[e318] = e322; + const int e323 = npbc * 3; + pbc_mult[e323] = 0; + const int e325 = e279 * 3; + const double p56_0 = position[e325]; + const int e327 = i8 * 3; + const double p57_0 = position[e327]; + position[e325] = p57_0; + const int e329 = npbc * 3; + const int e330 = e329 + 1; + pbc_mult[e330] = 0; + const int e331 = e279 * 3; + const int e332 = e331 + 1; + const double p58_1 = position[e332]; + const int e333 = i8 * 3; + const int e334 = e333 + 1; + const double p59_1 = position[e334]; + position[e332] = p59_1; + const int e335 = npbc + 1; + npbc = e335; } } } - const bool e327 = resize > 0; - if(e327) { + const bool e336 = resize > 0; + if(e336) { fprintf(stdout, "Resize pbc_capacity\n"); fflush(stdout); - const int e328 = resize * 2; - pbc_capacity = e328; + const int e337 = resize * 2; + pbc_capacity = e337; pbc_map = (int *) realloc(pbc_map, (sizeof(int) * pbc_capacity)); pbc_mult = (int *) realloc(pbc_mult, (sizeof(int) * (pbc_capacity * 3))); mass = (double *) realloc(mass, (sizeof(double) * (particle_capacity + pbc_capacity))); @@ -496,169 +495,171 @@ int main() { } } } else { - const double e348 = grid0_d0_max - grid0_d0_min; - const double e358 = grid0_d1_max - grid0_d1_min; - const double e368 = grid0_d2_max - grid0_d2_min; - for(int i7 = 0; i7 < npbc; i7++) { - const int e341 = nlocal + i7; - const int e342 = e341 * 3; - const double p62_0 = position[e342]; - const int a32 = pbc_map[i7]; - const int e344 = a32 * 3; - const double p63_0 = position[e344]; - const int e346 = i7 * 3; - const int a33 = pbc_mult[e346]; - const double e349 = a33 * e348; - const double e350 = p63_0 + e349; - position[e342] = e350; - const int e351 = nlocal + i7; - const int e352 = e351 * 3; - const int e353 = e352 + 1; - const double p64_1 = position[e353]; - const int a34 = pbc_map[i7]; - const int e354 = a34 * 3; - const int e355 = e354 + 1; - const double p65_1 = position[e355]; - const int e356 = i7 * 3; - const int e357 = e356 + 1; - const int a35 = pbc_mult[e357]; - const double e359 = a35 * e358; - const double e360 = p65_1 + e359; - position[e353] = e360; - const int e361 = nlocal + i7; - const int e362 = e361 * 3; - const int e363 = e362 + 2; - const double p66_2 = position[e363]; - const int a36 = pbc_map[i7]; - const int e364 = a36 * 3; - const int e365 = e364 + 2; - const double p67_2 = position[e365]; - const int e366 = i7 * 3; - const int e367 = e366 + 2; - const int a37 = pbc_mult[e367]; - const double e369 = a37 * e368; - const double e370 = p67_2 + e369; - position[e363] = e370; + const double e357 = grid0_d0_max - grid0_d0_min; + const double e367 = grid0_d1_max - grid0_d1_min; + const double e377 = grid0_d2_max - grid0_d2_min; + for(int i9 = 0; i9 < npbc; i9++) { + const int e350 = nlocal + i9; + const int e351 = e350 * 3; + const double p60_0 = position[e351]; + const int a39 = pbc_map[i9]; + const int e353 = a39 * 3; + const double p61_0 = position[e353]; + const int e355 = i9 * 3; + const int a40 = pbc_mult[e355]; + const double e358 = a40 * e357; + const double e359 = p61_0 + e358; + position[e351] = e359; + const int e360 = nlocal + i9; + const int e361 = e360 * 3; + const int e362 = e361 + 1; + const double p62_1 = position[e362]; + const int a41 = pbc_map[i9]; + const int e363 = a41 * 3; + const int e364 = e363 + 1; + const double p63_1 = position[e364]; + const int e365 = i9 * 3; + const int e366 = e365 + 1; + const int a42 = pbc_mult[e366]; + const double e368 = a42 * e367; + const double e369 = p63_1 + e368; + position[e362] = e369; + const int e370 = nlocal + i9; + const int e371 = e370 * 3; + const int e372 = e371 + 2; + const double p64_2 = position[e372]; + const int a43 = pbc_map[i9]; + const int e373 = a43 * 3; + const int e374 = e373 + 2; + const double p65_2 = position[e374]; + const int e375 = i9 * 3; + const int e376 = e375 + 2; + const int a44 = pbc_mult[e376]; + const double e378 = a44 * e377; + const double e379 = p65_2 + e378; + position[e372] = e379; } } - const int e456 = i14 % 20; - const bool e457 = e456 == 0; - if(e457) { + const int e69 = i1 % 20; + const bool e70 = e69 == 0; + if(e70) { resize = 1; while((resize > 0)) { resize = 0; - for(int i8 = 0; i8 < ncells; i8++) { - cell_sizes[i8] = 0; + for(int i10 = 0; i10 < ncells; i10++) { + cell_sizes[i10] = 0; } - const int e511 = nlocal + npbc; - for(int i9 = 0; i9 < e511; i9++) { - const int e372 = i9 * 3; - const double p68_0 = position[e372]; - const double e374 = p68_0 - grid0_d0_min; - const double e375 = e374 / 2.8; - const int e376 = i9 * 3; - const int e377 = e376 + 1; - const double p69_1 = position[e377]; - const double e378 = p69_1 - grid0_d1_min; - const double e379 = e378 / 2.8; - const int e380 = i9 * 3; - const int e381 = e380 + 2; - const double p70_2 = position[e381]; - const double e382 = p70_2 - grid0_d2_min; - const double e383 = e382 / 2.8; - const int a39 = dim_cells[1]; - const int e384 = (int)(e375) * a39; - const int e385 = e384 + (int)(e379); - const int a40 = dim_cells[2]; - const int e386 = e385 * a40; - const int e387 = e386 + (int)(e383); - const bool e388 = e387 >= 0; - const bool e389 = e387 <= ncells; - const bool e390 = e388 && e389; - if(e390) { - const int a41 = cell_sizes[e387]; - const bool e391 = a41 >= cell_capacity; - if(e391) { - resize = a41; + const int e499 = nlocal + npbc; + for(int i11 = 0; i11 < e499; i11++) { + const int e381 = i11 * 3; + const double p66_0 = position[e381]; + const double e383 = p66_0 - grid0_d0_min; + const double e384 = e383 / 2.8; + const int e385 = i11 * 3; + const int e386 = e385 + 1; + const double p67_1 = position[e386]; + const double e387 = p67_1 - grid0_d1_min; + const double e388 = e387 / 2.8; + const int e389 = i11 * 3; + const int e390 = e389 + 2; + const double p68_2 = position[e390]; + const double e391 = p68_2 - grid0_d2_min; + const double e392 = e391 / 2.8; + const int a46 = dim_cells[1]; + const int e393 = (int)(e384) * a46; + const int e394 = e393 + (int)(e388); + const int a47 = dim_cells[2]; + const int e395 = e394 * a47; + const int e396 = e395 + (int)(e392); + const bool e397 = e396 >= 0; + const bool e398 = e396 <= ncells; + const bool e399 = e397 && e398; + if(e399) { + const int a48 = cell_sizes[e396]; + const bool e400 = a48 >= cell_capacity; + if(e400) { + resize = a48; } else { - const int e392 = e387 * cell_capacity; - const int e393 = e392 + a41; - cell_particles[e393] = i9; - particle_cell[i9] = e387; + const int e401 = e396 * cell_capacity; + const int e402 = e401 + a48; + cell_particles[e402] = i11; + particle_cell[i11] = e396; } - const int e394 = a41 + 1; - cell_sizes[e387] = e394; + const int e403 = a48 + 1; + cell_sizes[e396] = e403; } } - const bool e395 = resize > 0; - if(e395) { + const bool e404 = resize > 0; + if(e404) { fprintf(stdout, "Resize cell_capacity\n"); fflush(stdout); - const int e396 = resize * 2; - cell_capacity = e396; + const int e405 = resize * 2; + cell_capacity = e405; cell_particles = (int *) realloc(cell_particles, (sizeof(int) * (ncells_capacity * cell_capacity))); } } } - const int e458 = i14 % 20; - const bool e459 = e458 == 0; - if(e459) { + const int e71 = i1 % 20; + const bool e72 = e71 == 0; + if(e72) { resize = 1; while((resize > 0)) { resize = 0; - for(int i10 = 0; i10 < nlocal; i10++) { - numneighs[i10] = 0; - for(int i11 = 0; i11 < nstencil; i11++) { - const int a46 = particle_cell[i10]; - const int a47 = stencil[i11]; - const int e400 = a46 + a47; - const bool e401 = e400 >= 0; - const bool e402 = e400 <= ncells; - const bool e403 = e401 && e402; - if(e403) { - const int e404 = e400 * cell_capacity; - const int e412 = i10 * 3; - const double p71_0 = position[e412]; - const int e421 = i10 * 3; - const int e422 = e421 + 1; - const double p71_1 = position[e422]; - const int e431 = i10 * 3; - const int e432 = e431 + 2; - const double p71_2 = position[e432]; - const int e439 = i10 * neighborlist_capacity; - const int a48 = cell_sizes[e400]; - for(int i12 = 0; i12 < a48; i12++) { - const int e405 = e404 + i12; - const int a49 = cell_particles[e405]; - const bool e406 = a49 != i10; - if(e406) { - const int e414 = a49 * 3; - const double p72_0 = position[e414]; - const int e423 = a49 * 3; - const int e424 = e423 + 1; - const double p72_1 = position[e424]; - const int e433 = a49 * 3; - const int e434 = e433 + 2; - const double p72_2 = position[e434]; - const double e407_0 = p71_0 - p72_0; - const double e407_1 = p71_1 - p72_1; - const double e407_2 = p71_2 - p72_2; - const double e416 = e407_0 * e407_0; - const double e425 = e407_1 * e407_1; - const double e426 = e416 + e425; - const double e435 = e407_2 * e407_2; - const double e436 = e426 + e435; - const bool e437 = e436 < 2.8; - if(e437) { - const int a50 = numneighs[i10]; - const bool e438 = a50 >= neighborlist_capacity; - if(e438) { - resize = a50; + for(int i12 = 0; i12 < nlocal; i12++) { + numneighs[i12] = 0; + } + for(int i16 = 0; i16 < nlocal; i16++) { + for(int i17 = 0; i17 < nstencil; i17++) { + const int a58 = particle_cell[i16]; + const int a59 = stencil[i17]; + const int e457 = a58 + a59; + const bool e458 = e457 >= 0; + const bool e459 = e457 <= ncells; + const bool e460 = e458 && e459; + if(e460) { + const int e461 = e457 * cell_capacity; + const int e469 = i16 * 3; + const double p72_0 = position[e469]; + const int e478 = i16 * 3; + const int e479 = e478 + 1; + const double p72_1 = position[e479]; + const int e488 = i16 * 3; + const int e489 = e488 + 2; + const double p72_2 = position[e489]; + const int e410 = i16 * neighborlist_capacity; + const int a60 = cell_sizes[e457]; + for(int i18 = 0; i18 < a60; i18++) { + const int e462 = e461 + i18; + const int a61 = cell_particles[e462]; + const bool e463 = a61 != i16; + if(e463) { + const int e471 = a61 * 3; + const double p73_0 = position[e471]; + const int e480 = a61 * 3; + const int e481 = e480 + 1; + const double p73_1 = position[e481]; + const int e490 = a61 * 3; + const int e491 = e490 + 2; + const double p73_2 = position[e491]; + const double e464_0 = p72_0 - p73_0; + const double e464_1 = p72_1 - p73_1; + const double e464_2 = p72_2 - p73_2; + const double e473 = e464_0 * e464_0; + const double e482 = e464_1 * e464_1; + const double e483 = e473 + e482; + const double e492 = e464_2 * e464_2; + const double e493 = e483 + e492; + const bool e494 = e493 < 2.8; + if(e494) { + const int a53 = numneighs[i16]; + const bool e409 = a53 >= neighborlist_capacity; + if(e409) { + resize = a53; } else { - const int e440 = e439 + a50; - neighborlists[e440] = a49; - const int e441 = a50 + 1; - numneighs[i10] = e441; + const int e411 = e410 + a53; + neighborlists[e411] = a61; + const int e412 = a53 + 1; + numneighs[i16] = e412; } } } @@ -666,150 +667,150 @@ int main() { } } } - const bool e442 = resize > 0; - if(e442) { + const bool e413 = resize > 0; + if(e413) { fprintf(stdout, "Resize neighborlist_capacity\n"); fflush(stdout); - const int e443 = resize * 2; - neighborlist_capacity = e443; + const int e414 = resize * 2; + neighborlist_capacity = e414; neighborlists = (int *) realloc(neighborlists, (sizeof(int) * (particle_capacity * neighborlist_capacity))); } } } - pairs::copy_to_device(force) + //pairs::copy_to_device(force) for(int i13 = 0; i13 < nlocal; i13++) { - const int e446 = i13 * 3; - const double p73_0 = force[e446]; - const int e448 = i13 * 3; - const int e449 = e448 + 1; - const double p73_1 = force[e449]; - const int e450 = i13 * 3; - const int e451 = e450 + 2; - const double p73_2 = force[e451]; - force[e446] = 0.0; - force[e449] = 0.0; - force[e451] = 0.0; + const int e417 = i13 * 3; + const double p69_0 = force[e417]; + const int e419 = i13 * 3; + const int e420 = e419 + 1; + const double p69_1 = force[e420]; + const int e421 = i13 * 3; + const int e422 = e421 + 2; + const double p69_2 = force[e422]; + force[e417] = 0.0; + force[e420] = 0.0; + force[e422] = 0.0; } - const int e460 = i14 + 1; - for(int i0 = 0; i0 < nlocal; i0++) { - const int e1 = i0 * neighborlist_capacity; - const int e47 = i0 * 3; - const double p0_0 = position[e47]; - const int e55 = i0 * 3; - const int e56 = e55 + 1; - const double p0_1 = position[e56]; - const int e63 = i0 * 3; - const int e64 = e63 + 2; - const double p0_2 = position[e64]; - const int e51 = i0 * 3; - const int e59 = i0 * 3; - const int e60 = e59 + 1; - const int e67 = i0 * 3; - const int e68 = e67 + 2; - const int a6 = numneighs[i0]; - for(int i1 = 0; i1 < a6; i1++) { - const int e2 = e1 + i1; - const int a7 = neighborlists[e2]; - const int e49 = a7 * 3; - const double p1_0 = position[e49]; - const int e57 = a7 * 3; - const int e58 = e57 + 1; - const double p1_1 = position[e58]; - const int e65 = a7 * 3; - const int e66 = e65 + 2; - const double p1_2 = position[e66]; - const double e3_0 = p0_0 - p1_0; - const double e3_1 = p0_1 - p1_1; - const double e3_2 = p0_2 - p1_2; - const double e12 = e3_0 * e3_0; - const double e21 = e3_1 * e3_1; - const double e22 = e12 + e21; - const double e31 = e3_2 * e3_2; - const double e32 = e22 + e31; - const bool e33 = e32 < 2.5; - if(e33) { - const double e34 = 1.0 / e32; - const double e35 = e34 * e34; - const double e36 = e35 * e34; - const double p2_0 = force[e51]; - const double p2_1 = force[e60]; - const double p2_2 = force[e68]; - const double e40 = e36 - 0.5; - const double e507 = 48.0 * e36; - const double e508 = e507 * e40; - const double e509 = e508 * e34; - const double e43_0 = e3_0 * e509; - const double e43_1 = e3_1 * e509; - const double e43_2 = e3_2 * e509; - const double e44_0 = p2_0 + e43_0; - const double e44_1 = p2_1 + e43_1; - const double e44_2 = p2_2 + e43_2; - force[e51] = e44_0; - force[e60] = e44_1; - force[e68] = e44_2; + for(int i14 = 0; i14 < nlocal; i14++) { + const int e423 = i14 * neighborlist_capacity; + const int e430 = i14 * 3; + const double p70_0 = position[e430]; + const int e439 = i14 * 3; + const int e440 = e439 + 1; + const double p70_1 = position[e440]; + const int e449 = i14 * 3; + const int e450 = e449 + 2; + const double p70_2 = position[e450]; + const int e14 = i14 * 3; + const int e18 = i14 * 3; + const int e19 = e18 + 1; + const int e22 = i14 * 3; + const int e23 = e22 + 2; + const int a56 = numneighs[i14]; + for(int i15 = 0; i15 < a56; i15++) { + const int e424 = e423 + i15; + const int a57 = neighborlists[e424]; + const int e432 = a57 * 3; + const double p71_0 = position[e432]; + const int e441 = a57 * 3; + const int e442 = e441 + 1; + const double p71_1 = position[e442]; + const int e451 = a57 * 3; + const int e452 = e451 + 2; + const double p71_2 = position[e452]; + const double e425_0 = p70_0 - p71_0; + const double e425_1 = p70_1 - p71_1; + const double e425_2 = p70_2 - p71_2; + const double e434 = e425_0 * e425_0; + const double e443 = e425_1 * e425_1; + const double e444 = e434 + e443; + const double e453 = e425_2 * e425_2; + const double e454 = e444 + e453; + const bool e455 = e454 < 2.5; + if(e455) { + const double e1 = 1.0 / e454; + const double e2 = e1 * e1; + const double e3 = e2 * e1; + const double p0_0 = force[e14]; + const double p0_1 = force[e19]; + const double p0_2 = force[e23]; + const double e7 = e3 - 0.5; + const double e495 = 48.0 * e3; + const double e496 = e495 * e7; + const double e497 = e496 * e1; + const double e10_0 = e425_0 * e497; + const double e10_1 = e425_1 * e497; + const double e10_2 = e425_2 * e497; + const double e11_0 = p0_0 + e10_0; + const double e11_1 = p0_1 + e10_1; + const double e11_2 = p0_2 + e10_2; + force[e14] = e11_0; + force[e19] = e11_1; + force[e23] = e11_2; } } } - pairs::copy_to_device(velocity) - pairs::copy_to_device(mass) - for(int i2 = 0; i2 < nlocal; i2++) { - const int e76 = i2 * 3; - const double p3_0 = velocity[e76]; - const int e82 = i2 * 3; - const int e83 = e82 + 1; - const double p3_1 = velocity[e83]; - const int e88 = i2 * 3; - const int e89 = e88 + 2; - const double p3_2 = velocity[e89]; - const int e74 = i2 * 3; - const double p4_0 = force[e74]; - const int e80 = i2 * 3; - const int e81 = e80 + 1; - const double p4_1 = force[e81]; - const int e86 = i2 * 3; - const int e87 = e86 + 2; - const double p4_2 = force[e87]; - const double e69_0 = 0.005 * p4_0; - const double e69_1 = 0.005 * p4_1; - const double e69_2 = 0.005 * p4_2; - const double p5 = mass[i2]; - const double e70_0 = e69_0 / p5; - const double e70_1 = e69_1 / p5; - const double e70_2 = e69_2 / p5; - const double e71_0 = p3_0 + e70_0; - const double e71_1 = p3_1 + e70_1; - const double e71_2 = p3_2 + e70_2; - velocity[e76] = e71_0; - velocity[e83] = e71_1; - velocity[e89] = e71_2; - const int e96 = i2 * 3; - const double p6_0 = position[e96]; - const int e102 = i2 * 3; - const int e103 = e102 + 1; - const double p6_1 = position[e103]; - const int e108 = i2 * 3; - const int e109 = e108 + 2; - const double p6_2 = position[e109]; - const int e94 = i2 * 3; - const double p7_0 = velocity[e94]; - const int e100 = i2 * 3; - const int e101 = e100 + 1; - const double p7_1 = velocity[e101]; - const int e106 = i2 * 3; - const int e107 = e106 + 2; - const double p7_2 = velocity[e107]; - const double e90_0 = 0.005 * p7_0; - const double e90_1 = 0.005 * p7_1; - const double e90_2 = 0.005 * p7_2; - const double e91_0 = p6_0 + e90_0; - const double e91_1 = p6_1 + e90_1; - const double e91_2 = p6_2 + e90_2; - position[e96] = e91_0; - position[e103] = e91_1; - position[e109] = e91_2; + //pairs::copy_to_device(velocity) + //pairs::copy_to_device(mass) + for(int i0 = 0; i0 < nlocal; i0++) { + const int e31 = i0 * 3; + const double p1_0 = velocity[e31]; + const int e37 = i0 * 3; + const int e38 = e37 + 1; + const double p1_1 = velocity[e38]; + const int e43 = i0 * 3; + const int e44 = e43 + 2; + const double p1_2 = velocity[e44]; + const int e29 = i0 * 3; + const double p2_0 = force[e29]; + const int e35 = i0 * 3; + const int e36 = e35 + 1; + const double p2_1 = force[e36]; + const int e41 = i0 * 3; + const int e42 = e41 + 2; + const double p2_2 = force[e42]; + const double e24_0 = 0.005 * p2_0; + const double e24_1 = 0.005 * p2_1; + const double e24_2 = 0.005 * p2_2; + const double p3 = mass[i0]; + const double e25_0 = e24_0 / p3; + const double e25_1 = e24_1 / p3; + const double e25_2 = e24_2 / p3; + const double e26_0 = p1_0 + e25_0; + const double e26_1 = p1_1 + e25_1; + const double e26_2 = p1_2 + e25_2; + velocity[e31] = e26_0; + velocity[e38] = e26_1; + velocity[e44] = e26_2; + const int e51 = i0 * 3; + const double p4_0 = position[e51]; + const int e57 = i0 * 3; + const int e58 = e57 + 1; + const double p4_1 = position[e58]; + const int e63 = i0 * 3; + const int e64 = e63 + 2; + const double p4_2 = position[e64]; + const int e49 = i0 * 3; + const double p5_0 = velocity[e49]; + const int e55 = i0 * 3; + const int e56 = e55 + 1; + const double p5_1 = velocity[e56]; + const int e61 = i0 * 3; + const int e62 = e61 + 2; + const double p5_2 = velocity[e62]; + const double e45_0 = 0.005 * p5_0; + const double e45_1 = 0.005 * p5_1; + const double e45_2 = 0.005 * p5_2; + const double e46_0 = p4_0 + e45_0; + const double e46_1 = p4_1 + e45_1; + const double e46_2 = p4_2 + e45_2; + position[e51] = e46_0; + position[e58] = e46_1; + position[e64] = e46_2; } - const int e461 = nlocal + npbc; - pairs::vtk_write_data(ps, "output/test_local", 0, nlocal, e460); - pairs::vtk_write_data(ps, "output/test_pbc", nlocal, e461, e460); + const int e73 = i1 + 1; + const int e456 = nlocal + npbc; + pairs::vtk_write_data(ps, "output/test_local", 0, nlocal, e73); + pairs::vtk_write_data(ps, "output/test_pbc", nlocal, e456, e73); } } diff --git a/src/pairs/coupling/parse_cpp.py b/src/pairs/coupling/parse_cpp.py index 8c94702..1659115 100644 --- a/src/pairs/coupling/parse_cpp.py +++ b/src/pairs/coupling/parse_cpp.py @@ -5,6 +5,7 @@ from pairs.ast.branches import Branch from pairs.ast.data_types import Type_Float, Type_Vector from pairs.ast.math import Sqrt from pairs.ast.select import Select +from pairs.sim.interaction import ParticleInteraction def print_tree(node, indent=0): @@ -76,7 +77,7 @@ def getVelocityAtWFPoint(sim, params): wf_pt = params[2] lin_vel = sim.property('velocity') ang_vel = sim.property('angular_velocity') - position = sim.property('position') + position = sim.position() return lin_vel[p_idx] + ang_vel[p_idx] * (wf_pt - position[p_idx]) @@ -87,7 +88,7 @@ def addForceAtWFPosAtomic(sim, params): wf_pt = params[3] force = sim.property('force') torque = sim.property('torque') - position = sim.property('position') + position = sim.position() force[p_idx].add(f) torque[p_idx].add((wf_pt - position[p_idx]) * f) @@ -150,7 +151,9 @@ def map_kernel_to_simulation(sim, node): contactNormal = sim.add_var('contactNormal', Type_Vector) penetrationDepth = sim.add_var('penetrationDepth', Type_Float) - for i, j in sim.particle_pairs(): + self.clear_block() + pairs = ParticleInteraction(sim, 2) + for i, j in pairs: return map_method_tree(sim, node, { 'element_mappings': { 'p_idx1': i, @@ -173,6 +176,8 @@ def map_kernel_to_simulation(sim, node): } }) + self.build_kernel_block_with_statements() + def map_method_tree(sim, node, assignments={}, mappings={}): if node is not None: diff --git a/src/pairs/ir/branches.py b/src/pairs/ir/branches.py index 93962ad..75bbfe7 100644 --- a/src/pairs/ir/branches.py +++ b/src/pairs/ir/branches.py @@ -38,8 +38,8 @@ class Branch(ASTNode): class Filter(Branch): - def __init__(self, sim, cond): - super().__init__(sim, cond, True) + def __init__(self, sim, cond, block=None): + super().__init__(sim, cond, True, block) def __iter__(self): self.sim.add_statement(self) diff --git a/src/pairs/ir/loops.py b/src/pairs/ir/loops.py index 40d73d2..9f18739 100644 --- a/src/pairs/ir/loops.py +++ b/src/pairs/ir/loops.py @@ -99,29 +99,3 @@ class While(ASTNode): def children(self): return [self.cond, self.block] - - -class NeighborFor(): - def __init__(self, sim, particle, cell_lists, neighbor_lists=None): - self.sim = sim - self.particle = particle - self.cell_lists = cell_lists - self.neighbor_lists = neighbor_lists - - def __str__(self): - return f"NeighborFor<particle: {self.particle}>" - - def __iter__(self): - if self.neighbor_lists is None: - cl = self.cell_lists - for s in For(self.sim, 0, cl.nstencil): - neigh_cell = cl.particle_cell[self.particle] + cl.stencil[s] - for _ in Filter(self.sim, BinOp.and_op(neigh_cell >= 0, neigh_cell <= cl.ncells)): - for nc in For(self.sim, 0, cl.cell_sizes[neigh_cell]): - it = cl.cell_particles[neigh_cell][nc] - for _ in Filter(self.sim, BinOp.neq(it, self.particle)): - yield it - else: - neighbor_lists = self.neighbor_lists - for k in For(self.sim, 0, neighbor_lists.numneighs[self.particle]): - yield neighbor_lists.neighborlists[self.particle][k] diff --git a/src/pairs/ir/symbols.py b/src/pairs/ir/symbols.py new file mode 100644 index 0000000..08ee01d --- /dev/null +++ b/src/pairs/ir/symbols.py @@ -0,0 +1,19 @@ +from pairs.ir.ast_node import ASTNode +from pairs.ir.assign import Assign +from pairs.ir.bin_op import ASTTerm + + +class Symbol(ASTTerm): + def __init__(self, sim, sym_type): + super().__init__(sim) + self.sym_type = sym_type + self.assign_to = None + + def __str__(self): + return f"Symbol<type: {self.var_type}>" + + def assign(self, node): + self.assign_to = node + + def type(self): + return self.sym_type diff --git a/src/pairs/ir/variables.py b/src/pairs/ir/variables.py index 9f456e8..102dc2d 100644 --- a/src/pairs/ir/variables.py +++ b/src/pairs/ir/variables.py @@ -24,6 +24,7 @@ class Variables: return None + class Var(ASTTerm): def __init__(self, sim, var_name, var_type, init_value=0): super().__init__(sim) diff --git a/src/pairs/mapping/funcs.py b/src/pairs/mapping/funcs.py index 7b47ec6..57bb43c 100644 --- a/src/pairs/mapping/funcs.py +++ b/src/pairs/mapping/funcs.py @@ -2,6 +2,8 @@ import ast import inspect from pairs.ir.assign import Assign from pairs.ir.bin_op import BinOp +from pairs.ir.loops import ParticleFor +from pairs.sim.interaction import ParticleInteraction class UndefinedSymbol(): @@ -119,7 +121,7 @@ class BuildParticleIR(ast.NodeVisitor): return self.visit(node.value)[self.visit(node.slice)] -def compute(sim, func, cutoff_radius=None, position=None, symbols={}): +def compute(sim, func, cutoff_radius=None, symbols={}): src = inspect.getsource(func) tree = ast.parse(src, mode='exec') #print(ast.dump(ast.parse(src, mode='exec'))) @@ -132,16 +134,18 @@ def compute(sim, func, cutoff_radius=None, position=None, symbols={}): # Start building IR ir = BuildParticleIR(sim, symbols) + assert nparams > 0, "Number of parameters from compute functions must be higher than zero!" + sim.clear_block() if nparams == 1: - for i in sim.particles(): + for i in ParticleFor(sim): ir.add_symbols({params[0]: i}) ir.visit(tree) - elif nparams == 2: - for i, j, delta, rsq in sim.particle_pairs(cutoff_radius, sim.property(position)): - ir.add_symbols({params[0]: i, params[1]: j, 'delta': delta, 'rsq': rsq}) + else: + pairs = ParticleInteraction(sim, nparams, cutoff_radius) + for i, j in pairs: + ir.add_symbols({params[0]: i, params[1]: j, 'delta': pairs.delta(), 'rsq': pairs.squared_distance()}) ir.visit(tree) - else: - raise Exception(f"Invalid number of parameters: {nparams}") + sim.build_kernel_block_with_statements() diff --git a/src/pairs/sim/cell_lists.py b/src/pairs/sim/cell_lists.py index 1a36a04..df6f2dc 100644 --- a/src/pairs/sim/cell_lists.py +++ b/src/pairs/sim/cell_lists.py @@ -74,7 +74,7 @@ class CellListsBuild(Lowerable): sim = self.sim cl = self.cell_lists grid = sim.grid - positions = sim.property('position') + positions = sim.position() for resize in Resize(sim, cl.cell_capacity): for c in For(sim, 0, cl.ncells): diff --git a/src/pairs/sim/interaction.py b/src/pairs/sim/interaction.py new file mode 100644 index 0000000..9658ee7 --- /dev/null +++ b/src/pairs/sim/interaction.py @@ -0,0 +1,81 @@ +from pairs.ir.bin_op import BinOp +from pairs.ir.block import Block, pairs_block +from pairs.ir.branches import Branch, Filter +from pairs.ir.data_types import Type_Int, Type_Float, Type_Vector +from pairs.ir.loops import For, ParticleFor +from pairs.ir.utils import Print +from pairs.sim.lowerable import Lowerable +from pairs.sim.resize import Resize + + +class NeighborFor(): + def __init__(self, sim, particle, cell_lists, neighbor_lists=None): + self.sim = sim + self.particle = particle + self.cell_lists = cell_lists + self.neighbor_lists = neighbor_lists + + def __str__(self): + return f"NeighborFor<particle: {self.particle}>" + + def __iter__(self): + if self.neighbor_lists is None: + cl = self.cell_lists + for s in For(self.sim, 0, cl.nstencil): + neigh_cell = cl.particle_cell[self.particle] + cl.stencil[s] + for _ in Filter(self.sim, BinOp.and_op(neigh_cell >= 0, neigh_cell <= cl.ncells)): + for nc in For(self.sim, 0, cl.cell_sizes[neigh_cell]): + it = cl.cell_particles[neigh_cell][nc] + for _ in Filter(self.sim, BinOp.neq(it, self.particle)): + yield it + else: + neighbor_lists = self.neighbor_lists + for k in For(self.sim, 0, neighbor_lists.numneighs[self.particle]): + yield neighbor_lists.neighborlists[self.particle][k] + + +class ParticleInteraction(Lowerable): + def __init__(self, sim, nbody, cutoff_radius, block=None, bypass_neighbor_lists=False): + super().__init__(sim) + self.nbody = nbody + self.cutoff_radius = cutoff_radius + self.bypass_neighbor_lists = bypass_neighbor_lists + self.i = sim.add_symbol(Type_Int) + self.j = sim.add_symbol(Type_Int) + self.dp = sim.add_symbol(Type_Vector) + self.rsq = sim.add_symbol(Type_Float) + self.block = Block(sim, []) if block is None else block + + def delta(self): + return self.dp + + def squared_distance(self): + return self.rsq + + def add_statement(self, stmt): + self.block.add_statement(stmt) + + def __iter__(self): + self.sim.add_statement(self) + self.sim.enter_scope(self) + yield self.i, self.j + self.sim.leave_scope() + + @pairs_block + def lower(self): + if self.nbody == 2: + position = self.sim.position() + cell_lists = self.sim.cell_lists + neighbor_lists = None if self.bypass_neighbor_lists else self.sim.neighbor_lists + for i in ParticleFor(self.sim): + self.i.assign(i) + for j in NeighborFor(self.sim, i, cell_lists, neighbor_lists): + dp = position[i] - position[j] + rsq = dp.x() * dp.x() + dp.y() * dp.y() + dp.z() * dp.z() + self.j.assign(j) + self.dp.assign(dp) + self.rsq.assign(rsq) + self.sim.add_statement(Filter(self.sim, rsq < self.cutoff_radius, self.block)) + + else: + raise Exception("Interactions among more than two particles is currently not implemented!") diff --git a/src/pairs/sim/neighbor_lists.py b/src/pairs/sim/neighbor_lists.py index 798a243..d55a112 100644 --- a/src/pairs/sim/neighbor_lists.py +++ b/src/pairs/sim/neighbor_lists.py @@ -1,8 +1,9 @@ from pairs.ir.block import pairs_device_block from pairs.ir.branches import Branch, Filter from pairs.ir.data_types import Type_Int -from pairs.ir.loops import For, ParticleFor, NeighborFor +from pairs.ir.loops import ParticleFor from pairs.ir.utils import Print +from pairs.sim.interaction import ParticleInteraction from pairs.sim.lowerable import Lowerable from pairs.sim.resize import Resize @@ -27,20 +28,18 @@ class NeighborListsBuild(Lowerable): neighbor_lists = self.neighbor_lists cell_lists = neighbor_lists.cell_lists cutoff_radius = cell_lists.cutoff_radius - position = sim.property('position') + position = sim.position() for resize in Resize(sim, neighbor_lists.capacity): for i in ParticleFor(sim): neighbor_lists.numneighs[i].set(0) - for j in NeighborFor(sim, i, cell_lists): - # TODO: find a way to not repeat this (already present in particle_pairs) - dp = position[i] - position[j] - rsq = dp.x() * dp.x() + dp.y() * dp.y() + dp.z() * dp.z() - for _ in Filter(sim, rsq < cutoff_radius): - numneighs = neighbor_lists.numneighs[i] - for cond in Branch(sim, numneighs >= neighbor_lists.capacity): - if cond: - resize.set(numneighs) - else: - neighbor_lists.neighborlists[i][numneighs].set(j) - neighbor_lists.numneighs[i].set(numneighs + 1) + + pairs = ParticleInteraction(sim, 2, cutoff_radius, bypass_neighbor_lists=True) + for i, j in pairs: + numneighs = neighbor_lists.numneighs[i] + for cond in Branch(sim, numneighs >= neighbor_lists.capacity): + if cond: + resize.set(numneighs) + else: + neighbor_lists.neighborlists[i][numneighs].set(j) + neighbor_lists.numneighs[i].set(numneighs + 1) diff --git a/src/pairs/sim/pbc.py b/src/pairs/sim/pbc.py index 1a5d480..87b8aad 100644 --- a/src/pairs/sim/pbc.py +++ b/src/pairs/sim/pbc.py @@ -33,7 +33,7 @@ class UpdatePBC(Lowerable): npbc = self.pbc.npbc pbc_map = self.pbc.pbc_map pbc_mult = self.pbc.pbc_mult - positions = self.pbc.sim.property('position') + positions = self.pbc.sim.position() nlocal = self.pbc.sim.nlocal for i in For(sim, 0, npbc): @@ -53,7 +53,7 @@ class EnforcePBC(Lowerable): sim = self.sim ndims = sim.ndims() grid = self.pbc.grid - positions = sim.property('position') + positions = sim.position() for i in ParticleFor(sim): # TODO: VecFilter? @@ -80,7 +80,7 @@ class SetupPBC(Lowerable): pbc_capacity = self.pbc.pbc_capacity pbc_map = self.pbc.pbc_map pbc_mult = self.pbc.pbc_mult - positions = self.pbc.sim.property('position') + positions = self.pbc.sim.position() nlocal = self.pbc.sim.nlocal for resize in Resize(sim, pbc_capacity): diff --git a/src/pairs/sim/simulation.py b/src/pairs/sim/simulation.py index f8c3461..db46e6a 100644 --- a/src/pairs/sim/simulation.py +++ b/src/pairs/sim/simulation.py @@ -3,8 +3,8 @@ from pairs.ir.block import Block, KernelBlock from pairs.ir.branches import Filter from pairs.ir.data_types import Type_Int, Type_Float, Type_Vector from pairs.ir.layouts import Layout_AoS -from pairs.ir.loops import ParticleFor, NeighborFor from pairs.ir.properties import Properties +from pairs.ir.symbols import Symbol from pairs.ir.variables import Variables from pairs.graph.graphviz import ASTGraph from pairs.mapping.funcs import compute @@ -26,6 +26,7 @@ from pairs.transformations.simplify import simplify_expressions from pairs.transformations.LICM import move_loop_invariant_code from pairs.transformations.lower import lower_everything from pairs.transformations.merge_adjacent_blocks import merge_adjacent_blocks +from pairs.transformations.replace_symbols import replace_symbols class Simulation: @@ -33,6 +34,7 @@ class Simulation: self.code_gen = code_gen self.code_gen.assign_simulation(self) self.global_scope = None + self.position_prop = None self.properties = Properties(self) self.vars = Variables(self) self.arrays = Arrays(self) @@ -54,6 +56,7 @@ class Simulation: self.ntimesteps = timesteps self.expr_id = 0 self.iter_id = 0 + self.temp_id = 1000 self.vtk_file = None self.nparticles = self.nlocal + self.nghost self.properties.add_capacity(self.particle_capacity) @@ -65,6 +68,11 @@ class Simulation: assert self.property(prop_name) is None, f"Property already defined: {prop_name}" return self.properties.add(prop_name, Type_Float, value, vol) + def add_position(self, prop_name, value=[0.0, 0.0, 0.0], vol=False, layout=Layout_AoS): + assert self.property(prop_name) is None, f"Property already defined: {prop_name}" + self.position_prop = self.properties.add(prop_name, Type_Vector, value, vol, layout) + return self.position_prop + def add_vector_property(self, prop_name, value=[0.0, 0.0, 0.0], vol=False, layout=Layout_AoS): assert self.property(prop_name) is None, f"Property already defined: {prop_name}" return self.properties.add(prop_name, Type_Vector, value, vol, layout) @@ -72,6 +80,9 @@ class Simulation: def property(self, prop_name): return self.properties.find(prop_name) + def position(self): + return self.position_prop + def add_array(self, arr_name, arr_sizes, arr_type, arr_layout=Layout_AoS): assert self.array(arr_name) is None, f"Array already defined: {arr_name}" return self.arrays.add(arr_name, arr_sizes, arr_type, arr_layout) @@ -95,6 +106,15 @@ class Simulation: return self.vars.add(var_name, var_type, init_value) + def add_symbol(self, sym_type): + return Symbol(self, sym_type) + + def add_temporary_vector(self): + return self.vars.add(f"tmp{self.temp_id}", Type_Vector) + + def add_temporary_real(self): + return self.vars.add(f"tmp{self.temp_id}", Type_Float) + def var(self, var_name): return self.vars.find(var_name) @@ -107,7 +127,7 @@ class Simulation: return self.grid def create_particle_lattice(self, grid, spacing, props={}): - positions = self.property('position') + positions = self.position() lattice = ParticleLattice(self, grid, spacing, props, positions) self.setups.add_statement(lattice) @@ -130,34 +150,15 @@ class Simulation: self.properties.add_capacity(self.pbc.pbc_capacity) return self.pbc - def compute(self, sim, func, cutoff_radius=None, position=None, symbols={}): - return compute(sim, func, cutoff_radius, position, symbols) - - def particle_pairs(self, cutoff_radius=None, position=None): - self.clear_block() - for i in ParticleFor(self): - for j in NeighborFor(self, i, self.cell_lists, self.neighbor_lists): - if cutoff_radius is not None and position is not None: - dp = position[i] - position[j] - rsq = dp.x() * dp.x() + dp.y() * dp.y() + dp.z() * dp.z() - for _ in Filter(self, rsq < cutoff_radius): - yield i, j, dp, rsq - - else: - yield i, j - - self.kernels.add_statement(KernelBlock(self, self.block)) - - def particles(self): - self.clear_block() - for i in ParticleFor(self): - yield i - - self.kernels.add_statement(KernelBlock(self, self.block)) + def compute(self, func, cutoff_radius=None, symbols={}): + return compute(self, func, cutoff_radius, symbols) def clear_block(self): self.block = Block(self, []) + def build_kernel_block_with_statements(self): + self.kernels.add_statement(KernelBlock(self, self.block)) + def add_statement(self, stmt): if not self.scope: self.block.add_statement(stmt) @@ -216,6 +217,7 @@ class Simulation: # Transformations lower_everything(program) + replace_symbols(program) merge_adjacent_blocks(program) prioritize_scalar_ops(program) simplify_expressions(program) diff --git a/src/pairs/transformations/replace_symbols.py b/src/pairs/transformations/replace_symbols.py new file mode 100644 index 0000000..a23a5a2 --- /dev/null +++ b/src/pairs/transformations/replace_symbols.py @@ -0,0 +1,14 @@ +from pairs.ir.mutator import Mutator + + +class ReplaceSymbols(Mutator): + def __init__(self, ast): + super().__init__(ast) + + def mutate_Symbol(self, ast_node): + return ast_node.assign_to + + +def replace_symbols(ast): + replace = ReplaceSymbols(ast) + replace.mutate() -- GitLab