$$$$ CINEMB * CINEMB PROCEDUR PYROS1 96/01/03 21:16:05 1968 'DEBPROC' CINEMB MESH0*'MAILLAGE' MESH1*'MAILLAGE' MESH2*'MAILLAGE' MESH3*'MAILLAGE'; ********************************************************************* * INPUT: * MESH0=MESH TO BE PLOTTED * MESH1=MESH OF POI1 INDICATING THE SUCESSIVE POSITION OF THE POINT * OF VIEW OF THE OBSERVER * MESH2=MESH OF POI1 INDICATING THE SUCCESSIVE DIRECTION POINTED BY * THE EYES OF THE OBSERVER * MESH3=MESH OF POI1 INDICATING THE SUCCESSIVE DIRECTION OF THE AXE * OF THE HEAD OF THE OBSERVER * OUTPUT: * DEFOT=SUCCESSIVE DEFORME OF THE MESH REFERENCED TO THE FIRST POSITION * OF THE OBSERVER ********************************************************************* * P.PEGON/JRC ISPRA/10.95 ********************************************************************* * LOK=VRAI; * * verification des donnees * LMOT1=MESH1 'ELEM' 'TYPE' ; 'SI' ('NEG' ('DIME' LMOT1) 1); LOK=FAUX; 'MESS' 'CINEMA: MESH1 contient plusieurs types d"element'; 'SINON'; 'SI' ('NEG' ('EXTR' LMOT1 1) 'POI1'); LOK=FAUX; 'MESS' 'CINEMA: MESH1 n"est pas un maillage de POI1'; 'FINSI'; 'FINSI'; * LMOT2=MESH2 'ELEM' 'TYPE' ; 'SI' ('NEG' ('DIME' LMOT2) 1); LOK=FAUX; 'MESS' 'CINEMA: MESH2 contient plusieurs types d"element'; 'SINON'; 'SI' ('NEG' ('EXTR' LMOT2 1) 'POI1'); LOK=FAUX; 'MESS' 'CINEMA: MESH2 n"est pas un maillage de POI1'; 'FINSI'; 'FINSI'; * LMOT3=MESH3 'ELEM' 'TYPE' ; 'SI' ('NEG' ('DIME' LMOT3) 1); LOK=FAUX; 'MESS' 'CINEMA: MESH3 contient plusieurs types d"element'; 'SINON'; 'SI' ('NEG' ('EXTR' LMOT3 1) 'POI1'); LOK=FAUX; 'MESS' 'CINEMA: MESH3 n"est pas un maillage de POI1'; 'FINSI'; 'FINSI'; * NBEL1='NBEL' MESH1; NBEL2='NBEL' MESH2; NBEL3='NBEL' MESH3; 'SI' ('NEG' NBEL1 NBEL2); LOK=FAUX; 'MESS' 'CINEMA: MESH1 et MESH2 n"ont pas le meme nb d"elements'; 'FINSI'; 'SI' ('NEG' NBEL1 NBEL3); LOK=FAUX; 'MESS' 'CINEMA: MESH1 et MESH3 n"ont pas le meme nb d"elements'; 'FINSI'; 'SI' ('EGA' NBEL1 1); LOK=FAUX; 'MESS' 'CINEMA: MESH1 ne contient que un element'; 'FINSI'; * 'SI' LOK; 'MESS' 'CINEMA: traitement deformee numero' 1 'sur' NBEL1; O0=0. 0. 0.; * * traitement du premier point * OEIL1='POINT' ('ELEM' MESH1 1) 1; DIRE1='POINT' ('ELEM' MESH2 1) 1; VECT1='POINT' ('ELEM' MESH3 1) 1; VECT1=VECT1/('NORM' VECT1); DIRE1=DIRE1 'MOIN' ( (DIRE1 'PSCAL' VECT1) * VECT1 ); DIRE1=DIRE1/('NORM' DIRE1); UUUU1='MANU' 'CHPO' MESH0 3 'UX' 0 'UY' 0 'UZ' 0; DEFO1='DEFO' MESH0 UUUU1 1; DEFOT=DEFO1; XX1 YY1 ZZ1='COOR' MESH0; * * traitement des autres points * J=1; 'REPE' LAB1 (NBEL1-1); J=J+1; 'MESS' 'CINEMA: traitement deformee numero' J 'sur' NBEL1; * OEILJ='POINT' ('ELEM' MESH1 J) 1; DIREJ='POINT' ('ELEM' MESH2 J) 1; VECTJ='POINT' ('ELEM' MESH3 J) 1; * VECTJ=VECTJ/('NORM' VECTJ); OMEJ0=VECTJ 'PVEC' VECT1; SINJ0='NORM' OMEJ0; COSJ0=VECT1 'PSCA' VECTJ; 'SI' (SINJ0 '>' 1.E-4); 'SI' (('ABS' COSJ0) '>' 1.E-4); ANGJ0='ATG' SINJ0 COSJ0; 'SINON'; ANGJ0=90.; 'FINSI'; 'SINON'; OMEJ0=VECTJ 'PVECT' DIREJ; 'SI' (COSJ0 '>' 0.); ANGJ0=0.; 'SINON'; ANGJ0=180.; 'FINSI'; 'FINSI'; * DIREJ=DIREJ 'MOIN' ( (DIREJ 'PSCAL' VECTJ) * VECTJ ); DIREJ=DIREJ/('NORM' DIREJ); * 'SI' ('NEG' ANGJ0 0.); 'DEPL' DIREJ 'TOUR' ANGJ0 O0 OMEJ0; 'FINSI'; * TRAJ1=OEIL1 'MOINS' OEILJ; XTRAJ1 YTRAJ1 ZTRAJ1='COOR' TRAJ1; UUUJ1='MANU' 'CHPO' MESH0 3 'UX' XTRAJ1 'UY' YTRAJ1 'UZ' ZTRAJ1; * OMEJ1=DIREJ 'PVEC' DIRE1; SINJ1='NORM' OMEJ1; * COSJ1=DIREJ 'PSCA' DIRE1; 'SI' (SINJ1 '>' 1.E-4); 'SI' (('ABS' COSJ1) '>' 1.E-4); ANGJ1='ATG' SINJ1 COSJ1; 'SINON'; ANGJ1=90.; 'FINSI'; 'SINON'; OMEJ1=VECT1; 'SI' (COSJ1 '>' 0.); ANGJ1=0.; 'SINON'; ANGJ1=180.; 'FINSI'; 'FINSI'; * mess 'ANGJ0,ANGJ1' ANGJ0 ANGJ1; 'SI' ('NEG' ANGJ0 0.); 'DEPL' MESH0 'TOUR' ANGJ0 OEILJ (OEILJ 'PLUS' OMEJ0); 'FINSI'; 'SI' ('NEG' ANGJ1 0.); 'DEPL' MESH0 'TOUR' ANGJ1 OEILJ (OEILJ 'PLUS' OMEJ1); 'FINSI'; XXJ YYJ ZZJ='COOR' MESH0; 'SI' ('NEG' ANGJ1 0.); 'DEPL' MESH0 'TOUR' ((-1)*ANGJ1) OEILJ (OEILJ 'PLUS' OMEJ1); 'FINSI'; 'SI' ('NEG' ANGJ0 0.); 'DEPL' MESH0 'TOUR' ((-1)*ANGJ0) OEILJ (OEILJ 'PLUS' OMEJ0); 'FINSI'; UUUJ1=UUUJ1 + ('EXCO' (XXJ-XX1) 'SCAL' 'UX') + ('EXCO' (YYJ-YY1) 'SCAL' 'UY') + ('EXCO' (ZZJ-ZZ1) 'SCAL' 'UZ'); DEFJ1='DEFO' MESH0 UUUJ1 1; DEFOT=DEFOT 'ET' DEFJ1; * 'FIN' LAB1; * 'SINON'; DEFOT=LOK; 'FINSI'; * 'FINPROC' DEFOT;