Download jt3loc.eso

Back to the list

   1 : C JT3LOC    SOURCE    CHAT      05/01/13    00:50:10     5004           
   2 :       SUBROUTINE JT3LOC(XE,SHPTOT,NBNO,XEL,BPSS,NOQUAL)
   3 : C=======================================================================
   4 : C
   5 : C    -TEST DE VOISINAGE DES NOEUDS D'UN ELEMENT JOT3
   6 : C    -TEST DE PLANEITE DES FACES DE L'ELEMENT
   7 : C    -CALCUL DE LA MATRICE DE PASSAGE BPSS
   8 : C    -CALCUL DES COORDONNEES LOCALES XEL
   9 : C          ROUTINE FORTRAN PUR
  10 : C          DERIVEE DE LA ROUTINE JO4LOC PAR S. FELIX
  11 : C=======================================================================
  12 : C  INPUT
  13 : C     XE     = COORDONNEES  DE L ELEMENT
  14 : C     SHPTOT = FONCTIONS DE FORME
  15 : C            = SHPTOT(1,...) = FONCTIONS DE FORME
  16 : C            = SHPTOT(2,...) = DERIVEE PAR RAPPORT A QSI
  17 : C            = SHPTOT(3,...) = DERIVEE PAR RAPPORT A ETA
  18 : C     NBNO   = NOMBRE DE NOEUDS DE L'ELEMENT
  19 : C     IVRF   = DEMANDE DE VERIFICATION DE L 'ELEMENT
  20 : C  OUTPUT
  21 : C     XEL    = COORDONNEES LOCALES
  22 : C     BPSS   = MATRICE DE PASAGE REPERE GLOBAL/REPERE LOCAL
  23 : C     NOQUAL = INDICE DE QUALITE
  24 : C            = 0 SI OK
  25 : C            = 1 SI NOEUD TROP VOISINS
  26 : C            = 2 SI NOEUD NON COPLANAIRES
  27 : C
  28 : C  REMARQUE : ATTENTION : DANS LES CAS CONTRAINTES PLANES, DEFO. PLANES
  29 : C             AXISYMETRIQUE, LA MATRICE TETA SERA UNE MATRICE DE
  30 : C             DIMENSION (2X2), ET SERA CONSTITUEE PAR LES VECTEURS
  31 : C             S1 ET SN. LES CAS CONT.PLANES,DEF.PLANES ET AXISYMETRIQUE
  32 : C             SERONT DONC SIMILAIRES AU CAS D'UN JOINT BIDIMENSIONNEL
  33 : C
  34 : C=======================================================================
  35 :       IMPLICIT INTEGER(I-N)
  36 :       IMPLICIT REAL*8(A-H,O-Z)
  37 :       INTEGER IND4(0:4)
  38 :       DIMENSION XE(3,6),XEL(3,6),BPSS(3,3),SHPTOT(6,NBNO,*)
  39 :       DIMENSION U1(3),V1(3),XD(3,6),V2(3)
  40 :       DIMENSION S1(3),S2(3),SN(3)
  41 :       DIMENSION XX(3,6)
  42 :       DATA IND4/3,1,2,3,1/
  43 : C
  44 :       NOQUAL = 0
  45 :       C1 = 0.0D0
  46 :       C2 = 0.0D0
  47 :       C3 = 0.0D0
  48 : C
  49 : C----------     VERIFICATION DE LA DISTANCE MINIMALE ENTRE LES POINTS
  50 : C----------     PAR COMPARAISON AVEC LE POURTOUR DU JOINT
  51 : C
  52 :       PP = 0.0D0
  53 :       DO 1 I=1,3
  54 :        II = I+1
  55 :        IF (II.EQ.4) II=1
  56 :        C1 = ABS(XE(1,I)-XE(1,II))
  57 :        C2 = ABS(XE(2,I)-XE(2,II))
  58 :        C3 = ABS(XE(3,I)-XE(3,II))
  59 :        C1 = C1*C1 + C2*C2 + C3*C3
  60 :        PP = PP + SQRT(C1)
  61 :     1 CONTINUE
  62 : C
  63 :       DMIN=PP/50.0D0
  64 :       DO 2 I=1,2
  65 :        I1 = I+1
  66 :        DO 2 N=I1,3
  67 :         IF ( ABS(XE(1,I)-XE(1,N)).LE.DMIN.AND.
  68 :      &       ABS(XE(2,I)-XE(2,N)).LE.DMIN.AND.
  69 :      &       ABS(XE(3,I)-XE(3,N)).LE.DMIN ) THEN
  70 : C                          NOEUDS TROP VOISINS
  71 :             NOQUAL=1
  72 :         ENDIF
  73 :     2 CONTINUE
  74 : C
  75 : C----------     CALCUL DE LA MATRICE DE  PASSAGE
  76 : C
  77 :       DO 6 I=1,3
  78 :          S1(I)=0.0D0
  79 :          S2(I)=0.0D0
  80 :          SN(I)=0.0D0
  81 :          V2(I)=0.0D0
  82 :     6 CONTINUE
  83 : C
  84 :       DO 7 I=1,NBNO
  85 : C
  86 : C-------------------TANGENTE AU POINT DE GAUSS 1 SELON QSI
  87 : C
  88 :          S1(1) = S1(1) + ( SHPTOT(2,I,1)*XE(1,I) )
  89 :          S1(2) = S1(2) + ( SHPTOT(2,I,1)*XE(2,I) )
  90 :          S1(3) = S1(3) + ( SHPTOT(2,I,1)*XE(3,I) )
  91 : C
  92 : C-------------------TANGENTE AU POINT DE GAUSS 1 SELON ETA
  93 : C
  94 :          V2(1) = V2(1) + ( SHPTOT(3,I,1)*XE(1,I) )
  95 :          V2(2) = V2(2) + ( SHPTOT(3,I,1)*XE(2,I) )
  96 :          V2(3) = V2(3) + ( SHPTOT(3,I,1)*XE(3,I) )
  97 :     7  CONTINUE
  98 : C
  98 :        CALL NORMER(S1)
  98 :        CALL NORMER(V2)
  99 : C-------------------NORMALE AU PLAN DU JOINT
 100 : C
 101 :        SN(1) = (S1(2)*V2(3)) - (S1(3)*V2(2))
 102 :        SN(2) = (S1(3)*V2(1)) - (S1(1)*V2(3))
 103 :        SN(3) = (S1(1)*V2(2)) - (S1(2)*V2(1))
 103 :        CALL NORMER(SN)
 104 : C
 105 : C-------------------ORTHOGONALISATION DE S2
 106 : C
 107 :        S2(1) = (SN(2)*S1(3)) - (SN(3)*S1(2))
 108 :        S2(2) = (SN(3)*S1(1)) - (SN(1)*S1(3))
 109 :        S2(3) = (SN(1)*S1(2)) - (SN(2)*S1(1))
 109 :        CALL NORMER(S2)
 110 : C
 111 : C-------------------STOCKAGE DE LA MATRICE DE PASSAGE
 112 : C
 113 :        DO 10 I=1,3
 114 :           BPSS(1,I) = S1(I)
 115 :           BPSS(2,I) = S2(I)
 116 :           BPSS(3,I) = SN(I)
 117 :    10  CONTINUE
 118 : C
 119 : C----------     CALCUL DES COORDONNEES LOCALES DE L'ELEMENT
 120 : C
 121 : C
 122 : C-------------------CHANGEMENT D'ORIGINE ( ORIGINE AU NOEUD 1)
 123 : C
 124 : *      DO 8 J=1,NBNO
 125 : *         DO 8 I=1,3
 126 : *            XD(I,J) = XE(I,J) - XE(I,1)
 127 : *   8  CONTINUE
 128 : C
 129 : C-------------------PROJECTION SUR LE PLAN DU JOINT
 130 : C
 131 : *      DO 9 J=1,NBNO
 132 : *       XEL(1,J)=(XD(1,J)*S1(1))+(XD(2,J)*S1(2))+(XD(3,J)*S1(3))
 133 : *       XEL(2,J)=(XD(1,J)*S2(1))+(XD(2,J)*S2(2))+(XD(3,J)*S2(3))
 134 : *       XEL(3,J)=0.0D0
 135 : *   9  CONTINUE
 136 : C+PPj
 137 : C
 138 : C----------    CALCUL DES COORDONNEES GLOBALES DU PLAN MOYEN DU JOINT
 139 : C              QUE L'ON STOCKE DANS LA FIN DE XEL
 140 : C
 141 :        NBNOS2=NBNO/2
 142 :        DO J=1,NBNOS2
 143 :          DO I=1,3
 144 :            XEL(I,J+NBNOS2) = (XE(I,J) + XE(I,NBNOS2+J))/2
 145 :          ENDDO
 146 :        ENDDO
 147 : C
 148 : C-----------   CHANGEMENT D'ORIGINE DU PLAN MOYEN DU JOINT 
 149 : C              (ORIGINE AU NOEUD 1)
 150 : C
 151 :        DO J=1,NBNOS2
 152 :          DO I=1,3
 153 :            XD(I,J) = XEL(I,J+NBNOS2) - XEL(I,1+NBNOS2)
 154 :          ENDDO
 155 :        ENDDO
 156 : C
 157 : C-----------   PROJECTION SUR LE PLAN DU JOINT ET STOCKAGE DANS LE
 158 : C              DEBUT DE XEL
 159 : C
 160 :        DO J=1,NBNOS2
 161 :          XEL(1,J)=(XD(1,J)*S1(1))+(XD(2,J)*S1(2))+(XD(3,J)*S1(3))
 162 :          XEL(2,J)=(XD(1,J)*S2(1))+(XD(2,J)*S2(2))+(XD(3,J)*S2(3))
 163 :          XEL(3,J)=0.0D0
 164 :        ENDDO
 165 : C
 166 : C+PPj
 167 : C
 168 : C----------     TEST DE PLANEITE
 169 : C
 170 : C     CALCUL DES 4 NORMALES LOCALES
 171 : C
 172 :       DO 3 K=1,3
 173 :        KP1 = IND4(K+1)
 174 :        KM1 = IND4(K-1)
 175 :        DO 4  J=1,3
 176 :         U1(J) = XE(J,KP1) - XE(J,K)
 177 :         V1(J) = XE(J,KM1) - XE(J,K)
 178 :     4  CONTINUE
 179 : C
 180 :        XD(1,K) = U1(2)*V1(3) - U1(3)*V1(2)
 181 :        XD(2,K) = U1(3)*V1(1) - U1(1)*V1(3)
 182 :        XD(3,K) = U1(1)*V1(2) - U1(2)*V1(1)
 183 : C
 184 :        XXD = (XD(1,K)**2) + (XD(2,K)**2) + (XD(3,K)**2)
 185 :        XXD = SQRT(XXD)
 186 : C
 187 :       IF (XXD.GT.0.0D0) THEN
 188 :         DO 5 J=1,3
 189 :          XD(J,K) = XD(J,K)/XXD
 190 :     5   CONTINUE
 191 :       ENDIF
 192 :     3 CONTINUE
 193 : C
 194 : C     CALCUL DE LA NON PLANEITE
 195 : C
 196 :       COS12 = XD(1,2)*XD(1,1) + XD(2,2)*XD(2,1) + XD(3,2)*XD(3,1)
 197 :       COS23 = XD(1,3)*XD(1,2) + XD(2,3)*XD(2,2) + XD(3,3)*XD(3,2)
 198 :       IF (MIN(COS12,COS23).LT.0.99999) THEN
 199 : C            NON PLANEITE DE 0.25 DEGRE OU PLUS
 200 : C            0.99999, QUI EQUIVAUT A 1 DEGRE, EST INSUFFISANT
 201 :        NOQUAL = 2
 202 :       ENDIF
 203 : C
 204 :       RETURN
 205 :       END
 206 : 
 207 :  
 208 :  

© Cast3M 2003 - All rights reserved.
Disclaimer