C EVCH1 SOURCE CB215821 21/01/28 21:15:00 10867 SUBROUTINE EVCH1(NBTHL,ITHR,ICPR1,MCHPOI,CMOT1) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCNOYAU -INC CCOPTIO -INC SMELEME -INC SMCHPOI CHARACTER*(*) CMOT1 CHARACTER*8 TYP1 SEGMENT ICPR1 INTEGER IBIN1(nbpts),IBIN2(nbpts) REAL*8 XVAL1(nbpts) CHARACTER*(LONOM) CNOM2(nbpts) ENDSEGMENT C Mise en forme du CHPOINT en ICPR1 NSOUPO=MCHPOI.IPCHP(/1) DO 10 ISOUP = 1,NSOUPO MSOUPO = MCHPOI.IPCHP(ISOUP) NC = MSOUPO.NOCOMP(/2) DO 20 INC = 1,NC IF(MSOUPO.NOCOMP(INC) .EQ. CMOT1)THEN MPOVAL = MSOUPO.IPOVAL IPT1 = MSOUPO.IGEOC NNC = IPT1.NUM(/2) C On assure le travail contigu en mémoire IF(NBTHL .EQ. 1)THEN IDEB = 1 IFIN = NNC ELSE NBTHR=MIN(NNC,NBTHL) IF(ITHR .GT. NBTHR) GOTO 20 IRES = MOD(NNC,NBTHR) IF(IRES .EQ. 0)THEN ILON = NNC / NBTHR IDEB = (ITHR-1)* ILON + 1 ELSE IF (ITHR .LE. IRES) THEN ILON = (NNC / NBTHR) + 1 IDEB = (ITHR-1)* ILON + 1 ELSE ILON = NNC / NBTHR IDEB = (IRES * (ILON+1)) + (ITHR-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 ENDIF C Boucle qui réalise le travail de IDEB à IFIN DO INBEL= IDEB,IFIN INOE = IPT1.NUM(1,INBEL) ICPR1.IBIN1(INOE) = 1 ICPR1.XVAL1(INOE) = MPOVAL.VPOCHA(INBEL,INC) ENDDO ENDIF 20 CONTINUE 10 CONTINUE C Repertorie tous les points nommes NNC=IOUEP2(/1) C On assure le travail contigu en mémoire IF(NBTHL .EQ. 1)THEN IDEB = 1 IFIN = NNC ELSE NBTHR=MIN(NNC,NBTHL) IF(ITHR .GT. NBTHR) RETURN IRES = MOD(NNC,NBTHR) IF(IRES .EQ. 0)THEN ILON = NNC / NBTHR IDEB = (ITHR-1)* ILON + 1 ELSE IF (ITHR .LE. IRES) THEN ILON = (NNC / NBTHR) + 1 IDEB = (ITHR-1)* ILON + 1 ELSE ILON = NNC / NBTHR IDEB = (IRES * (ILON+1)) + (ITHR-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 ENDIF DO 30 IOP=IDEB,IFIN TYP1=INOOB2(IOP) IF(TYP1.EQ.'POINT ') THEN INOE =IOUEP2(IOP) IP =INOOB1(IOP) IDEBCH=IPCHAR(IP) IFINCH=IPCHAR(IP+1)-1 IF (ICHARA(IDEBCH:IDEBCH).NE.' ') THEN IF (ICHARA(IDEBCH:IDEBCH).NE.'#') THEN ICPR1.IBIN2(INOE)= 1 ICPR1.CNOM2(INOE)= ICHARA(IDEBCH:IFINCH) ENDIF ENDIF ENDIF 30 CONTINUE END