Traveling wave cavity - Comparing to Bmad¶
In [1]:
Copied!
import numpy as np
from pmd_beamphysics import single_particle
from pmd_beamphysics.units import mec2
from pytao import Tao
import impact.z as IZ
from impact.tests.z.conftest import bmad_files
from impact.z.interfaces.bmad import plot_impactz_and_tao_stats, track_tao
import numpy as np
from pmd_beamphysics import single_particle
from pmd_beamphysics.units import mec2
from pytao import Tao
import impact.z as IZ
from impact.tests.z.conftest import bmad_files
from impact.z.interfaces.bmad import plot_impactz_and_tao_stats, track_tao
Initial Particles¶
In [2]:
Copied!
reference_particle_mass = mec2
energy = 10e6
pz = np.sqrt(energy**2 - mec2**2)
P0 = single_particle(x=1e-3, pz=pz)
reference_particle_mass = mec2
energy = 10e6
pz = np.sqrt(energy**2 - mec2**2)
P0 = single_particle(x=1e-3, pz=pz)
Tao¶
In [3]:
Copied!
!cat $bmad_files/lcavity.bmad
!cat $bmad_files/lcavity.bmad
parameter[e_tot]    = 10e6
parameter[particle] = electron
parameter[geometry] = open
beginning[beta_a]    = 10
beginning[beta_b]    = 10
swcav: lcavity, L = 1.1,
    rf_frequency = 1300e6,
    voltage = 1e6,
    phi0=.3,
    N_CELL = 9,
    num_steps = 10,
    tracking_method = runge_kutta
twcav: swcav, cavity_type = traveling_wave
lat: line = (swcav)
use, lat
In [4]:
Copied!
tao = Tao(lattice_file=bmad_files / "lcavity.bmad", plot="mpl")
tao.plot("beta", include_layout=False)
tao = Tao(lattice_file=bmad_files / "lcavity.bmad", plot="mpl")
tao.plot("beta", include_layout=False)
In [5]:
Copied!
Ptao = track_tao(tao, P0)
Ptao = track_tao(tao, P0)
Tao¶
In [6]:
Copied!
I = IZ.ImpactZ.from_tao(tao, initial_particles=P0)
I.input.plot()
I.input
I = IZ.ImpactZ.from_tao(tao, initial_particles=P0)
I.input.plot()
I.input
Out[6]:
ImpactZInput(
    initial_particles=<ParticleGroup with 1 particles at 0x7fecd1896900>,
    seed=-1,
    n_particle=1,
    nx=64,
    ny=64,
    nz=64,
    distribution=IZ.DistributionType.read,
    particle_list=[1],
    charge_over_mass_list=[-1.956951180916719e-06],
    twiss_beta_x=10.0,
    twiss_beta_y=10.0,
    average_current=0.0,
    reference_kinetic_energy=9489001.04931,
    reference_particle_mass=510998.95069,
    reference_particle_charge=-1.0,
    reference_frequency=1300000000.0,
    lattice=[
        ToggleSpaceCharge(),
        WriteFull(name='initial_particles', file_id=100),
        IntegratorTypeSwitch(metadata={'bmad_id': 1}, integrator_type=IZ.IntegratorType.runge_kutta),
        SolenoidWithRFCavity(
            name='SWCAV',
            metadata={'bmad_csr': False, 'bmad_sc': False, 'bmad_id': 1},
            length=1.1,
            steps=324,
            map_steps=10,
            field_scaling=-1927259.2167004335,
            rf_frequency=1300000000.0,
            phase_deg=148.34855170903592,
            file_id=500.0,
            radius=0.03
        ),
        IntegratorTypeSwitch(metadata={'bmad_id': 1}),
        WriteFull(name='WRITE_END', metadata={'bmad_id': 2}, file_id=200),
        WriteFull(name='final_particles', file_id=101)
    ]
)
Including defaults
ImpactZInput(
    initial_particles=<ParticleGroup with 1 particles at 0x7fecd1896900>,
    ncpu_y=1,
    ncpu_z=1,
    gpu=IZ.GPUFlag.disabled,
    seed=-1,
    n_particle=1,
    integrator_type=IZ.IntegratorType.linear_map,
    err=1,
    diagnostic_type=IZ.DiagnosticType.extended,
    nx=64,
    ny=64,
    nz=64,
    boundary_type=IZ.BoundaryType.trans_open_longi_open,
    radius_x=0.0,
    radius_y=0.0,
    z_period_size=0.0,
    distribution=IZ.DistributionType.read,
    restart=0,
    subcycle=0,
    nbunch=1,
    particle_list=[1],
    current_list=[0.0],
    charge_over_mass_list=[-1.956951180916719e-06],
    twiss_alpha_x=0.0,
    twiss_beta_x=10.0,
    twiss_norm_emit_x=1e-06,
    twiss_mismatch_x=1.0,
    twiss_mismatch_px=1.0,
    twiss_offset_x=0.0,
    twiss_offset_px=0.0,
    twiss_alpha_y=0.0,
    twiss_beta_y=10.0,
    twiss_norm_emit_y=1e-06,
    twiss_mismatch_y=1.0,
    twiss_mismatch_py=1.0,
    twiss_offset_y=0.0,
    twiss_offset_py=0.0,
    twiss_alpha_z=1e-09,
    twiss_beta_z=1.0,
    twiss_norm_emit_z=1e-06,
    twiss_mismatch_z=1.0,
    twiss_mismatch_e_z=1.0,
    twiss_offset_phase_z=0.0,
    twiss_offset_energy_z=0.0,
    average_current=0.0,
    reference_kinetic_energy=9489001.04931,
    reference_particle_mass=510998.95069,
    reference_particle_charge=-1.0,
    reference_frequency=1300000000.0,
    initial_phase_ref=0.0,
    lattice=[
        ToggleSpaceCharge(
            name='',
            metadata={},
            length=0.0,
            steps=0,
            map_steps=0,
            type_id=-14,
            unused=0.0,
            enable=False
        ),
        WriteFull(
            name='initial_particles',
            metadata={},
            length=0.0,
            steps=0,
            file_id=100,
            type_id=-2,
            unused_2=0.0,
            sample_frequency=0
        ),
        IntegratorTypeSwitch(
            name='',
            metadata={'bmad_id': 1},
            length=0.0,
            steps=0,
            integrator_type=IZ.IntegratorType.runge_kutta,
            type_id=-25,
            unused=0.0
        ),
        SolenoidWithRFCavity(
            name='SWCAV',
            metadata={'bmad_csr': False, 'bmad_sc': False, 'bmad_id': 1},
            length=1.1,
            steps=324,
            map_steps=10,
            type_id=105,
            field_scaling=-1927259.2167004335,
            rf_frequency=1300000000.0,
            phase_deg=148.34855170903592,
            file_id=500.0,
            radius=0.03,
            misalignment_error_x=0.0,
            misalignment_error_y=0.0,
            rotation_error_x=0.0,
            rotation_error_y=0.0,
            rotation_error_z=0.0,
            bz0=0.0,
            aperture_size_for_wakefield=0.0,
            gap_size_for_wakefield=0.0,
            length_for_wakefield=0.0
        ),
        IntegratorTypeSwitch(
            name='',
            metadata={'bmad_id': 1},
            length=0.0,
            steps=0,
            integrator_type=IZ.IntegratorType.linear_map,
            type_id=-25,
            unused=0.0
        ),
        WriteFull(
            name='WRITE_END',
            metadata={'bmad_id': 2},
            length=0.0,
            steps=0,
            file_id=200,
            type_id=-2,
            unused_2=0.0,
            sample_frequency=0
        ),
        WriteFull(
            name='final_particles',
            metadata={},
            length=0.0,
            steps=0,
            file_id=101,
            type_id=-2,
            unused_2=0.0,
            sample_frequency=0
        )
    ],
    filename=None,
    verbose=False
)
In [7]:
Copied!
output = I.run()
output = I.run()
In [8]:
Copied!
P = I.output.particles["final_particles"]
P = I.output.particles["final_particles"]
Compare¶
In [9]:
Copied!
plot_impactz_and_tao_stats(I, tao)
plot_impactz_and_tao_stats(I, tao)
In [10]:
Copied!
Ptao.data
Ptao.data
Out[10]:
{'x': array([0.00101316]),
 'px': array([-49.34881698]),
 'y': array([0.]),
 'py': array([0.]),
 'z': array([0]),
 'pz': array([9676137.11295247]),
 't': array([3.67414039e-09]),
 'status': array([1], dtype=int32),
 'weight': array([1.]),
 'species': np.str_('electron')}
In [11]:
Copied!
P.data
P.data
Out[11]:
{'x': array([0.00101156]),
 'px': array([-77.9305956]),
 'y': array([0.]),
 'py': array([0.]),
 'z': array([0.]),
 'pz': array([9676337.52424764]),
 't': array([3.67414031e-09]),
 'status': array([1.]),
 'weight': array([1.e-20]),
 'id': array([1]),
 'species': np.str_('electron')}