These will be needed later when verifying that constant values have
the correct shape.
... | ... |
@@ -2387,7 +2387,7 @@ def _sort_hopping_term(term, value): |
2387 | 2387 |
return term, value |
2388 | 2388 |
|
2389 | 2389 |
|
2390 |
-def _make_onsite_terms(builder, sites, site_offsets, term_offset): |
|
2390 |
+def _make_onsite_terms(builder, sites, site_arrays, term_offset): |
|
2391 | 2391 |
# Construct onsite terms. |
2392 | 2392 |
# |
2393 | 2393 |
# onsite_subgraphs |
... | ... |
@@ -2409,6 +2409,8 @@ def _make_onsite_terms(builder, sites, site_offsets, term_offset): |
2409 | 2409 |
# Hamiltonian term associated with each site/hopping. For |
2410 | 2410 |
# Hermitian conjugate hoppings "-term - 1" is stored instead. |
2411 | 2411 |
|
2412 |
+ site_offsets = np.cumsum([0] + [len(sa) for sa in site_arrays]) |
|
2413 |
+ |
|
2412 | 2414 |
onsite_subgraphs = [] |
2413 | 2415 |
onsite_term_values = [] |
2414 | 2416 |
onsite_term_parameters = [] |
... | ... |
@@ -2479,7 +2481,7 @@ def _make_onsite_terms(builder, sites, site_offsets, term_offset): |
2479 | 2481 |
onsite_term_errors, _onsite_term_by_site_id) |
2480 | 2482 |
|
2481 | 2483 |
|
2482 |
-def _make_hopping_terms(builder, graph, sites, site_offsets, cell_size, term_offset): |
|
2484 |
+def _make_hopping_terms(builder, graph, sites, site_arrays, cell_size, term_offset): |
|
2483 | 2485 |
# Construct the hopping terms |
2484 | 2486 |
# |
2485 | 2487 |
# The logic is the same as for the onsite terms, with the following |
... | ... |
@@ -2490,6 +2492,8 @@ def _make_hopping_terms(builder, graph, sites, site_offsets, cell_size, term_off |
2490 | 2492 |
# is a part of. For Hermitian conjugate hoppings "-term_number -1" |
2491 | 2493 |
# is stored instead. |
2492 | 2494 |
|
2495 |
+ site_offsets = np.cumsum([0] + [len(sa) for sa in site_arrays]) |
|
2496 |
+ |
|
2493 | 2497 |
hopping_subgraphs = [] |
2494 | 2498 |
hopping_term_values = [] |
2495 | 2499 |
hopping_term_parameters = [] |
... | ... |
@@ -2628,17 +2632,14 @@ class FiniteVectorizedSystem(_VectorizedFinalizedBuilderMixin, system.FiniteVect |
2628 | 2632 |
del id_by_site # cleanup due to large size |
2629 | 2633 |
|
2630 | 2634 |
site_arrays = _make_site_arrays(builder.H) |
2631 |
- # We need this to efficiently find which array a given |
|
2632 |
- # site belongs to |
|
2633 |
- site_offsets = np.cumsum([0] + [len(arr) for arr in site_arrays]) |
|
2634 | 2635 |
|
2635 | 2636 |
(onsite_subgraphs, onsite_terms, onsite_term_values, |
2636 | 2637 |
onsite_term_errors, _onsite_term_by_site_id) =\ |
2637 |
- _make_onsite_terms(builder, sites, site_offsets, term_offset=0) |
|
2638 |
+ _make_onsite_terms(builder, sites, site_arrays, term_offset=0) |
|
2638 | 2639 |
|
2639 | 2640 |
(hopping_subgraphs, hopping_terms, hopping_term_values, |
2640 | 2641 |
hopping_term_errors, _hopping_term_by_edge_id) =\ |
2641 |
- _make_hopping_terms(builder, graph, sites, site_offsets, |
|
2642 |
+ _make_hopping_terms(builder, graph, sites, site_arrays, |
|
2642 | 2643 |
len(sites), term_offset=len(onsite_terms)) |
2643 | 2644 |
|
2644 | 2645 |
# Construct the combined onsite/hopping term datastructures |
... | ... |
@@ -2941,15 +2942,13 @@ class InfiniteVectorizedSystem(_VectorizedFinalizedBuilderMixin, system.Infinite |
2941 | 2942 |
+ _make_site_arrays(interface) |
2942 | 2943 |
) |
2943 | 2944 |
|
2944 |
- site_offsets = np.cumsum([0] + [len(arr) for arr in site_arrays]) |
|
2945 |
- |
|
2946 | 2945 |
(onsite_subgraphs, onsite_terms, onsite_term_values, |
2947 | 2946 |
onsite_term_errors, _onsite_term_by_site_id) =\ |
2948 |
- _make_onsite_terms(builder, sites, site_offsets, term_offset=0) |
|
2947 |
+ _make_onsite_terms(builder, sites, site_arrays, term_offset=0) |
|
2949 | 2948 |
|
2950 | 2949 |
(hopping_subgraphs, hopping_terms, hopping_term_values, |
2951 | 2950 |
hopping_term_errors, _hopping_term_by_edge_id) =\ |
2952 |
- _make_hopping_terms(builder, graph, sites, site_offsets, |
|
2951 |
+ _make_hopping_terms(builder, graph, sites, site_arrays, |
|
2953 | 2952 |
cell_size, term_offset=len(onsite_terms)) |
2954 | 2953 |
|
2955 | 2954 |
# Construct the combined onsite/hopping term datastructures |