Esempio n. 1
0
def replace_QD_with_QDth_lattice(slices,k0,length,label,particle,aperture):
    lattice = Lattice()
    thinlen = length/slices
    for nb in range(slices):
        if FLAGS['express']:
            instance = ELM.QDthx(k0=k0,length=thinlen,label=label,particle=particle,aperture=aperture)
        else:
            instance = ELM.QDth(k0=k0,length=thinlen,label=label,particle=particle,aperture=aperture)
        lattice.add_element(instance)
    return lattice
Esempio n. 2
0
 def make_lattice(latticeList,in_data):
     """ instanciate all elements from flattened node list"""
     lattice = Lattice()
     DEBUG_OFF('make_lattice for sollteilchen\n'+PARAMS['sollteilchen'].string())
     elements = read_elements(in_data)
     for ID in lattice_list:
         element      = elements[ID]
         element      = liofd2d(element)
         elementClass = element['type']
         elmItem      = (elementClass,element)
         # !!INSTANCIATE!!
         (label,instance) = instanciate_element(elmItem)
         section = instance.section if FLAGS['sections'] else '*'
         DEBUG_MODULE('instance {} {} {}'.format(label,instance,section))
         # add element instance to lattice
         if isinstance(instance,ELM._Node):
             lattice.add_element(instance)
     #     elif isinstance(instance,Lattice):
     #         lattice.concat(instance)       # concatenate partial with lattice
     return lattice   # the complete lattice
Esempio n. 3
0
def m_fodo(params):
    kq       = params['kq [1/m^2]']
    lq       = params['quad [m]']
    ld       = params['drift [m]']
    particle = params['particle']
    qf = elm.QF(k0=kq, length=lq/2., label='QF/2', particle=particle)
    qd = elm.QD(k0=kq, length=lq,    label='QD',   particle=particle)
    dr = elm.D(        length=ld,    label='D',    particle=particle)
    
    cell = Lattice()
    cell.add_element(qf)
    cell.add_element(dr)
    cell.add_element(qd)
    cell.add_element(dr)
    cell.add_element(qf)
    return cell
Esempio n. 4
0
def make_thin (kf1,kf2,ld,anz=1,verbose=False):
    kd1 = kf1       # k1 for qf1 & qd1
    ld1 = lf1 = 0.4 # len qf1 & qd1
    ff1 = kf1*lf1   # focal length qf1
    fd1 = kd1*ld1   # focal length qd1

    kf2 = kf2
    kd2 = kf2       # same as above for qf2 & qd2
    lf2 = ld2 = lf1
    ff2 = kf2*lf2
    fd2 = kd2*ld2

    slices = 1      # present the quad by 1 thin-quads   (bad!)
    slices = 3      # present the quad by 3 thin-quads   (better!)
    slices = 6      # present the quad by 6 thin-quads   (near perfect!)
    
    DL  = D(length=ld,label='L')
    QF1 = QFth(k0=kf1,length=0.5*lf1/slices,label='QF1')
    QF2 = QFth(k0=kf2,length=0.5*lf2/slices,label='QF2')
    QD1 = QDth(k0=kd1,length=0.5*ld1/slices,label='QD1')
    QD2 = QDth(k0=kd2,length=0.5*ld2/slices,label='QD2')

    cell = Lattice()
    for i in range(slices): cell.add_element(QD1)
    for i in range(slices): cell.add_element(QF1)
    cell.add_element(DL)
    for i in range(slices): cell.add_element(QD2)
    for i in range(slices): cell.add_element(QF2)
    for i in range(slices): cell.add_element(QF2)
    for i in range(slices): cell.add_element(QD2)
    cell.add_element(DL)
    for i in range(slices): cell.add_element(QF1)
    for i in range(slices): cell.add_element(QD1)

    lat = Lattice()
    for i in range(anz):
        lat.concat(cell)
    lat.cell()
    mcell = lat.accel
    betax = lat.betax0
    betay = lat.betay0

    if verbose:
        # {:.3f}
        print('L= {:.3f}'.format(ld),end=' ')
        print('triplet 1: kf= {:.3f}, kd={:.3f}'.format(kf1,kd1),end=' | ')
        print('triplet 2: kf= {:.3f}, kd={:.3f}'.format(kf2,kd2),end=' | ')
        print('betax= {:.3f}, betay= {:.3f}'.format(betax,betay))
    return lat,betax,betay
Esempio n. 5
0
def make_thick(kf1,kf2,ld,anz=1,verbose=False):
    kf1 = kf1
    kd1 = kf1
    lf1 = 0.4
    ld1 = lf1
    ff1 = kf1*lf1
    fd1 = kd1*ld1

    kf2 = kf2
    kd2 = kf2
    lf2 = lf1
    ld2 = lf2
    ff2 = kf2*lf2
    fd2 = kd2*ld2

    ld = ld

    DL  = D(length=ld,label='L')
    QF1 = QF(k0=kf1,length=0.5*lf1,label='QF1')
    QF2 = QF(k0=kf2,length=0.5*lf2,label='QF2')
    QD1 = QD(k0=kd1,length=0.5*ld1,label='QD1')
    QD2 = QD(k0=kd2,length=0.5*ld2,label='QD2')

    cell = Lattice()
    cell.add_element(QD1)
    cell.add_element(QF1)
    cell.add_element(DL)
    cell.add_element(QD2)
    cell.add_element(QF2)
    cell.add_element(QF2)
    cell.add_element(QD2)
    cell.add_element(DL)
    cell.add_element(QF1)
    cell.add_element(QD1)
    lat = Lattice()
    for i in range(anz):
        lat.concat(cell)
    lat.cell()
    mcell = lat.accel
    betax = lat.betax0
    betay = lat.betay0
    if verbose:
        # {:.3f}
        print('L= {:.3f}'.format(ld),end=' ')
        print('triplet 1: kf= {:.3f}, kd={:.3f}'.format(kf1,kd1),end=' | ')
        print('triplet 2: kf= {:.3f}, kd={:.3f}'.format(kf2,kd2),end=' | ')
        print('betax= {:.3f}, betay= {:.3f}'.format(betax,betay))
    return lat,betax,betay