跳转至

给不同原子设置不同失谐

用一条局域波形配合两个不同的位点权重。读取绑定值,检查目标网格上的调整,再确认实际执行的是哪个程序。先完成波形设计;这个双原子本地例子使用 120 个时间步和 16 次采样。

局域失谐向 Hamiltonian 加入 −Δ_local(t) Σ_i w_i n_i。包含全局失谐时,对这里的单个局域项,位点 i 的总失谐为 Δ_global(t) + w_i Δ_local(t)。权重无量纲,用来缩放失谐,不是“选中某个原子的概率”。

这里 Δ_local 从零升到 0.8 rad/us,q0 的权重为 1,q1 为 0.25。先预测末端两个位点的失谐。再解释:对于计算基初态,为什么仅有这个对角控制不能激发原子?本实验中的状态跃迁由全局 Rabi 驱动提供。

分开指定时间和空间

"""通过静态 site pattern 施加随时间变化的 local detuning。

Waveform 描述 detuning 随时间的变化,``SitePattern`` 提供与 register 对齐的无量纲
权重。两者保持为独立对象,并用显式支持 local AHS control 的 Target 校验。
"""

from __future__ import annotations

import json

from cascaqit import (
    AHSProgram,
    AtomRegister,
    MockNeutralAtomTarget,
    SitePattern,
    Waveform,
)


def main() -> None:
    """绑定、校验、离散化并运行一个 addressed detuning term。"""
    program = AHSProgram(
        AtomRegister.line(count=2, spacing=5.0),
        program_id="lesson.experimentalist.detuning",
    )
    delta = program.parameter("delta", default=0.8, lower_bound=-2.0, upper_bound=2.0)
    program.drive(
        rabi=Waveform.constant(0.6, duration=0.3),
        detuning=Waveform.constant(0.0, duration=0.3),
        phase=0.0,
    ).local_detuning(
        waveform=Waveform.linear(0.0, delta, duration=0.3),
        pattern=SitePattern.from_mapping({"q0": 1.0, "q1": 0.25}),
    ).measure()
    bound = program.bind({})
    target = MockNeutralAtomTarget.local_ahs_v0_1()
    validated = bound.validate(target, shots=16)
    discretized, report = validated.discretize(target)
    result = bound.run(shots=16, seed=303, time_steps=120)
    term = discretized.program_ir.hamiltonian.local_detuning_terms[0]

    payload = {
        "track": "quantum_experimentalist",
        "level": "applied",
        "lesson": "local_detuning",
        "facts": {
            "site_ids": list(term.addressing.site_ids),
            "weights": list(term.addressing.weights[0]),
            "addressing_frame_count": term.addressing.frame_count,
            "waveform_values": list(term.waveform.values or ()),
            "discretized_paths": [
                item.path
                for item in report.field_reports
                if "local_detuning" in item.path
            ],
            "validation_errors": [
                item.code for item in validated.diagnostics if item.severity == "error"
            ],
            "counts_total": sum(result.counts.values()),
        },
        "boundaries": {
            "hardware_execution": False,
            "cloud_execution": False,
            "network_accessed": False,
            "credentials_loaded": False,
        },
    }
    print(json.dumps(payload, sort_keys=True))


if __name__ == "__main__":
    main()

下载完整脚本

python3 examples/user/tracks/quantum_experimentalist/03_applied_local_detuning_zh.py

bind({}) 使用 delta 的默认值,不是保留未解析参数。SitePattern.from_mapping 为每个填充位点提供权重,SDK 再按寄存器顺序排列;字典插入顺序不决定物理对应关系。

{
  "boundaries": {
    "cloud_execution": false,
    "credentials_loaded": false,
    "hardware_execution": false,
    "network_accessed": false
  },
  "facts": {
    "addressing_frame_count": 1,
    "counts_total": 16,
    "discretized_paths": [],
    "site_ids": [
      "q0",
      "q1"
    ],
    "validation_errors": [],
    "waveform_values": [
      0.0,
      0.8
    ],
    "weights": [
      1.0,
      0.25
    ]
  },
  "lesson": "local_detuning",
  "level": "applied",
  "track": "quantum_experimentalist"
}

末端局域失谐分别为 0.8 和 0.2 rad/us。addressing_frame_count = 1 表示空间权重不随时间变化,即使波形本身在变化。默认数值已经位于模拟目标网格上,因此 discretized_paths 为空。

脚本分成了两条处理路径:查看的是 discretized.program_ir,但 bound.run(...) 执行原始绑定程序。默认值恰好在网格上,这个区别不影响此处解释。如果改成网格外的数值,就不能把这些 counts 描述成调整后程序的执行结果。要执行调整后的程序,可以使用 LocalAhsSimulator(target=target).run(discretized, shots=16),见 Analog 指南。

未提供 target 时,辅助入口 bound.run() 会选择支持局域控制的模拟目标;显式传入保守目标时不会自动替换。解释双原子概率分布时,仍需核对几何以及实际采用的阻塞模型。

一次修改一个控制条件

  1. 对调两个权重,预测每个位点末端失谐,并检查排列后的数组。
  2. 将默认值改为 0.8004,比较绑定波形、输出中的 waveform_values 和 discretized_paths。不修改运行语句时,执行的是哪个程序?
  3. 从 pattern 中去掉 q1,再尝试大于 1 的权重。阅读输入错误,不要给无效配置赋予物理含义。
核对思路

权重对调后,q0 为 0.2,q1 为 0.8 rad/us。默认值为 0.8004 时,最近网格投影把波形终值改为 0.8 并记录字段路径,原始绑定波形仍为 0.8004。原来的 bound.run() 仍运行后者。完整 SitePattern 要覆盖每个填充位点,权重在 [0, 1] 内,并至少有一个非零权重。如果想表达稀疏的二值选择,可以使用 SiteMask。

仅凭十六次采样中的小差异,不能确定某个位点的响应。应查看概率或指定可观测量,并预先决定采样预算再做对照。下一课局域 Rabi 控制用脉冲直接驱动选定原子;局域失谐指南介绍多个叠加项和动态掩码。

English

SDK 1.0.8a · `6eff6362`