/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D E L ' I N T E R P O L A T I O N D E S P A R A M E T R E S : */ /* */ /* */ /* Author of '$xrq/nucleon.Lf.2$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1992??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* V E C T E U R S D E S T R A N S F O R M A T I O N S : */ /* */ /*************************************************************************************************************************************/ #define dTRANSFORMAT_31(liste_des_transformations) \ gDEFINITION_LISTE(liste_des_transformations,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION) \ /* Definition d'une liste de transformations particulieres. Ces vecteurs contiennent autant */ \ /* d'entrees qu'il y a de periodes de simulation possible, chacune d'entre elles donnant */ \ /* alors la valeur de la grandeur correspondante (par exemple 'ZOOM') a l'instant courant. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A L I T E S S U R L E S T R A N S F O R M A T I O N S : */ /* */ /*************************************************************************************************************************************/ #define sTRANSFORMAT_31(np,liste_des_transformations) \ gACCES_LISTE(np \ ,liste_des_transformations \ ,NUMERO_DE_LA_PREMIERE_PERIODE_DE_LA_SIMULATION \ ,nombre_de_periodes_de_la_simulation \ ) \ /* Formule generale definissant la suite des transformations possibles. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N I T I A L I S A T I O N D E S I N T E R P O L A T I O N S : */ /* */ /*************************************************************************************************************************************/ #define iTRANSFORMAT_31(liste_des_transformations,valeur_initiale) \ Bblock \ gINITIALISATION_LISTE(liste_des_transformations \ ,valeur_initiale \ ,NUMERO_DE_LA_PREMIERE_PERIODE_DE_LA_SIMULATION \ ,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION \ ) \ Eblock \ /* Initialisation d'une liste de transformations particulieres. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D E S T R A N S F O R M A T I O N S S P E C I F I Q U E S : */ /* */ /*************************************************************************************************************************************/ #define EN_TETE_DANS_LES_FICHIERS_DES_TRANSFORMATIONS \ ZERO #define SAUT_DANS_LES_FICHIERS_DES_TRANSFORMATIONS \ ZERO DEFV(Local,DEFV(Positive,INIT(en_tete_dans_les_fichiers_des_transformations,EN_TETE_DANS_LES_FICHIERS_DES_TRANSFORMATIONS))); DEFV(Local,DEFV(Positive,INIT(saut_dans_les_fichiers_des_transformations,SAUT_DANS_LES_FICHIERS_DES_TRANSFORMATIONS))); /* Definition du nombre de valeurs a sauter entre deux valeurs recuperees des fichiers de */ /* transformations. L'amplitude du saut sur le debut du fichier ("en_tete") a ete */ /* introduite le 20021104172814 par symetrie avec '$xrv/particule.11$I 20021104161517'. */ #define fTRANSFORMAT_31(fichier_des_transformations) \ DEFV(Local,DEFV(CHAR,INIT(POINTERc(fichier_des_transformations),NOM_PIPE_Local))); \ /* Definition d'un fichier de transformations particulieres. */ #define dfTRANSFORMAT_31(liste_des_transformations,fichier_des_transformations,VALEUR_IMPLICITE,valeur_par_defaut) \ dTRANSFORMAT_31(liste_des_transformations); \ fTRANSFORMAT_31(fichier_des_transformations); \ = TestADef VALEUR_IMPLICITE valeur_par_defaut /* Definition d'une liste de transformations particulieres, du fichier associe et du */ /* symbole de valeur implicite (ainsi que la valeur par defaut de celui-ci). */ /* */ /* ATTENTION, lors de l'appel de 'dfTRANSFORMAT_31(...)', il est imperatif de ne pas mettre */ /* de caractere ";" de fin et donc d'ecrire : */ /* */ /* dfTRANSFORMAT_31(...) */ /* */ /* car, en effet, dans le cas contraire, ce caractere ";" fait partie de la definition du */ /* symbole 'VALEUR_IMPLICITE' dont la valeur est alors 'valeur_par_defaut;'. */ #ifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_01 # define gTRANSFORMAT_31(fichier_des_transformations,liste_des_transformations,valeur_par_defaut) \ Bblock \ EGAL(nombre_de_periodes_de_la_simulation \ ,MIN2(nombre_de_periodes_de_la_simulation \ ,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION \ ) \ ); \ /* On notera que cette mise a jour aura lieu plusieurs fois, mais sans consequences... */ \ \ CALS(Fload_fichier_formatte_Float(fichier_des_transformations \ ,liste_des_transformations \ ,nombre_de_periodes_de_la_simulation \ ,ZERO \ ,saut_dans_les_fichiers_des_transformations \ ,VRAI \ ,FLOT(valeur_par_defaut) \ ,LE_NOM_DU_FICHIER_EST_CONVERTISSABLE_EN_UNE_VALEUR_NUMERIQUE \ ) \ ); \ /* ATTENTION, jusqu'au 20010422142633, a la place de 'nombre_de_periodes_de_la_simulation', */ \ /* il y avait : */ \ /* */ \ /* MIN2(nombre_de_periodes_de_la_simulation */ \ /* ,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION */ \ /* ) */ \ /* */ \ /* et cette valeur devait se retrouver aussi dans la definition de '__ParaLon', ce qui se */ \ /* trouve etre incompatible avec le fonctionnement de 'v $xcc/ccp$Z' qui, etant donnee la */ \ /* definition de 'NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION' (via 'DIX_MILLE'), est */ \ /* decoupee au cours du processus, et le 'define' correspondant se retrouve sur deux */ \ /* lignes. D'ou cette solution... */ \ \ &define __ParaVal liste_des_transformations&&& \ &define __ParaInd PREMIER_ELEMENT_D_UN_FICHIER&&& \ &define __ParaLon nombre_de_periodes_de_la_simulation&&& \ &define __ParaTyp TYPE_FORMAT_FLOT&&& \ &define __ParaFor FORMAT_FLOT_EDITION&&& \ \ Eblock \ /* Recuperation d'un fichier de transformations quelconque. On notera la syntaxe : */ \ /* */ \ /* FLOT(valeur_par_defaut) */ \ /* */ \ /* rendue obligatoire par les cas ou 'valeur_par_defaut' est une constante entiere (ou du */ \ /* moins une constante qui a l'air d'etre entiere). Ce cas s'est rencontre dans le programme */ \ /* 'v $xrk/ergodique.11$K' avec 'NOMBRE_D_ITERATIONS_IMPLICITE' lorsque fut introduite la */ \ /* possibilite de convertir un nom de fichier en valeur numerique... */ #Aifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_01 #Eifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_01 #ifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_02 # define gTRANSFORMAT_31(fichier_des_transformations,liste_des_transformations,valeur_par_defaut) \ Bblock \ gaINITIALISATION_LISTE(liste_des_transformations \ ,valeur_par_defaut \ ,NUMERO_DE_LA_PREMIERE_PERIODE_DE_LA_SIMULATION \ ,nombre_de_periodes_de_la_simulation \ ); \ /* Allocation de la memoire necessaire et initialisation par defaut (operation redondante */ \ /* avec celle qui est faite dans 'Fload_fichier_formatte_Float(...)'). */ \ \ CALS(Fload_fichier_formatte_Float(fichier_des_transformations \ ,liste_des_transformations \ ,nombre_de_periodes_de_la_simulation \ ,ZERO \ ,saut_dans_les_fichiers_des_transformations \ ,VRAI \ ,FLOT(valeur_par_defaut) \ ,LE_NOM_DU_FICHIER_EST_CONVERTISSABLE_EN_UNE_VALEUR_NUMERIQUE \ ) \ ); \ \ &define __ParaVal liste_des_transformations&&& \ &define __ParaInd PREMIER_ELEMENT_D_UN_FICHIER&&& \ &define __ParaLon nombre_de_periodes_de_la_simulation&&& \ &define __ParaTyp TYPE_FORMAT_FLOT&&& \ &define __ParaFor FORMAT_FLOT_EDITION&&& \ \ Eblock \ /* Recuperation d'un fichier de transformations quelconque. On notera la syntaxe : */ \ /* */ \ /* FLOT(valeur_par_defaut) */ \ /* */ \ /* rendue obligatoire par les cas ou 'valeur_par_defaut' est une constante entiere (ou du */ \ /* moins une constante qui a l'air d'etre entiere). Ce cas s'est rencontre dans le programme */ \ /* 'v $xrk/ergodique.11$K' avec 'NOMBRE_D_ITERATIONS_IMPLICITE' lorsque fut introduite la */ \ /* possibilite de convertir un nom de fichier en valeur numerique... */ #Aifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_02 #Eifdef GESTION_DES_LISTES_QUELCONQUES_VERSION_02 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* R E C U P E R A T I O N D ' U N E V A L E U R D A N S U N F I C H I E R */ /* D E T R A N S F O R M A T I O N S S P E C I F I Q U E S S ' I L E X I S T E : */ /* */ /*************************************************************************************************************************************/ #define vTRANSFORMAT_31(variable,acces_a_la_liste_des_transformations,index_d_acces,fichier_des_transformations) \ Bblock \ Test(IFNE_chaine(fichier_des_transformations,NOM_PIPE_Local)) \ Bblock \ EGAL(variable,acces_a_la_liste_des_transformations(index_d_acces)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Recuperation de la valeur d'une variable dans un fichier si celui-ci existe... */