/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A L A D E R I V A T I O N F O R M E L L E : */ /* */ /* */ /* Author of '$xrf/recursif.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1993??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 ' F ' : */ /* */ /*************************************************************************************************************************************/ /* ATTENTION, il est imperatif que les fonctions derivables formellement soient definies */ /* dans un fichier a part afin qu'elles ne soient pas l'objet d'une double definition. En */ /* effet, on trouve dans 'v $xcc/cpp$Z' : */ /* */ /* $CA $module$w */ /* | $xcp/cpp$X ... -c$PASSE_D -e$PASSE_5 */ /* > $fichierR */ /* */ /* Ainsi, si par exemple la definition de 'RAYON(h,theta)' etait faite localement dans le */ /* fichier '$xrf/recursif.11$K', cette definition apparaitrait deux fois dans le fichier */ /* '$module$w' : une premiere fois en tete, provenant de '$PASSE_D' ou l'on ne trouve que */ /* les definitions du type '-define ...', puis une deuxieme fois a la suite, la ou se trouve */ /* concatene au fichier '$module$W' des '-define ...' le fichier '$fichierA' a compiler... */ /* Nota : le modele presentement utilise pourrait etre complique en multipliant le vecteur */ /* des trois fonction ci-apres par une matrice de rotation d'Euler de la facon suivante : */ /* */ /* / \ / \ */ /* | F (Euler1,Euler2,Euler3,h,theta) | | F (h,theta) | */ /* | x | | x | */ /* | | | | */ /* | F (Euler1,Euler2,Euler3,h,theta) | = M(Euler1,Euler2,Euler3).| F (h,theta) | */ /* | y | | y | */ /* | | | | */ /* | F (Euler1,Euler2,Euler3,h,theta) | | F (h,theta) | */ /* | z | | z | */ /* \ / \ / */ /* */ /* avec : */ /* */ /* Euler1 = constante (angle de nutation 'theta'), */ /* Euler2 = f(theta) (angle de precession 'psi'), */ /* Euler3 = PI/2 (angle de rotation pure 'phi'). */ /* */ /* Mais ATTENTION a ne pas confondre les deux angles 'theta' : d'une part l'angle 'theta' */ /* des coordonnees polaires (planes) ci-dessous, et d'autre part l'angle de nutation 'theta' */ /* de la matrice de rotation d'Euler (appele donc ci-dessus 'Euler1')... */ -define RAYON(h,theta) \ -_-_-_- MUL3(h \ -_-_-_- ,r0 \ -_-_-_- ,BARY(FACTEUR_MAXIMAL_RAYON \ -_-_-_- ,facteur_minimal_rayon \ -_-_-_- ,NORM(theta,theta0_courant,AXPB(nombre_d_iterations,dtheta,theta0_courant)) \ -_-_-_- ) \ -_-_-_- ) /* Definition du rayon variable (en fonction de 'theta'). */ -define Fx(h,theta) \ -_-_-_- MUL2(kx \ -_-_-_- ,Xcartesienne_2D(RAYON(h,theta) \ -_-_-_- ,MUL2(tx,theta) \ -_-_-_- ) \ -_-_-_- ) /* Definition de la fonction F (h,theta). */ /* x */ -define Fy(h,theta) \ -_-_-_- MUL2(ky \ -_-_-_- ,Ycartesienne_2D(RAYON(h,theta) \ -_-_-_- ,MUL2(ty,theta) \ -_-_-_- ) \ -_-_-_- ) /* Definition de la fonction F (h,theta). */ /* y */ -define Fz(h,theta) \ -_-_-_- MUL3(kz \ -_-_-_- ,h \ -_-_-_- ,theta \ -_-_-_- ) /* Definition de la fonction F (h,theta). */ /* z */