{ "cells": [ { "cell_type": "markdown", "id": "c4ee5bcf-35c3-4b10-b454-05184638b405", "metadata": {}, "source": [ "# Space Charge Benchmark\n", "\n", "Impact-Z only space charge benchmark from\n", "\n", "C. Mayes, R. Ryne, D. Sagan\n", "3D SPACE CHARGE IN BMAD\n", "https://epaper.kek.jp/ipac2018/papers/thpak085.pdf" ] }, { "cell_type": "code", "execution_count": 1, "id": "d1db5730-d9df-4acb-a69d-9fda86c3fbcd", "metadata": { "execution": { "iopub.execute_input": "2025-05-07T01:46:25.425291Z", "iopub.status.busy": "2025-05-07T01:46:25.425128Z", "iopub.status.idle": "2025-05-07T01:46:26.927121Z", "shell.execute_reply": "2025-05-07T01:46:26.926545Z" } }, "outputs": [], "source": [ "import impact.z as IZ\n", "from impact.z import ImpactZ, ImpactZInput, WriteFull, Drift\n", "\n", "from scipy.constants import c\n", "\n", "from pmd_beamphysics.units import mec2\n", "\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "id": "f0dbabdc-47a7-4f53-9d75-06f2956a4c1d", "metadata": { "execution": { "iopub.execute_input": "2025-05-07T01:46:26.929182Z", "iopub.status.busy": "2025-05-07T01:46:26.928744Z", "iopub.status.idle": "2025-05-07T01:46:26.931758Z", "shell.execute_reply": "2025-05-07T01:46:26.931292Z" } }, "outputs": [], "source": [ "energy0 = 10e6\n", "gamma0 = energy0 / mec2\n", "betagamma0 = np.sqrt(gamma0**2 - 1)\n", "sigma_x0 = 1e-3\n", "sigma_y0 = 1e-3\n", "sigma_z0 = 0.1e-3\n", "\n", "beta_x0 = 1000\n", "beta_y0 = 100\n", "n_particle = 100_000" ] }, { "cell_type": "code", "execution_count": 3, "id": "16bf3251-1667-4c09-abdb-a181f80d6265", "metadata": { "execution": { "iopub.execute_input": "2025-05-07T01:46:26.933289Z", "iopub.status.busy": "2025-05-07T01:46:26.933125Z", "iopub.status.idle": "2025-05-07T01:46:26.953961Z", "shell.execute_reply": "2025-05-07T01:46:26.953482Z" } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", "\n", "
\n", "\n", "\n", "\n", "\n", "ImpactZInput(\n",
" seed=-1,\n",
" n_particle=100000,\n",
" nx=32,\n",
" ny=32,\n",
" nz=32,\n",
" distribution=IZ.DistributionType.gauss,\n",
" twiss_beta_x=1000.0,\n",
" twiss_norm_emit_x=1.954394516081986e-08,\n",
" twiss_beta_y=100.0,\n",
" twiss_norm_emit_y=1.9543945160819862e-07,\n",
" twiss_beta_z=156107.99655273516,\n",
" twiss_norm_emit_z=1.5610799655273516e-07,\n",
" average_current=0.13000000000000006,\n",
" reference_kinetic_energy=9489001.04931,\n",
" reference_particle_mass=510998.95069,\n",
" reference_particle_charge=-1.0,\n",
" reference_frequency=1300000000.0,\n",
" lattice=[\n",
" WriteFull(name='initial_particles', file_id=100),\n",
" Drift(name='P1', metadata={'bmad_csr': False, 'bmad_id': 1}, length=1.0, steps=100, map_steps=100),\n",
" WriteFull(name='final_particles', file_id=101)\n",
" ]\n",
")\n",
"
\n",
"\n",
"\n",
"\n",
" ImpactZInput(\n",
" initial_particles=None,\n",
" ncpu_y=1,\n",
" ncpu_z=1,\n",
" gpu=IZ.GPUFlag.disabled,\n",
" seed=-1,\n",
" n_particle=100000,\n",
" integrator_type=IZ.IntegratorType.linear_map,\n",
" err=1,\n",
" diagnostic_type=IZ.DiagnosticType.extended,\n",
" nx=32,\n",
" ny=32,\n",
" nz=32,\n",
" boundary_type=IZ.BoundaryType.trans_open_longi_open,\n",
" radius_x=0.0,\n",
" radius_y=0.0,\n",
" z_period_size=0.0,\n",
" distribution=IZ.DistributionType.gauss,\n",
" restart=0,\n",
" subcycle=0,\n",
" nbunch=1,\n",
" particle_list=[0],\n",
" current_list=[0.0],\n",
" charge_over_mass_list=[0.0],\n",
" twiss_alpha_x=0.0,\n",
" twiss_beta_x=1000.0,\n",
" twiss_norm_emit_x=1.954394516081986e-08,\n",
" twiss_mismatch_x=1.0,\n",
" twiss_mismatch_px=1.0,\n",
" twiss_offset_x=0.0,\n",
" twiss_offset_px=0.0,\n",
" twiss_alpha_y=0.0,\n",
" twiss_beta_y=100.0,\n",
" twiss_norm_emit_y=1.9543945160819862e-07,\n",
" twiss_mismatch_y=1.0,\n",
" twiss_mismatch_py=1.0,\n",
" twiss_offset_y=0.0,\n",
" twiss_offset_py=0.0,\n",
" twiss_alpha_z=1e-09,\n",
" twiss_beta_z=156107.99655273516,\n",
" twiss_norm_emit_z=1.5610799655273516e-07,\n",
" twiss_mismatch_z=1.0,\n",
" twiss_mismatch_e_z=1.0,\n",
" twiss_offset_phase_z=0.0,\n",
" twiss_offset_energy_z=0.0,\n",
" average_current=0.13000000000000006,\n",
" reference_kinetic_energy=9489001.04931,\n",
" reference_particle_mass=510998.95069,\n",
" reference_particle_charge=-1.0,\n",
" reference_frequency=1300000000.0,\n",
" initial_phase_ref=0.0,\n",
" lattice=[\n",
" WriteFull(\n",
" name='initial_particles',\n",
" metadata={},\n",
" length=0.0,\n",
" steps=0,\n",
" file_id=100,\n",
" type_id=-2,\n",
" unused_2=0.0,\n",
" sample_frequency=0\n",
" ),\n",
" Drift(\n",
" name='P1',\n",
" metadata={'bmad_csr': False, 'bmad_id': 1},\n",
" length=1.0,\n",
" steps=100,\n",
" map_steps=100,\n",
" type_id=0,\n",
" radius=1.0\n",
" ),\n",
" WriteFull(\n",
" name='final_particles',\n",
" metadata={},\n",
" length=0.0,\n",
" steps=0,\n",
" file_id=101,\n",
" type_id=-2,\n",
" unused_2=0.0,\n",
" sample_frequency=0\n",
" )\n",
" ],\n",
" filename=None,\n",
" verbose=False\n",
")\n",
"
\n",
"\n",
"\n",
"\n",
"