Skip to content

Commit 9bab76a

Browse files
committed
Add key word arguments to BendTEAPOT
1 parent 4a894d8 commit 9bab76a

File tree

2 files changed

+67
-16
lines changed

2 files changed

+67
-16
lines changed

examples/TEAPOT/test_nodes.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,17 @@ def test_bunch_wrap():
3535
def test_solenoid():
3636
B = 1.0
3737
length = 1.0
38-
node = teapot.SolenoidTEAPOT(length=length, B=B)
38+
nparts = 5
39+
node = teapot.SolenoidTEAPOT(length=length, nparts=nparts, B=B)
3940
assert node.getLength() == length
41+
assert node.getnParts() == nparts
4042
assert node.getParam("B") == B
4143

4244

4345
def test_multipole():
4446
name = "name"
45-
nparts = 2
4647
length = 1.0
48+
nparts = 2
4749
poles = [1, 2, 3]
4850
kls = [0.0, 1.0, 2.0]
4951
skews = [0, 1, 0]
@@ -65,17 +67,17 @@ def test_multipole():
6567

6668
def test_quad():
6769
name = "name"
68-
kq = 0.5
69-
nparts = 10
7070
length = 1.0
71+
nparts = 10
72+
kq = 0.5
7173
poles = [1, 2, 3]
7274
kls = [0.0, 1.0, 2.0]
7375
skews = [0, 1, 0]
7476
node = teapot.QuadTEAPOT(
7577
name=name,
76-
kq=kq,
7778
length=length,
7879
nparts=nparts,
80+
kq=kq,
7981
poles=poles,
8082
kls=kls,
8183
skews=skews,
@@ -87,3 +89,28 @@ def test_quad():
8789
assert node.getParam("kls") == kls
8890
assert node.getParam("skews") == skews
8991
assert node.getParam("poles") == poles
92+
93+
94+
def test_bend():
95+
name = "name"
96+
length = 1.0
97+
nparts = 2
98+
99+
poles = [1, 2, 3]
100+
kls = [0.0, 1.0, 2.0]
101+
skews = [0, 1, 0]
102+
103+
ea1 = 0.0
104+
ea2 = 0.0
105+
theta = 1e-12
106+
107+
node = teapot.BendTEAPOT(name=name, length=length, nparts=nparts, poles=poles, kls=kls, skews=skews, ea1=ea1, ea2=ea2, theta=theta)
108+
assert node.getName() == name
109+
assert node.getLength() == length
110+
assert node.getnParts() == nparts
111+
assert node.getParam("kls") == kls
112+
assert node.getParam("skews") == skews
113+
assert node.getParam("poles") == poles
114+
assert node.getParam("ea1") == ea1
115+
assert node.getParam("ea2") == ea2
116+
assert node.getParam("theta") == theta

py/orbit/teapot/teapot.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -568,9 +568,10 @@ def __init__(self, name: str = "drift no name", length: float = 0.0, nparts: int
568568
Constructor. Creates the Drift TEAPOT element.
569569
"""
570570
NodeTEAPOT.__init__(self, name)
571+
571572
self.setType("drift teapot")
572-
self.setLength(length)
573573
self.setnParts(nparts)
574+
self.setLength(length)
574575

575576
def track(self, paramsDict: dict) -> None:
576577
"""
@@ -596,6 +597,7 @@ def __init__(
596597
Constructor. Creates the aperutre element.
597598
"""
598599
NodeTEAPOT.__init__(self, name)
600+
599601
self.setType("aperture")
600602
self.addParam("aperture", dim)
601603
self.addParam("apertype", shape)
@@ -630,6 +632,7 @@ def __init__(self, name: str = "Monitor no name") -> None:
630632
Constructor. Creates the aperutre element.
631633
"""
632634
NodeTEAPOT.__init__(self, name)
635+
633636
self.setType("monitor teapot")
634637
self.twiss = BunchTwissAnalysis()
635638

@@ -656,6 +659,7 @@ def __init__(self, name: str = "drift no name", ringlength: float = 0.0) -> None
656659
Constructor. Creates the Bunch wrapper TEAPOT element used in Ring lattices.
657660
"""
658661
NodeTEAPOT.__init__(self, name)
662+
659663
self.setType("bunch_wrap_teapot")
660664
self.addParam("ring_length", ringlength)
661665

@@ -674,14 +678,17 @@ class SolenoidTEAPOT(NodeTEAPOT):
674678
Solenoid TEAPOT element.
675679
"""
676680

677-
def __init__(self, name: str = "solenoid no name", B: float = 0.0, length: float = 0.0) -> None:
681+
def __init__(self, name: str = "solenoid no name", B: float = 0.0, length: float = 0.0, nparts: int = 1) -> None:
678682
"""
679683
Constructor. Creates the Solenoid TEAPOT element.
680684
"""
681685
NodeTEAPOT.__init__(self, name)
686+
682687
self.setType("solenoid teapot")
683688
self.addParam("B", B)
689+
self.setnParts(nparts)
684690
self.setLength(length)
691+
685692
self.waveform = None
686693

687694
def track(self, paramsDict: dict) -> None:
@@ -727,11 +734,13 @@ def __init__(
727734
Combined Function TEAPOT element.
728735
"""
729736
NodeTEAPOT.__init__(self, name)
737+
730738
self.addParam("poles", poles if poles else [])
731739
self.addParam("kls", kls if kls else [])
732740
self.addParam("skews", skews if skews else [])
733741
self.setnParts(nparts)
734742
self.setLength(length)
743+
735744
self.waveform = None
736745

737746
def fringeIN(node, paramsDict):
@@ -876,12 +885,15 @@ def __init__(
876885
Combined Function TEAPOT element.
877886
"""
878887
NodeTEAPOT.__init__(self, name)
888+
879889
self.addParam("kq", kq)
880890
self.addParam("poles", poles if poles else [])
881891
self.addParam("kls", kls if kls else [])
882892
self.addParam("skews", skews if skews else [])
893+
883894
self.setnParts(nparts)
884895
self.setLength(length)
896+
885897
self.waveform = None
886898

887899
def fringeIN(node, paramsDict):
@@ -1023,21 +1035,33 @@ class BendTEAPOT(NodeTEAPOT):
10231035
Bend Combined Functions TEAPOT element.
10241036
"""
10251037

1026-
def __init__(self, name: str = "bend no name") -> None:
1038+
def __init__(
1039+
self,
1040+
name: str = "bend no name",
1041+
length: float = 0.0,
1042+
nparts: int = 2,
1043+
poles: list[int] = None,
1044+
kls: list[float] = None,
1045+
skews: list[int] = None,
1046+
ea1: float = 0.0,
1047+
ea2: float = 0.0,
1048+
theta: float = 1.00e-36,
1049+
) -> None:
10271050
"""
10281051
Constructor. Creates the Bend Combined Functions TEAPOT element .
10291052
"""
10301053
NodeTEAPOT.__init__(self, name)
1031-
self.addParam("poles", [])
1032-
self.addParam("kls", [])
1033-
self.addParam("skews", [])
10341054

1035-
self.addParam("ea1", 0.0)
1036-
self.addParam("ea2", 0.0)
1037-
self.addParam("rho", 0.0)
1038-
self.addParam("theta", 1.0e-36)
1055+
self.addParam("poles", poles if poles else [])
1056+
self.addParam("kls", kls if kls else [])
1057+
self.addParam("skews", skews if skews else [])
10391058

1040-
self.setnParts(2)
1059+
self.addParam("ea1", ea1)
1060+
self.addParam("ea2", ea2)
1061+
self.addParam("theta", theta)
1062+
1063+
self.setnParts(nparts)
1064+
self.setLength(length)
10411065

10421066
def fringeIN(node, paramsDict):
10431067
usageIN = node.getUsage()

0 commit comments

Comments
 (0)