/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O U R B E   T R I D I M E N S I O N N E L L E   P E R I O D I Q U E                                                      */
/*        I N S P I R E E   D E   'v $xrk/SolConnue.21$K'  :                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrk/SinCos.11$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1998??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
@define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   B A S E   E T   U N I V E R S E L L E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.11.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Les extrema des coordonnees {x,y,z}                                                                            */
/*                  ainsi que ceux de leurs differentielles                                                                          */
/*                  {dx,dy,dz} sont fixees un peu arbitrairement                                                                     */
/*                  et sans etre parametrees. Elles ont ete                                                                          */
/*                  obtenues a l'aide du programme 'v $xtc/lorenz.01$c'.                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   hXmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
#define   hYmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
#define   hZmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
                                        /* Definition du "coin" inferieur-gauche-arriere de l'espace physique.                       */

#define   hXmax_ESPACE                                                                                                                  \
                    PARE(1.0)
#define   hYmax_ESPACE                                                                                                                  \
                    PARE(1.0)
#define   hZmax_ESPACE                                                                                                                  \
                    PARE(1.0)
                                        /* Definition du "coin" superieur-droite-avant de l'espace physique.                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.12.I"

#define   dXmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
#define   dYmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
#define   dZmin_ESPACE                                                                                                                  \
                    PARE(-1.0)
                                        /* Definition des minima des differentielles {dx,dy,dz}.                                     */
#define   dXmax_ESPACE                                                                                                                  \
                    PARE(1.0)
#define   dYmax_ESPACE                                                                                                                  \
                    PARE(1.0)
#define   dZmax_ESPACE                                                                                                                  \
                    PARE(1.0)
                                        /* Definition des maxima des differentielles {dx,dy,dz}.                                     */

#include  xrk/attractor.1D.I"
                                        /* Formules de renormalisation des differentielles dans [0,1] ; elles sont utilisees lorsque */
                                        /* la production d'images en couleurs est demandee (voir 'visualiser_en_RVB').               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   D I F F E R E N T S   E S P A C E S   E T   D E   L ' E F F E T   D E   B R U M E  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.13.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A I D E   A U   C A D R A G E   D E S   I M A G E S  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.1C.I"

DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES
                                        /* Definition des extrema des coordonnees et des derivees. On notera bien l'absence de       */
                                        /* point-virgule apres 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES'.   */

#define   EDITER_LES_COORDONNEES_ET_LES_VITESSES                                                                                        \
                    FAUX
DEFV(Local,DEFV(Logical,INIT(editer_les_coordonnees_et_les_vitesses,EDITER_LES_COORDONNEES_ET_LES_VITESSES)));
                                        /* Indique si a chaque pas de temps on doit editer ('VRAI') ou pas ('FAUX') les coordonnees  */
                                        /* et les vitesses de chaque corps...                                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E S   I M A G E S  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.14.I"

#include  xrk/attractor.1A.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   G E N E R A L E S   R E L A T I V E S   A   L A   V I S U A L I S A T I O N  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NOMBRE_D_ITERATIONS                                                                                                           \
                    CENT                                                                                                                \
                                        /* A ete introduit le 19990520122834 a cause de son utilisation dans la definition de 'DCT'  */ \
                                        /* qui doit elle-meme preceder l'appel de '$xrk/attractor.14$I', alors que c'est grace a     */ \
                                        /* lui que l'on definit habituellement 'NOMBRE_D_ITERATIONS' via un "include" supplementaire */ \
                                        /* 'v $xrk/attractor.41$I NOMBRE_D_ITERATIONS'...                                            */

#define   DCT                                                                                                                           \
                    DIVI(CERCLE_TRIGONOMETRIQUE,NOMBRE_D_ITERATIONS)
DEFV(Local,DEFV(Float,INIT(dct,DCT)));
                                        /* Definition de 'dt'. La valeur implicite permet de balayer une periode des solutions       */

#include  xrk/attractor.14.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   M E M O R I S A T I O N   D U   P O I N T   C O U R A N T  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.16.I"

#define   RAYON_DE_VISUALISATION                                                                                                        \
                    FRA6(FRA10(mhXYZlongueur_ESPACE))
DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION)));
                                        /* Rayon du disque materialisant une iteration. Il fut exprime longtemps sous la             */
                                        /* forme :                                                                                   */
                                        /*                                                                                           */
                                        /*                  GRO4(FRA4(FU))                                                           */
                                        /*                                                                                           */

BFonctionI

DEFV(Local,DEFV(FonctionI,memorisation_1_point_07(AXf,AYf,AZf,AdXf,AdYf,AdZf,numero_de_l_iteration_courante)))
DEFV(Argument,DEFV(Float,AXf));
DEFV(Argument,DEFV(Float,AYf));
DEFV(Argument,DEFV(Float,AZf));
                                        /* Definition de la position {x,y,z} de l'iteration courante.                                */
DEFV(Argument,DEFV(Float,AdXf));
DEFV(Argument,DEFV(Float,AdYf));
DEFV(Argument,DEFV(Float,AdZf));
                                        /* Definition des differentielles {dx,dy,dz} de la position de l'iteration courante.         */
DEFV(Argument,DEFV(Int,numero_de_l_iteration_courante));
                                        /* Numero de l'iteration courante afin d'attenuer eventuellement la luminance des points     */
                                        /* materialisant chaque iteration en fonction de leur numero (les premieres iterations etant */
                                        /* plus sombres, et les dernieres etant plus lumineuses).                                    */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xrk/attractor.15.I"

     INIT_ERROR;
     /*..............................................................................................................................*/
     MEMORISATION_DU_POINT_COURANT(X_DERIVEE_DANS_01(AdXf)
                                  ,Y_DERIVEE_DANS_01(AdYf)
                                  ,Z_DERIVEE_DANS_01(AdZf)
                                   );
                                        /* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est   */
                                        /* visible en fonction des conditions de visualisation...                                    */
     RETU_ERROR;
     Eblock

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   C O U R B E   T R I D I M E N S I O N N E L L E   P E R I O D I Q U E  :                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Soit le systeme de trois fonctions de                                                                          */
/*                  la variable 't' (ou 'theta') :                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                 ex.t     ecx               esx                                                    */
/*                                      x(t) = Kx.e    .[cos   (ocx.t+pcx).sin   (osx.t+psx)] + Tx                                   */
/*                                                                                                                                   */
/*                                                 ey.t     ecy               esy                                                    */
/*                                      y(t) = Ky.e    .[cos   (ocy.t+pcy).sin   (osy.t+psy)] + Ty                                   */
/*                                                                                                                                   */
/*                                                 ez.t     ecz               esz                                                    */
/*                                      z(t) = Kz.e    .[cos   (ocz.t+pcz).sin   (osz.t+psz)] + Tz                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou {ecx,esx,ecy,esy,ecz,esz} sont de preference des                                                              */
/*                  entiers positifs ou nuls (puisqu'utilises dans 'PUIX(...)').                                                     */
/*                                                                                                                                   */
/*                    On notera que le 20170110125058, ces formules                                                                  */
/*                  ont inspire le programme 'v $xrs/epicycloide.31$K'.                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.17.I"

dfTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,fichier_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE,NOMBRE_D_ITERATIONS)
                                        /* Definition du fichier des nombres d'iterations.                                           */
#define   sNOMBRE_D_ITERATIONS(numero_de_la_periode)                                                                                    \
                    INTE(sTRANSFORMAT_31(numero_de_la_periode,liste_NOMBRE_D_ITERATIONS))                                               \
                                        /* Formule generale definissant les variations du nombre d'iterations.                       */

#define   T0                                                                                                                            \
                    FRA10(FRA10(FU))

                                        /* Exactes...                                                                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   V I S U A L I S A T I O N   E T   D ' I N T E R P O L A T I O N  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/particule.31.I"

dfTRANSFORMAT_31(liste_VARIABLE_t0,fichier_VARIABLE_t0,VARIABLE_t0_IMPLICITE,T0)
                                        /* Definition du fichier la valeur initiale de t.                                            */
#define   sVARIABLE_t0(numero_de_la_periode)                                                                                            \
                    FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VARIABLE_t0))                                                       \
                                        /* Formule generale definissant les variations de la valeur initiale de t.                   */

dfTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,fichier_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE,DCT)
                                        /* Definition du fichier des pas de temps 'dt'.                                              */
#define   sPAS_DE_TEMPS_dct(numero_de_la_periode)                                                                                       \
                    FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_PAS_DE_TEMPS_dct))                                                  \
                                        /* Formule generale definissant les variations du pas de temps.                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' S '  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   X_AMPLIFICATION                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(X_amplification,X_AMPLIFICATION)));
#define   X_TRANSLATION                                                                                                                 \
                    FZERO
DEFV(Local,DEFV(Float,INIT(X_translation,X_TRANSLATION)));

#define   Y_AMPLIFICATION                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(Y_amplification,Y_AMPLIFICATION)));
#define   Y_TRANSLATION                                                                                                                 \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Y_translation,Y_TRANSLATION)));

#define   Z_AMPLIFICATION                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(Z_amplification,Z_AMPLIFICATION)));
#define   Z_TRANSLATION                                                                                                                 \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Z_translation,Z_TRANSLATION)));

#define   X_EXPONENTIELLE                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(X_exponentielle,X_EXPONENTIELLE)));
#define   Y_EXPONENTIELLE                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Y_exponentielle,Y_EXPONENTIELLE)));
#define   Z_EXPONENTIELLE                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Z_exponentielle,Z_EXPONENTIELLE)));

#define   X_EXPOSANT_COSX                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(X_exposant_COSX,X_EXPOSANT_COSX)));
#define   X_EXPOSANT_SINX                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(X_exposant_SINX,X_EXPOSANT_SINX)));

#define   Y_EXPOSANT_COSX                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(Y_exposant_COSX,Y_EXPOSANT_COSX)));
#define   Y_EXPOSANT_SINX                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(Y_exposant_SINX,Y_EXPOSANT_SINX)));

#define   Z_EXPOSANT_COSX                                                                                                               \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Z_exposant_COSX,Z_EXPOSANT_COSX)));
#define   Z_EXPOSANT_SINX                                                                                                               \
                    FU
DEFV(Local,DEFV(Float,INIT(Z_exposant_SINX,Z_EXPOSANT_SINX)));

#define   X_PULSATION_COSX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(X_pulsation_COSX,X_PULSATION_COSX)));
#define   X_PULSATION_SINX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(X_pulsation_SINX,X_PULSATION_SINX)));

#define   Y_PULSATION_COSX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(Y_pulsation_COSX,Y_PULSATION_COSX)));
#define   Y_PULSATION_SINX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(Y_pulsation_SINX,Y_PULSATION_SINX)));

#define   Z_PULSATION_COSX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(Z_pulsation_COSX,Z_PULSATION_COSX)));
#define   Z_PULSATION_SINX                                                                                                              \
                    FU
DEFV(Local,DEFV(Float,INIT(Z_pulsation_SINX,Z_PULSATION_SINX)));

#define   X_PHASE_COSX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(X_phase_COSX,X_PHASE_COSX)));
#define   X_PHASE_SINX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(X_phase_SINX,X_PHASE_SINX)));

#define   Y_PHASE_COSX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Y_phase_COSX,Y_PHASE_COSX)));
#define   Y_PHASE_SINX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Y_phase_SINX,Y_PHASE_SINX)));

#define   Z_PHASE_COSX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Z_phase_COSX,Z_PHASE_COSX)));
#define   Z_PHASE_SINX                                                                                                                  \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Z_phase_SINX,Z_PHASE_SINX)));

#define   Sx(t)                                                                                                                         \
                    AXPB(X_amplification                                                                                                \
                        ,MUL3(EXPX(MUL2(X_exponentielle,t))                                                                             \
                             ,PUIX(COSX(AXPB(X_pulsation_COSX,t,X_phase_COSX)),X_exposant_COSX)                                         \
                             ,PUIX(SINX(AXPB(X_pulsation_SINX,t,X_phase_SINX)),X_exposant_SINX)                                         \
                              )                                                                                                         \
                        ,X_translation                                                                                                  \
                         )                                                                                                              \
                                        /* Definition de la fonction S (t).                                                          */ \
                                        /*                            x                                                              */
#define   Sy(t)                                                                                                                         \
                    AXPB(Y_amplification                                                                                                \
                        ,MUL3(EXPX(MUL2(Y_exponentielle,t))                                                                             \
                             ,PUIX(COSX(AXPB(Y_pulsation_COSX,t,Y_phase_COSX)),Y_exposant_COSX)                                         \
                             ,PUIX(SINX(AXPB(Y_pulsation_SINX,t,Y_phase_SINX)),Y_exposant_SINX)                                         \
                              )                                                                                                         \
                        ,Y_translation                                                                                                  \
                         )                                                                                                              \
                                        /* Definition de la fonction S (t).                                                          */ \
                                        /*                            y                                                              */
#define   Sz(t)                                                                                                                         \
                    AXPB(Z_amplification                                                                                                \
                        ,MUL3(EXPX(MUL2(Z_exponentielle,t))                                                                             \
                             ,PUIX(COSX(AXPB(Z_pulsation_COSX,t,Z_phase_COSX)),Z_exposant_COSX)                                         \
                             ,PUIX(SINX(AXPB(Z_pulsation_SINX,t,Z_phase_SINX)),Z_exposant_SINX)                                         \
                              )                                                                                                         \
                        ,Z_translation                                                                                                  \
                         )                                                                                                              \
                                        /* Definition de la fonction S (t).                                                          */ \
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L ' I N T E G R A T I O N   D U   S Y S T E M E                                                */
/*        D ' E Q U A T I O N S   D I F F E R E N T I E L L E S  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/integr.1B.vv.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   I N I T I A L I S A T I O N S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.18.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O U R B E   T R I D I M E N S I O N N E L L E   P E R I O D I Q U E                                                      */
/*        I N S P I R E E   D E   'v $xrk/SolConnue.21$K'  :                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     INITIALISATIONS_GENERALES;
                                        /* Initialisations generales faites au tout debut...                                         */

     iTRANSFORMAT_31(liste_VARIABLE_t0,VARIABLE_t0_IMPLICITE);
                                        /* Initialisation de la valeur initiale de t.                                                */
     iTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE);
                                        /* Initialisation du pas de temps.                                                           */
     iTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE);
                                        /* Initialisation du nombre d'iterations.                                                    */

#include  xrv/champs_5.1A.I"

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;

                         PROCESS_ARGUMENT_FICHIER("VARIABLE_t0="
                                                 ,fichier_VARIABLE_t0
                                                 ,liste_VARIABLE_t0
                                                 ,VARIABLE_t0_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENT_FICHIER("PAS_DE_TEMPS_dct="
                                                 ,fichier_PAS_DE_TEMPS_dct
                                                 ,liste_PAS_DE_TEMPS_dct
                                                 ,PAS_DE_TEMPS_dct_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENT_FICHIER("NOMBRE_D_ITERATIONS="
                                                 ,fichier_NOMBRE_D_ITERATIONS
                                                 ,liste_NOMBRE_D_ITERATIONS
                                                 ,NOMBRE_D_ITERATIONS_IMPLICITE
                                                 ,gTRANSFORMAT_31
                                                  );

                         PROCESS_ARGUMENTS_DE_VISUALISATION;

                         PROCESS_ARGUMENTS_DE_VISUALISATION_DES_AXES_DE_COORDONNEES;

                         GET_ARGUMENT_I("n=""iterations=",nombre_d_iterations);

                         GET_ARGUMENT_F("dt=""dct=",dct);

                         GET_ARGUMENT_F("kx=""Kx=",X_amplification);
                         GET_ARGUMENT_F("Tx=",X_translation);

                         GET_ARGUMENT_F("ex=",X_exponentielle);
                         GET_ARGUMENT_F("ecx=",X_exposant_COSX);
                         GET_ARGUMENT_F("ocx=",X_pulsation_COSX);
                         GET_ARGUMENT_F("pcx=",X_phase_COSX);

                         GET_ARGUMENT_F("esx=",X_exposant_SINX);
                         GET_ARGUMENT_F("osx=",X_pulsation_SINX);
                         GET_ARGUMENT_F("psx=",X_phase_SINX);

                         GET_ARGUMENT_F("ky=""Ky=",Y_amplification);
                         GET_ARGUMENT_F("Ty=",Y_translation);

                         GET_ARGUMENT_F("ey=",Y_exponentielle);
                         GET_ARGUMENT_F("ecy=",Y_exposant_COSX);
                         GET_ARGUMENT_F("ocy=",Y_pulsation_COSX);
                         GET_ARGUMENT_F("pcy=",Y_phase_COSX);

                         GET_ARGUMENT_F("esy=",Y_exposant_SINX);
                         GET_ARGUMENT_F("osy=",Y_pulsation_SINX);
                         GET_ARGUMENT_F("psy=",Y_phase_SINX);

                         GET_ARGUMENT_F("kz=""Kz=",Z_amplification);
                         GET_ARGUMENT_F("Tz=",Z_translation);

                         GET_ARGUMENT_F("ez=",Z_exponentielle);
                         GET_ARGUMENT_F("ecz=",Z_exposant_COSX);
                         GET_ARGUMENT_F("ocz=",Z_pulsation_COSX);
                         GET_ARGUMENT_F("pcz=",Z_phase_COSX);

                         GET_ARGUMENT_F("esz=",Z_exposant_SINX);
                         GET_ARGUMENT_F("osz=",Z_pulsation_SINX);
                         GET_ARGUMENT_F("psz=",Z_phase_SINX);

                         GET_ARGUMENT_L("coordonnees_vitesses=",editer_les_coordonnees_et_les_vitesses);
                         )
                    );

#include  xrv/champs_5.19.I"
                                        /* Pour eviter le message :                                                                  */
                                        /*                                                                                           */
                                        /*                  Static function is not referenced.                                       */
                                        /*                                                                                           */
                                        /* sur 'SYSTEME_ES9000_AIX_CC'...                                                            */

#include  xrk/attractor.19.I"
                                        /* Validations et definition de l'espace physique.                                           */

     Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)
          Bblock
          PARALLELISME(BLOC(RE_INITIALISATION_DE_L_HORLOGE;
                            INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);
                                        /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image.    */

                            vTRANSFORMAT_31(nombre_d_iterations
                                           ,sNOMBRE_D_ITERATIONS
                                           ,numero_de_la_periode_courante
                                           ,fichier_NOMBRE_D_ITERATIONS
                                            );
                                        /* Calcul du nombre d'iterations lorsqu'il est variable.                                     */

                            vTRANSFORMAT_31(dct
                                           ,sPAS_DE_TEMPS_dct
                                           ,numero_de_la_periode_courante
                                           ,fichier_PAS_DE_TEMPS_dct
                                            );
                                        /* Calcul du pas de temps.                                                                   */

                            Komp(numero_de_l_iteration_courante,nombre_d_iterations)
                                 Bblock
                                 MISE_A_JOUR(cx_t_1,cx,cy_t_1,cy,cz_t_1,cz);
                                        /* Sauvegarde de l'etat anterieur.                                                           */

                                 MISE_A_JOUR(cx,Sx(temps_courant)
                                            ,cy,Sy(temps_courant)
                                            ,cz,Sz(temps_courant)
                                             );
                                        /* Calcul de la fonction.                                                                    */

                                 Test(IFGT(numero_de_l_iteration_courante,PREMIERE_ITERATION_D_UN_Komp))
                                      Bblock
                                      EGAL(dcx,SOUS(cx,cx_t_1));
                                      EGAL(dcy,SOUS(cy,cy_t_1));
                                      EGAL(dcz,SOUS(cz,cz_t_1));
                                        /* Et approximation des differentielles...                                                   */
                                      Eblock
                                 ATes
                                      Bblock
                                      EGAL(dcx,FZERO);
                                      EGAL(dcy,FZERO);
                                      EGAL(dcz,FZERO);
                                        /* Initialisation des differentielles pour la premiere visualisation si celle-ci a lieu      */
                                        /* en couleurs. On notera que 'FZERO' est la valeur la plus "logique"...                     */
                                      Eblock
                                 ETes

                                 RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;
                                        /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les    */
                                        /* extrema pourraient etre utilises pour la visualisation...                                 */

                                 Test(IFOU(IL_FAUT(visualiser_le_fantome)
                                          ,IFGE(numero_de_l_iteration_courante,PREMIERE_ITERATION_VISUALISEE)
                                           )
                                      )
                                      Bblock
                                      CALS(memorisation_1_point_07(SOUS(cx,Xcentre_ESPACE)
                                                                  ,SOUS(cy,Ycentre_ESPACE)
                                                                  ,SOUS(cz,Zcentre_ESPACE)
                                                                  ,dcx
                                                                  ,dcy
                                                                  ,dcz
                                                                  ,numero_de_l_iteration_courante
                                                                   )
                                           );
                                        /* Memorisation de l'iteration courante...                                                   */

                                      Test(IL_FAUT(editer_les_coordonnees_et_les_vitesses))
                                           Bblock
                                           CAL2(Prin1("temps=%f",temps_courant));
                                           CAL2(Prin3("     coordonnees={%+.17f,%+.17f,%+.17f}"
                                                     ,cx
                                                     ,cy
                                                     ,cz
                                                      )
                                                );
                                           CAL2(Prin3("     vitesse={%+.17f,%+.17f,%+.17f}"
                                                     ,dcx
                                                     ,dcy
                                                     ,dcz
                                                      )
                                                );
                                           CAL2(Prin0("\n"));
                                           Eblock
                                      ATes
                                           Bblock
                                           Eblock
                                      ETes
                                      Eblock
                                 ATes
                                      Bblock
                                      Eblock
                                 ETes

                                 INCREMENTATION_DE_L_HORLOGE(dct);
                                        /* Simulation du temps de la simulation...                                                   */
                                 Eblock
                            EKom

                            VISUALISATION_DES_AXES_DE_COORDONNEES;
                                        /* Visualisation si necessaire des trois axes de coordonnees.                                */

                            GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;));
                                        /* Generation de l'image courante...                                                         */
                            )
                      ,BLOC(PASSAGE_A_L_IMAGE_SUIVANTE;)
                      ,numero_de_la_periode_courante
                       );
          Eblock
     EKom

     EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;
                                        /* Edition facultative des extrema des coordonnees et des derivees.                          */

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.