C NORCOS SOURCE CHAT 05/01/13 01:59:43 5004 C NORCOS SOURCE SUBROUTINE NORCOS(VAL,NPTEL,NEL,XCOOR,NDIM,NUM,XE,INU) C======================================================================= C SUBROUTINE DE CALCUL DU COSINUS DE L'ANGLE ENTRE LES DEUX C DIAGONALES D'UN QUA4 C PHILIPPE BEAUMIER 90 C FAIT UNE BOUCLE SUR LES ELEMENTS C C======================================================================= C C INPUT C C NPTEL : NOMBRE DE POINTS PAR ELEMENT C NEL : NOMBRE D'ELEMENTS C XCOOR() : VECTEUR DES COORDONNEES DES NOEUDS C NDIM : DIMENSION (2 OU 3) C NUM(NPTEL,NEL) : TABLEAU DES NUMEROS DES ELEMENTS C XE(3,NPTEL) : TABLEAU DES COORDONNEES DES NOEUDS C INU : NUMERO DE L'ELEMENT GEOMETRIQUE C C OUTPUT C C VAL(NPTEL,NEL) :ION DES MOTS CLES LUS C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C Include contenant quelques constantes dont XPI : -INC CCREEL C DIMENSION VAL(1,*),XCOOR(*),NUM(NPTEL,*),XE(3,*) DIMENSION V1(3),V2(3),V3(3),V4(3) C C BOUCLE SUR LES ELEMENTS C IF((NDIM.EQ.3).AND.(INU.EQ.8)) THEN DO 1 IB=1,NEL CALL DOXE(XCOOR,NDIM,NPTEL,NUM,IB,XE) C C CALCUL DES NORMALES @ L'ELEMENT C DO 10 IA=1,3 V1(IA) = XE(IA,2) - XE(IA,1) V2(IA) = XE(IA,4) - XE(IA,1) 10 CONTINUE V3(1) = V1(2) * V2(3) - V2(2)* V1(3) V3(2) = V1(3) * V2(1) - V2(3)* V1(1) V3(3) = V1(1) * V2(2) - V2(1)* V1(2) Z3 = SQRT(V3(1)**2 + V3(2)**2 + V3(3)**2) DO 11 IA=1,3 V1(IA) = XE(IA,4) - XE(IA,3) V2(IA) = XE(IA,2) - XE(IA,3) 11 CONTINUE V4(1) = V1(2) * V2(3) - V2(2)* V1(3) V4(2) = V1(3) * V2(1) - V2(3)* V1(1) V4(3) = V1(1) * V2(2) - V2(1)* V1(2) Z4 = SQRT(V4(1)**2 + V4(2)**2 + V4(3)**2) PS = 0.D0 DO 12 IA=1,3 PS = PS + V3(IA) * V4(IA) 12 CONTINUE PS = PS / (Z3 * Z4) ZOZO = MIN(1.D0,ABS(PS)) C ON PREND LE MIN SUITE A ERREUR SUR CRAY VAL(1,IB) = 100.D0-200.D0/XPI*ACOS(ZOZO) 1 CONTINUE ELSE DO 2 IB=1,NEL VAL(1,IB) = 100.D0 2 CONTINUE ENDIF C RETURN END