Download modi.eso

Back to the list

   1 : C MODI      SOURCE    CHAT      07/10/29    21:24:45     5940           
   2 : C   MODIFICATION INTERACTIVE DE MAILLAGE
   3 : C
   4 :       SUBROUTINE MODI
   5 :       IMPLICIT INTEGER(I-N)
   6 : -INC CCREEL
   7 : -INC CCOPTIO
   8 : -INC CCGEOME
   9 : -INC SMELEME
  10 : -INC SMCOORD
  11 :       SEGMENT ICPR(XCOOR(/1)/(IDIM+1))
  12 :       SEGMENT IVU(ITE)
  13 :       SEGMENT NTSEG(LTSEGS)
  14 :       SEGMENT /KON1/(KON(NBCON,NMAX)),KON2.KON1
  15 :       SEGMENT XPROJ(3,ITE)
  16 :       SEGMENT IDCP(ITE)
  17 :       SEGMENT IMILL(ITE)
  18 :       SEGMENT IBOUJ(ITE)
  19 :       COMMON /CMODI/LIGMAX,XPREC,YPREC
  20 :       DIMENSION XTR(40),YTR(40),ZTR(40)
  21 :       CHARACTER*4 JPROJ,CMOT
  22 :       CHARACTER*9 ZONE,ZONE1,ZONE2,ZONE3,ZONE4,ZONF1,ZONF2,ZONF3,ZONF4
  23 :       CHARACTER*3 CREP
  24 :       LOGICAL VALEUR,FENET
  25 :       CHARACTER*4 ITOPT(5)
  26 :       CHARACTER*6 LEGEND(7)
  27 :       LOGICAL LBLANC
  28 : C#      real*8 ddec
  29 :       real ddec
  30 :       DATA JPROJ/'PROJ'/,ITOPT/'PLAN','SPHE','CYLI','CONI','TORI'/
  31 :       DATA LBLANC/.FALSE./
  32 :       do i=1,40
  33 :         ztr(i)=0
  34 :       enddo
  35 :       LPROJ=0
  36 :       IBOUJ=0
  37 :       IPREM=0
  38 :       INITIA=0
  39 :       JOEIL=0
  40 :       DIOCA2=DIOCAD
  41 :       LIGMAX=32
  42 :       IMILL=0
  43 :       KON1=0
  44 :       KON2=0
  45 :       ICPR=0
  46 :       IDCP=0
  47 :       IVU=0
  48 :       NTSEG=0
  49 :       SEGACT MCOORD*MOD
  50 :       NBPTS=XCOOR(/1)/(IDIM+1)
  51 :       FENET=.TRUE.
  52 :       VALEUR=.FALSE.
  53 :       ICACHE=0
  54 :       IF (IDIM.EQ.3) ICACHE=1
  54 :       CALL LIROBJ('MAILLAGE',MELEME,1,IRET)
  54 :       IF (IDIM.EQ.3) CALL LIROBJ('POINT ',JOEIL,1,IRETOU)
  55 :       IF (IERR.NE.0) RETURN
  56 :       SEGINI ICPR
  57 :       ITE=0
  58 :       SEGACT MELEME
  59 :       IPT1=MELEME
  60 :       DO 40 I=1,MAX(1,LISOUS(/1))
  61 :          IF (LISOUS(/1).NE.0) IPT1=LISOUS(I)
  62 :          SEGACT IPT1
  63 :          DO 30 J=1,IPT1.NUM(/1)
  64 :             DO 30 K=1,IPT1.NUM(/2)
  65 :                IPOIT=IPT1.NUM(J,K)
  66 :                IF (ICPR(IPOIT).NE.0) GOTO 30
  67 :                ITE=ITE+1
  68 :                ICPR(IPOIT)=ITE
  69 :   30     CONTINUE
  70 :   40  CONTINUE
  71 :       SEGINI XPROJ
  72 :       SEGINI IBOUJ
  72 :       CALL PROMOD(ICPR,XPROJ,JOEIL,1,IBOUJ)
  73 :       IVPR=ICPR(/1)
  74 :       SEGINI IDCP
  75 :       DO 60 I=1,NBPTS
  76 :          IP=ICPR(I)
  77 :          IF (IP.EQ.0) GOTO 60
  78 :          IDCP(IP)=I
  79 :   60  CONTINUE
  80 : *  SI REAFFICHAGE IL SE FAIT A PARTIR D'ICI
  81 :  1000 CONTINUE
  82 :       IF (IMILL.NE.0) SEGSUP IMILL
  83 :       SEGINI IMILL
  84 :       IPT1=MELEME
  85 :       NBCON=9
  86 :       NBCONR=NBCON-1
  87 :       NMAX=(12*ITE)/NBCON+200
  88 :       IF (KON1.NE.0) SEGSUP KON1
  89 :       SEGINI KON1
  90 : *   KON EST INITIALISE A ZERO
  91 : *   REMPLISSAGE DU TABLEAU DES CONNECTIONS
  92 :       ICHAIN=ITE
  93 :       DO 285 IO=1,MAX(1,LISOUS(/1))
  94 :          IF (LISOUS(/1).NE.0) IPT1=LISOUS(IO)
  95 :          SEGACT IPT1
  96 :          K=IPT1.ITYPEL
  97 : *
  98 :          IDEP=LPT(K)
  99 :          IFIN1=IDEP+2*LPL(K)-2
 100 :          IFIN2=IFIN1
 101 :          IF (LPL(K).EQ.0) THEN
 102 :            IF (LPT(K).EQ.0)THEN
 103 :              GOTO 270
 104 :             ELSE
 105 : C             Polygone
 106 :               IFIN1=IDEP+2*IPT1.NUM(/1)-2
 107 :               IFIN2=IFIN1 -2
 108 :             ENDIF
 109 :          ENDIF
 110 :          DO 260 I=1,IPT1.NUM(/2)
 111 :             IS=1
 112 :             DO 250 J=IDEP,IFIN1,2
 113 :                IF (J.LE.IFIN2) THEN
 114 :                  N1=ICPR(IPT1.NUM(KSEGM(J),I))
 115 :                  N2=ICPR(IPT1.NUM(KSEGM(J+1),I))
 116 :                ELSE
 117 : C                Polygone
 118 :                  N1=ICPR(IPT1.NUM(KSEGM(IFIN2+1),I))
 119 :                  N2=ICPR(IPT1.NUM(KSEGM(1),I))
 120 :                ENDIF
 121 :                NI=N1
 122 :                NJ=N2
 123 :                IF (N1*N2.EQ.0) GOTO 290
 124 :                IPO=0
 125 :  110           CONTINUE
 126 :                NII=NI
 127 :  120           DO 170 K=1,NBCONR
 128 :                   IF (KON(K,NI).GE.NJ) GOTO 130
 129 :                   KSAUV1=NJ
 130 :                   GOTO 200
 131 :  130              IF (KON(K,NI).NE.NJ) GOTO 170
 132 :                   JJ=0
 133 :  140              DO 150 II=1,NBCONR
 134 :                      IF (KON(II,NJ).EQ.NII) THEN
 135 :                         GOTO 160
 136 :                      ENDIF
 137 :  150              CONTINUE
 138 :                   IF (KON(NBCON,NJ).NE.0) THEN
 139 :                      NJ=KON(NBCON,NJ)
 140 :                      GOTO 140
 141 :                   ENDIF
 142 :  160             CONTINUE
 143 :                  GOTO 250
 144 :  170          CONTINUE
 145 :               IF (KON(NBCON,NI).EQ.0) GOTO 180
 146 :               NI=KON(NBCON,NI)
 147 :               GOTO 120
 148 :  180          KSAUV1=NJ
 149 :  190          ICHAIN=ICHAIN+1
 150 :               IF (ICHAIN.EQ.NMAX) GOTO 290
 151 :               KON(NBCON,NI)=ICHAIN
 152 :               K=1
 153 :               NI=ICHAIN
 154 :  200          KSAUV=KON(K,NI)
 155 :               KON(K,NI)=KSAUV1
 156 :               KSAUV1=KSAUV
 157 :               IF (KSAUV.EQ.0) GOTO 240
 158 :               KDEP=K+1
 159 :               IF (KDEP.EQ.NBCON) GOTO 230
 160 :  210          DO 220 KHE=KDEP,NBCONR
 161 :                  KSAUV=KON(KHE,NI)
 162 :                  KON(KHE,NI)=KSAUV1
 163 :                  IF (KSAUV.EQ.0) GOTO 240
 164 :                  KSAUV1=KSAUV
 165 :  220          CONTINUE
 166 :  230          IF (KON(NBCON,NI).EQ.0) GOTO 190
 167 :               NI=KON(NBCON,NI)
 168 :               KDEP=1
 169 :               GOTO 210
 170 :  240          IF (NJ.NE.N2.OR.IPO.EQ.1) GOTO 250
 171 :               NI=N2
 172 :               NJ=N1
 173 :               IPO=1
 174 :               GOTO 110
 175 :  250       CONTINUE
 176 :  260     CONTINUE
 177 :  270     CONTINUE
 178 :  285  CONTINUE
 179 :       GOTO 300
 179 :  290  CALL ERREUR(23)
 180 :       RETURN
 181 :  300  CONTINUE
 182 : *
 183 : C#      XMIN=xgrand
 184 :       XMIN=xsgran
 185 :       XMAX=-XMIN
 186 :       YMIN=XMIN
 187 :       TMIN=XMIN
 188 :       YMAX=XMAX
 189 :       TMAX=XMAX
 190 :       DO 400 I=1,ITE
 191 :          XMIN=MIN(XMIN,XPROJ(1,I))
 192 :          XMAX=MAX(XMAX,XPROJ(1,I))
 193 :          YMIN=MIN(YMIN,XPROJ(2,I))
 194 :          YMAX=MAX(YMAX,XPROJ(2,I))
 195 :          TMIN=MIN(TMIN,XPROJ(3,I))
 196 :          TMAX=MAX(TMAX,XPROJ(3,I))
 197 :  400  CONTINUE
 198 :       XDEC=XMAX-XMIN
 199 :       YDEC=YMAX-YMIN
 200 :       DDEC=MAX(XDEC,YDEC)*0.01
 201 : C#      DDEC=MAX(DDEC,xpetit)
 202 :       DDEC=MAX(DDEC,xspeti)
 203 :       XMAX=XMAX+DDEC
 204 :       XMIN=XMIN-DDEC
 205 :       YMIN=YMIN-DDEC
 206 :       YMAX=YMAX+DDEC
 207 :       IF (INITIA.EQ.0) THEN
 208 :          INITIA=1
 209 :          XMI=XMIN
 210 :          XMA=XMAX
 211 :          YMI=YMIN
 212 :          YMA=YMAX
 213 :       ENDIF
 214 : *
 215 :       IF (IPREM.EQ.0.AND.IDIM.EQ.3) THEN
 215 :          CALL TRINIT(25,DIOCA2,DIOCA2,TITREE,0.15,VALEUR,NCOUMA)
 215 :          CALL DFENET(0.,80.,0.,25.,-1.,1.,X1,X2,Y1,Y2,.TRUE.)
 215 :          CALL MOIN(LPROJ,LPPR1,LPPR2,LPPR3,LPPR4)
 216 :          IPREM=1
 217 :       ENDIF
 218 :  405  CONTINUE
 218 :       CALL TRINIT(25,DIOCA2,DIOCA2,TITREE,0.15,VALEUR,NCOUMA)
 218 :       CALL DFENET(0.,80.,0.,25.,-1.,1.,X1,X2,Y1,Y2,.TRUE.)
 218 :       CALL CHCOUL(0)
 219 : *      OBTENIR LES BONNES VALEURS DU CADRE
 219 :       CALL TRLABL(0.,16.,0.,'Cadre actuel ci dessous',23,1.)
 219 :       CALL TRLABL(0.,2.,0.,'   Xmin',7,1.)
 219 :       CALL TRLABL(0.,4.,0.,'   Xmax',7,1.)
 219 :       CALL TRLABL(0.,6.,0.,'   Ymin',7,1.)
 219 :       CALL TRLABL(0.,8.,0.,'   Ymax',7,1.)
 220 :       WRITE (ZONE1,FMT='(G9.2)') XMI
 220 :       CALL TRLABL(40.,2.,0.,ZONE1,9,1.)
 221 :       WRITE (ZONE2,FMT='(G9.2)') XMA
 221 :       CALL TRLABL(40.,4.,0.,ZONE2,9,1.)
 222 :       WRITE (ZONE3,FMT='(G9.2)') YMI
 222 :       CALL TRLABL(40.,6.,0.,ZONE3,9,1.)
 223 :       WRITE (ZONE4,FMT='(G9.2)') YMA
 223 :       CALL TRLABL(40.,8.,0.,ZONE4,9,1.)
 224 :       GOTO 404
 225 :  403  CONTINUE
 225 :       CALL TRMESS('Valeur incorrecte recommencez')
 226 :  404  CONTINUE
 227 :       LEGEND(1)=' '
 228 :       LEGEND(2)='Xmin ?'
 229 :       LEGEND(3)='Xmax ?'
 230 :       LEGEND(4)='Ymin ?'
 231 :       LEGEND(5)='Ymax ?'
 232 :       LEGEND(6)='Auto'
 233 :       LEGEND(7)='Cont'
 233 :       CALL MENU(LEGEND,7,6)
 233 :       CALL TRAFF(ICLE)
 234 :       IF (ICLE.EQ.5) THEN
 235 :       INCLE=0
 236 :         XMI=XMIN
 237 :         XMA=XMAX
 238 :         YMI=YMIN
 239 :         YMA=YMAX
 240 :       ELSEIF (ICLE.EQ.6) THEN
 241 :       INCLE=0
 242 :       ELSEIF (ICLE.EQ.1) THEN
 242 :       CALL TRGET('NOUVELLE VALEUR DE XMIN :',ZONF1)
 243 :       INCLE=1
 244 :       IF (ZONF1.NE.ZONE1) READ  (ZONF1,FMT='(G9.2)',ERR=403) XMI
 245 :       ELSEIF (ICLE.EQ.2) THEN
 245 :       CALL TRGET('NOUVELLE VALEUR DE XMAX :',ZONF2)
 246 :       INCLE=1
 247 :       IF (ZONF2.NE.ZONE2) READ  (ZONF2,FMT='(G9.2)',ERR=403) XMA
 248 :       ELSEIF (ICLE.EQ.3) THEN
 248 :       CALL TRGET('NOUVELLE VALEUR DE YMIN :',ZONF3)
 249 :       INCLE=1
 250 :       IF (ZONF3.NE.ZONE3) READ  (ZONF3,FMT='(G9.2)',ERR=403) YMI
 251 :       ELSEIF (ICLE.EQ.4) THEN
 251 :       CALL TRGET('NOUVELLE VALEUR DE YMAX :',ZONF4)
 252 :       INCLE=1
 253 :       IF (ZONF4.NE.ZONE4) READ  (ZONF4,FMT='(G9.2)',ERR=403) YMA
 254 :       ENDIF
 255 :       IF (INCLE.EQ.1) GOTO 405
 255 :       CALL TRINIT(25,DIOCA2,DIOCA2,TITREE,0.15,VALEUR,NCOUMA)
 255 :       CALL DFENET(XMI,XMA,YMI,YMA,-1.,1.,X1,X2,Y1,Y2,FENET)
 256 : *  POUR TRAVAILLER EN NON SEGMENTE
 257 :       XPREC=(XMA-XMI)/100
 258 :       YPREC=(YMA-YMI)/100
 259 :       XPREC=MAX(XPREC,YPREC)
 260 :       YPREC=MAX(XPREC,YPREC)
 261 : *   INITIALISATION DE IVU
 262 : *   IVU=1  PT VU
 263 : *   IVU<>1 PT PAS VU
 264 :       IF (IVU.NE.0) SEGSUP IVU
 265 :       SEGINI IVU
 266 :       DO 410 I=1,ITE
 267 :          IVU(I)=1
 268 :  410  CONTINUE
 269 :       IF (ICACHE.NE.0) THEN
 270 :          MCOUP=0
 270 :          CALL TIRET3(XPROJ,MELEME,ICPR,XMIN,XMAX,YMIN,YMAX,IVU,NELEM,
 271 :      #    TMIN,TMAX,MCOUP)
 272 :          SEGACT ICPR
 273 :       ENDIF
 274 :       IF (NTSEG.NE.0) SEGSUP NTSEG
 275 :       IF (ICACHE.EQ.1) THEN
 276 :             LTSEGS=1000
 277 :             SEGINI NTSEG
 278 :             LTSEG=0
 279 :       ENDIF
 279 :       CALL CHCOUL(2)
 280 :       IF (KON2.NE.0) SEGSUP KON2
 281 :       SEGINI,KON2=KON1
 282 :       SEGACT KON1*MOD
 283 :       ITR=1
 284 :       KAUX=1
 285 :  500  K=KAUX
 286 :       IF (IVU(KAUX).NE.1) GOTO 530
 287 :       KAUXR=KAUX
 288 :  510  DO 520 KL=1,NBCONR
 289 :       ITRA=KON(KL,K)
 290 :       IF (ITRA.LT.0) GOTO 520
 291 :       IF (ITRA.EQ.0) GOTO 530
 292 :       IF (IVU(ITRA).EQ.1) GOTO 540
 293 :  520  CONTINUE
 294 :       K=KON(NBCON,K)
 295 :       IF (K.NE.0) GOTO 510
 296 :  530  KAUX=KAUX+1
 297 :       IF (KAUX.EQ.ITE+1) GOTO 630
 298 :       GOTO 500
 299 :  540  CONTINUE
 300 :       IF (ITR.GT.1) THEN
 300 :        CALL POLRL(ITR,XTR,YTR,ZTR)
 301 :       ENDIF
 302 :       ITR=1
 303 :       XTR(1)=XPROJ(1,KAUXR)
 304 :       YTR(1)=XPROJ(2,KAUXR)
 305 :       KPRESS=KAUXR
 306 :       GOTO 560
 307 :  550  KL=1
 308 :  560  DO 570 L=KL,NBCONR
 309 :       M=KON(L,K)
 310 :       IF (M.EQ.0) GOTO 500
 311 :       IF (M.LT.0) GOTO 570
 312 :       IF (IVU(M).NE.1) GOTO 570
 313 :       GOTO 580
 314 :  570  CONTINUE
 315 :       K=KON(NBCON,K)
 316 :       IF (K.EQ.0) GOTO 500
 317 :       GOTO 550
 318 :  580  CONTINUE
 319 :       ITR=ITR+1
 320 :       XTR(ITR)=XPROJ(1,M)
 321 :       YTR(ITR)=XPROJ(2,M)
 322 :       IF (ITR.EQ.40) THEN
 322 :        CALL POLRL(ITR,XTR,YTR,ZTR)
 323 :        XTR(1)=XTR(ITR)
 324 :        YTR(1)=YTR(ITR)
 325 :        ITR=1
 326 :       ENDIF
 327 :       KON(L,K)=-KON(L,K)
 328 :       M1=M
 329 :  590  DO 600 L=1,NBCONR
 330 :       IF (KON(L,M1).EQ.0) GOTO 620
 331 :       IF (KON(L,M1).EQ.KPRESS) GOTO 610
 332 :  600  CONTINUE
 333 :       M1=KON(NBCON,M1)
 334 :       IF (M1.EQ.0) GOTO 620
 335 :       GOTO 590
 336 :  610  KON(L,M1)=-KON(L,M1)
 337 :  620  KPRESS=M
 338 :       K=KPRESS
 339 :       GOTO 550
 340 :  630  CONTINUE
 340 :       IF (ITR.GT.1) CALL POLRL(ITR,XTR,YTR,ZTR)
 341 :       ITR=1
 342 :       IF (ICACHE.EQ.0) GOTO 670
 343 : C  ON REMPLIT ISEGM AVEC LES SEGMENTS EN PARTIE VU
 344 :       DO 660 K=1,ITE
 345 :       IF (IVU(K).NE.1) GOTO 660
 346 :       KK=K
 347 :  640  DO 650 KL=1,NBCONR
 348 :       ITRA=KON(KL,KK)
 349 :       IF (ITRA.LT.0) GOTO 650
 350 :       IF (ITRA.EQ.0) GOTO 660
 351 :       IF (LTSEGS-LTSEG.LT.10) THEN
 352 :               LTSEGS=LTSEGS+1000
 353 :               SEGADJ NTSEG
 354 :       ENDIF
 355 :       NTSEG(LTSEG+1)=K
 356 :       NTSEG(LTSEG+2)=ITRA
 357 :       NTSEG(LTSEG+3)=2
 358 :       LTSEG=LTSEG+3
 359 :  650  CONTINUE
 360 :       KK=KON(NBCON,KK)
 361 :       IF (KK.NE.0) GOTO 640
 362 :  660  CONTINUE
 363 :  670  CONTINUE
 364 :       SEGDES KON1
 365 :       IF (ICACHE.NE.0) THEN
 365 :       CALL DICHO3(XPROJ,MELEME,ICPR,XMIN,XMAX,
 366 :      #  YMIN,YMAX,IVU,NTSEG,NELEM,IDCOUL,IDCOUL,LBLANC,LTSEG)
 367 :       SEGACT MELEME
 368 :       DO 671 IO=1,LISOUS(/1)
 369 :       IPT1=LISOUS(IO)
 370 :       SEGACT IPT1
 371 :  671  CONTINUE
 372 :       ENDIF
 373 :  1010 CONTINUE
 373 :       CALL MENUU
 373 :       CALL TRAFF(ICLE)
 374 : *  DEMANDE DE REAFFICHAGE
 375 :       IF (ICLE.EQ.11) GOTO 1000
 376 : *  DEPLACEMENT DE NOEUD
 377 :       IF (ICLE.EQ.1) THEN
 377 :       CALL MODP(XPROJ,IVU,KON2,ICPR,IDCP,IBOUJ)
 378 :       GOTO 1010
 379 :       ENDIF
 380 : *  NOMMER UN NOEUD
 381 :       IF (ICLE.EQ.2) THEN
 381 :           CALL MONO(XPROJ,IVU,IDCP)
 382 :           GOTO 1010
 383 :       ENDIF
 384 : *  SUPPRIMER UN ELEMENT
 385 :       IF (ICLE.EQ.3) THEN
 385 :           CALL MOSU(XPROJ,IVU,ICPR,MELEME)
 386 :           GOTO 1010
 387 :       ENDIF
 388 : *  CREATION D'UN ELEMENT
 389 :       IF (ICLE.EQ.4) THEN
 389 :           CALL MOCR(XPROJ,IVU,IDCP,MELEME,ICPR,ITE,IMILL,TMIN,IBOUJ)
 390 :           GOTO 1010
 391 :        ENDIF
 392 : *  NOMMER UN ENSEMBLE D'ELEMENT
 393 :       IF (ICLE.EQ.5) THEN
 393 :           CALL MONL(XPROJ,IVU,ICPR,MELEME)
 394 :           GOTO 1010
 395 :        ENDIF
 396 : *  ECRITURE COORDONNEES
 397 :       IF (ICLE.EQ.6) THEN
 397 :           CALL MOCO(XPROJ,IVU,KON2,IDCP,ICPR,IBOUJ)
 398 :           GOTO 1010
 399 :       ENDIF
 400 : *  AFFICHAGE NOMS DES POINTS
 401 :       IF (ICLE.EQ.7) THEN
 401 :           CALL MOPO(XPROJ,ICPR,IVU)
 402 :           GOTO 1010
 403 :       ENDIF
 404 : *  AFFICHAGE CONTOUR
 405 :       IF (ICLE.EQ.8) THEN
 405 :           CALL MOCT(XPROJ,ICPR,IVU,MELEME)
 406 :           GOTO 1010
 407 :       ENDIF
 408 : *  DEMANDE DE ZOOM
 409 :       IF (ICLE.EQ.9) THEN
 409 :         CALL TRMESS('Entrez le premier point pour le zoom')
 409 :           CALL TRDIG(X1,Y1,INCLE)
 409 :         CALL TRMESS('Entrez le second point pour le zoom')
 409 :           CALL TRDIG(X2,Y2,INCLE)
 410 :           XMI=MIN(X1,X2)
 411 :           XMA=MAX(X1,X2)
 412 :           YMI=MIN(Y1,Y2)
 413 :           YMA=MAX(Y1,Y2)
 414 :           GOTO 1000
 415 :       ENDIF
 416 : *  RECENTRAGE DES NOEUDS MILIEUX
 417 :       IF (ICLE.EQ.10) THEN
 417 :           CALL MOCE(MELEME,XPROJ,ICPR,IBOUJ)
 418 :           GOTO 1000
 419 :       ENDIF
 420 :       IF (ICLE.LT.0) GOTO 1010
 420 :       CALL PROMOD(ICPR,XPROJ,JOEIL,2,IBOUJ)
 421 :       IF (LPROJ.EQ.0) GOTO 2100
 422 :       NBELEM=0
 423 :       DO 2000 I=1,ITE
 424 :        IF (IBOUJ(I).EQ.0) GOTO 2000
 425 :        NBELEM=NBELEM+1
 426 :  2000 CONTINUE
 427 :       IF (NBELEM.EQ.0) GOTO 2100
 428 :       NBNN=1
 429 :       NBREF=0
 430 :       NBSOUS=0
 431 :       SEGINI MELEME
 432 :       ITYPEL=1
 433 :       ICC=0
 434 :       DO 2010 I=1,ITE
 435 :        IF (IBOUJ(I).EQ.0) GOTO 2010
 436 :        ICC=ICC+1
 437 :        NUM(1,ICC)=IDCP(I)
 438 :  2010 CONTINUE
 439 : *  TORE
 440 :       IF (LPROJ.EQ.5) THEN
 440 :        CALL ECROBJ('POINT ',LPPR4)
 440 :        CALL ECROBJ('POINT ',LPPR3)
 440 :        CALL ECROBJ('POINT ',LPPR2)
 440 :        CALL ECROBJ('POINT ',LPPR1)
 441 : *  CONE
 442 :       ELSEIF (LPROJ.EQ.4) THEN
 442 :        CALL ECROBJ('POINT ',LPPR3)
 442 :        CALL ECROBJ('POINT ',LPPR2)
 442 :        CALL ECROBJ('POINT ',LPPR1)
 443 : *  CYLINDRE
 444 :       ELSEIF (LPROJ.EQ.3) THEN
 444 :        CALL ECROBJ('POINT ',LPPR3)
 444 :        CALL ECROBJ('POINT ',LPPR2)
 444 :        CALL ECROBJ('POINT ',LPPR1)
 445 : *  SPHERE
 446 :       ELSEIF (LPROJ.EQ.2) THEN
 446 :        CALL ECROBJ('POINT ',LPPR2)
 446 :        CALL ECROBJ('POINT ',LPPR1)
 447 : *  PLAN
 448 :       ELSEIF (LPROJ.EQ.1) THEN
 448 :        CALL ECROBJ('POINT ',LPPR3)
 448 :        CALL ECROBJ('POINT ',LPPR2)
 448 :        CALL ECROBJ('POINT ',LPPR1)
 449 :       ENDIF
 449 :       CALL ECRCHA(ITOPT(LPROJ))
 449 :       CALL ECROBJ('POINT ',IVPR)
 449 :       CALL ECRCHA(JPROJ)
 449 :       CALL ECROBJ('MAILLAGE',MELEME)
 449 :       CALL DEPLAC
 450 :       SEGSUP MELEME
 451 :  2100 CONTINUE
 452 :       SEGSUP XPROJ,ICPR,IVU
 453 :       IF (NTSEG.NE.0) SEGSUP NTSEG
 454 :       IF (KON1.NE.0) SEGSUP KON1
 455 :       IF (KON2.NE.0) SEGSUP KON2
 456 :       IF (IDCP.NE.0) SEGSUP IDCP
 457 :       IF (IMILL.NE.0) SEGSUP IMILL
 458 :       IF (IBOUJ.NE.0) SEGSUP IBOUJ
 459 : * LB
 459 :       CALL TRMFIN
 460 :       RETURN
 461 : *LB
 462 :       END
 463 :  
 464 :  
 465 :  
 466 :  
 467 :  
 468 :  
 469 :  
 470 :  

© Cast3M 2003 - All rights reserved.
Disclaimer