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