ATIP:Pytac加速器工具箱接口
项目描述
ATIP - Pytac加速器工具箱接口
ATIP是Pytac的一个补充,Pytac是一个用于控制粒子加速器的框架。ATIP向Pytac添加了一个模拟器,它可以像真实加速器一样使用和引用。
ATIP通过两种方法之一使高级加速器控制应用的离线测试变得简单
通过在Pytac晶格对象中替换软件所引用的真实加速器;
作为一个独立的应用程序作为“虚拟加速器”,发布与实时机器相同的控制系统接口。在Diamond Light Source,这已经通过EPICS实现,并在不同的端口上运行操作控制系统。因此,测试软件所需做的唯一更改是配置此EPICS端口。
本文档使用Python实现的加速器工具箱(pyAT)进行仿真。
有关ATIP的任何功能或类的更多信息,请参阅此处的文档。
安装
请参阅INSTALL.rst文档。
通用使用
ATIP生成一个“集成晶格”,这是一个添加了模拟数据源的Pytac晶格对象。使用load_sim.py中找到的load()函数添加模拟数据源。
这将在晶格及其每个元件上添加pytac.SIM数据源。
集成晶格的行为类似于正常的Pytac晶格;模拟器可以像实际机器一样引用,但数据源指定为pytac.SIM而不是pytac.LIVE。
例如,对BPM的get请求将是<bpm-element>.get_value('x', data_source=pytac.SIM)。
模拟数据源的行为与实际机器完全相同,但有一些例外。例如,模拟器有一些晶格字段,而实际加速器没有;实际机器有一些元件字段,而模拟器没有。
示例
请注意,您需要一个与Pytac兼容的AT晶格。一些在atip/rings/中提供,否则尝试使用加载AT晶格的Matlab函数atip/rings/create_lattice_matfile.m运行。
>>> import pytac
>>> import atip
>>> # Load the DIAD lattice from Pytac.
>>> lat = pytac.load_csv.load('DIAD')
>>> # Load the AT sim into the Pytac lattice.
>>> atip.load_sim.load_from_filepath(lat, 'atip/rings/diad.mat')
>>> # Use the sim by default.
>>> lat.set_default_data_source(pytac.SIM)
>>> # The initial beam position is zero.
>>> lat.get_value('x')
array([0., 0., 0., ..., 0., 0., 0.])
>>> # Get the first horizontal corrector magnet and set its current to 1A.
>>> hcor1 = lat.get_elements('HSTR')[0]
>>> hcor1.set_value('x_kick', 1, units=pytac.ENG)
>>> # Now the x beam position has changed.
>>> lat.get_value('x')
array([0.00240101, 0.00240101, 0.00239875, ..., 0.00240393, 0.00240327,
0.00240327])
>>>
虚拟加速器
有关将ATIP用作虚拟加速器的说明,请参阅virtac/README.rst。
实现
模拟器的所有加速器数据都存储在一个ATSimulator对象中,该对象由晶格和每个元件的数据源引用。每个Pytac元件都有一个等效的pyAT元件,存储在ATElementDataSource中;当发出get请求时,返回该AT元件的适当数据。
ATSimulator对象有一个待处理的更改队列。当一个元件收到set请求时,该元件将更改放入ATSimulator的队列中。在ATSimulator内部,一个Cothread线程检查队列的长度。当它看到队列上的更改时,线程重新计算晶格的物理数据以确保其最新。这意味着ATSimulator持有的发射率和线性光学数据在每次更改批次后更新,并且无需过度计算,晶格的物理数据始终可用。
API
- load_sim
load_from_filepath(pytac_lattice, at_lattice_filepath, callback=None) - 从给定的文件路径到.mat文件加载AT晶格,然后调用load。
load(pytac_lattice, at_lattice, callback=None) - 将模拟器加载到传递的Pytac晶格中,回调是一个在创建ATSimulator时传递的可调用对象,用于在每个物理计算轮次完成后调用。
- ATElementDataSource
get_fields() - 返回元件上的字段。
add_field(field) - 将给定的字段添加到该元件的数据源。
get_value(field) - 获取元件上给定字段的值。
set_value(field, value) - 设置元件上给定字段的值,将更改追加到队列。
- ATLatticeDataSource
get_fields() - 返回晶格上的字段。
get_value(field) - 获取晶格上给定字段的值。
set_value(field, set_value) - 设置晶格上给定字段的值,当前不支持,因此引发 HandleException。
- ATSimulator
toggle_calculations() - 暂停或恢复重新计算线程。
wait_for_calculations(timeout=10) - 等待最多 'timeout' 秒,直到当前计算完成,如果完成则返回 True,否则返回 False;如果没有传递 'timeout',则等待 10 秒。
get_at_element(index) - 返回中心 AT 环中指定 AT 元素的浅拷贝,注意:索引 1 返回 ring[0]。
get_at_lattice() - 返回整个集中化 AT 晶格对象的浅拷贝。
get_s() - 返回晶格中每个元素的 's 位置'。
get_total_bend_angle() - 返回晶格中所有偶极子的总弯曲角度。
get_total_absolute_bend_angle() - 返回晶格中所有偶极子的总绝对弯曲角度。
get_energy() - 返回晶格的能量。
get_tune(field) - 返回晶格的指定平面 '调谐';'x' 或 'y'。
get_chromaticity(field) - 返回晶格的指定平面 '色散';'x' 或 'y'。
get_orbit(field) - 返回晶格的指定平面 '闭合轨道';'x'、'phase_x'、'y' 或 'phase_y'。
get_dispersion() - 返回晶格中每个元素的 '色散' 向量。
get_alpha() - 返回晶格中每个元素的 'alpha' 向量。
get_beta() - 返回晶格中每个元素的 'beta' 向量。
get_mu() - 返回晶格中每个元素的 'mu' 值。
get_m44() - 返回晶格中每个元素的 4x4 传递矩阵。
get_emittance(field) - 返回晶格的指定平面 '发射度';'x' 或 'y'。
get_radiation_integrals() - 返回晶格的 5 个同步积分。
get_momentum_compaction() - 返回晶格的动量压缩因子。
get_energy_spread() - 返回晶格的能量分散。
get_energy_loss() - 返回晶格每圈的能量损失。
get_damping_partition_numbers() - 返回晶格三个正常模式的阻尼分数量。
get_damping_times() - 返回晶格三个正常模式的阻尼时间。
get_linear_dispersion_action() - 返回晶格的线性色散作用(“卷曲 H”)。
get_horizontal_emittance() - 返回晶格的横向('x')发射度,该发射度是根据辐射积分计算的。
特别说明
为了使 ATIP 正确运行,使用的 AT 和 Pytac 晶格必须是直接等效的,即它们必须具有相同的长度,并且相同位置的元素。
如果使用本地(非 pip)安装,ATIP、AT 和 Pytac 必须都位于同一源目录中,以便 ATIP 正确运行。
ATIP 数据源上的方法仅接受 handle 和 throw 参数,以符合它们继承的 Pytac DataSource 基类。在 ATIP 内部,它们不被使用,可以忽略。
为了解释需要返回或设置哪些数据,ATElementDataSource 和 ATLatticeDataSource 都使用一个对应字段的函数字典。在需要将单元格传递给数据处理函数的情况下,为了进一步指定,使用了 functools 的 partial()。
物理数据从 AT 整体接收;为了便于管理,它被 ATIP 分割,并通过 ATSimulator 对象的多个方法进行访问。这旨在为用户带来更多便利,但这也导致 ATSimulator 对象具有大量方法。
在 utils.py 中包含了一些执行频繁或繁琐任务的函数,以使用户的生活更加轻松。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
atip-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 881c7376fb70215a561f6ceca3136a2a73c003d26087b849d846aa39dd53d0e3 |
|
MD5 | 7e7070d3a9fa002f12b7e5067076132b |
|
BLAKE2b-256 | 929efba15437de420e12d1a8a3f6c2168f66ef9316aa79e3a2e3a1050fbed615 |
atip-0.1.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f820b4de5496e93d4ddc157db1a0a7eeafbe65e7465953a2783c278e13e8d809 |
|
MD5 | f084468224f75025d758099fbea11373 |
|
BLAKE2b-256 | bac449ba41608ce6468b1891303d68e551599ae903419d14bc8cfeaca33e27c4 |