Download j3disk.eso

Back to the list

   1 : C J3DISK    SOURCE    CHAT      05/01/13    00:46:30     5004           
   2 :       SUBROUTINE J3DISK(BLOCOM,XTOL,IRET)
   3 : C----------------------------------------------------
   4 : C
   5 : C     ON VERIFIE QUE 2 POINTS DE POSITION IDENTIQUE ONT LA MEME
   6 : C        DENSITE, PUIS ON LES REND IDENTIQUE EN VALEUR
   7 : C
   8 : C     PP 9/97
   9 : C     Pierre Pegon/JRC Ispra
  10 : C----------------------------------------------------
  11 :       IMPLICIT INTEGER(I-N)
  12 :       IMPLICIT REAL*8(A-H,O-Z)
  13 : C
  14 : -INC CCOPTIO
  15 : -INC SMLENTI
  16 : -INC SMLREEL
  17 : C
  18 :       SEGMENT BLOCOM
  19 :         INTEGER POINT(JG)
  20 :         REAL*8 YCOOR(IDIM+1,JG)
  21 :         INTEGER MAILL(MM1)
  22 :       ENDSEGMENT
  23 : C
  24 :       JG=POINT(/1)
  25 : C
  26 : C     ON CHARGE DANS MLENTI LE RANG DES POINTS ET DANS MLREEL LA
  27 : C        DISTANCE A L'ORIGINE
  28 : C
  29 :       SEGINI,MLENTI,MLREEL
  30 :       DO IE1=1,JG
  31 :         LECT(IE1)=IE1
  32 :         XXXX=0.D0
  33 :         DO IE2=1,IDIM
  34 :           XXXX=XXXX+YCOOR(IE2,IE1)**2
  35 :         ENDDO
  36 :         PROG(IE1)=SQRT(XXXX)
  37 :       ENDDO
  38 :       IF(IIMPI.EQ.1791)THEN
  39 :         WRITE(IOIMP,*)'BLOCOM INPUT: I,DIST,X,Y,Z'
  40 :         DO IE1=1,JG
  41 :           WRITE(IOIMP,*)LECT(IE1),PROG(IE1),(YCOOR(IE2,IE1),IE2=1,3)
  42 :         ENDDO
  43 :       ENDIF
  44 : C
  45 : C     ON ORDONNE MLREEL EN FAISANT LES PERMUTATIONS UTILES SUR MLENTI
  46 : C
  46 :       CALL GENOS2(PROG,LECT,JG)
  47 :       IF(IIMPI.EQ.1791)THEN
  48 :         WRITE(IOIMP,*)'AFTER GENOS2:I,PROG(I),LECT(I)'
  49 :         DO IE1=1,JG
  50 :           WRITE(IOIMP,*)IE1,PROG(IE1),LECT(IE1)
  51 :         ENDDO
  52 :       ENDIF
  53 : C
  54 : C     ON VERIFIE QUE LES POINTS IDENTIQUES EN POSITION ONT LA MEME DENSITE
  55 : C
  56 :       XFI=PROG(1)
  57 :       DO IE1=2,JG
  58 :         JE1=LECT(IE1-1)
  59 :         XFF=PROG(IE1)
  60 :         IF(JE1.EQ.0)GOTO 1
  61 :         IF(ABS(XFI-XFF).GE.XTOL)GOTO 1
  62 :         DO IE2=IE1,JG
  63 :           XXXX=PROG(IE2)
  64 :           IF(ABS(XFI-XXXX).GE.XTOL)GOTO 1
  65 :           JE2=LECT(IE2)
  66 :           XXXX=0.D0
  67 :           DO IE3=1,IDIM
  68 :             XXXX=XXXX+(YCOOR(IE3,JE2)-YCOOR(IE3,JE1))**2
  69 :           ENDDO
  70 :           IF(SQRT(XXXX).LT.XTOL)THEN
  71 :             XXXX=ABS(YCOOR(IDIM+1,JE2)-YCOOR(IDIM+1,JE1))
  72 :             IF(XXXX.GT.XTOL)THEN
  73 :               WRITE(IOIMP,*)
  74 :      >        'J3DISK: 2 points identiques n"ont pas la meme densite'
  75 :               IRET=IRET+1
  76 :               GOTO 9998
  77 :             ELSE
  78 :               DO IE3=1,IDIM+1
  79 :                 YCOOR(IE3,JE2)=YCOOR(IE3,JE1)
  80 :               ENDDO
  81 :               LECT(IE2)=0
  82 :             ENDIF
  83 :           ENDIF
  84 :         ENDDO
  85 :  1      XFI=XFF
  86 :       ENDDO
  87 : *
  88 :       IF(IIMPI.EQ.1791)THEN
  89 :         WRITE(IOIMP,*)'BLOCOM OUTPUT: I,LECT,X,Y,Z'
  90 :         DO IE1=1,JG
  91 :           WRITE(IOIMP,*)IE1,LECT(IE1),(YCOOR(IE2,IE1),IE2=1,3)
  92 :         ENDDO
  93 :       ENDIF
  94 : C
  95 :  9998 SEGSUP,MLENTI,MLREEL
  96 : C
  97 :       RETURN
  98 :       END
  99 :  
 100 :  

© Cast3M 2003 - All rights reserved.
Disclaimer