Skip to content
Snippets Groups Projects
Commit 00233cc9 authored by Watanyu Foosang's avatar Watanyu Foosang
Browse files

Fix cs_invariant method and sigma method

parent 5b0aa938
Branches
Tags
No related merge requests found
...@@ -233,13 +233,17 @@ class Bunch: ...@@ -233,13 +233,17 @@ class Bunch:
@property @property
def cs_invariant(self): def cs_invariant(self):
Jx = (self.ring.optics.local_gamma * np.mean(self['x']**2)) + \ """
(2*self.ring.optics.local_alpha * np.mean(self['x']*self['xp'])) + \ Return the average Couran-Snyder invariant of each plane.
(self.ring.optics.local_beta * np.mean(self['xp']**2))
Jy = (self.ring.optics.local_gamma * np.mean(self['y']**2)) + \ """
(2*self.ring.optics.local_alpha * np.mean(self['y']*self['yp'])) + \ Jx = (self.ring.optics.local_gamma[0] * self['x']**2) + \
(self.ring.optics.local_beta * np.mean(self['yp']**2)) (2*self.ring.optics.local_alpha[0] * self['x'])*self['xp'] + \
return np.array((Jx,Jy)) (self.ring.optics.local_beta[0] * self['xp']**2)
Jy = (self.ring.optics.local_gamma[1] * self['y']**2) + \
(2*self.ring.optics.local_alpha[1] * self['y']*self['yp']) + \
(self.ring.optics.local_beta[1] * self['yp']**2)
return np.array((np.mean(Jx),np.mean(Jy)))
@property @property
def energy_change(self): def energy_change(self):
......
...@@ -244,11 +244,11 @@ class Synchrotron: ...@@ -244,11 +244,11 @@ class Synchrotron:
sigma = np.zeros((4,)) sigma = np.zeros((4,))
sigma[0] = (self.emit[0]*self.optics.local_beta[0] + sigma[0] = (self.emit[0]*self.optics.local_beta[0] +
self.optics.local_dispersion[0]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[0]**2*self.sigma_delta)**0.5
sigma[1] = (self.emit[0]*self.optics.local_alpha[0] + sigma[1] = (self.emit[0]*self.optics.local_gamma[0] +
self.optics.local_dispersion[1]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[1]**2*self.sigma_delta)**0.5
sigma[2] = (self.emit[1]*self.optics.local_beta[1] + sigma[2] = (self.emit[1]*self.optics.local_beta[1] +
self.optics.local_dispersion[2]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[2]**2*self.sigma_delta)**0.5
sigma[3] = (self.emit[1]*self.optics.local_alpha[1] + sigma[3] = (self.emit[1]*self.optics.local_gamma[1] +
self.optics.local_dispersion[3]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[3]**2*self.sigma_delta)**0.5
else: else:
if isinstance(position, (float, int)): if isinstance(position, (float, int)):
...@@ -258,11 +258,11 @@ class Synchrotron: ...@@ -258,11 +258,11 @@ class Synchrotron:
sigma = np.zeros((4, n)) sigma = np.zeros((4, n))
sigma[0,:] = (self.emit[0]*self.optics.beta(position)[0] + sigma[0,:] = (self.emit[0]*self.optics.beta(position)[0] +
self.optics.dispersion(position)[0]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[0]**2*self.sigma_delta)**0.5
sigma[1,:] = (self.emit[0]*self.optics.alpha(position)[0] + sigma[1,:] = (self.emit[0]*self.optics.gamma(position)[0] +
self.optics.dispersion(position)[1]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[1]**2*self.sigma_delta)**0.5
sigma[2,:] = (self.emit[1]*self.optics.beta(position)[1] + sigma[2,:] = (self.emit[1]*self.optics.beta(position)[1] +
self.optics.dispersion(position)[2]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[2]**2*self.sigma_delta)**0.5
sigma[3,:] = (self.emit[1]*self.optics.alpha(position)[1] + sigma[3,:] = (self.emit[1]*self.optics.gamma(position)[1] +
self.optics.dispersion(position)[3]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[3]**2*self.sigma_delta)**0.5
return sigma return sigma
#------------------------------------------ #------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment