Support for different phases. Settings have to match the loaded phase

This commit is contained in:
2026-01-21 14:41:19 +01:00
parent 7b7e6ff771
commit b7cdc435d0
23 changed files with 6599 additions and 236 deletions

View File

@@ -139,7 +139,7 @@ class Model:
elif 'MKAC' in ele.Name or 'MKDC' in ele.Name:
kicker[ele.Name] = {'cory': ele.cory,'design_kick':ele.design_kick}
return {'Quadrupole':quadrupoles,'Sextupole':sextupoles,'Dipole':dipoles,'RF':rf,'Undulator':undulators,
'Kicker':kicker,'Energy':energy, 'InitialCondition':self.startTwiss}
'Kicker':kicker,'Energy':energy, 'InitialCondition':self.startTwiss,'Phase':self.phase}
def loadSettingsGroup(self,group,fields,normalized=False):
for key in group.keys():
@@ -150,6 +150,10 @@ class Model:
ele.__dict__[field]/=ele.Length
def loadSettings(self,settings):
if not 'Phase' in settings.keys():
return False
if not settings['Phase'] == self.phase:
return False
self.loadSettingsGroup(settings['Quadrupole'],['k1'])
self.loadSettingsGroup(settings['Sextupole'], ['k2'])
self.loadSettingsGroup(settings['Dipole'], ['angle'])
@@ -163,6 +167,7 @@ class Model:
self.updateEnergy(self.startEnergy)
print('Settings loaded (Reference Energy:',self.om.EnergyAt(self.energyReference)[0],')')
self.forceLat=True
return True
def updateModelFromMatching(self,var):
for magm in var.keys():