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