Download fuite2.eso

Back to the list

   1 : C FUITE2    SOURCE    CHAT      05/01/13    00:11:33     5004           
   2 :       SUBROUTINE FUITE2(MELEME,N1,N2)
   3 : C
   4 : C  FONCTION: SECONDE  PARTIE DE L'OPÉRATEUR FUITE
   5 : C            scinde le contour meleme avec l'elemen t de fuite dont les 
   6 : C            extrémités sont N1 et N2.
   7 : C
   8 : C  ENTREES:  
   9 : C           MELEME  contour fermé orienté forme uniquement de seg2
  10 : C           N1 # du point extrémité de l'élément de fuite
  11 : C           N2 # du point extrémité de l'élément de fuite
  12 : C
  13 : C  SORTIES:
  14 : C           avec ECROBJ
  15 : C           
  16 : C
  17 : C A de Gayffier
  18 : C
  19 : C FORTRAN + ESOPE
  20 : C
  21 :       IMPLICIT INTEGER(I-N)
  22 :       IMPLICIT REAL*8(A-H,O-Z)
  23 : -INC SMELEME
  24 : -INC CCOPTIO
  25 : -INC SMCOORD
  26 : C
  27 : C    ce segment contient les couples de points de MAIL5 et MAIL6
  28 : C
  29 :       SEGMENT MAILRES
  30 :           INTEGER NMAIL5(NBEL,2),NMAIL6(NBEL,2)
  31 :       ENDSEGMENT
  32 : C
  33 : C  creation de MAIL5 qui contient le segment N1->N2
  34 : C
  35 :       NBEL = NUM(/2)
  36 :       SEGINI MAILRES
  37 : C
  38 :       NMAIL5(1,1)=N1
  39 :       NMAIL5(1,2)=N2
  40 : C
  41 :       NBEL5 = 1
  42 :  100  IF (NMAIL5(NBEL5,2) .NE. NMAIL5(1,1)) THEN
  43 :         DO 110 I=1,NUM(/2)
  44 :           IF (NMAIL5(NBEL5,2) .EQ. NUM(1,I)) THEN
  45 :             NBEL5 = NBEL5 + 1
  46 :             NMAIL5(NBEL5,1)=NUM(1,I)
  47 :             NMAIL5(NBEL5,2)=NUM(2,I)
  48 :             GOTO 100
  49 :           ENDIF
  50 :  110    CONTINUE
  51 : C
  52 : C    le contour n'est pas fermé
  53 : C  
  54 :         R = ABS(XCOOR((NMAIL5(NBEL5,2)-1)*(IDIM+1)+1))
  55 :         DENS = MAX(XCOOR((NMAIL5(NBEL5,2)-1)*(IDIM+1)),1.D-10)
  56 : C
  57 : C    est on en axisymétrique
  58 : C
  59 :         IF (IFOUR .EQ. 0 .AND. R .LT. DENS) GOTO 1000
  60 : C
  61 : C       Le contour n'est pas fermé
  62 : C
  62 :         CALL ERREUR(28)
  63 :         SEGSUP MAILRES
  64 :         RETURN
  65 :       ENDIF
  66 : C
  67 : C
  68 : C  creation de MAIL6 qui contient le segment N2->N1
  69 : C
  70 : C
  71 :  200  CONTINUE
  72 :       NMAIL6(1,1)=N2
  73 :       NMAIL6(1,2)=N1
  74 : C
  75 :       NBEL6 = 1
  76 :  210  IF (NMAIL6(NBEL6,2) .NE. NMAIL6(1,1)) THEN
  77 :         DO 220 I=1,NUM(/2)
  78 :           IF (NMAIL6(NBEL6,2) .EQ. NUM(1,I)) THEN
  79 :             NBEL6 = NBEL6 + 1
  80 :             NMAIL6(NBEL6,1)=NUM(1,I)
  81 :             NMAIL6(NBEL6,2)=NUM(2,I)
  82 :             GOTO 210
  83 :           ENDIF
  84 :  220    CONTINUE
  85 : C
  86 : C    le contour n'est pas fermé
  87 : C  
  88 :         R = ABS(XCOOR((NMAIL6(NBEL6,2)-1)*(IDIM+1)+1))
  89 :         DENS = MAX(XCOOR((NMAIL6(NBEL6,2)-1)*(IDIM+1)),1.D-10)
  90 : C
  91 : C    est on en axisymétrique
  92 : C
  93 :         IF (IFOUR .EQ. 0 .AND. R .LT. DENS) GOTO 2000
  94 : C
  95 : C       Le contour n'est pas fermé
  96 : C
  96 :         CALL ERREUR(28)
  97 :         SEGSUP MAILRES
  98 :         RETURN
  99 :       ENDIF
 100 : C
 101 : C
 102 : C   ecriture des maillage
 103 : C
 104 : C
 105 :  300  CONTINUE
 106 : C
 107 :       NBREF = 0
 108 :       NBSOUS = 0
 109 :       NBNN = 2
 110 :       NBELEM = 1
 111 :       SEGINI IPT4
 112 :       IPT4.ITYPEL = 2
 113 :       IPT4.NUM(1,1) = N1
 114 :       IPT4.NUM(2,1) = N2
 115 : C
 116 :       NBELEM = NBEL5
 117 :       SEGINI IPT5
 118 :       IPT5.ITYPEL = 2
 119 :       DO 310 I=1,NBEL5
 120 :         IPT5.NUM(1,I) = NMAIL5(I,1)
 121 :         IPT5.NUM(2,I) = NMAIL5(I,2)
 122 :  310  CONTINUE
 123 : C
 124 :       NBELEM = NBEL6
 125 :       SEGINI IPT6
 126 :       IPT6.ITYPEL = 2
 127 :       DO 320 I=1,NBEL6
 128 :         IPT6.NUM(1,I) = NMAIL6(I,1)
 129 :         IPT6.NUM(2,I) = NMAIL6(I,2)
 130 :  320  CONTINUE
 131 : C
 131 :       CALL ECROBJ('MAILLAGE',IPT6)
 131 :       CALL ECROBJ('MAILLAGE',IPT5)
 131 :       CALL ECROBJ('MAILLAGE',IPT4)
 132 : C
 133 :       SEGDES IPT4,IPT5,IPT6
 134 :       SEGSUP MAILRES
 135 :       RETURN
 136 : C
 137 : C==============================================================
 138 : C                AXISYMMETRIQUE
 139 : C  mail5 
 140 : C
 141 :  1000 CONTINUE
 142 : C
 143 : C     le point extrème est sur l'axe, et on en axisymetrique
 144 : C     on parcours le contour dans l'autre sens
 145 :       NBELI = 1
 146 :  1010 CONTINUE
 147 :       DO 1020 I=1,NUM(/2)
 148 :         IF (NMAIL5(NBELI,1) .EQ. NUM(2,I)) THEN
 149 :             NBEL5 = NBEL5 + 1
 150 :             NBELI = NBEL5
 151 :             NMAIL5(NBEL5,1)=NUM(1,I)
 152 :             NMAIL5(NBEL5,2)=NUM(2,I) 
 153 :             GOTO 1010
 154 :         ENDIF
 155 :  1020 CONTINUE
 156 : C
 157 : C 
 158 : C
 159 :       R = ABS(XCOOR((NMAIL5(NBEL5,1)-1)*(IDIM+1)+1))
 160 :       DENS = MAX(XCOOR((NMAIL5(NBEL5,1)-1)*(IDIM+1)),1.D-10)
 161 :       IF (R .GT. DENS) THEN
 161 :          CALL ERREUR(28)
 162 :          SEGSUP MAILRES
 163 :          RETURN
 164 :       ENDIF
 165 :       GOTO 200
 166 : C
 167 : C  mail6 en axisymétrique
 168 : C
 169 :  2000 CONTINUE
 170 : C
 171 : C     le point extrème est sur l'axe, et on en axisymetrique
 172 : C     on parcours le contour dans l'autre sens
 173 :       NBELI = 1
 174 :  2010 CONTINUE
 175 :       DO 2020 I=1,NUM(/2)
 176 :         IF (NMAIL6(NBELI,1) .EQ. NUM(2,I)) THEN
 177 :             NBEL6 = NBEL6 + 1
 178 :             NBELI = NBEL6
 179 :             NMAIL6(NBEL6,1)=NUM(1,I)
 180 :             NMAIL6(NBEL6,2)=NUM(2,I) 
 181 :             GOTO 2010
 182 :         ENDIF
 183 :  2020 CONTINUE
 184 : C
 185 : C 
 186 : C
 187 :       R = ABS(XCOOR((NMAIL6(NBEL6,1)-1)*(IDIM+1)+1))
 188 :       DENS = MAX(XCOOR((NMAIL6(NBEL6,1)-1)*(IDIM+1)),1.D-10)
 189 :       IF (R .GT. DENS) THEN
 189 :          CALL ERREUR(28)
 190 :          SEGSUP MAILRES
 191 :          RETURN
 192 :       ENDIF
 193 :       GOTO 300
 194 : C
 195 :       END
 196 : 
 197 :       
 198 :  

© Cast3M 2003 - All rights reserved.
Disclaimer