/*************************************************************************************************************************************/ /* */ /* 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... */