本文整理汇总了Python中orbit.teapot.DriftTEAPOT.setLength方法的典型用法代码示例。如果您正苦于以下问题:Python DriftTEAPOT.setLength方法的具体用法?Python DriftTEAPOT.setLength怎么用?Python DriftTEAPOT.setLength使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类orbit.teapot.DriftTEAPOT
的用法示例。
在下文中一共展示了DriftTEAPOT.setLength方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: addTeapotCollimatorNode
# 需要导入模块: from orbit.teapot import DriftTEAPOT [as 别名]
# 或者: from orbit.teapot.DriftTEAPOT import setLength [as 别名]
def addTeapotCollimatorNode(lattice, position, collimator_node):
"""
It will put one Teapot collimation node in the lattice
"""
length_tolerance = 0.0001
lattice.initialize()
if(position > lattice.getLength() ):
position = lattice.getLength();
print "User-specified aperture position is larger than lattice length. Resetting it to lattice length."
collimator_node.setPosition(position);
position_start = position
position_stop = position + collimator_node.getLength()
(node_start_ind,node_stop_ind,z,ind) = (-1,-1, 0., 0)
for node in lattice.getNodes():
if(position_start >= z and position_start <= z + node.getLength()):
node_start_ind = ind
if(position_stop >= z and position_stop <= z + node.getLength()):
node_stop_ind = ind
ind += 1
z += node.getLength()
#-------now we check that between start and end we have only non-modified drift elements
#-------if the space charge was added first - that is a problem. The collimation should be added first.
for node in lattice.getNodes()[node_start_ind:node_stop_ind+1]:
#print "debug node=",node.getName()," type=",node.getType()," L=",node.getLength()
if(not isinstance(node,DriftTEAPOT)):
print "Non-drift node=",node.getName()," type=",node.getType()," L=",node.getLength()
orbitFinalize("We have non-drift element at the place of the collimator! Stop!")
#if(node.getNumberOfChildren() != 4):
#print "Node=",node.getName()," type=",node.getType()," L=",node.getLength()," N children nodes=",node.getNumberOfChildren()
#orbitFinalize("Drift element was modified with additional functionality (SC or something else)! Add collimation first! Stop!")
# make array of nodes from collimator in the center and possible two drifts if their length is more than length_tolerance [m]
nodes_new_arr = [collimator_node,]
drift_node_start = lattice.getNodes()[node_start_ind]
drift_node_stop = lattice.getNodes()[node_stop_ind]
#------now we will create two drift nodes: before the collimator and after
#------if the length of one of these additional drifts less than length_tollerance [m] we skip this drift
if(position_start > lattice.getNodePositionsDict()[drift_node_start][0] + length_tolerance):
drift_node_start_new = DriftTEAPOT(drift_node_start.getName())
drift_node_start_new.setLength(position_start - lattice.getNodePositionsDict()[drift_node_start][0])
nodes_new_arr.insert(0,drift_node_start_new)
if(position_stop < lattice.getNodePositionsDict()[drift_node_stop][1] - length_tolerance):
drift_node_stop_new = DriftTEAPOT(drift_node_stop.getName())
drift_node_stop_new.setLength(lattice.getNodePositionsDict()[drift_node_stop][1] - position_stop)
nodes_new_arr.append(drift_node_stop_new)
#------ now we will modify the lattice by replacing the found part with the new nodes
lattice.getNodes()[node_start_ind:node_stop_ind+1] = nodes_new_arr
# initialize the lattice
lattice.initialize()
示例2: addTeapotDiagnosticsNode
# 需要导入模块: from orbit.teapot import DriftTEAPOT [as 别名]
# 或者: from orbit.teapot.DriftTEAPOT import setLength [as 别名]
def addTeapotDiagnosticsNode(lattice, position, diagnostics_node):
"""
It will put one Teapot diagnostics node in the lattice
"""
length_tollerance = 0.0001
lattice.initialize()
position_start = position
position_stop = position + diagnostics_node.getLength()
diagnostics_node.setPosition(position)
diagnostics_node.setLatticeLength(lattice.getLength())
(node_start_ind,node_stop_ind,z,ind) = (-1,-1, 0., 0)
for node in lattice.getNodes():
if(position_start >= z and position_start <= z + node.getLength()):
node_start_ind = ind
if(position_stop >= z and position_stop <= z + node.getLength()):
node_stop_ind = ind
ind += 1
z += node.getLength()
#-------now we check that between start and end we have only non-modified drift elements
#-------if the space charge was added first - that is a problem. The collimation should be added first.
for node in lattice.getNodes()[node_start_ind:node_stop_ind+1]:
#print "debug node=",node.getName()," type=",node.getType()," L=",node.getLength()
if(not isinstance(node,DriftTEAPOT)):
print "Non-drift node=",node.getName()," type=",node.getType()," L=",node.getLength()
orbitFinalize("We have non-drift element at the place of the diagnostics! Stop!")
# make array of nodes from diagnostics in the center and possible two drifts if their length is more than length_tollerance [m]
nodes_new_arr = [diagnostics_node,]
drift_node_start = lattice.getNodes()[node_start_ind]
drift_node_stop = lattice.getNodes()[node_stop_ind]
#------now we will create two drift nodes: before the diagnostics and after
#------if the length of one of these additional drifts less than length_tollerance [m] we skip this drift
if(position_start > lattice.getNodePositionsDict()[drift_node_start][0] + length_tollerance):
drift_node_start_new = DriftTEAPOT(drift_node_start.getName())
drift_node_start_new.setLength(position_start - lattice.getNodePositionsDict()[drift_node_start][0])
nodes_new_arr.insert(0,drift_node_start_new)
if(position_stop < lattice.getNodePositionsDict()[drift_node_stop][1] - length_tollerance):
drift_node_stop_new = DriftTEAPOT(drift_node_stop.getName())
drift_node_stop_new.setLength(lattice.getNodePositionsDict()[drift_node_stop][1] - position_stop)
nodes_new_arr.append(drift_node_stop_new)
#------ now we will modify the lattice by replacing the found part with the new nodes
lattice.getNodes()[node_start_ind:node_stop_ind+1] = nodes_new_arr
# initialize the lattice
lattice.initialize()
示例3: printM
# 需要导入模块: from orbit.teapot import DriftTEAPOT [as 别名]
# 或者: from orbit.teapot.DriftTEAPOT import setLength [as 别名]
#---PRINT Function for Matrix
def printM(m):
print "----matrix--- size=",m.size()
for i in xrange(m.size()[0]):
for j in xrange(m.size()[1]):
print ("(%1d,%1d)=% 6.5e "%(i,j,m.get(i,j))),
print ""
b = Bunch()
Ekin = 1.0 # in GeV
b.getSyncParticle().kinEnergy(Ekin)
#define TEAPOT drift
node0 = DriftTEAPOT("drift")
node0.setLength(1.0)
#define TEAPOT quad
node1 = QuadTEAPOT("quad")
node1.setLength(1.0)
node1.addParam("kq",0.5)
matrixGenerator = MatrixGenerator()
#========matrix for drift =====
m = Matrix(6,6)
matrixGenerator.initBunch(b)
node0.trackBunch(b)
matrixGenerator.calculateMatrix(b,m)
print "drift matrix L=",node0.getLength()
printM(m)
示例4: addErrorNode
# 需要导入模块: from orbit.teapot import DriftTEAPOT [as 别名]
# 或者: from orbit.teapot.DriftTEAPOT import setLength [as 别名]
def addErrorNode(lattice, position, Error_Node):
"""
This will put one error node into the lattice
"""
length_tolerance = 0.0001
lattice.initialize()
position_start = position
position_stop = position + Error_Node.getLength()
(node_start_ind, node_stop_ind, z, ind) = (-1, -1, 0.0, 0)
for node in lattice.getNodes():
if(position_start >= z and position_start <= z + node.getLength()):
node_start_ind = ind
if(position_stop >= z and position_stop <= z + node.getLength()):
node_stop_ind = ind
ind += 1
z += node.getLength()
"""
Check that between start and end there are only non-modified
drift elements. If space charge was added first - that is a problem.
The collimation should be added first.
"""
for node in lattice.getNodes()[node_start_ind:node_stop_ind + 1]:
"""
print "debug node = ", node.getName(), " type = ", node.getType(),\
" L = ", node.getLength()
"""
if(not isinstance(node, DriftTEAPOT)):
print "Non-drift node = ", node.getName(), " type = ",\
node.getType(), " L = ", node.getLength()
orbitFinalize("We have non-drift element at the place of \
the error node! Stop!")
"""
if(node.getNumberOfChildren() != 4):
print "Node = ", node.getName()," type = ", node.getType(),\
" L = ", node.getLength(), " N child nodes = ",\
node.getNumberOfChildren()
orbitFinalize("Drift element was modified with additional \
functionality (SC or something else)! Add collimation first! \
Stop!")
"""
"""
Make array of nodes with error node in the center and two possible drifts,
if their length is more than length_tollerance [m]
"""
nodes_new_arr = [Error_Node,]
drift_node_start = lattice.getNodes()[node_start_ind]
drift_node_stop = lattice.getNodes()[node_stop_ind]
"""
Now create two drift nodes: before and after the error node.
If the length of either of these additional drifts is less than
length_tollerance [m], skip this drift.
"""
if(position_start > lattice.getNodePositionsDict()[drift_node_start][0] +\
length_tolerance):
drift_node_start_new = DriftTEAPOT(drift_node_start.getName())
drift_node_start_new.setLength(position_start -\
lattice.getNodePositionsDict()[drift_node_start][0])
nodes_new_arr.insert(0, drift_node_start_new)
if(position_stop < lattice.getNodePositionsDict()[drift_node_stop][1] -\
length_tolerance):
drift_node_stop_new = DriftTEAPOT(drift_node_stop.getName())
drift_node_stop_new.setLength(lattice.getNodePositionsDict()[drift_node_stop][1] -\
position_stop)
nodes_new_arr.append(drift_node_stop_new)
"""
Now modify the lattice by replacing the old part with the new nodes
"""
lattice.getNodes()[node_start_ind:node_stop_ind + 1] = nodes_new_arr
"""
Initialize the lattice
"""
lattice.initialize()