Motion of Particle in a spatially varying electromagnetic field

3 visualizaciones (últimos 30 días)
Francesco
Francesco el 6 de Feb. de 2012
I have to simulate the motion of particle in an electromagnetic device which deflects particle using electric and magnetic field. Those field are arranged in such a way that the electric field is inside the magnetic one. Moreover the electrodes begin at the center of the magnetic field ad their end is a bit outside the coils. The motion equations are: 1) d^2x(z)/dz^2 = qE/mv^2 2) d^2y(z)/dz^2 = qB/mv
The problem is that MatLab cannot solve second order differential equation, thus I have tried to use the code:
%%Initial drift
rhsE1=@(z,x)[x(2); 0];
[zaE1, xaE1] = ode45(rhsE1, [0 69], [0 0]);
%%inside E field
E=1;
rhsE =@(z,x)[x(2); (q/m)*(E/v^2)];
[zaE, xaE] = ode45(rhsE, [70 130], [0 0]);
For the drift after the field I have calculated the derivative of the trajectory and used it as initial condition for solving the eqaution of motion in the drift sector. I have also write a similar code for the magnetic field. The problem is that solving the equation separately doesn't seem to me correct because one solution could be longer than the other...
I have also tryed to solve the lorentz force using the code:
%%%%
f = @(t,y) [y(4:6); (q_over_m).*cross(y(4:6),B)+(q_over_m).*E];
[t,y] = ode23t(f,tspan,y0);
and some "while" loop like:
while (z>= length at which B begins || z<= length atwhich the electric field begins)
B=[1 0 0]';
E = [0 0 0]';
solve the equation
z=y(end,3);
end
%%%%%
and so on...
The problem is that the code is incredibly slow and sometimes, I think, it cannot get out of a loop.
I think I have used bad approaches to solve the problem, someone can give me a clue?

Respuestas (1)

Francesco
Francesco el 6 de Feb. de 2012
I have found what was wrong in my code, it is able to track a particle all the way long from the source to the detector and inside the field... I hope... The trajectory seems to be reasonable, I would need someone to double check it for confirmation. Is there someone available to test the code for me? I can post it here or send in private, doesn't matter

Categorías

Más información sobre Programming en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by