Skip to content
Snippets Groups Projects

Prepare version 0.8.0

5 files
+ 140
28
Compare changes
  • Side-by-side
  • Inline

Files

+ 28
26
@@ -444,6 +444,10 @@ def transverse_map_sector_generator(ring, positions):
"""
N_sec = len(positions)
sectors = []
if hasattr(ring, "adts") and ring.adts is not None:
adts = np.array([val / N_sec for val in ring.adts])
else:
adts = None
if ring.optics.use_local_values:
for i in range(N_sec):
sectors.append(
@@ -455,56 +459,54 @@ def transverse_map_sector_generator(ring, positions):
ring.optics.local_beta,
ring.optics.local_dispersion,
2 * np.pi * ring.tune / N_sec,
ring.chro / N_sec,
adts=ring.adts /
N_sec if ring.adts else None))
np.asarray(ring.chro) / N_sec,
adts=adts))
else:
import at
def _compute_chro(ring, pos, dp=1e-2, order=4):
def _compute_chro(ring, N_sec, dp=1e-2, order=4):
lat = deepcopy(ring.optics.lattice)
lat.append(at.Marker("END"))
fit, dpa, tune = at.physics.nonlinear.chromaticity(lat,
method='linopt',
dpm=dp,
n_points=100,
order=order)
fit, _, _ = at.physics.nonlinear.chromaticity(lat,
method='linopt',
dpm=dp,
n_points=100,
order=order)
Chrox, Chroy = fit[0, 1:], fit[1, 1:]
chrox = np.interp(pos, s, Chrox)
chroy = np.interp(pos, s, Chroy)
chrox = np.array([np.linspace(0, val, N_sec) for val in Chrox])
chroy = np.array([np.linspace(0, val, N_sec) for val in Chroy])
return np.array([chrox, chroy])
_chro = _compute_chro(ring, N_sec)
for i in range(N_sec):
alpha0 = ring.optics.alpha(positions[i])
beta0 = ring.optics.beta(positions[i])
dispersion0 = ring.optics.dispersion(positions[i])
mu0 = ring.optics.mu(positions[i])
chro0 = _compute_chro(ring, positions[i])
chro0 = _chro[:, i]
if i != (N_sec - 1):
alpha1 = ring.optics.alpha(positions[i + 1])
beta1 = ring.optics.beta(positions[i + 1])
dispersion1 = ring.optics.dispersion(positions[i + 1])
mu1 = ring.optics.mu(positions[i + 1])
chro1 = _compute_chro(ring, positions[i + 1])
chro1 = _chro[:, i + 1]
else:
alpha1 = ring.optics.alpha(positions[0])
beta1 = ring.optics.beta(positions[0])
dispersion1 = ring.optics.dispersion(positions[0])
mu1 = ring.optics.mu(ring.L)
chro1 = _compute_chro(ring, ring.L)
chro1 = _chro[:, -1]
phase_diff = mu1 - mu0
chro_diff = chro1 - chro0
sectors.append(
TransverseMapSector(
ring,
alpha0,
beta0,
dispersion0,
alpha1,
beta1,
dispersion1,
phase_diff,
chro_diff,
))
TransverseMapSector(ring,
alpha0,
beta0,
dispersion0,
alpha1,
beta1,
dispersion1,
phase_diff,
chro_diff,
adts=adts))
return sectors
Loading