示例#1
0
    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)
示例#2
0
        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
示例#3
0
}, {
    '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'
示例#4
0
# 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:
示例#5
0
    def _printTracker(self):
        """Only for checking everything works"""
        madxCode = self.tracker(0, np.random.randn(200, 200), Settings('dummy', 'dum'))

        print(madxCode)
示例#6
0
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
示例#7
0
# -*- 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
示例#8
0
# -*- 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)
示例#9
0
# -*- 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'