Exemple #1
0
    ions[i] = Particle(X0_i[i, :], V0_i[i, :], e, mi, dt_i)


field = Field(Nx, Ny, Nz, Lx, Ly, Lz)
field.initE(E)
field.initB(B)

trace_i = numpy.zeros((Ne, 3, 100))
trace_e = numpy.zeros((Ni, 3, 100))

for i in range(100):
    field.updateTho(electrons, ions)

    field.solveE(eps0)

    field.updateParticleProps(electrons)
    field.updateParticleProps(ions)

    for particle in electrons:
        particle.updateVX()

    for particle in ions:
        particle.updateVX()

    for k in range(Ne):
        trace_e[k, :, i] = electrons[k].X.copy()
        if numpy.any((trace_e[k, :, i] - numpy.array([-Lx / 2.0, -Ly / 2.0, -Lz / 2.0])) <= 0) or numpy.any(
            (trace_e[k, :, i] - numpy.array([Lx / 2.0, Ly / 2.0, Lz / 2.0])) >= 0
        ):
            trace_e[k, 0, i + 1 :] = trace_e[k, 0, i]
            trace_e[k, 1, i + 1 :] = trace_e[k, 1, i]
Exemple #2
0
ions[0] = Particle(X0, V0, e, mi, dt_i)


field = Field(Nx, Ny, Nz, Lx, Ly, Lz)
field.initE(E)
field.initB(B)

trace = numpy.zeros((3, 500))

for i in range(500):
    field.updateTho(electrons, ions)

    field.solveE(eps0)

    field.updateParticleProps(ions)

    for particle in ions:
        particle.updateVX()

    print(i, ions[0].X)
    trace[:, i] = ions[0].X.copy()
    trace[:, i] += 0.5


import matplotlib
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot

fig = pyplot.figure(figsize=(12, 9), dpi=75)
ax = fig.gca(projection="3d")