From 342934df420b8c574ac16735c8d2c15f6ba618da Mon Sep 17 00:00:00 2001 From: Pete Shadbolt Date: Tue, 5 Jul 2016 21:10:36 +0100 Subject: [PATCH] Add stress test --- examples/stress_test.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 examples/stress_test.py diff --git a/examples/stress_test.py b/examples/stress_test.py new file mode 100644 index 0000000..8c73c89 --- /dev/null +++ b/examples/stress_test.py @@ -0,0 +1,40 @@ +from abp.fancy import GraphState +from abp.util import xyz +import numpy as np +import time +import itertools + +funny_unit_cell = (((0, 0), (0, 1)), ((0, 0), (1, 0)), + ((1, 0), (1, 1)), ((0, 1), (1, 1)), ((0, 0), (.5, .5))) + + +def add_offset(vector, offset): + """ Offset a vector in n-dimensional space """ + return tuple(v + o for v, o in zip(vector, offset)) + + +def offset_unit_cell(unit_cell, offset): + """ Offset a unit cell """ + return {(add_offset(a, offset), add_offset(b, offset)) for a, b in unit_cell} + + +def lattice(unit_cell, size): + """ Generate a lattice from a unit cell """ + edges = set() + for offset in itertools.product(*map(range, size)): + edges |= offset_unit_cell(unit_cell, offset) + + nodes = set(itertools.chain(*edges)) + return nodes, edges + +# s = VisibleGraphState() +nodes, edges = lattice(funny_unit_cell, (10, 10)) + +psi = GraphState() +for node in nodes: + psi.add_node(str(node), position=xyz(node[0], node[1])) + psi.act_hadamard(str(node)) + +for edge in edges: + psi.act_cz(str(edge[0]), str(edge[1])) +