Numérotation des lignes :

C ALPHA     SOURCE    JC220346  16/11/29    21:15:01     9221           C                                                                     |       FUNCTION ALPHA(II,KK,JJ,LL)C                                                                     |C      CETTE FONCTION REELLE RENVOIE LA VALEUR DE L'ANGLE ENTRE       |C      LES 2 FACETTES (KK II JJ) ET (LL II JJ)                        |C      POUR DES RAISONS DE COUT ON RENVOIE LA COTANGENTE CE QUI       |C      SUFFIT POUR LES TESTS QUE L'ON EN FERA                         |C                                                                     |C---------------------------------------------------------------------|C      IMPLICIT INTEGER(I-N)      IMPLICIT REAL*8(A-H,O-Z)-INC TDEMAIT -INC PPARAM-INC CCOPTIO       DIMENSION V1(3),V2(3),V3(3),VN1(3),VN2(3),VN3(3)CC       DO 10 I=1,3             V1(I)=XYZ(I,KK)-XYZ(I,II)             V2(I)=XYZ(I,JJ)-XYZ(I,II)             V3(I)=XYZ(I,LL)-XYZ(I,II)10     CONTINUECCC      CALCUL DE LA NORME DU VECTEUR V2       V2NORM=SQRT(V2(1)**2+V2(2)**2+V2(3)**2)       IF (V2NORM.NE.0.d0) GOTO 15       IF (IVERB.EQ.1) WRITE (6,1000)1000   FORMAT(' UNE NORME EST EGALE A ZERO')       IF (IVERB.EQ.1) WRITE (6,*) ' II,JJ,KK,LL ',II,JJ,KK,LL       ALPHA=-1D6       RETURNCC      LE VECTEUR V2 EST NORME15     DO 20 I=1,3             V2(I)=V2(I)/V2NORM20     CONTINUECC      VN3=V2^V1       VN3(1)=V2(2)*V1(3)-V2(3)*V1(2)       VN3(2)=V2(3)*V1(1)-V2(1)*V1(3)       VN3(3)=V2(1)*V1(2)-V2(2)*V1(1)CC      VN1=V2^V3       VN1(1)=V2(2)*V3(3)-V2(3)*V3(2)       VN1(2)=V2(3)*V3(1)-V2(1)*V3(3)       VN1(3)=V2(1)*V3(2)-V2(2)*V3(1)CC      SCALAIRE(VN3,VN1)-----> COS(V1,V3)       SCAL=VN3(1)*VN1(1)+VN3(2)*VN1(2)+VN3(3)*VN1(3)CC      PRODUIT MIXTE (VN3,VN1,V2)---->  SIN(V1,V3)       PV=     (VN3(2)*VN1(3)-VN3(3)*VN1(2))*V2(1)     #        +(VN3(3)*VN1(1)-VN3(1)*VN1(3))*V2(2)     #        +(VN3(1)*VN1(2)-VN3(2)*VN1(1))*V2(3)CC       IF (PV.EQ.0.d0) GOTO 100       ALPHA=SCAL/PV       IF(ABS(ALPHA).GT.1d4) GOTO 150       IF (PV.LT.0.) ALPHA=-2d6+ALPHA       RETURN100    CONTINUEC  A PRIORI VN2 EST NUL       ALPHA=-1d6150    CONTINUE       IF (SCAL.GT.0..AND.PV.GT.0.) ALPHA=1E6       IF (SCAL.GT.0..AND.PV.LE.0.) ALPHA=-3E6       IF (SCAL.LE.0) ALPHA=-1d6*      WRITE (6,1111) KK,II,LL*1111   FORMAT(' ALPHA POINTS ALIGNES ',3I8)*      WRITE (6,1112) II,KK,JJ,LL*1112   FORMAT(' ALPHA APPELEE AVEC ',4I6)*      WRITE (6,1113) (V1(I),I=1,3)*1113   FORMAT(' V1 ',3G12.5)*      WRITE (6,1114) (V2(I),I=1,3)*1114   FORMAT(' V2 ',3G12.5)*      WRITE (6,1115) (V3(I),I=1,3)*1115   FORMAT(' V3 ',3G12.5)       RETURNCC      FIN DE LA FONCTION ALPHA       END

© Cast3M 2003 - Tous droits réservés.
Mentions légales