/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A L A R E P R E S E N T A T I O N D E P O I N C A R E : */ /* */ /* */ /* Author of '$xrk/fluide_2D.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1998??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D O N N E E S D E V I S U A L I S A T I O N " T O R I Q U E " : */ /* */ /*************************************************************************************************************************************/ #define VISUALISER_SUR_UN_TORE \ FAUX DEFV(Local,DEFV(Logical,INIT(visualiser_sur_un_tore,VISUALISER_SUR_UN_TORE))); /* Indique si l'on visualise dans l'espace "normal" ('FAUX'), ou bien sur un tore ('VRAI'), */ /* le temps modulo la periode etant un des parametres de cette surface. Rappelons qu'un */ /* tore est defini par l'equation : */ /* */ /* X = r.cos(alpha) */ /* Y = r.sin(alpha) */ /* */ /* et : */ /* */ /* r = gR + pR.cos(beta) */ /* Z = pR.sin(beta) */ /* */ /* avec : */ /* */ /* gR = grand rayon a l'origine O, */ /* pR = petit rayon definissant une section quelconque, */ /* alpha = angle polaire dans le plan (OX,OY), */ /* beta = angle polaire decrivant une section quelconque. */ /* */ #define ANGLE_ALPHA_DU_TORE(cx,cy,cz,t) \ CERC(MUL2(DIVI(SOUS(t,instant_initial) \ ,DIVI(CERCLE_TRIGONOMETRIQUE,MAX2(R3,I3)) \ ) \ ,CERCLE_TRIGONOMETRIQUE \ ) \ ) #define ANGLE_BETA_DU_TORE(cx,cy,cz,t) \ Theta_2D(cx,cy) /* Definitions des rayons angles 'alpha' et 'beta'. On notera que 'alpha' est defini en */ /* convertissant le temps 't' en periodes (par division par la periode, egale, rappelons-le, */ /* au quotient de 2.PI par la pulsation 'R3'), puis en le convertissant en angle exprime en */ /* radians (par multiplication par 2.PI), puis enfin en le ramenant dans [0,2.PI]... */ #define FACTEUR_DU_RAYON_gR \ GRO6(FRA10(FU)) DEFV(Local,DEFV(Float,INIT(facteur_du_rayon_gR,FACTEUR_DU_RAYON_gR))); #define FACTEUR_DU_RAYON_pR \ GRO4(FRA10(FU)) DEFV(Local,DEFV(Float,INIT(facteur_du_rayon_pR,FACTEUR_DU_RAYON_pR))); /* Definitions des rayons 'gR' et 'pR' du tore. */ #define RAYON_gR_DU_TORE(cx,cy,cz,t) \ MUL2(facteur_du_rayon_gR \ ,FRA3(RpdisF3D(ASD1(espace_physique,origine) \ ,ASD1(espace_physique,extremite) \ ) \ ) \ ) #define RAYON_pR_DU_TORE(cx,cy,cz,t) \ MUL2(facteur_du_rayon_pR,Rho_2D(cx,cy)) /* Definition des coordonnees polaires generalisees du tore. */ #define RAYON_PROJETE_DU_TORE(cx,cy,cz,t) \ ADD2(RAYON_gR_DU_TORE(cx,cy,cz,t) \ ,Xcartesienne_2D(RAYON_pR_DU_TORE(cx,cy,cz,t) \ ,ANGLE_BETA_DU_TORE(cx,cy,cz,t) \ ) \ ) \ /* Definition de la variable 'r'. */ #define gX_DU_TORE(cx,cy,cz,t) \ Xcartesienne_2D(RAYON_PROJETE_DU_TORE(cx,cy,cz,t) \ ,ANGLE_ALPHA_DU_TORE(cx,cy,cz,t) \ ) #define gY_DU_TORE(cx,cy,cz,t) \ Ycartesienne_2D(RAYON_PROJETE_DU_TORE(cx,cy,cz,t) \ ,ANGLE_ALPHA_DU_TORE(cx,cy,cz,t) \ ) #define gZ_DU_TORE(cx,cy,cz,t) \ NEUT(Ycartesienne_2D(RAYON_pR_DU_TORE(cx,cy,cz,t) \ ,ANGLE_BETA_DU_TORE(cx,cy,cz,t) \ ) \ ) /* Equation cartesienne {X,Y,Z} du tore centre en (0,0,0). On verra a ce propos avec interet */ /* les commentaires de 'MEMORISATION_DU_POINT_COURANT(...)' dans 'v $xrk/attractor.16$I'. */ BFonctionF DEFV(Local,DEFV(FonctionF,X_du_tore(cx,cy,cz,t))) /* Fonction introduite le 19970403162937 pour alleger le travail de '$Cc' sur '$LACT29'... */ DEFV(Argument,DEFV(Float,cx)); DEFV(Argument,DEFV(Float,cy)); DEFV(Argument,DEFV(Float,cz)); DEFV(Argument,DEFV(Float,t)); /* Definition des coordonnees spatio-temporelles. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ RETU(gX_DU_TORE(cx,cy,cz,t)); Eblock EFonctionF BFonctionF DEFV(Local,DEFV(FonctionF,Y_du_tore(cx,cy,cz,t))) /* Fonction introduite le 19970403162937 pour alleger le travail de '$Cc' sur '$LACT29'... */ DEFV(Argument,DEFV(Float,cx)); DEFV(Argument,DEFV(Float,cy)); DEFV(Argument,DEFV(Float,cz)); DEFV(Argument,DEFV(Float,t)); /* Definition des coordonnees spatio-temporelles. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ RETU(gY_DU_TORE(cx,cy,cz,t)); Eblock EFonctionF BFonctionF DEFV(Local,DEFV(FonctionF,Z_du_tore(cx,cy,cz,t))) /* Fonction introduite le 19970403162937 pour alleger le travail de '$Cc' sur '$LACT29'... */ DEFV(Argument,DEFV(Float,cx)); DEFV(Argument,DEFV(Float,cy)); DEFV(Argument,DEFV(Float,cz)); DEFV(Argument,DEFV(Float,t)); /* Definition des coordonnees spatio-temporelles. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ RETU(gZ_DU_TORE(cx,cy,cz,t)); Eblock EFonctionF #define X_DU_TORE(cx,cy,cz,t) \ X_du_tore(cx,cy,cz,t) #define Y_DU_TORE(cx,cy,cz,t) \ Y_du_tore(cx,cy,cz,t) #define Z_DU_TORE(cx,cy,cz,t) \ Z_du_tore(cx,cy,cz,t) /* Equation cartesienne {X,Y,Z} du tore centre en (0,0,0). On verra a ce propos avec interet */ /* les commentaires de 'MEMORISATION_DU_POINT_COURANT(...)' dans 'v $xrk/attractor.16$I'. */