/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U D E P L A C E M E N T D ' U N E P A R T I C U L E */
/* D A N S U N C H A M P E L E C T R O - M A G N E T I Q U E " A M B I A N T " : */
/* */
/* */
/* Author of '$xrq/particle.M53$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E L A D I S T A N C E P A R C O U R U E : */
/* */
/*************************************************************************************************************************************/
#define DISTANCE_PARCOURUE(v,dt) \
MUL2(v,dt) \
/* Definition de la distance parcourue pendant un temps 'dt' par un mobile se deplacant a */ \
/* la vitesse 'v'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U D E P L A C E M E N T D ' U N E P A R T I C U L E */
/* D A N S U N C H A M P E L E C T R O - M A G N E T I Q U E " A M B I A N T " : */
/* */
/*************************************************************************************************************************************/
#define DEPLACEMENT_D_UNE_PARTICULE(particule) \
Bblock \
INCR(POSITION_COURANTE_X(particule) \
,DISTANCE_PARCOURUE(VITESSE_COURANTE_X(particule) \
,PERIODE_COURANTE_DE_L_HORLOGE \
) \
); \
INCR(POSITION_COURANTE_Y(particule) \
,DISTANCE_PARCOURUE(VITESSE_COURANTE_Y(particule) \
,PERIODE_COURANTE_DE_L_HORLOGE \
) \
); \
INCR(POSITION_COURANTE_Z(particule) \
,DISTANCE_PARCOURUE(VITESSE_COURANTE_Z(particule) \
,PERIODE_COURANTE_DE_L_HORLOGE \
) \
); \
/* Deplacement d'un objet au cours d'une periode d'horloge, suivant la formule */ \
/* prodigieuse : */ \
/* */ \
/* X <-- X + (Vx.dt), */ \
/* Y <-- Y + (Vy.dt), */ \
/* Z <-- Z + (Vz.dt). */ \
/* */ \
\
EFFET_DE_LA_FORCE_DE_LORENTZ_CLASSIQUE(particule); \
/* Prise en compte "classique" de la force de Lorentz dans le champ electro-magnetique */ \
/* ambiant ; il s'agit d'un traitement "classique", puisqu'en effet, pour bien faire, il */ \
/* faudrait prendre en compte l'effet des photons reels du champ sur chaque particule, ce */ \
/* qui serait peut-etre un peu lourd... */ \
Eblock \
/* Deplacement d'un objet au cours d'une periode d'horloge et prise en compte d'un */ \
/* eventuel champ electro-magnetique ambiant... */
#define EFFET_DE_LA_FORCE_DE_LORENTZ_CLASSIQUE(particule) \
Bblock \
DEFV(deltaF_3D,produit_de_la_vitesse_et_du_champ_magnetique); \
/* Afin de calculer : */ \
/* */ \
/* --> --> */ \
/* V /\ B */ \
/* */ \
DEFV(Float,INIT(charge_electrique_ramenee_a_la_masse_relativiste \
,DIVI(MUL2(CHARGE_ELECTRIQUE(particule),CHARGE_ELECTRIQUE_ELEMENTAIRE) \
,MASSE_RELATIVISTE(particule) \
) \
) \
); \
/* Quotient de la charge electrique par la masse relativiste. */ \
DEFV(deltaF_3D,acceleration_due_a_la_force_de_Lorentz); \
/* Afin de calculer la force de Lorentz. */ \
\
INITIALISATION_ACCROISSEMENT_3D(produit_de_la_vitesse_et_du_champ_magnetique \
,PvectX(VITESSE_COURANTE_X(particule) \
,VITESSE_COURANTE_Y(particule) \
,VITESSE_COURANTE_Z(particule) \
\
,ASD1(champ_magnetique,dx) \
,ASD1(champ_magnetique,dy) \
,ASD1(champ_magnetique,dz) \
) \
\
,PvectY(VITESSE_COURANTE_X(particule) \
,VITESSE_COURANTE_Y(particule) \
,VITESSE_COURANTE_Z(particule) \
\
,ASD1(champ_magnetique,dx) \
,ASD1(champ_magnetique,dy) \
,ASD1(champ_magnetique,dz) \
) \
\
,PvectZ(VITESSE_COURANTE_X(particule) \
,VITESSE_COURANTE_Y(particule) \
,VITESSE_COURANTE_Z(particule) \
\
,ASD1(champ_magnetique,dx) \
,ASD1(champ_magnetique,dy) \
,ASD1(champ_magnetique,dz) \
) \
); \
/* Calcul du produit vectoriel : */ \
/* */ \
/* --> --> */ \
/* V /\ B */ \
/* */ \
INITIALISATION_ACCROISSEMENT_3D(acceleration_due_a_la_force_de_Lorentz \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,ADD2(ASD1(champ_electrique,dx) \
,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dx) \
) \
) \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,ADD2(ASD1(champ_electrique,dy) \
,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dy) \
) \
) \
,MUL2(charge_electrique_ramenee_a_la_masse_relativiste \
,ADD2(ASD1(champ_electrique,dz) \
,ASD1(produit_de_la_vitesse_et_du_champ_magnetique,dz) \
) \
) \
); \
/* Calcul de la force de Lorentz appliquee a l'objet courant et ramenee a l'unite de */ \
/* masse (c'est donc l'acceleration...) ; on a : */ \
/* */ \
/* --> --> --> --> */ \
/* F = q.( E + V /\ B ) */ \
/* */ \
/* or : */ \
/* */ \
/* ---> */ \
/* --> ------> dV */ \
/* F = m. gamma = m.---- */ \
/* dt */ \
/* */ \
/* d'ou : */ \
/* */ \
/* ---> */ \
/* q --> --> --> ------> dV */ \
/* ---.( E + V /\ B ) = gamma = ---- */ \
/* m dt */ \
/* */ \
INITIALISATION_ACCROISSEMENT_3D(VITESSE_COURANTE(particule) \
,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dx) \
,PERIODE_COURANTE_DE_L_HORLOGE \
,VITESSE_COURANTE_X(particule) \
) \
,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dy) \
,PERIODE_COURANTE_DE_L_HORLOGE \
,VITESSE_COURANTE_Y(particule) \
) \
,AXPB(ASD1(acceleration_due_a_la_force_de_Lorentz,dz) \
,PERIODE_COURANTE_DE_L_HORLOGE \
,VITESSE_COURANTE_Z(particule) \
) \
); \
/* Application de la force de Lorentz appliquee a l'objet courant, c'est-a-dire modification */ \
/* de la trajectoire suivant la regle : */ \
/* */ \
/* */ \
/* --> --> ---> --> ------> */ \
/* V <-- V + dV = V + gamma .dt */ \
/* */ \
Eblock \
/* Modification de la vitesse d'une particule sous l'action "classique" de la force de */ \
/* Lorentz dans le champ electro-magnetique ambiant ; il s'agit d'un traitement "classique", */ \
/* puisqu'en effet, pour bien faire, il faudrait prendre en compte l'effet des photons */ \
/* reels du champ sur chaque particule, ce qui serait peut-etre un peu lourd... */