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
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