コード例 #1
0
ファイル: emPusherTest.py プロジェクト: lynch829/radtrack
    fields = constEM()
    efield = [fields.getEField(x)]
    bfield = [fields.getBField(x)]

    expectedX = np.array([1.00000000e+00,   2.99777763e+00,   1.51624746e-16])
    expectedU = np.array([3.51764015e-02,   3.02775541e+10,   3.06281988e-06])
    tol = 1.e-8

    # Sequence tests the implementation of drift-kick-drift 2nd order
    # integrator scheme. This makes sure x and v are synchronous in time at
    # the end of the simulation
    # half move forward
    x = pusher.halfmove(v, x, 1)
    # full accelerate and move
    u = pusher.accelerate(v, efield, bfield)
    x = pusher.move(v, x)
    # half move backward
    x = pusher.halfmove(v, x, -1)

    failed = False
    xerror = x[0] - expectedX
    uerror = u[0] - expectedU
    metricX = np.dot(xerror, xerror)/np.dot(expectedX, expectedX)
    metricV = np.dot(uerror, uerror)/np.dot(expectedU, expectedU)

    print 'BorisVay pusher test error:'
    print 'Xerror =', metricX
    print 'Verror =', metricV

    if metricX > tol:
        print 'X failed tolerances with x =', x, ', Expected:', expectedX
コード例 #2
0
ファイル: laserHeater03.py プロジェクト: lynch829/radtrack
    z.append(pos[0][2])
    vx = []
    vx.append(vel[0][0]/(gamma*consts.c))
    vy = []
    vy.append(vel[0][1]/(gamma*consts.c))
    vz = []
    vz.append(vel[0][2]/(gamma*consts.c))

    gammaArray = []
    gammaArray.append(gamma)

    for idx in range(nsteps):
        E = myplanarundulator.evaluateEField(pos, t)
        B = myplanarundulator.evaluateBField(pos, t)
        vel = pusher.accelerate(vel, E, B)
        pos = pusher.move(vel, pos)

        gamma = np.sqrt(np.dot(vel[0], vel[0])/consts.c**2 + 1)
        x.append(pos[0][0])
        vx.append(vel[0][0]/(gamma*consts.c))
        y.append(pos[0][1])
        vy.append(vel[0][1]/(gamma*consts.c))
        z.append(pos[0][2])
        vz.append(vel[0][2]/(gamma*consts.c))
        gammaArray.append(gamma)
        t += dt

    # Backwards half-move
    pos = pusher.halfmove(vel, pos, -1)
    t -= 0.5*dt
コード例 #3
0
ファイル: testBorisVay.py プロジェクト: lynch829/radtrack
    x0 = [np.zeros(3)]

    x.append(x0[0][0])
    y.append(x0[0][1])
    z.append(x0[0][2])

    gammaArray = []

    gamma = np.sqrt(np.dot(v0[0], v0[0])/consts.c**2 + 1)
    gammaArray.append(gamma)

    x0 = pusher.halfmove(v0, x0, +1)

    for idx in range(10000):
        v0 = pusher.accelerate(v0, E, B)
        x0 = pusher.move(v0, x0)
        x.append(x0[0][0])
        y.append(x0[0][1])
        z.append(x0[0][2])
        gamma = np.sqrt(np.dot(v0[0], v0[0])/consts.c**2 + 1)
        gammaArray.append(gamma)

    x0 = pusher.halfmove(v0, x0, -1)

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    ax.plot(x, y, z, linewidth=2)
    ax.plot(x, y, zs=min(z), zdir='z', alpha=0.25, c='k')
    ax.plot(x, z, zs=min(y), zdir='y', alpha=0.25, c='k')
    ax.plot(y, z, zs=min(x), zdir='x', alpha=0.25, c='k')