Autor Tema: Movimiento de partícula en campo magnético

0 Usuarios y 1 Visitante están viendo este tema.

15 Noviembre, 2018, 09:35 am
Leído 829 veces

jlopez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 34
  • Karma: +0/-0
  • Sexo: Masculino
El problema que tengo es que quiero integrarlo en un simulador. Me ha costado bastante hacer el cálculo de las bobinas para hallar el campo magnético.

Para el movimiento de la partícula tenemos:

\( m*\overrightarrow{a}=q*\overrightarrow{v}\otimes{\overrightarrow{B}} \)

Lo he resuelto en dos dimensiones teniendo en cuenta que:
\( \overrightarrow{a}=\displaystyle\frac{v^2}{r_g} \)
Siendo rg el giroradio, que siendo v y B perpendiculares sale sustituyendo arriba:
\( r_g=\displaystyle\frac{m\left |{v}\right |}{q*\left |{B}\right |} \)
Y que el incremento del ángulo después de una distancia delta es:
\( d\emptyset=\displaystyle\frac{delta}{r_g} \)
Donde rg es el giroradio, pero no sé bien como "meterle mano" en tres dimensiones para hacerlo matricialmente.
Necesitaría el vector posición y velocidad después de recorrer una distancia fija.

-saludos-

15 Noviembre, 2018, 02:05 pm
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2,479
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
El problema que tengo es que quiero integrarlo en un simulador. Me ha costado bastante hacer el cálculo de las bobinas para hallar el campo magnético.

¿Asumís el campo magnético es constante en toda la región o es una disposición tipo Helmholtz? 


Citar
Para el movimiento de la partícula tenemos:

\( m*\overrightarrow{a}=q*\overrightarrow{v}\otimes{\overrightarrow{B}} \)

Lo he resuelto en dos dimensiones teniendo en cuenta que:

\( \overrightarrow{a}=\displaystyle\frac{v^2}{r_g} \)
Siendo rg el giroradio, que siendo v y B perpendiculares sale sustituyendo arriba:
\( r_g=\displaystyle\frac{m\left |{v}\right |}{q*\left |{B}\right |} \)
Y que el incremento del ángulo después de una distancia delta es:
\( d\emptyset=\displaystyle\frac{delta}{r_g} \)
Donde rg es el giroradio,
pero no sé bien como "meterle mano" en tres dimensiones para hacerlo matricialmente.
Necesitaría el vector posición y velocidad después de recorrer una distancia fija.

Podés resolverlo sabiendo que la solución es una trayectoria helicoidal. La componente de la velocidad paralela al campo no se altera y normal al campo se describe un círculo.

Matricialmente... Se pueden escribir las ecuaciones de movimiento reemplazando \( m \overrightarrow{a}=q \overrightarrow{v}\times{\overrightarrow{B}} \)  por  \( mX'' = q B_{\times}^t X' \) , siendo \( B_{\times} \) la matriz producto cruz (no sé que nombre se acostumbra en castellano :) )  asociada a \( B \)
Resolviendo la ecuación diferencial llegás a un movimiento helicoidal, por lo que es mas directo calcular de entrada las constantes de ese movimiento.

15 Noviembre, 2018, 03:34 pm
Respuesta #2

jlopez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 34
  • Karma: +0/-0
  • Sexo: Masculino
En una bobina el campo no es uniforme desgraciadamente, si bien no varía mucho de un milímetro a otro, o sea que puedo calcular el campo en un punto debido a las decenas de bobinas e integrar ahí.

Lo he intentado "a mi manera", o sea, metiendo una integral por software aunque desgraciadamente no me dá demasiada precisión.
(aviso que el reactor que estoy haciendo comprime a tamaño atómico)

Lo que he hecho es lo siguiente:

\( m*\overline{a}=q*\overline{v}\otimes{}\overline{B} \)

Siendo
\( \overline{v}\otimes{}\overline{B}=\begin{bmatrix}{i}&{j}&{k}\\{v_x}&{v_y}&{v_z}\\{Bx}&{By}&{Bz}\end{bmatrix} \)

Como la velocidad es la integral de la aceleración con respecto del tiempo:
\( \overline{v}=\displaystyle\frac{q}{m}*\displaystyle\int_{t1}^{t2} \begin{bmatrix}{i}&{j}&{k}\\{v_x}&{v_y}&{v_z}\\{Bx}&{By}&{Bz}\end{bmatrix}*dt   \)

15 Noviembre, 2018, 03:49 pm
Respuesta #3

jlopez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 34
  • Karma: +0/-0
  • Sexo: Masculino
Se puede sutituir vy*Bz por el modulo de la velocidad por el modulo del campo por un coseno de wt, de modo que al derivar sale el seno (o sea la perpendicular), pero no se como sacar el w:

\( v_x=\displaystyle\frac{q}{m}*\left |{v}\right |*\left |{B}\right |*cos(wt) \)


Este es el sw que integra en cada punto, lo malo que si saco 1000 puntos y en cada integral hago 1000 sumas para la integral me salen 1 millón de operaciones por trayectoria y es algo lento y encima tiene menos precisión:

Este es el código para el caso de campo B fijo (para el que es variable hay que calcular el campo en cada punto):
Código: [Seleccionar]
double modulo(vector <double> xyz) { return sqrt(xyz[0] * xyz[0] + xyz[1] * xyz[1] + xyz[2] * xyz[2]); }

const int integrate_N = 1000;
//q_m=q/m, t=time to integrate
void integrate(vector <double> &xyz, vector <double> &vxyz, vector <double> Bxyz, double q_m, double t)
{
double vm = modulo(vxyz);//para ajustar luego
double dt = t / integrate_N,dt2=dt*dt; vector <double> axyz(3);
for (int i = 0; i < integrate_N; i++)
{
vectorial(vxyz, Bxyz, axyz);//falta multiplicar por q_m
for (int kk = 0; kk < 3; kk++)
{
xyz[kk] += vxyz[kk] * dt; vxyz[kk] = vxyz[kk] + q_m*axyz[kk] * dt; xyz[kk] += 0.5*axyz[kk] * dt2;
}
}
for (int kk = 0; kk < 3; kk++)
{
xyz[kk] += 0.5*vxyz[kk] * dt; vxyz[kk] = vxyz[kk] + 0.5*q_m*axyz[kk] * dt; xyz[kk] += 0.25*axyz[kk] * dt2;
}
}

void calculate_trajectorie_mag(vector <double> Bxyz, s_kin particle, double gsize, double lon_max, vector <vector<double>> &outxyz, vector <vector<double>> &outvxyz)
{
outxyz.clear(); outvxyz.clear();
double L = 1e-10, R = 0;
vector <double> xyz, vxyz;
double Q = particle.Q, AMU = particle.AMU;
double q_m =  Q * 1.602176634E-19 / (AMU*AMU_KG);  //  = q/m
for (int i = 0; i<3; i++) { xyz.push_back(particle.xyz[i]); vxyz.push_back(particle.vxyz[i]); }
double lon=0.,lon_next=lon+.1*lon_max;
while (lon<lon_max)
{
outxyz.push_back( xyz );
outvxyz.push_back(vxyz);
lon += gsize; if (lon > lon_next) { cout << lon / lon_max*100.0 << "% ";lon_next += .1*lon_max; }//advise of progress
//double Bm = modulo(Bxyz);
double vm = modulo(vxyz);
double dt = gsize / vm;
integrate(xyz, vxyz, Bxyz,q_m,dt);
}
cout << "\n";
}

Así me sale una lente que he calculado en multihilo metiendo integrales elípticas a tope para cálculo de campo magnético:


18 Noviembre, 2018, 01:25 pm
Respuesta #4

jlopez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 34
  • Karma: +0/-0
  • Sexo: Masculino
Otra forma de resolverlo es por ecuaciones diferenciales, a ver si así me puede ayudar alguien a resolverlo:

\( m*\overline{a}=q*\overline{v}\times{}\overline{B} \)

Si lo pongo como ecuaciones diferenciales me sale:
\( m*\frac{d\overline{v}}{dt}=q*\overline{v}\times\overline{B}  \\
\frac{d\overline{v}}{dt}-\frac{q}{m}\overline{v}\times\overline{B}=0 \\
 \)
Sacando las tres coordenadas:
\(
\frac{d\overline{v_x}}{dt}-\frac{q}{m}*(v_y*Bz-v_z*By)=0\\
\frac{d\overline{v_y}}{dt}+\frac{q}{m}*(v_x*Bz-v_z*Bx)=0\\
\frac{d\overline{v_z}}{dt}-\frac{q}{m}*(v_x*By-v_y*Bx)=0\\
 \)

Se conoce la velocidad inicial (vx0,vy0,vz0) y el campo que es constante (Bx,By,Bz), la carga q y la masa m

18 Noviembre, 2018, 03:15 pm
Respuesta #5

Abdulai

  • Moderador Global
  • Mensajes: 2,479
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
...Si lo pongo como ecuaciones diferenciales me sale:
\( m*\frac{d\overline{v}}{dt}=q*\overline{v}\times\overline{B}  \\
\frac{d\overline{v}}{dt}-\frac{q}{m}\overline{v}\times\overline{B}=0 \\
 \)
Sacando las tres coordenadas:
\(
\frac{d\overline{v_x}}{dt}-\frac{q}{m}*(v_y*Bz-v_z*By)=0\\
\frac{d\overline{v_y}}{dt}+\frac{q}{m}*(v_x*Bz-v_z*Bx)=0\\
\frac{d\overline{v_z}}{dt}-\frac{q}{m}*(v_x*By-v_y*Bx)=0\\
 \)
....

Es lo que te escribí antes,  ese sistema de ED , matricialmente se escribe como:  \( V' = \dfrac{q}{m}B_{\times}^t V \)  siendo \( B_{\times} \)  la matriz producto cruz correspondiente al campo magnético.

Escribimos \( B \) de la forma
\( B_{\times}^t = \begin{bmatrix} 0 & b_z & -b_y \\ -b_z & 0 & b_x  \\ b_y & -b_x & 0 \end{bmatrix} = b\begin{bmatrix} 0 & u_z & -u_y \\ -u_z & 0 & u_x  \\ u_y & -u_x & 0 \end{bmatrix} = b\;U \)   siendo la matriz formada por el vector unitario correspondiente a la dirección del campo.

Queda:  \( V'=\underbrace{\frac{qb}{m}}_{\omega}U\;V \)   Cuya solución es vox-populi que es  \( V= e^{U\omega t} V_0 \)

Por suerte, como \( U \) tiene la propiedad de \( U^3=-U\;,\;U^4=-U^2\;,\;U^5=U \cdots \)  nos evitamos el cálculo de \( e \) elevado a una matriz porque resulta:
\( e^{U \theta} = I + \sin\theta\;U + (1-\cos\theta)\;U^2 \)

De  \( V=\left(I + \sin(\omega t)\;U + (1-\cos(\omega t) \;U^2\right)V_0 \)  integrar respecto del tiempo para obtener la posición es trivial.


De todas maneras, considerar el campo constante dentro del entorno me parece que va a introducir mucho error.  Pero eso complicaría mucho porque quizás habría que caer en elementos finitos y me pregunto si no sería mas negocio buscar dentro de los softwares de simulación electromagnética si alguno contempla movimiento de partículas.


18 Noviembre, 2018, 08:10 pm
Respuesta #6

jlopez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 34
  • Karma: +0/-0
  • Sexo: Masculino
Gracias Abdulai.
Imagino que V0 es el módulo de la velocidad (que es constante al ser la fuerza que ejerce el campo magnético perpendicular a la velocidad y por tanto no incrementa su módulo)
El campo no es constante, como bien dices, lo que hago es calcular cada vez cual es el delta de tiempo necesario para cubrir una distancia muy pequeña e integrar en esa pequeña distancia, por lo que hay poca diferencia del campo entre un punto y otro y es donde lo considero constante. (Para el cálculo del campo empleo integrales elípticas)
La integral que hago (con una sumatoria) la quiero sustituir por una ecuación para que vaya más rápido.
No me valen los programas estandar porque estoy haciendo uno a medida.

Otro problema que tengo es que al llegar a la lente electromagnética las variaciones de campo son mucho más grandes y esa pequeña distancia debiera ser reducida en esos puntos.

Así es como me está quedando el resultado, en la gráfica deabajo he puesto la aceleración, como puedes ver es casi 0 lejos de las lentes y varía muchísimo al llegar a las dos lentes que he puesto