def run(self, studyname = None, studygroup = 'ripple', nturns = 50000, nbatches = 500, nparperbatch = 200, seed = 0, pycollimate = False, elements = ['AP.UP.ZS21633','AP.DO.ZS21676','AP.UP.TPST21760'], ffile = 500, savetracks = False, **mySettings): # Create settings instance if studyname is None: studyname = self.folder self.settings = Settings(self.folder, studygroup = studygroup, disk = 'afsproject') # Set folder name for the study in the studyGroup directory self.settings.name = self.folder # Set tracker to custom self.settings.trackerrep = lambda k, data, settings: self.tracker(k, data, settings) # Set random seed self.settings.seed = seed # Use pyCollimate scattering routine self.settings.pycollimate = pycollimate # Observe losses at these elements self.settings.elements = elements # Simulation length in number of turns self.settings.nturns = nturns # Save tracks every ffile turns self.settings.ffile = ffile # Number of batches self.settings.nbatches = nbatches # number of batches # Number of particles per batch self.settings.nparperbatch = nparperbatch # particles per batch # Save track files - takes up a lot of space self.settings.savetracks = savetracks # Other settings for mySetting in mySettings: setattr(self.settings, mySetting, mySettings[mySetting]) submit_job(self.settings)
for partnum in range(settings.nparperbatch): temp = "obs" + str(obsnum + 1).zfill(4) + ".p" + str(partnum + 1).zfill(4) line += "EXEC, savetrack(50, track." + temp + ", '" + str( k) + "/" + temp + "');\n" line += "\n" if (settings.saveloss): line += "WRITE, TABLE = trackloss, FILE = 'losses.tfs';\n\n" line += "SYSTEM, 'tar -czf tracks.tar.gz " + str(k) + "';" return line settings = Settings('pc_tracks', studygroup='test', disk='afsproject') settings.trackerrep = track_test settings.saveout = False settings.seed = 0 settings.elements = ['AP.UP.ZS21633_M', 'AP.DO.ZS21676_M', 'TPST.21760'] settings.nturns = 50000 settings.nbatches = 100 settings.nparperbatch = 1000 settings.ffile = 1 settings.dynamicbump = False settings.pycollimate = True
}, { 'pyK2': '-1.02', 'pyK4': '7640.6976', 'pyEXTRBUMP': 0.032 }] for seed in range(1): for i, replace in enumerate(replacements): if replace['pyEXTRBUMP'] == None: replace['pyEXTRBUMP'] = 'knob_extr_bump' else: replace['pyEXTRBUMP'] = str((0.068 - replace['pyEXTRBUMP']) / 0.0436825) + "*knob_extr_bump" name = "case" + str(i) + "_seed" + str(seed) settings = Settings(name, studygroup='multitest', disk='afsprivate') #settings.local=True #settings.trackingbool=False settings.nturns = 50000 settings.nbatches = 1000 settings.nparperbatch = 25 settings.ffile = 500 settings.dppmax = 0.0000 replace['pyNTURNS'] = str(settings.nturns) replace['pyDPPMAX'] = str(settings.dppmax) if i == 0: replace['pyBET1'] = '104.3784939' replace['pyBET2'] = '108.7895038'
# Simulations with sweep for mode in modes: for pc, db, fast in [(x, y, z) for x in bl for y in bl for z in bl]: if pc and not fast: continue if db and mode == 'cose': continue name = mode name += "_db" if db else "_nodb" name += "_fast" if fast else "" name += "_pc" if pc else "_nopc" settings = Settings(name, studygroup="nominal", disk='afsproject') settings.seed = 0 settings.pycollimate = pc settings.dynamicbump = db if mode == 'cose': settings.cose = True elif mode == 'ampex': settings.ampex = True if fast: settings.nturns = 50000 settings.ffile = 500 if pc: settings.flavour = "testmatch" else:
def _printTracker(self): """Only for checking everything works""" madxCode = self.tracker(0, np.random.randn(200, 200), Settings('dummy', 'dum')) print(madxCode)
Will work for pc/nopc and db/nodb, but only with sweep, not with slices. Is a bit more hacky than momentum based... """ import sys import numpy as np sys.path.insert(1, '/afs/cern.ch/project/sloex/code/madxBatch') from python.batching import Settings, submit_job from python.batching import __version__ as currversion testversion = '0.02.003' if not currversion == testversion: print('This example was tested with version ' + testversion + ' and is not guaranteed to work properly in the current ' + 'version (v' + currversion + '). Please check.') settings = Settings('ampex', studygroup='test', disk='afsproject') settings.madxversion = '/afs/cern.ch/user/m/mad/bin/rel/5.03.06/madx-linux64-gnu' settings.finalchanges = "/afs/cern.ch/user/l/listoel/Desktop/SloExCode/madxBatch/madx/ampex_finalchanges.cmdx" settings.dynamicbump = True settings.pycollimate = False settings.seed = 0 settings.elements = ['AP.UP.ZS21633', 'AP.DO.ZS21676', 'AP.UP.TPST21760'] settings.nturns = 50000 settings.nbatches = 100 settings.nparperbatch = 50 settings.ffile = 50000
# -*- coding: utf-8 -*- """ Example SPS slow extraction study: decapole folding @author: Linda Stoel """ from python.batching import Settings, submit_job settings = Settings('test', studygroup='test', disk='afsproject') settings.trackingbool = True settings.trackertemplate = settings.home + "/madx/tracker_nominal_template.madx" settings.local = False settings.monitor = False settings.seed = 0 settings.elements = ['AP.UP.ZS21633', 'AP.DO.ZS21676', 'AP.UP.TPST21760'] #settings.elements=['AP.UP.ZS21633_M','AP.DO.ZS21676_M','TPST.21760'] settings.nturns = 300 settings.nbatches = 10 settings.nparperbatch = 100 settings.ffile = 1 settings.slices = None #[-0.0015,0.0,0.0015] settings.slicewidth = 0.0 settings.dynamicbump = True settings.pycollimate = False settings.flavour = None
# -*- coding: utf-8 -*- """ Example SPS slow extraction study: decapole folding @author: Linda Stoel """ import math from python.batching import Settings, submit_job for nturns in [100000, 150000]: #[1000, 5000, 10000, 100000, 150000]: for db in [False]: #[False, True]: settings = Settings("sweepspeed_db" + str(int(db)) + "_n" + str(nturns), studygroup="benchmarks", disk='afspublic') settings.dynamicbump = db settings.pycollimate = False settings.elements = ['AP.UP.ZS21633'] settings.seed = 0 settings.nturns = nturns settings.nbatches = 10000 settings.nparperbatch = 10 settings.ffile = math.floor(nturns / 100) submit_job(settings)
# -*- coding: utf-8 -*- """ Example SPS slow extraction study: diffuser positioning @author: Linda Stoel """ from python.batching import Settings, submit_job for diffpos in [6900, 6895, 6890, 6905]: settings = Settings(str(diffpos), studygroup='difftest', disk='afspublic') settings.trackingbool = True settings.trackertemplate = settings.home + "/madx/tracker_diffuser_template.madx" settings.local = False settings.monitor = False settings.seed = 0 settings.elements = ['AP.UP.ZS21633_M', 'AP.UP.TPST21760'] settings.septadb = settings.home + "/input/septa_DB_template.tfs" settings.septadbreplace = {'diffpos': str(diffpos / 100000.0)} settings.nturns = 10000 settings.nbatches = 1000 settings.nparperbatch = 25 settings.ffile = 1 settings.dynamicbump = True settings.pycollimate = True settings.flavour = 'workday'