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