1 : C COPLAN SOURCE CHAT 05/01/12 22:20:28 5004 2 : SUBROUTINE COPLAN(XO,XA,XB,XC,IFLIG) 3 : C NORA DAVIDOVICH JUIN 89- 4 : C FORTRAN PUR. APPELE PAR ANGSOL. SERVE A TROUVER LES POINTS 5 : C SUR LA FRONTIERE DES ELEMENTS MASSIVES 3-DIM (SI IFLIG=1 LE POINT A 6 : C SE TROUVE SUR LA FRONTIERE DU ELEMENT) 7 : IMPLICIT INTEGER(I-N) 8 : IMPLICIT REAL*8 (A-H,O-Z) 9 : C Include contenant quelques constantes dont XPI : 10 : -INC CCREEL 11 : DIMENSION XO(3),XA(3),XB(3),XC(3),XX(3,3),XV(3),YV(3),ZV(3) 12 : IFLIG=0 13 : X1=XA(1) 14 : X2=XB(1) 15 : X3=XC(1) 16 : Y1=XA(2) 17 : Y2=XB(2) 18 : Y3=XC(2) 19 : Z1=XA(3) 20 : Z2=XB(3) 21 : Z3=XC(3) 22 : DO 1 J=1,3 23 : XX(1,J)=XA(J) 24 : XX(2,J)=XB(J) 25 : XX(3,J)=XC(J) 26 : 1 CONTINUE 27 : XNORM=(Y2-Y1)*(Z2-Z3)-(Z2-Z1)*(Y2-Y3) 28 : YNORM=(Z2-Z1)*(X2-X3)-(X2-X1)*(Z2-Z3) 29 : ZNORM=(X2-X1)*(Y2-Y3)-(Y2-Y1)*(X2-X3) 30 : DNORM=SQRT(XNORM**2+YNORM**2+ZNORM**2) 31 : XNORM=XNORM/DNORM 32 : YNORM=YNORM/DNORM 33 : ZNORM=ZNORM/DNORM 34 : ANG=0.D0 35 : XV1=X1-XO(1) 36 : YV1=Y1-XO(2) 37 : ZV1=Z1-XO(3) 38 : DO 63 IS=1,3 39 : XV(IS)=XX(IS,1)-XO(1) 40 : YV(IS)=XX(IS,2)-XO(2) 41 : ZV(IS)=XX(IS,3)-XO(3) 42 : XV2=XV(IS) 43 : YV2=YV(IS) 44 : ZV2=ZV(IS) 45 : XATA=XNORM*(YV1*ZV2-ZV1*YV2)+YNORM*(ZV1*XV2-XV1*ZV2)+ 46 : # ZNORM*(XV1*YV2-YV1*XV2) 47 : YATA=XV1*XV2+YV1*YV2+ZV1*ZV2 48 : IF (XATA.EQ.0.D0.AND.YATA.EQ.0.D0) GOTO 100 49 : IF (ABS(ABS(ATAN2(XATA,YATA))-XPI).LT.0.001D0) GOTO 100 50 : ANG=ANG+ATAN2(XATA,YATA) 51 : XV1=XV2 52 : YV1=YV2 53 : ZV1=ZV2 54 : 63 CONTINUE 55 : IF (ABS(ABS(ANG)-XPI).LT.0.001D0) GOTO 100 56 : IF (ABS(ANG).GT.XPI) GOTO 100 57 : RETURN 58 : 100 IFLIG=1 59 : RETURN 60 : END 61 : 62 : 63 : 64 : 65 :
© Cast3M 2003 - All rights reserved.
Disclaimer