Having a lot of solute atoms (eg. concentration = 0.01) slows down the code a lot.
running a profiler valgrind --tool=callgrind ../../KMC_arnall/bin/DislocationKMC --config test.config reveals the bottleneck is that Simulation::generatePointDefectEventList() makes a huge number of calls to DislocationNetwork::isSoluteOnTheDislocation()
this function has been optimized a bit (many variable definitions in loop) eacd75305
a better strategy for neighbours lookup is needed, as ~~70% of runtime is spent there
valgrind --tool=callgrind ../../KMC_arnall/bin/DislocationKMC --config test.config
reveals the bottleneck is that Simulation::generatePointDefectEventList() makes a huge number of calls to DislocationNetwork::isSoluteOnTheDislocation()gprof2dot/gprof2dot.py -n 2 -f callgrind callgrind.out.15812 | dot -Tsvg -o output.svg