/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   D I F F E R E N T E S   I N I T I A L I S A T I O N S  :                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/nucleon.LW.1$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1991??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   D E   L ' U N I V E R S   ( D E B U T ,                                                      */
/*        A V A N T   L ' E N T R E E   D E S   P A R A M E T R E S )  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ___DEBUT_DE_L_INITIALISATION_DE_L_UNIVERS                                                                                     \
                    Bblock                                                                                                              \
                    EGAL(X_quark_REEL_ROUGE,X_quark_REEL_ROUGE_INITIAL);                                                                \
                    EGAL(Y_quark_REEL_ROUGE,Y_quark_REEL_ROUGE_INITIAL);                                                                \
                    EGAL(Z_quark_REEL_ROUGE,Z_quark_REEL_ROUGE_INITIAL);                                                                \
                                        /* Initialisation de la position du quark REEL ROUGE.                                        */ \
                    EGAL(X_quark_REEL_VERTE,X_quark_REEL_VERTE_INITIAL);                                                                \
                    EGAL(Y_quark_REEL_VERTE,Y_quark_REEL_VERTE_INITIAL);                                                                \
                    EGAL(Z_quark_REEL_VERTE,Z_quark_REEL_VERTE_INITIAL);                                                                \
                                        /* Initialisation de la position du quark REEL VERTE.                                        */ \
                    EGAL(X_quark_REEL_BLEUE,X_quark_REEL_BLEUE_INITIAL);                                                                \
                    EGAL(Y_quark_REEL_BLEUE,Y_quark_REEL_BLEUE_INITIAL);                                                                \
                    EGAL(Z_quark_REEL_BLEUE,Z_quark_REEL_BLEUE_INITIAL);                                                                \
                                        /* Initialisation de la position du quark REEL ROUGE.                                        */ \
                    INITIALISATION_DE_L_ESPACE_DE_PARAMETRAGE;                                                                          \
                                        /* Initialisation du point courant de l'espace abstrait servant a parametrer le generateur   */ \
                                        /* d'evenements. Ceci est fait aussi dans '$xrq/nucleon.LB$I'...                             */ \
                    EGAL(adolescence_d_une_particule,ADOLESCENCE_D_UNE_PARTICULE);                                                      \
                                        /* Duree de l'adolescence d'une particule qui correspond a une periode au cours de laquelle  */ \
                                        /* elle ne peut rentrer en collision. La valeur implicite est choisie de facon telle qu'elle */ \
                                        /* corresponde a une duree superieure a celle necessaire a s'echapper du voisinage d'une     */ \
                                        /* particule ; ceci permet d'eviter que des particules emises soient immediatement           */ \
                                        /* reabsorbee. L'initialisation a lieu dans 'DEBUT_DE_L_INITIALISATION_DE_L_UNIVERS' a       */ \
                                        /* cause du compilateur de 'SYSTEME_SG4D..._IRIX_CC' qui refuse d'initialiser cette          */ \
                                        /* variable avec l'expression 'ADOLESCENCE_D_UNE_PARTICULE' qui contient un 'MIN2(...)'...   */ \
                    EGAL(distance_caracteristique_g1,DISTANCE_CARACTERISTIQUE_g1);                                                      \
                                        /* 'distance_caracteristique_g1' ne peut etre initialise a la compilation puisqu'en effet,   */ \
                                        /* 'DISTANCE_CARACTERISTIQUE_g1' contient des lignes trigonometriques...                     */ \
                    EGAL(distance_caracteristique_g2,DISTANCE_CARACTERISTIQUE_g2);                                                      \
                                        /* 'distance_caracteristique_g2' ne peut etre initialise a la compilation puisqu'en effet,   */ \
                                        /* 'DISTANCE_CARACTERISTIQUE_g2' contient des lignes trigonometriques...                     */ \
                    INITIALISATION_POINT_3D(Lsource                                                                                     \
                                           ,X_DE_LA_SOURCE_LUMINEUSE                                                                    \
                                           ,Y_DE_LA_SOURCE_LUMINEUSE                                                                    \
                                           ,Z_DE_LA_SOURCE_LUMINEUSE                                                                    \
                                            );                                                                                          \
                                        /* Initialisation de la position de la source lumineuse...                                   */ \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'univers de la simulation...                                           */

BFonctionI

DEFV(LoF,GENERE__Fonction__OPT(DEBUT_DE_L_INITIALISATION_DE_L_UNIVERS,U,___DEBUT_DE_L_INITIALISATION_DE_L_UNIVERS))

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   D E   L ' U N I V E R S   ( F I N ,                                                          */
/*        A P R E S   L ' E N T R E E   D E S   P A R A M E T R E S )  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ___FIN_DE_L_INITIALISATION_DE_L_UNIVERS                                                                                       \
                    Bblock                                                                                                              \
                    DEFINITION_DE_L_ESPACE_PHYSIQUE;                                                                                    \
                                        /* Initialisation de la definition de l'espace physique.                                     */ \
                    INITIALISATION_ACCROISSEMENT_3D(champ_electrique,champ_electrique_X,champ_electrique_Y,champ_electrique_Z);         \
                    INITIALISATION_ACCROISSEMENT_3D(champ_magnetique,champ_magnetique_X,champ_magnetique_Y,champ_magnetique_Z);         \
                                        /* Initialisation de l'eventuel champ electro-magnetique.                                    */ \
                    INITIALISATION_D_UNE_PARTICULE_INEXISTANTE(PARTICULE_NON_DEFINIE);                                                  \
                                        /* Et ce afin de verifier que des particules non definies ne sont pas utilisees...           */ \
                    INITIALISATION_DE_L_ENSEMBLE_DES_PARTICULES;                                                                        \
                                        /* Initialisation de la liste des particules contenues dans le proton.                       */ \
                    DEFINITION_DU_QUARK_REEL_ROUGE;                                                                                     \
                    DEFINITION_DU_QUARK_REEL_VERTE;                                                                                     \
                    DEFINITION_DU_QUARK_REEL_BLEUE;                                                                                     \
                                        /* Definition des trois quarks REELs constitutifs du proton, mais sans leurs charges         */ \
                                        /* de couleurs (voir ci-dessous)...                                                          */ \
                    COULEUR_DU_QUARK_REEL_ROUGE;                                                                                        \
                    COULEUR_DU_QUARK_REEL_VERTE;                                                                                        \
                    COULEUR_DU_QUARK_REEL_BLEUE;                                                                                        \
                                        /* Mise en place de la couleur (qr,qv,qb) d'un quark REEL. En effet, lors de la mise en      */ \
                                        /* place des quarks REELs par 'DEFINITION_DU_QUARK_REEL_ROUGE/VERTE/BLEUE', on ne peut       */ \
                                        /* simultanement definir leur charge de couleurs, car cette derniere reference les extrema   */ \
                                        /* du champ, qui sont eux-memes calcules a partir de la position des quarks REELs. Ainsi,    */ \
                                        /* en definissant 'DEFINITION_DU_QUARK_REEL_ROUGE' (le premier defini), il serait necessaire */ \
                                        /* de connaitre les quarks REELs VERTE et BLEUE, alors que leur position n'est pas encore    */ \
                                        /* definie. Donc, on attendra d'avoir defini la position des 3 quarks REELs avant de fixer   */ \
                                        /* leur charge de couleur par 'COULEUR_DU_QUARK_REEL_ROUGE/VERTE/BLEUE'...                   */ \
                    INJECTION_DE_NUAGES_DE_PARTICULES_VIRTUELLES;                                                                       \
                                        /* Enfin, une eventuelle initialisation du modele a l'aide de nuages de particules           */ \
                                        /* virtuelles autour des quarks REELs est effectuee...                                       */ \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'univers de la simulation...                                           */

BFonctionI

DEFV(LoF,GENERE__Fonction__OPT(FIN_DE_L_INITIALISATION_DE_L_UNIVERS,U,___FIN_DE_L_INITIALISATION_DE_L_UNIVERS))

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H O I X   E N T R E   L E   M O D E   R A P I D E   E T   L E   M O D E   N O R M A L  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FORCER_LE_MODE_RAPIDE_DE_LA_SYNTHESE_D_IMAGE                                                                                  \
                    FAUX
DEFV(Local,DEFV(Logical,INIT(forcer_le_mode_rapide_de_la_synthese_d_image,FORCER_LE_MODE_RAPIDE_DE_LA_SYNTHESE_D_IMAGE)));
                                        /* Indicateur disant si la synthese d'image aura lieu suivant un mode degrade ('VRAI' : les  */
                                        /* trainees ainsi que les convolutions ne sont pas calculees) ou bien suivant le mode normal */
                                        /* ('FAUX' : ou les trainees ainsi que les convolutions sont conditionnelles).               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   D E   L A   S Y N T H E S E   D ' I M A G E  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#ifdef    PROJECTION_3D_2D_VERSION_02
#Aifdef   PROJECTION_3D_2D_VERSION_02
#    message   "ATTENTION : aux macros inexistantes..."
#Eifdef   PROJECTION_3D_2D_VERSION_02

#define   DEBUT_D_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE                                                                                 \
                    Bblock                                                                                                              \
                    SET_DIMENSIONS_2D(Xmin_IMAGE,Xmax_IMAGE,Ymin_IMAGE,Ymax_IMAGE);                                                     \
                                        /* Dimensionnement des images a generer...                                                   */ \
                                                                                                                                        \
                    INITIALISATION_POINT_3D(periode_1_de_translation_de_l_origine                                                       \
                                           ,PERIODE_1_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OX                                         \
                                           ,PERIODE_1_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OY                                         \
                                           ,PERIODE_1_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OZ                                         \
                                            );                                                                                          \
                    INITIALISATION_ACCROISSEMENT_3D(translation_1_de_l_origine                                                          \
                                                   ,TRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OX                                            \
                                                   ,TRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OY                                            \
                                                   ,TRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OZ                                            \
                                                    );                                                                                  \
                    INITIALISATION_ACCROISSEMENT_3D(Dtranslation_1_de_l_origine                                                         \
                                                   ,dTRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OX                                           \
                                                   ,dTRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OY                                           \
                                                   ,dTRANSLATION_1_DE_L_ORIGINE_LE_LONG_DE_OZ                                           \
                                                    );                                                                                  \
                                        /* Definition de la periode '1' de translation de l'origine.                                 */ \
                    INITIALISATION_POINT_3D(periode_2_de_translation_de_l_origine                                                       \
                                           ,PERIODE_2_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OX                                         \
                                           ,PERIODE_2_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OY                                         \
                                           ,PERIODE_2_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OZ                                         \
                                            );                                                                                          \
                    INITIALISATION_ACCROISSEMENT_3D(translation_2_de_l_origine                                                          \
                                                   ,TRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OX                                            \
                                                   ,TRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OY                                            \
                                                   ,TRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OZ                                            \
                                                    );                                                                                  \
                    INITIALISATION_ACCROISSEMENT_3D(Dtranslation_2_de_l_origine                                                         \
                                                   ,dTRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OX                                           \
                                                   ,dTRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OY                                           \
                                                   ,dTRANSLATION_2_DE_L_ORIGINE_LE_LONG_DE_OZ                                           \
                                                    );                                                                                  \
                                        /* Definition de la periode '2' de translation de l'origine.                                 */ \
                    INITIALISATION_POINT_3D(periode_3_de_translation_de_l_origine                                                       \
                                           ,PERIODE_3_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OX                                         \
                                           ,PERIODE_3_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OY                                         \
                                           ,PERIODE_3_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OZ                                         \
                                            );                                                                                          \
                    INITIALISATION_ACCROISSEMENT_3D(translation_3_de_l_origine                                                          \
                                                   ,TRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OX                                            \
                                                   ,TRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OY                                            \
                                                   ,TRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OZ                                            \
                                                    );                                                                                  \
                    INITIALISATION_ACCROISSEMENT_3D(Dtranslation_3_de_l_origine                                                         \
                                                   ,dTRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OX                                           \
                                                   ,dTRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OY                                           \
                                                   ,dTRANSLATION_3_DE_L_ORIGINE_LE_LONG_DE_OZ                                           \
                                                    );                                                                                  \
                                        /* Definition de la periode '3' de translation de l'origine.                                 */ \
                    INITIALISATION_POINT_3D(periode_4_de_translation_de_l_origine                                                       \
                                           ,PERIODE_4_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OX                                         \
                                           ,PERIODE_4_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OY                                         \
                                           ,PERIODE_4_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OZ                                         \
                                            );                                                                                          \
                    INITIALISATION_ACCROISSEMENT_3D(translation_4_de_l_origine                                                          \
                                                   ,TRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OX                                            \
                                                   ,TRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OY                                            \
                                                   ,TRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OZ                                            \
                                                    );                                                                                  \
                    INITIALISATION_ACCROISSEMENT_3D(Dtranslation_4_de_l_origine                                                         \
                                                   ,dTRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OX                                           \
                                                   ,dTRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OY                                           \
                                                   ,dTRANSLATION_4_DE_L_ORIGINE_LE_LONG_DE_OZ                                           \
                                                    );                                                                                  \
                                        /* Definition de la periode '4' de translation de l'origine.                                 */ \
                    INITIALISATION_POINT_3D(periode_5_de_translation_de_l_origine                                                       \
                                           ,PERIODE_5_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OX                                         \
                                           ,PERIODE_5_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OY                                         \
                                           ,PERIODE_5_DE_TRANSLATION_DE_L_ORIGINE_LE_LONG_DE_OZ                                         \
                                            );                                                                                          \
                    INITIALISATION_ACCROISSEMENT_3D(translation_5_de_l_origine                                                          \
                                                   ,TRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OX                                            \
                                                   ,TRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OY                                            \
                                                   ,TRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OZ                                            \
                                                    );                                                                                  \
                    INITIALISATION_ACCROISSEMENT_3D(Dtranslation_5_de_l_origine                                                         \
                                                   ,dTRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OX                                           \
                                                   ,dTRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OY                                           \
                                                   ,dTRANSLATION_5_DE_L_ORIGINE_LE_LONG_DE_OZ                                           \
                                                    );                                                                                  \
                                        /* Definition de la periode '5' de translation de l'origine.                                 */ \
                    Eblock                                                                                                              \
                                        /* Debut d'initialisation de la synthese d'image...                                          */
#define   FIN_D_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE                                                                                   \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(forcer_le_mode_rapide_de_la_synthese_d_image))                                                         \
                                        /* ATTENTION : de facon a acceler au mieux le processus, il est evident que ce test doit     */ \
                                        /* etre tout au debut de 'FIN_D_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE'...                    */ \
                         Bblock                                                                                                         \
                         EGAL(memoriser_le_champ_global,FAUX);                                                                          \
                                        /* Dans le cas ou le mode rapide est force, le champ global ne peut etre memorise,           */ \
                         EGAL(generer_les_trainees,FAUX);                                                                               \
                                        /* Dans le cas ou le mode rapide est force, on inhibe le calcul des trainees,                */ \
                         EGAL(nombre_de_points_du_noyau_de_convolution,ABSENCE_DE_CONVOLUTION);                                         \
                                        /* Dans le cas ou le mode rapide est force, on inhibe les convolutions,                      */ \
                         EGAL(niveau_de_NOIR_remonte,NOIR);                                                                             \
                                        /* Dans le cas ou le mode rapide est force, le niveau de 'NOIR' restera inchange.            */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(synchroniser_la_generation_des_images))                                                                \
                         Bblock                                                                                                         \
                         INITIALISATION_D_UN_FEU(FEU_feu_DE_SYNCHRONISATION_DE_LA_SIMULATION_DES_HADRONS);                              \
                                        /* Initialisation du feu...                                                                  */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    RE_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE;                                                                           \
                                        /* Re-initialisation de la synthese d'image...                                               */ \
                    INITIALISATION_DU_NOYAU_DE_CONVOLUTION;                                                                             \
                                        /* Initialisation eventuelle du noyau de convolution...                                      */ \
                    MISE_A_JOUR_D_UN_CUMUL_POUR_LE_CALCUL_DES_TRAINEES(TRAINEES_ROUGE,Image_ROUGE);                                     \
                    MISE_A_JOUR_D_UN_CUMUL_POUR_LE_CALCUL_DES_TRAINEES(TRAINEES_VERTE,Image_VERTE);                                     \
                    MISE_A_JOUR_D_UN_CUMUL_POUR_LE_CALCUL_DES_TRAINEES(TRAINEES_BLEUE,Image_BLEUE);                                     \
                                        /* Initialisation eventuelle du calcul des trainees...                                       */ \
                    Eblock                                                                                                              \
                                        /* Fin d'initialisation de la synthese d'image...                                            */
#define   RE_INITIALISATION_DE_LA_SYNTHESE_D_IMAGE                                                                                      \
                    Bblock                                                                                                              \
                    CALi(Inoir(Image_ROUGE));                                                                                           \
                    CALi(Inoir(Image_VERTE));                                                                                           \
                    CALi(Inoir(Image_BLEUE));                                                                                           \
                                        /* Initialisation des images Resultat avant le changement eventuel de (pasX,pasY) ; on       */ \
                                        /* notera qu'elles contiennent les differentes images de l'animation...                      */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : a cause de la notion de trainees (qui s'obtiennent car cumul iteratif des     */ \
                                        /* differentes images resultant de la simulation), on ne peut pas initialiser le fond des    */ \
                                        /* images avec autre chose que du 'NOIR', car sinon le fond des images augmenteraient au     */ \
                                        /* cours du temps...                                                                         */ \
                    SET_NOIR_PLANCHER(NOIR_PLANCHER);                                                                                   \
                                        /* Pour la prise en compte des problemes des quarks qui disparaissent visuellement a cause   */ \
                                        /* de 'MULTIPLEXAGE_RVB_223(...)' qui peut facilement generer du NOIR si les trois           */ \
                                        /* composantes chromatiques sont faibles dans [0,1]...                                       */ \
                    INITIALISATION_TRANSFORMATION;                                                                                      \
                                        /* Initialisation de la transformation tri-dimensionnelle courante.                          */ \
                                                                                                                                        \
                                        /* ATTENTION : on faisait autrefois :                                                        */ \
                                        /*                                                                                           */ \
                                        /*                  CALS(Iinit_Z_Buffer());                                                  */ \
                                        /*                                                                                           */ \
                                        /* mais maintenant, c'est 'VISUALISATION_D_UNE_LISTE_DE_POINTS' qui le prend en charge...    */ \
                                                                                                                                        \
                    SET_FACTEUR_D_ELOIGNEMENT_EN_Z_DE_L_OBSERVATEUR(FACTEUR_D_ELOIGNEMENT_EN_Z_DE_L_OBSERVATEUR);                       \
                                        /* Facteur d'eloignement en 'Z' de l'observateur destine a une projection "standard"...      */ \
                    SET_DECALAGE_ANGULAIRE_DE_L_OBSERVATEUR(decalage_angulaire_pour_la_stereoscopie);                                   \
                                        /* Initialisation du facteur de rotation de l'observateur permettant ainsi de creer          */ \
                                        /* des paires stereoscopiques...                                                             */ \
                    INITIALISATION_DE_LA_LISTE_DES_POINTS;                                                                              \
                                        /* (re-)initialisation de l'index de rangement dans la liste de tri des spheres...           */ \
                    Eblock                                                                                                              \
                                        /* Re-initialisation de la synthese d'image...                                               */



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