/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L ' I N T E R A C T I O N S U B I E P A R U N C O R P S : */ /* */ /* */ /* Author of '$xrr/N_corps.12$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1998??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C A L C U L D E L ' I N T E R A C T I O N S U B I E P A R U N C O R P S : */ /* */ /*************************************************************************************************************************************/ Bblock Test(EST_VRAI(LOGI(ACCES_LISTE(liste_initiale_des_MOBILITE,corps)))) Bblock /* Cas des corps mobiles... */ Test(TOUJOURS_VRAI) Bblock /* Cas general... */ DEPILER_UN_POINT_LORS_DE_L_INTEGRATION_O2(ASD1(ACCES_COORDONNEES_INITIALES(corps),x) ,ASD1(ACCES_VITESSE_INITIALE(corps),dx) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),x) ,ASD1(ACCES_VITESSE_COURANTE(corps),dx) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),x) ,ASD1(ACCES_COORDONNEES_INITIALES(corps),y) ,ASD1(ACCES_VITESSE_INITIALE(corps),dy) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),y) ,ASD1(ACCES_VITESSE_COURANTE(corps),dy) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),y) ,ASD1(ACCES_COORDONNEES_INITIALES(corps),z) ,ASD1(ACCES_VITESSE_INITIALE(corps),dz) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),z) ,ASD1(ACCES_VITESSE_COURANTE(corps),dz) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),z) ); /* Mise en place du corps courant 'corps'. */ INTEGRATION_POUR_UN_POINT_D_UN_SYSTEME_D_EQUATIONS_DIFFERENTIELLES_O2(temps_courant,dct); /* Integration du systeme d'equations differentielles pour le corps courant 'corps'. */ EMPILER_UN_POINT_LORS_DE_L_INTEGRATION_O2(ASD1(ACCES_COORDONNEES_INITIALES(corps),x) ,ASD1(ACCES_VITESSE_INITIALE(corps),dx) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),x) ,ASD1(ACCES_VITESSE_COURANTE(corps),dx) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),x) ,ASD1(ACCES_COORDONNEES_INITIALES(corps),y) ,ASD1(ACCES_VITESSE_INITIALE(corps),dy) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),y) ,ASD1(ACCES_VITESSE_COURANTE(corps),dy) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),y) ,ASD1(ACCES_COORDONNEES_INITIALES(corps),z) ,ASD1(ACCES_VITESSE_INITIALE(corps),dz) ,ASD1(ACCES_COORDONNEES_COURANTES(corps),z) ,ASD1(ACCES_VITESSE_COURANTE(corps),dz) ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),z) ); /* Sauvegarde de l'etat du corps courant 'corps'. */ Eblock ATes Bblock /* Pour faire des tests sur le cas du mouvement inertiel... */ INITIALISATION_POINT_3D(ACCES_COORDONNEES_COURANTES(corps) ,AXPB(ASD1(ACCES_VITESSE_INITIALE(corps),dx) ,dct ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),x) ) ,AXPB(ASD1(ACCES_VITESSE_INITIALE(corps),dy) ,dct ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),y) ) ,AXPB(ASD1(ACCES_VITESSE_INITIALE(corps),dz) ,dct ,ASD1(ACCES_COORDONNEES_PRECEDENTES(corps),z) ) ); Eblock ETes Eblock ATes Bblock /* Cas des corps immobiles... */ Eblock ETes Eblock