/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D U   M O D E L E   D E   L A   S T R U C T U R E   D Y N A M I Q U E   D U   P R O T O N  :       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/nucleon.LM$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1991??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H R O N O M E T R A G E   D E   L A   S I M U L A T I O N  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/rdn_walk.54.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I M U L A T I O N   D E   L A   S T R U C T U R E   D Y N A M I Q U E   D U   P R O T O N  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ___SIMULATION_DE_LA_STRUCTURE_DYNAMIQUE_D_UN_HADRON                                                                           \
                    Bblock                                                                                                              \
                    Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)                            \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(chronometrer_la_simulation))                                                                      \
                              Bblock                                                                                                    \
                              CAL2(Prin1("\n CHRONOMETRAGE DE LA PERIODE %d\n",numero_de_la_periode_courante_de_la_simulation));        \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         RE_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE;                                                                      \
                                        /* Initialisation de la synthese d'image systematique pour chaque nouvelle image...          */ \
                         CHANGEMENT_DU_POINT_DE_VUE;                                                                                    \
                                        /* Positionnement de l'observateur ; mais ATTENTION, cette sequence ne peut etre placee      */ \
                                        /* dans 'RE_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE', car en effet, elle est contenue dans     */ \
                                        /* la sequence 'FIN_D_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE' qui est referencee avant        */ \
                                        /* l'appel a 'SIMULATION_DE_LA_STRUCTURE_DYNAMIQUE_D_UN_HADRON' ; ce qui fait qu'avant la    */ \
                                        /* premiere image, on ferait par exemple le produit de deux rotations. On notera le fait     */ \
                                        /* que 'GESTION_DE_LA_SOURCE_LUMINEUSE' est appele dans 'CHANGEMENT_DU_POINT_DE_VUE' apres   */ \
                                        /* le zoom, mais avant la rotation, et ce afin que la source lumineuse reste immobile au     */ \
                                        /* niveau orientation par rapport a l'observateur (sinon, elle risquerait de se retrouver    */ \
                                        /* derriere le proton...).                                                                   */ \
                                                                                                                                        \
                         Test(IFNE(numero_de_la_periode_courante_de_la_simulation,PREMIERE_ITERATION_D_UN_Komp))                        \
                              Bblock                                                                                                    \
                              CHRONOMETRAGE_DE_LA_SIMULATION("EVENEMENTS COLLISIONNELS POUR LES PARTICULES"                             \
                                                            ,BLOC(EVENEMENTS_COLLISIONNELS_POUR_LES_PARTICULES;)                        \
                                                             );                                                                         \
                                        /* Evenements collisionnels pour l'ensemble des particules presentes dans le proton,         */ \
                                        /* et correspondant, par exemple, a ce que j'appelerai, des collisions...                    */ \
                              CHRONOMETRAGE_DE_LA_SIMULATION("EVENEMENTS CONDITIONNELS POUR CERTAINS QUARKS"                            \
                                                            ,BLOC(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_QUARKS;)                       \
                                                             );                                                                         \
                                        /* Evenements conditionnels pour quelques uns des quarks presents dans le proton             */ \
                                        /* (REELs ou VIRTUELs).                                                                      */ \
                              CHRONOMETRAGE_DE_LA_SIMULATION("EVENEMENTS CONDITIONNELS POUR CERTAINS ANTI-QUARKS"                       \
                                                            ,BLOC(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_ANTI_QUARKS;)                  \
                                                             );                                                                         \
                                        /* Evenements conditionnels pour quelques uns des anti-quarks presents dans le proton        */ \
                                        /* (REELs ou VIRTUELs).                                                                      */ \
                              CHRONOMETRAGE_DE_LA_SIMULATION("EVENEMENTS CONDITIONNELS POUR CERTAINS GLUONS"                            \
                                                            ,BLOC(EVENEMENTS_CONDITIONNELS_POUR_CERTAINS_GLUONS;)                       \
                                                             );                                                                         \
                                        /* Evenements conditionnels pour quelques uns des gluons presents dans le proton.            */ \
                              CHRONOMETRAGE_DE_LA_SIMULATION("FLUCTUATIONS QUANTIQUES DU VIDE"                                          \
                                                            ,BLOC(FLUCTUATIONS_QUANTIQUES_DU_VIDE;)                                     \
                                                             );                                                                         \
                                        /* Fluctuations quantiques du vide...                                                        */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                                        /* La premiere periode ne sert qu'a visualiser l'etat initial...                             */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         CHRONOMETRAGE_DE_LA_SIMULATION("VISUALISATION DE L'ENSEMBLE DES QUARKS"                                        \
                                                       ,BLOC(VISUALISATION_DE_L_ENSEMBLE_DES_QUARKS;);                                  \
                                                        );                                                                              \
                                        /* Pre-visualisation de la famille de quarks (REELs et VIRTUELs) par mise en liste...        */ \
                         CHRONOMETRAGE_DE_LA_SIMULATION("VISUALISATION DE L'ENSEMBLE DES ANTI-QUARKS"                                   \
                                                       ,BLOC(VISUALISATION_DE_L_ENSEMBLE_DES_ANTI_QUARKS;);                             \
                                                        );                                                                              \
                                        /* Pre-visualisation de la famille de anti-quarks (REELs et VIRTUELs) par mise en liste...   */ \
                         CHRONOMETRAGE_DE_LA_SIMULATION("VISUALISATION DE L'ENSEMBLE DES GLUONS"                                        \
                                                       ,BLOC(VISUALISATION_DE_L_ENSEMBLE_DES_GLUONS;);                                  \
                                                        );                                                                              \
                                        /* Pre-visualisation de la famille de gluons (VIRTUELs) par mise en liste...                 */ \
                                                                                                                                        \
                         CHRONOMETRAGE_DE_LA_SIMULATION("TRI D'UNE LISTE DE POINTS"                                                     \
                                                       ,BLOC(CALCUL_DU_PSEUDO_CENTRE_DE_GRAVITE_ET_TRI_D_UNE_LISTE_DE_POINTS;)          \
                                                        );                                                                              \
                                        /* Tri par'Z' croissant de l'ensemble des spheres representative des particules.             */ \
                         CHRONOMETRAGE_DE_LA_SIMULATION("VISUALISATION D'UNE LISTE DE POINTS"                                           \
                                                       ,BLOC(VISUALISATION_D_UNE_LISTE_DE_POINTS(numero_de_la_periode_courante););      \
                                                        );                                                                              \
                                        /* Visualisation de l'ensemble des spheres representative des particules avec traitement     */ \
                                        /* de l'aliasing grace a ce tri...                                                           */ \
                                                                                                                                        \
                         CHRONOMETRAGE_DE_LA_SIMULATION("GENERATION D'UNE IMAGE"                                                        \
                                                       ,BLOC(GENERATION_D_UNE_IMAGE(numero_de_la_periode_courante                       \
                                                                                   ,numero_de_la_premiere_periode_a_visualiser          \
                                                                                    );                                                  \
                                                             );                                                                         \
                                                        );                                                                              \
                                        /* Memorisation de l'image, en notant que deux quarks voisins sur l'image peuvent etre       */ \
                                        /* en fait sur des plans tres differents, et apparaitre ainsi avec des luminances tres       */ \
                                        /* differentes (rappelons que les differents objets sont tridimensionnels). D'autre part     */ \
                                        /* la visualisation a lieu dans la "boite" univers : il y a donc clipping tridimensionnel    */ \
                                        /* ce qui peut faire disparaitre brutalement des particules par l'avant ou par l'arriere...  */ \
                                                                                                                                        \
                         CHRONOMETRAGE_DE_LA_SIMULATION("DEPLACEMENT DE L'ENSEMBLE DES QUARKS"                                          \
                                                       ,BLOC(DEPLACEMENT_DE_L_ENSEMBLE_DES_QUARKS;)                                     \
                                                        );                                                                              \
                                        /* Deplacement des quarks...                                                                 */ \
                         CHRONOMETRAGE_DE_LA_SIMULATION("DEPLACEMENT DE L'ENSEMBLE DES ANTI-QUARKS"                                     \
                                                       ,BLOC(DEPLACEMENT_DE_L_ENSEMBLE_DES_ANTI_QUARKS;)                                \
                                                        );                                                                              \
                                        /* Deplacement des anti-quarks...                                                            */ \
                         CHRONOMETRAGE_DE_LA_SIMULATION("DEPLACEMENT DE L'ENSEMBLE DES GLUONS"                                          \
                                                       ,BLOC(DEPLACEMENT_DE_L_ENSEMBLE_DES_GLUONS;)                                     \
                                                        );                                                                              \
                                        /* Deplacement des gluons...                                                                 */ \
                                                                                                                                        \
                         CHRONOMETRAGE_DE_LA_SIMULATION("RE-INJECTION DE NUAGES DE PARTICULES VIRTUELLES"                               \
                                                       ,BLOC(RE_INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES;)                          \
                                                        );                                                                              \
                                        /* Re-injection eventuelle de nuages de particules virtuelles suivant le champ global...     */ \
                                                                                                                                        \
                         AUTO_REGULATION;                                                                                               \
                                        /* On tente eventuellement d'auto-reguler le nombre de particules...                         */ \
                                                                                                                                        \
                         TOP_D_HORLOGE;                                                                                                 \
                                        /* Le temps s'ecoule inexorablement...                                                       */ \
                                                                                                                                        \
                         QUELQUES_VERIFICATIONS_AU_COURS_DE_LA_SIMULATION;                                                              \
                                        /* Et on verifie enfin la coherence de quelques variables...                                 */ \
                         Eblock                                                                                                         \
                    EKom                                                                                                                \
                                                                                                                                        \
                    Test(IFOU(IL_FAUT(tracer_les_evenements)                                                                            \
                             ,IL_FAUT(creer_la_base_de_donnees_geometriques)                                                            \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         CAL2(Prin0("\n"));                                                                                             \
                                        /* Ceci est destine aux cas ou l'on trace les evenements et/ou l'on edite la geometrie, car  */ \
                                        /* en effet dans ce cas il manque le dernier 'new-line' ce que n'aime pas 'vi'...            */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Eblock                                                                                                              \
                                        /* Simulation top d'horloge par top d'horloge de la structure interne du proton et de        */ \
                                        /* sa dynamique...                                                                           */



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