diff --git a/examples/kernels b/examples/kernels index 1f341d04899cd66f60e1f147a1d07f710d355644..d3669abcb372de0f4eda05bbb5ba1eac45bd0b61 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 Binary files a/examples/kernels.pdf and b/examples/kernels.pdf differ diff --git a/examples/lj_func.py b/examples/lj_func.py index baba7a9bbfc8e155e458fbe2649d998e4cdd34cb..5ec2c46e69ffe4e8d89c3269f1e8b5435c6f81bb 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 169705c0928b4546786bb23109f1869a78a2c207..ac376f0318cc2547f737c7e5a27053d7cc41f652 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 8c94702a2e8140f32c02a012258eaa072355d946..1659115392a89f6b5c12306f5442bed7be3fb24f 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 93962ada8da15565684d5bc7ac43d1c1c1193f50..75bbfe7f8afe166ed7ec525f50b30931504bbfa1 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 40d73d228fee13ef80286e14cbd7e24a6637cf7c..9f187393a1c3b7cda0fc761be64a1739cd85e2af 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 0000000000000000000000000000000000000000..08ee01d0ba7470dc090d3d056261ee2f0e77d031 --- /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 9f456e872ae91e517288f7e006e1bf067e65dd3d..102dc2d7a439dd34ff0f1704d7aae4bbe89e1d4f 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 7b47ec66e54073f197a78b80edda14a0589e214e..57bb43c9f6f74df26be4c64fcbe480565ac0f961 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 1a36a04bde66ad4728151195fe288db878cfd4a6..df6f2dc4fcfd2218396b18cddb4d0b975efa1864 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 0000000000000000000000000000000000000000..9658ee778e7e48f680663d61c53c90b0fd0b4eee --- /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 798a243a22f33c7cc4c7f1208077299466ca24ce..d55a1122786a53ef9f9b907cb0144dcb3d3cc3e1 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 1a5d4809423800fb670e635924d23de8318549ae..87b8aadb34007759fe3465691e7f44daa97d19a1 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 f8c34613a9b28f4f4114b27748e06e16e245cb42..db46e6a7ed545e76a255ecc4c40b6f3e58d11cfb 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 0000000000000000000000000000000000000000..a23a5a26705504bddbfc8bed004809e2d62bd95e --- /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()