/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   N U A G E S   D E   P A R T I C U L E S   V I R T U E L L E S  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/nucleon.LK$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1991??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   D U   M O D E L E   A V E C   D E S                                                          */
/*        N U A G E S   D E   P A R T I C U L E S   V I R T U E L L E S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#if       (defined(__VERSION__GENERATION_D_UN_NUCLEON) || defined(__VERSION__GENERATION_D_UN_MESON))
#    define    REDUCTION_DES_NOMBRES_D_EVENEMENTS(reduction_du_nombre_d_evenements,nombre_d_evenements)                                 \
                         INTE(MUL2(reduction_du_nombre_d_evenements,REGUL0(FLOT(nombre_d_evenements))))                                 \
                                        /* Fonction de reduction d'un nombre d'evenements. On notera que 'fNOMBRE(...)' n'intervient */ \
                                        /* pas ici, car en effet, il s'agit d'initialiser le modele, ce qui est donc en fait une     */ \
                                        /* action "statique", ou donc l'horloge n'intervient pas...                                  */
#    define    NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS                                                        \
                         GRO2(FRA1(DIX_MILLE))                                                                                          \
                                        /* Nombre d'evenements, dont tous ne seront pas fructueux...                                 */
DEFV(Local,DEFV(Positive,INIT(nombre_d_evenements_pour_l_injection_de_nuages_de_quarks_virtuels
                             ,NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS
                              )
                )
     );
                                        /* Nombre d'evenements a produire pour generer une famille initiale de quarks virtuels.      */
#    define    INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS(reduction_du_nombre_d_evenements)                                                 \
                                        /* ATTENTION : cette procedure ne peut pas beneficier de 'OPTIMISATION(...)' car, en effet,  */ \
                                        /* elle a un argument...                                                                     */ \
                         Bblock                                                                                                         \
                         DEFV(pointF_3D,position_aleatoire);                                                                            \
                                        /* Pour memoriser la position initiale (aleatoire) du quark virtuel courant.                 */ \
                         DEFINITION_DE_LA_VITESSE_ALEATOIRE;                                                                            \
                                        /* Pour memoriser la vitesse (aleatoire) du quark virtuel courant, sous la forme d'un        */ \
                                        /* vecteur (vx,vy,vz) en coordonnees cartesiennes, mais aussi en coordonnees                 */ \
                                        /* spheriques {rho,theta,phi}.                                                               */ \
                         DEFV(quark,POINTERs(quark_virtuel_courant));                                                                   \
                                        /* Pour memoriser les caracteristiques du quark courant...                                   */ \
                         Repe(REDUCTION_DES_NOMBRES_D_EVENEMENTS(reduction_du_nombre_d_evenements                                       \
                                                                ,nombre_d_evenements_pour_l_injection_de_nuages_de_quarks_virtuels      \
                                                                 )                                                                      \
                              )                                                                                                         \
                                        /* ATTENTION : le nombre d'evenements diminue quand la periode de l'horloge diminue          */ \
                                        /* elle aussi, et ce afin de compenser l'absence de 'GENERATION_D_UNE_PROBABILITE_01(...)'.  */ \
                              Bblock                                                                                                    \
                              DEFV(Float,INIT(champ_aleatoire,FLOT__UNDEF));                                                            \
                                        /* Pour calculer la valeur d'un champ aleatoire a l'emplacement du quark potentiel.          */ \
                              GENERATION_D_UN_POINT(position_aleatoire);                                                                \
                                        /* Generation d'un site potentiel pour un quark 'VIRTUEL'.                                   */ \
                              CALCUL_DU_CHAMP_GLOBAL(ASD1(position_aleatoire,x)                                                         \
                                                    ,ASD1(position_aleatoire,y)                                                         \
                                                    ,ASD1(position_aleatoire,z)                                                         \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_FLUX                                                   \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_CONFINEMENT                                            \
                                                    ,cutoff_d_initialisation                                                            \
                                                     );                                                                                 \
                              GENERATION_D_UNE_VALEUR(champ_aleatoire,MINIMUM_DU_CHAMP_GLOBAL,MAXIMUM_DU_CHAMP_GLOBAL);                 \
                                        /* Valeur du champ aleatoire a l'emplacement du quark potentiel...                           */ \
                              Test(IFLE(champ_aleatoire,champ_global))                                                                  \
                                   Bblock                                                                                               \
                                        /* Lorsque le champ aleatoire est inferieur au champ global, le quark potentiel est          */ \
                                        /* conserve avec le statut VIRTUEL :                                                         */ \
                                   DEBUT_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT(position_aleatoire);   \
                                   DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;          \
                                   INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK;                      \
                                        /* Choix aleatoire du module de la vitesse du quark VIRTUEL.                                 */ \
                                   VITESSE_CARTESIENNE_POLAIRE(vitesse_courante                                                         \
                                                              ,rho_de_la_vitesse                                                        \
                                                              ,theta_polaire                                                            \
                                                              ,PAS_DE_DEPHASAGE                                                         \
                                                               );                                                                       \
                                        /* La vitesse du quark VIRTUEL est choisie orthogonale au plan forme par le moment           */ \
                                        /* angulaire du quark REEL dominant et par le vecteur joignant ce quark VIRTUEL au           */ \
                                        /* quark REEL dominant.                                                                      */ \
                                   FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;            \
                                   FIN_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;                         \
                                   CREATION_D_UN_QUARK_VIRTUEL(quark_virtuel_courant                                                    \
                                                              ,QUARK_SAVEUR_INDEFINIE                                                   \
                                                              ,position_aleatoire                                                       \
                                                              ,vitesse_courante                                                         \
                                                              ,CHARGE_DE_COULEUR_ROUGE(champ_de_valence_ROUGE)                          \
                                                              ,CHARGE_DE_COULEUR_VERTE(champ_de_valence_VERTE)                          \
                                                              ,CHARGE_DE_COULEUR_BLEUE(champ_de_valence_BLEUE)                          \
                                                               );                                                                       \
                                        /* Generation d'un quark "VIRTUEL".                                                          */ \
                                   TRACE_D_UN_EVENEMENT(Prin1("STRONG_INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS          VIDE --> Q(%d)"   \
                                                             ,ETIQUETTE(quark_virtuel_courant)                                          \
                                                              )                                                                         \
                                                        );                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ERep                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Initialisation eventuelle du modele a l'aide d'une repartition des charges de couleur     */ \
                                        /* des quarks virtuels qui suit le champ general d'interaction...                            */

#    define    NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_D_ANTI_QUARKS_VIRTUELS                                                    \
                         NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS                                              \
                                        /* Nombre d'evenements, dont tous ne seront pas fructueux...                                 */
DEFV(Local,DEFV(Positive,INIT(nombre_d_evenements_pour_l_injection_de_nuages_d_anti_quarks_virtuels
                             ,NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_D_ANTI_QUARKS_VIRTUELS
                              )
                )
     );
                                        /* Nombre d'evenements a produire pour generer une famille initiale d'anti-quarks virtuels.  */
#    define    INJECTION_DE_NUAGES_DE_ANTI_QUARKS_VIRTUELS(reduction_du_nombre_d_evenements)                                            \
                                        /* ATTENTION : cette procedure ne peut pas beneficier de 'OPTIMISATION(...)' car, en effet,  */ \
                                        /* elle a un argument...                                                                     */ \
                         Bblock                                                                                                         \
                         DEFV(pointF_3D,position_aleatoire);                                                                            \
                                        /* Pour memoriser la position initiale (aleatoire) de l'anti-quark virtuel courant.          */ \
                         DEFINITION_DE_LA_VITESSE_ALEATOIRE;                                                                            \
                                        /* Pour memoriser la vitesse (aleatoire) de l'anti-quark virtuel courant, sous la forme d'un */ \
                                        /* vecteur (vx,vy,vz) en coordonnees cartesiennes, mais aussi en coordonnees                 */ \
                                        /* spheriques {rho,theta,phi}.                                                               */ \
                         DEFV(anti_quark,POINTERs(anti_quark_virtuel_courant));                                                         \
                                        /* Pour memoriser les caracteristiques de l'anti-quark courant...                            */ \
                         Repe(REDUCTION_DES_NOMBRES_D_EVENEMENTS(reduction_du_nombre_d_evenements                                       \
                                                                ,nombre_d_evenements_pour_l_injection_de_nuages_d_anti_quarks_virtuels  \
                                                                 )                                                                      \
                              )                                                                                                         \
                                        /* ATTENTION : le nombre d'evenements diminue quand la periode de l'horloge diminue          */ \
                                        /* elle aussi, et ce afin de compenser l'absence de 'GENERATION_D_UNE_PROBABILITE_01(...)'.  */ \
                              Bblock                                                                                                    \
                              DEFV(Float,INIT(champ_aleatoire,FLOT__UNDEF));                                                            \
                                        /* Pour calculer la valeur d'un champ aleatoire a l'emplacement de l'anti-quark potentiel.   */ \
                              GENERATION_D_UN_POINT(position_aleatoire);                                                                \
                                        /* Generation d'un site potentiel pour un anti-quark 'VIRTUEL'.                              */ \
                              CALCUL_DU_CHAMP_GLOBAL(ASD1(position_aleatoire,x)                                                         \
                                                    ,ASD1(position_aleatoire,y)                                                         \
                                                    ,ASD1(position_aleatoire,z)                                                         \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_FLUX                                                   \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_CONFINEMENT                                            \
                                                    ,cutoff_d_initialisation                                                            \
                                                     );                                                                                 \
                              GENERATION_D_UNE_VALEUR(champ_aleatoire,MINIMUM_DU_CHAMP_GLOBAL,MAXIMUM_DU_CHAMP_GLOBAL);                 \
                                        /* Valeur du champ aleatoire a l'emplacement de l'anti-quark potentiel...                    */ \
                              Test(IFLE(champ_aleatoire,champ_global))                                                                  \
                                   Bblock                                                                                               \
                                        /* Lorsque le champ aleatoire est inferieur au champ global, le quark potentiel est          */ \
                                        /* conserve avec le statut VIRTUEL :                                                         */ \
                                   DEBUT_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT(position_aleatoire);   \
                                   DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;          \
                                   INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_QUARK_OU_D_UN_ANTI_QUARK;                      \
                                        /* Choix aleatoire du module de la vitesse du quark VIRTUEL.                                 */ \
                                   VITESSE_CARTESIENNE_POLAIRE(vitesse_courante                                                         \
                                                              ,rho_de_la_vitesse                                                        \
                                                              ,theta_polaire                                                            \
                                                              ,PAS_DE_DEPHASAGE                                                         \
                                                               );                                                                       \
                                        /* La vitesse du anti-quark VIRTUEL est choisie orthogonale au plan forme par le moment      */ \
                                        /* angulaire du anti-quark REEL dominant et par le vecteur joignant ce quark VIRTUEL au      */ \
                                        /* quark REEL dominant.                                                                      */ \
                                   FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;            \
                                   FIN_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;                         \
                                   CREATION_D_UN_ANTI_QUARK_VIRTUEL(anti_quark_virtuel_courant                                          \
                                                                   ,QUARK_SAVEUR_INDEFINIE                                              \
                                                                   ,position_aleatoire                                                  \
                                                                   ,vitesse_courante                                                    \
                                                                   ,CHARGE_DE_COULEUR_ROUGE(champ_de_valence_ROUGE)                     \
                                                                   ,CHARGE_DE_COULEUR_VERTE(champ_de_valence_VERTE)                     \
                                                                   ,CHARGE_DE_COULEUR_BLEUE(champ_de_valence_BLEUE)                     \
                                                                    );                                                                  \
                                        /* Generation d'un anti-quark "VIRTUEL".                                                     */ \
                                   TRACE_D_UN_EVENEMENT(Prin1("STRONG_INJECTION_DE_NUAGES_DE_ANTI_QUARKS_VIRTUELS     VIDE --> AQ(%d)"  \
                                                             ,ETIQUETTE(anti_quark_virtuel_courant)                                     \
                                                              )                                                                         \
                                                        );                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ERep                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Initialisation eventuelle du modele a l'aide d'une repartition des charges de couleur     */ \
                                        /* des anti-quarks virtuels qui suit le champ general d'interaction...                       */

#    define    NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_GLUONS_VIRTUELS                                                        \
                         ADD2(NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS                                         \
                             ,NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_D_ANTI_QUARKS_VIRTUELS                                     \
                              )                                                                                                         \
                                        /* Nombre d'evenements, dont tous ne seront pas fructueux...                                 */
DEFV(Local,DEFV(Positive,INIT(nombre_d_evenements_pour_l_injection_de_nuages_de_gluons_virtuels
                             ,NOMBRE_D_EVENEMENTS_POUR_L_INJECTION_DE_NUAGES_DE_GLUONS_VIRTUELS
                              )
                )
     );
                                        /* Nombre d'evenements a produire pour generer une famille initiale de gluons virtuels.      */
#    define    INJECTION_DE_NUAGES_DE_GLUONS_VIRTUELS(reduction_du_nombre_d_evenements)                                                 \
                                        /* ATTENTION : cette procedure ne peut pas beneficier de 'OPTIMISATION(...)' car, en effet,  */ \
                                        /* elle a un argument...                                                                     */ \
                         Bblock                                                                                                         \
                         DEFV(pointF_3D,position_aleatoire);                                                                            \
                                        /* Pour memoriser la position initiale (aleatoire) du gluon virtuel courant.                 */ \
                         DEFINITION_DE_LA_VITESSE_ALEATOIRE;                                                                            \
                                        /* Pour memoriser la vitesse (aleatoire) du gluon virtuel courant, sous la forme d'un        */ \
                                        /* vecteur (vx,vy,vz) en coordonnees cartesiennes, mais aussi en coordonnees                 */ \
                                        /* spheriques {rho,theta,phi}.                                                               */ \
                         DEFV(gluon,POINTERs(gluon_virtuel_courant));                                                                   \
                                        /* Pour memoriser les caracteristiques du gluon courant...                                   */ \
                         Repe(REDUCTION_DES_NOMBRES_D_EVENEMENTS(reduction_du_nombre_d_evenements                                       \
                                                                ,nombre_d_evenements_pour_l_injection_de_nuages_de_gluons_virtuels      \
                                                                 )                                                                      \
                              )                                                                                                         \
                                        /* ATTENTION : le nombre d'evenements diminue quand la periode de l'horloge diminue          */ \
                                        /* elle aussi, et ce afin de compenser l'absence de 'GENERATION_D_UNE_PROBABILITE_01(...)'.  */ \
                              Bblock                                                                                                    \
                              DEFV(Float,INIT(champ_aleatoire,FLOT__UNDEF));                                                            \
                                        /* Pour calculer la valeur d'un champ aleatoire a l'emplacement du gluon potentiel.          */ \
                              GENERATION_D_UN_POINT(position_aleatoire);                                                                \
                                        /* Generation d'un site potentiel pour un gluon 'VIRTUEL'.                                   */ \
                              CALCUL_DU_CHAMP_GLOBAL(ASD1(position_aleatoire,x)                                                         \
                                                    ,ASD1(position_aleatoire,y)                                                         \
                                                    ,ASD1(position_aleatoire,z)                                                         \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_FLUX                                                   \
                                                    ,NE_PAS_CALCULER_LE_CHAMP_DE_CONFINEMENT                                            \
                                                    ,cutoff_d_initialisation                                                            \
                                                     );                                                                                 \
                              GENERATION_D_UNE_VALEUR(champ_aleatoire,MINIMUM_DU_CHAMP_GLOBAL,MAXIMUM_DU_CHAMP_GLOBAL);                 \
                                        /* Valeur du champ aleatoire a l'emplacement du gluon potentiel...                           */ \
                              Test(IFLE(champ_aleatoire,champ_global))                                                                  \
                                   Bblock                                                                                               \
                                        /* Lorsque le champ aleatoire est inferieur au champ global, le gluon potentiel est          */ \
                                        /* conserve avec le statut VIRTUEL :                                                         */ \
                                   DEBUT_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT(position_aleatoire);   \
                                   DEBUT_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;          \
                                   INITIALISATION_DU_MODULE_DE_LA_VITESSE_ALEATOIRE_D_UN_GLUON;                                         \
                                        /* Choix aleatoire du module de la vitesse du quark VIRTUEL.                                 */ \
                                   VITESSE_CARTESIENNE_POLAIRE(vitesse_courante                                                         \
                                                              ,rho_de_la_vitesse                                                        \
                                                              ,theta_polaire                                                            \
                                                              ,PAS_DE_DEPHASAGE                                                         \
                                                               );                                                                       \
                                        /* La vitesse du gluon est choisie orthogonale au plan forme par le moment angulaire du      */ \
                                        /* quark REEL dominant et par le vecteur joignant ce gluon au quark REEL dominant.           */ \
                                   FIN_DE_CHOIX_D_UNE_DIRECTION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;            \
                                   FIN_DE_ROTATION_D_ALIGNEMENT_SUR_LE_MOMENT_ANGULAIRE_DU_QUARK_REEL_DOMINANT;                         \
                                   CREATION_D_UN_GLUON_VIRTUEL(gluon_virtuel_courant                                                    \
                                                              ,position_aleatoire                                                       \
                                                              ,vitesse_courante                                                         \
                                                              ,CHARGE_DE_COULEUR_ROUGE(champ_de_valence_ROUGE)                          \
                                                              ,CHARGE_DE_COULEUR_VERTE(champ_de_valence_VERTE)                          \
                                                              ,CHARGE_DE_COULEUR_BLEUE(champ_de_valence_BLEUE)                          \
                                                               );                                                                       \
                                        /* Generation d'un gluon "VIRTUEL".                                                          */ \
                                   TRACE_D_UN_EVENEMENT(Prin1("STRONG_INJECTION_DE_NUAGES_DE_GLUONS_VIRTUELS          VIDE --> G(%d)"   \
                                                             ,ETIQUETTE(gluon_virtuel_courant)                                          \
                                                              )                                                                         \
                                                        );                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ERep                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Initialisation eventuelle du modele a l'aide d'une repartition des charges de couleur     */ \
                                        /* des gluons virtuels qui suit le champ general d'interaction...                            */

#    define    INJECTER_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE                                                          \
                         VRAI
DEFV(Local,DEFV(Logical,INIT(injecter_des_particules_virtuelles_autour_des_quarks_de_valence
                            ,INJECTER_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE
                             )
                )
     );
                                        /* Cet indicateur precise la nature du voisinage des quarks de valence :                     */
                                        /*                                                                                           */
                                        /*   VRAI : un nuage de particules virtuelles est cree autour de chaque quark de valence,    */
                                        /*   FAUX : on part simplement des trois quarks de valence.                                  */
                                        /*                                                                                           */
                                        /* Nota : cet indicateur peut voir son effet "annule" par celui des deux indicateurs qui     */
                                        /* suivent...                                                                                */

#    define    INITIALISER_AVEC_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE                                                  \
                         VRAI
DEFV(Local,DEFV(Logical,INIT(initialiser_avec_des_particules_virtuelles_autour_des_quarks_de_valence
                            ,INITIALISER_AVEC_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE
                             )
                )
     );
                                        /* Cet indicateur precise la nature du voisinage des quarks de valence a l'etat initial :    */
                                        /*                                                                                           */
                                        /*   VRAI : un nuage de particules virtuelles est cree autour de chaque quark de valence,    */
                                        /*   FAUX : on part simplement des trois quarks de valence.                                  */
                                        /*                                                                                           */
                                        /* Nota : cet indicateur peut voir son effet "annule" par celui de l'indicateur defini       */
                                        /* ci-dessus 'injecter_des_particules_virtuelles_autour_des_quarks_de_valence'...            */
#    define    RE_INITIALISER_AVEC_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE                                               \
                         VRAI
DEFV(Local,DEFV(Logical,INIT(re_initialiser_avec_des_particules_virtuelles_autour_des_quarks_de_valence
                            ,RE_INITIALISER_AVEC_DES_PARTICULES_VIRTUELLES_AUTOUR_DES_QUARKS_DE_VALENCE
                             )
                )
     );
                                        /* Cet indicateur precise la nature du voisinage des quarks de valence au cours de la        */
                                        /* simulation (apres l'instant initial...) :                                                 */
                                        /*                                                                                           */
                                        /*   VRAI : un nuage de particules virtuelles est cree autour de chaque quark de valence,    */
                                        /*   FAUX : le voisinage des trois quarks de valence reste inchange.                         */
                                        /*                                                                                           */
                                        /* Nota : cet indicateur peut voir son effet "annule" par celui de l'indicateur defini       */
                                        /* ci-dessus 'injecter_des_particules_virtuelles_autour_des_quarks_de_valence'...            */

#    define    INJECTION_QUELCONQUE_DE_NUAGES_DE_PARTICULES_VIRTUELLES(reduction_du_nombre_d_evenements)                                \
                                        /* ATTENTION : cette procedure ne peut pas beneficier de 'OPTIMISATION(...)' car, en effet,  */ \
                                        /* elle a un argument...                                                                     */ \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(injecter_des_particules_virtuelles_autour_des_quarks_de_valence))                                 \
                              Bblock                                                                                                    \
                              INJECTION_DE_NUAGES_DE_QUARKS_VIRTUELS(reduction_du_nombre_d_evenements);                                 \
                              INJECTION_DE_NUAGES_DE_ANTI_QUARKS_VIRTUELS(reduction_du_nombre_d_evenements);                            \
                              INJECTION_DE_NUAGES_DE_GLUONS_VIRTUELS(reduction_du_nombre_d_evenements);                                 \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                                        /* (re)-injection permanente a chaque pas de temps de nuages de particules virtuelles        */ \
                                        /* suivant le champ general d'interaction...                                                 */
#    define    ABSENCE_DE_REDUCTION_DU_NOMBRE_D_EVENEMENTS                                                                              \
                         FU                                                                                                             \
                                        /* Pour 'INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES', le nombre d'evenements n'est pas     */ \
                                        /* modifie...                                                                                */
#    define    ___INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES                                                                          \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(initialiser_avec_des_particules_virtuelles_autour_des_quarks_de_valence))                         \
                              Bblock                                                                                                    \
                              INJECTION_QUELCONQUE_DE_NUAGES_DE_PARTICULES_VIRTUELLES(ABSENCE_DE_REDUCTION_DU_NOMBRE_D_EVENEMENTS);     \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Initialisation eventuelle du modele a l'aide de nuages de particules virtuelles suivant   */ \
                                        /* le champ general d'interaction...                                                         */
#    define    REDUCTION_DU_NOMBRE_D_EVENEMENTS                                                                                         \
                         FRA1(FRA6(FU))
DEFV(Local,DEFV(Float,INIT(reduction_du_nombre_d_evenements
                          ,REDUCTION_DU_NOMBRE_D_EVENEMENTS
                           )
                )
     );
                                        /* Lors des re-injections "continues" par 'RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES'  */
                                        /* le nombre d'evenements est reduit par rapport a ce qu'il etait lors de l'initialisation   */
                                        /* par 'INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES'...                                     */
#    define    ___RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES                                                                       \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(re_initialiser_avec_des_particules_virtuelles_autour_des_quarks_de_valence))                      \
                              Bblock                                                                                                    \
                              INJECTION_QUELCONQUE_DE_NUAGES_DE_PARTICULES_VIRTUELLES(tSCALE(reduction_du_nombre_d_evenements));        \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Re-injection permanente a chaque pas de temps de nuages de particules virtuelles suivant  */ \
                                        /* le champ general d'interaction...                                                         */
#Aif      (defined(__VERSION__GENERATION_D_UN_NUCLEON) || defined(__VERSION__GENERATION_D_UN_MESON))
#Eif      (defined(__VERSION__GENERATION_D_UN_NUCLEON) || defined(__VERSION__GENERATION_D_UN_MESON))

#if       (defined(__VERSION__GENERATION_DU_VIDE) || defined(__VERSION__GENERATION_D_UN_DI_ELECTRON))
#    define    ___INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES                                                                          \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                                        /* Initialisation eventuelle du modele a l'aide de nuages de particules virtuelles suivant   */ \
                                        /* le champ general d'interaction...                                                         */
#    define    ___RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES                                                                       \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                                        /* Re-injection permanente a chaque pas de temps de nuages de particules virtuelles suivant  */ \
                                        /* le champ general d'interaction...                                                         */
#Aif      (defined(__VERSION__GENERATION_DU_VIDE) || defined(__VERSION__GENERATION_D_UN_DI_ELECTRON))
#Eif      (defined(__VERSION__GENERATION_DU_VIDE) || defined(__VERSION__GENERATION_D_UN_DI_ELECTRON))

BFonctionI

DEFV(LoF,GENERE__Fonction__OPT(INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES,In,___INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES))

EFonctionI

BFonctionI

DEFV(LoF,GENERE__Fonction__OPT(RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES,RIn,___RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES))

EFonctionI



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.