C J3ORIE SOURCE CHAT 05/01/13 00:47:14 5004 SUBROUTINE J3ORIE(IMOD,XYC,DENS,NPTO,IORI,TOL,IRET) C---------------------------------------------------- C ORINTATION DANS IORI SI IMOD=0 C ORIENTATION SUIVANT IORI SI IMOD=1 C C PP 6/97,11/98 C Pierre Pegon/JRC Ispra C---------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCOPTIO DIMENSION XYC(2,NPTO),DENS(NPTO),XY(2) C C ON CHERCHE UN POINT A L'INTERIEUR DU CONTOURS C IF (NPTO.EQ.3)THEN XY(1)=(XYC(1,1)+XYC(1,2)+XYC(1,3))/3 XY(2)=(XYC(2,1)+XYC(2,2)+XYC(2,3))/3 CALL J3INEX(XY,XYC,NPTO,TOL,ICOD,ISIGM,IRET) GOTO 1 ENDIF C DO IE1=1,NPTO I1=IE1-1+(1/IE1)*NPTO I2=IE1+1-(IE1/NPTO)*IE1 XL1=SQRT((XYC(1,I1)-XYC(1,IE1))**2+(XYC(2,I1)-XYC(2,IE1))**2) XL2=SQRT((XYC(1,I2)-XYC(1,IE1))**2+(XYC(2,I2)-XYC(2,IE1))**2) DDD=((XYC(1,I1)-XYC(1,IE1))*(XYC(2,I2)-XYC(2,IE1)) > -(XYC(1,I2)-XYC(1,IE1))*(XYC(2,I1)-XYC(2,IE1)))/XL1/XL2 IF(ABS(DDD).GT.10*TOL)THEN DO IE2=1,2 XY(IE2)=(XYC(IE2,I1)+XYC(IE2,I2))/2 ENDDO CALL J3INEX(XY,XYC,NPTO,TOL,ICOD,ISIGM,IRET) IF(ICOD.EQ.-1)GOTO 1 ENDIF ENDDO IRET=IRET+1 WRITE(IOIMP,*)'J3ORIE: PAS DE POINT A L"INTERIEUR DU CONTOURS' RETURN C 1 CONTINUE C IF(IMOD.EQ.0)THEN IORI=ISIGM RETURN ENDIF C C SI L'ORIENTATION EST NEGATIVE, ON LA CHANGE C IF(ISIGM.NE.IORI)THEN DO IE1=1,NPTO/2 I1=NPTO+1-IE1 DO IE2=1,2 XY(IE2)=XYC(IE2,IE1) ENDDO DENS1=DENS(IE1) DO IE2=1,2 XYC(IE2,IE1)=XYC(IE2,I1) ENDDO DENS(IE1)=DENS(I1) DO IE2=1,2 XYC(IE2,I1)=XY(IE2) ENDDO DENS(I1)=DENS1 ENDDO ENDIF C RETURN END