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