Download j3mufa.eso

Back to the list

   1 : C J3MUFA    SOURCE    CHAT      05/01/13    00:47:05     5004           
   2 :       SUBROUTINE J3MUFA(VWORK,TOL,IRET)
   3 : C----------------------------------------------------
   4 : C     SPLITTING D'UN CONTOUR EN PLUSIEURS SI
   5 : C     IL Y A DES PTS COMMUNS
   6 : C
   7 : C     PP 12/98
   8 : C     Pierre Pegon/JRC Ispra
   9 : C----------------------------------------------------
  10 :       IMPLICIT INTEGER(I-N)
  11 :       IMPLICIT REAL*8(A-H,O-Z)
  12 :       DIMENSION XY(2)
  13 : -INC  CCOPTIO

  14 : C
  15 :       SEGMENT VWORK
  16 :         INTEGER FWWORK(NFACE)
  17 :       ENDSEGMENT
  18 :       POINTEUR VWORK1.VWORK,VWORK2.VWORK,VWDUMM.VWORK
  19 : C
  20 :       SEGMENT WWORK
  21 :         REAL*8 PORIG(3),VNORM(3),VI(3),VJ(3)
  22 :         INTEGER FWORK
  23 :         INTEGER TWORK(NTROU)
  24 :       ENDSEGMENT
  25 :       POINTEUR WWORK1.WWORK
  26 : C
  27 :       SEGMENT WORK
  28 :         REAL*8 XYC(2,NPTO)
  29 :         INTEGER IST(3,NPTO)
  30 :         REAL*8 DENS(NPTO)
  31 :         INTEGER JUN
  32 :       ENDSEGMENT
  33 :       POINTEUR WORK1.WORK,WORK2.WORK,WORK3.WORK
  34 : C
  35 :       NFACE=FWWORK(/1)
  36 :       IF(NFACE.NE.1)THEN
  37 :         WRITE(IOIMP,*)
  38 :      >  'J3MUFA: La face ne doit contenir qu"un seul contour'
  39 :         IRET=IRET+1
  40 :         RETURN
  41 :       ENDIF
  42 : C
  43 :       WWORK=FWWORK(1)
  44 :       NTROU= TWORK(/1)
  45 :       IF(NTROU.NE.0)THEN
  46 :         WRITE(IOIMP,*)
  47 :      >  'J3MUFA: Le contour ne doit pas contenir de trou'
  48 :         IRET=IRET+1
  49 :         RETURN
  50 :       ENDIF
  51 : C
  52 :       WORK=FWORK
  53 :       NPTO=XYC(/2)
  53 :       CALL J3ZERI(IST,3,NPTO)
  54 :       DO 1 IE1=1,NPTO-1
  55 :         XX=XYC(1,IE1)
  56 :         YY=XYC(2,IE1)
  57 :         DO IE2=IE1+1,NPTO
  58 :           DO IE3=1,2
  59 :             XY(IE3)=XYC(IE3,IE2)
  60 :           ENDDO
  61 :           DIS=SQRT((XX-XY(1))**2+(YY-XY(2))**2)
  62 :           IF(DIS.LT.TOL)THEN
  63 :             NFACE=NFACE+1
  64 :             IST(1,IE1)=IE2
  65 :             GOTO 1
  66 :           ENDIF
  67 :         ENDDO
  68 :  1    CONTINUE
  69 : C
  70 :       IF(NFACE.EQ.1)RETURN
  71 : C
  72 :       SEGADJ,VWORK
  73 :       SEGINI,WORK1
  74 :       FWORK=WORK1
  75 :       IE1=0
  76 :       JE1=0
  77 :       NNFACE=1
  78 : C     DO 2 IE1=1,NPTO
  79 :  2    CONTINUE
  80 :         IE1=IE1+1
  81 :         IF(IE1.GT.NPTO)GOTO 3
  82 :         JE1=JE1+1
  83 :         DO IE2=1,2
  84 :           WORK1.XYC(IE2,JE1)=XYC(IE2,IE1)
  85 :         ENDDO
  86 :         IF(IST(1,IE1).EQ.0)THEN
  87 :           DO IE2=1,2
  88 :             WORK1.XYC(IE2,JE1)=XYC(IE2,IE1)
  89 :           ENDDO
  90 :         ELSE
  91 :           NPTO=IST(1,IE1)-IE1
  92 :           SEGINI,WWORK,WORK2
  93 :           FWORK=WORK2
  94 :           NNFACE=NNFACE+1
  95 :           FWWORK(NNFACE)=WWORK
  96 :           DO IE2=IE1+1,IST(1,IE1)
  97 :             DO IE3=1,2
  98 :               WORK2.XYC(IE3,IE2-IE1)=XYC(IE3,IE1)
  99 :             ENDDO
 100 :           ENDDO
 101 :           IE1=IST(1,IE1)-1
 102 :         ENDIF
 103 :       GOTO 2
 104 :  3    CONTINUE
 105 :       IF(NNFACE.NE.NFACE)THEN
 106 : C        ...........!!!!!!!!!!!!
 107 :       ENDIF
 108 :       NPTO=JE1
 109 :       SEGADJ,WORK1
 110 : C
 111 :       SEGSUP,WORK
 112 : C
 113 :       RETURN
 114 :       END
 115 :  
 116 : 
 117 :  
 118 :  

© Cast3M 2003 - All rights reserved.
Disclaimer