MATLAB Answers

Motion of Particle in a spatially varying electromagnetic field

25 views (last 30 days)
Francesco
Francesco on 6 Feb 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?

Answers (1)

Francesco
Francesco on 6 Feb 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

Community Treasure Hunt

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

Start Hunting!

Translated by