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



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.