/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D U   T E M P S  :                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/particle.M3$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1994??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   S I M U L A T I O N   P R O P R E M E N T   D I T E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NOMBRE_DE_PERIODES_DE_LA_SIMULATION                                                                                           \
                    CENT_VINGT_HUIT
DEFV(Local,DEFV(Positive,INIT(nombre_de_periodes_de_la_simulation,NOMBRE_DE_PERIODES_DE_LA_SIMULATION)));
                                        /* Definition du nombre de periodes, c'est-a-dire du nombre d'instants simules.              */

#define   NUMERO_DE_LA_PREMIERE_PERIODE                                                                                                 \
                    UN
DEFV(Local,DEFV(Positive,INIT(numero_de_la_periode_courante,NUMERO_DE_LA_PREMIERE_PERIODE)));
                                        /* Definition du numero de la periode courante.                                              */

#define   NUMERO_DE_LA_PREMIERE_PERIODE_A_VISUALISER                                                                                    \
                    NUMERO_DE_LA_PREMIERE_PERIODE
DEFV(Local,DEFV(Positive,INIT(numero_de_la_premiere_periode_a_visualiser,NUMERO_DE_LA_PREMIERE_PERIODE_A_VISUALISER)));
                                        /* Definition du numero de la premiere periode a visualiser, ce qui permet de se             */
                                        /* repositionner rapidement dans le modele en cas de defaut (coupure de courant,...).        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L ' H O R L O G E   U N I V E R S E L L E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PERIODE_INITIALE_DE_L_HORLOGE                                                                                                 \
                    GRO1(FRA1(DIVI(DIVI(DIAMETRE_D_UN_HADRON,VITESSE_DE_LA_LUMIERE)                                                     \
                                  ,FLOT(NOMBRE_DE_PERIODES_DE_LA_SIMULATION)                                                            \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
DEFV(Local,DEFV(Float,INIT(periode_initiale_de_l_horloge,PERIODE_INITIALE_DE_L_HORLOGE)));
                                        /* Definition de la periode initiale de l'horloge : elle est choisie de facon a ce que la    */
                                        /* duree de la simulation soit de l'ordre de grandeur du temps necessaire a un photon pour   */
                                        /* traverser un nucleon.                                                                     */

#define   INSTANT_INITIAL                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(instant_initial,INSTANT_INITIAL)));
DEFV(Local,DEFV(Float,INIT(temps,INSTANT_INITIAL)));
                                        /* Definition de l'instant de debut de la simulation et du temps courant. On notera que      */
                                        /* l'introduction de 'instant_initial' a eu lieu le 19980925093711.                          */

#define   ECHELLE_DE_TEMPS                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(echelle_de_temps,ECHELLE_DE_TEMPS)));
                                        /* Constante destinee a ralentir (<1) ou acceler (>1) le temps. ATTENTION : la modification  */
                                        /* de l'echelle de temps a des consequences sur les voisinages des particules : en effet,    */
                                        /* plus on accelere, moins l'on a de chance de voir des particules se froler, puisqu'alors   */
                                        /* l'echantillonnage temporel est beaucoup moins precis et fin...                            */
#define   DILATATION_DU_TEMPS(variable_temporelle)                                                                                      \
                    MUL2(variable_temporelle,echelle_de_temps)
                                        /* Variation lineaire d'une grandeur (periode de l'horloge ou encore nombre d'evenements)    */
                                        /* permettant d'acceler ou ralentir le deroulement de la simulation...                       */

#define   PERIODE_COURANTE_DE_L_HORLOGE                                                                                                 \
                    DILATATION_DU_TEMPS(periode_initiale_de_l_horloge)                                                                  \
                                        /* La periode reelle de l'horloge peut, si cela est souhaite, varier avec le temps...        */
#define   TOP_D_HORLOGE                                                                                                                 \
                    Bblock                                                                                                              \
                    INCR(temps,PERIODE_COURANTE_DE_L_HORLOGE);                                                                          \
                    INCR(numero_de_la_periode_courante,I);                                                                              \
                    Eblock                                                                                                              \
                                        /* Simulation des "tops" de l'horloge universelle.                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   D I S T O R S I O N   T E M P O R E L L E   D E S   P R O B A B I L I T E S                        */
/*        E T   D E S   N O M B R E S   D ' E V E N E M E N T S   S U I V A N T   U N   P H E N O M E N E                            */
/*        G E N E R A L   D E   V I E I L L I S S E M E N T   L I E   A   L ' H O R L O G E  :                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Principe :                                                                                                                 */
/*                                                                                                                                   */
/*                    Les probabilites (et certaines grandeurs                                                                       */
/*                  eventuellement) vont dependre de l'echelle                                                                       */
/*                  temporelle d'observation : plus les durees                                                                       */
/*                  seront breves, et plus les evenements seront                                                                     */
/*                  improbables, car sinon, les resultats (par                                                                       */
/*                  exemple en nombre d'evenements) dependraient                                                                     */
/*                  de la periode de l'horloge...                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Fonction utilisee (pour les nombres d'evenements par exemple) :                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                    V ^                                                                                            */
/*                                      |                                                                                            */
/*                                      |                                                                                            */
/*                                   V  | . . . . . . . . . . . . . . . . . . . . . . . . .                                          */
/*                                    i |            *     *      *       *        *                                                 */
/*                                      |       *                                                                                    */
/*                                   V  + + +*                                                                                       */
/*                                    c |    +                                                                                       */
/*                                      | *  +                                                                                       */
/*                                      |    +                                                                                       */
/*                                   V  *    +                                                                                       */
/*                                    0 |    +                                                                                       */
/*                            ----------O----+-------------------------------------------->                                          */
/*                                      |   dtc                                         dt                                           */
/*                                      |                                                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                dt                                                                 */
/*                                                    (V  - V ) .-----                                                               */
/*                                                      i    0    dtc                                                                */
/*                                      V = V  + ------------------------- = fV(dt,V0,Vc,dtc,Vi)                                     */
/*                                           0                  V  - V                                                               */
/*                                                 dt            i    0                                                              */
/*                                                ----- - (1 - ---------)                                                            */
/*                                                 dtc          V  - V                                                               */
/*                                                               c    0                                                              */
/*                                                                                                                                   */
/*                  ou :                                                                                                             */
/*                                                                                                                                   */
/*                                     'dt'      : designe le pas de temps courant,                                                  */
/*                                     'V0'      : designe la valeur de 'V' pour dt=0,                                               */
/*                                     'dtc'     : designe un pas de temps "caracteristique",                                        */
/*                                     'Vc'      : designe la valeur caracteristique de 'V' pour dt=dtc,                             */
/*                                     'Vi'      : designe la valeur de 'V' pour dt=infini,                                          */
/*                                                                                                                                   */
/*                                     'V'       : designe la valeur distordue pour 'dt' quelconque.                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Fonction utilisee pour les probabilites :                                                                                  */
/*                                                                                                                                   */
/*                    Soit 'P' une probabilite ; les tests qui sont                                                                  */
/*                  effectues pour savoir si l'evenement associe 'E(P)'                                                              */
/*                  doit avoir lieu, sont du type (ou 'P' designe une                                                                */
/*                  variable aleatoire dans [0,1]) :                                                                                 */
/*                                                                                                                                   */
/*                                      SI (P <= seuil) ALORS E(P);                                                                  */
/*                                                                                                                                   */
/*                    Ainsi, si l'on veut que les evenements deviennent                                                              */
/*                  improbables lorsque 'dt' tend vers 0, il convient que                                                            */
/*                  le seuil dimminue quand 'dt' diminue. On prendra donc                                                            */
/*                  pour les probabilites la fonction suivante :                                                                     */
/*                                                                                                                                   */
/*                                      fP(dt,Pc,dtc) = fV(dt,EVENEMENT_IMPOSSIBLE,Pc,dtc,EVENEMENT_CERTAIN)                         */
/*                                                                                                                                   */
/*                  le test ci-dessus devenant :                                                                                     */
/*                                                                                                                                   */
/*                                      SI (P <= fP(dt,seuil,dtc)) ALORS E(P);                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   D I S T O R S I O N   T E M P O R E L L E   D ' U N E   V A L E U R                                */
/*        S U I V A N T   L A   P E R I O D E   C O U R A N T E   D E   L ' H O R L O G E  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   vDISTORSION(dt,V0,Vc,dtc,Vi)                                                                                                  \
                    ADD2(V0                                                                                                             \
                        ,DIVI(MUL2(SOUS(Vi,V0)                                                                                          \
                                  ,DIVI(dt,dtc)                                                                                         \
                                   )                                                                                                    \
                             ,SOUS(DIVI(dt,dtc)                                                                                         \
                                  ,SOUS(FU,DIVI(SOUS(Vi,V0),SOUS(Vc,V0)))                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Fonction generale de distorsion 'fV(...)' d'une valeur 'Vc(dtc)' pour 'dt' :              */ \
                                        /*                                                                                           */ \
                                        /*                                            dt                                             */ \
                                        /*                                (V  - V ) .-----                                           */ \
                                        /*                                  i    0    dtc                                            */ \
                                        /*                  V = V  + ------------------------- = fV(dt,V0,Vc,dtc,Vi)                 */ \
                                        /*                       0                  V  - V                                           */ \
                                        /*                             dt            i    0                                          */ \
                                        /*                            ----- - (1 - ---------)                                        */ \
                                        /*                             dtc          V  - V                                           */ \
                                        /*                                           c    0                                          */
#define   fNOMBRE(nombre_d_evenements)                                                                                                  \
                    INTE(vDISTORSION(PERIODE_COURANTE_DE_L_HORLOGE                                                                      \
                                    ,DILATATION_DU_TEMPS(FLOT(nombre_d_evenements))                                                     \
                                    ,PERIODE_INITIALE_DE_L_HORLOGE                                                                      \
                                    ,INFINI                                                                                             \
                                     )                                                                                                  \
                         )                                                                                                              \
                                        /* Fonction de distorsion d'un nombre d'evenements en fonction de la periode courante        */ \
                                        /* de l'horloge.                                                                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   D I S T O R S I O N   T E M P O R E L L E   D E S   P R O B A B I L I T E S   S U I V A N T        */
/*        L ' A G E   D E S   P A R T I C U L E S   O U   L A   P E R I O D E   C O U R A N T E   D E   L ' H O R L O G E  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   pDISTORSION(dt,Pc,dtc)                                                                                                        \
                    vDISTORSION(dt,EVENEMENT_IMPOSSIBLE,Vc,dtc,EVENEMENT_CERTAIN)                                                       \
                                        /* Fonction generale de distorsion d'une probabilite 'Pc(dtc)' pour 'dt' :                   */ \
                                        /*                                                                                           */ \
                                        /*                  fP(dt,Pc,dtc) = fV(dt,EVENEMENT_IMPOSSIBLE,Pc,dtc,EVENEMENT_CERTAIN)     */ \
                                        /*                                                                                           */
#define   hPROBABILITE(probabilite)                                                                                                     \
                    pDISTORSION(PERIODE_COURANTE_DE_L_HORLOGE                                                                           \
                               ,probabilite                                                                                             \
                               ,PERIODE_INITIALE_DE_L_HORLOGE                                                                           \
                                )                                                                                                       \
                                        /* Fonction de distorsion d'une probabilite en fonction de la periode courante de l'horloge. */
#define   aPROBABILITE(probabilite,particule,duree_de_vie_moyenne_de_la_particule)                                                      \
                    pDISTORSION(AGE(particule)                                                                                          \
                               ,probabilite                                                                                             \
                               ,MOIT(duree_de_vie_moyenne_de_la_particule)                                                              \
                                )                                                                                                       \
                                        /* La probabilite d'un evenement est faible pour une particule jeune (voire nulle, si la     */ \
                                        /* particule vient de naitre grace a 'FLUCTUATIONS_QUANTIQUES_DU_VIDE' par exemple), alors   */ \
                                        /* qu'elle augmente lorsque cette meme particule vieillit. Enfin, on notera que c'est        */ \
                                        /* 'MOIT(duree_de_vie_moyenne_de_la_particule)' que l'on utilise arbitrairement...           */



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.