diff --git a/kwant/builder.py b/kwant/builder.py index 79e1f0198c0d2f882bd9cbd736117c2e572e8d08..2ca81a946faf5c9c50201c67a34398a69d46d41c 100644 --- a/kwant/builder.py +++ b/kwant/builder.py @@ -1681,7 +1681,13 @@ class Builder: if hop_range > 1: # Automatically increase the period, potentially warn the user. - new_lead = Builder(sym.subgroup((hop_range,))) + new_lead = Builder( + sym.subgroup((hop_range,)), + conservation_law=lead_builder.conservation_law, + time_reversal=lead_builder.time_reversal, + particle_hole=lead_builder.particle_hole, + chiral=lead_builder.chiral, + ) with reraise_warnings(): new_lead.fill(lead_builder, lambda site: True, lead_builder.sites(), max_sites=float('inf')) diff --git a/kwant/tests/test_builder.py b/kwant/tests/test_builder.py index c6f0874865968079ae24b1e8c8f373fd674acd71..bd02f680401420cca03ba4a9933fad4c2f8aa582 100644 --- a/kwant/tests/test_builder.py +++ b/kwant/tests/test_builder.py @@ -843,7 +843,7 @@ def test_fill_sticky(): def test_attach_lead(): - fam = builder.SimpleSiteFamily() + fam = builder.SimpleSiteFamily(norbs=1) fam_noncommensurate = builder.SimpleSiteFamily(name='other') syst = builder.Builder() @@ -878,7 +878,12 @@ def test_attach_lead(): # add some further-than-nearest-neighbor hoppings hop_range = 3 - lead = builder.Builder(VerySimpleSymmetry(1)) + lead = builder.Builder( + VerySimpleSymmetry(1), + conservation_law=np.eye(1), + time_reversal=np.eye(1), + particle_hole=np.eye(1), + chiral=np.eye(1)) lead[fam(0)] = 1 for i in range(1, hop_range + 1): lead[fam(0), fam(i)] = 1 @@ -886,6 +891,10 @@ def test_attach_lead(): expanded_lead = syst.leads[-1].builder assert expanded_lead.symmetry.period == hop_range assert len(list(expanded_lead.sites())) == hop_range + assert expanded_lead.conservation_law is lead.conservation_law + assert expanded_lead.time_reversal is lead.time_reversal + assert expanded_lead.particle_hole is lead.particle_hole + assert expanded_lead.chiral is lead.chiral # check that we can actually finalize the system syst.finalized()