      SUBROUTINE FROETC(NTYP)
C
      INCLUDE 'com_coor.f'
      INCLUDE 'com_faces.f'
      INCLUDE 'com_options.f'
C
      INTEGER ISUC(4),ISUC3(3),IPRE(4)
      DATA ISUC3 / 2,3,1 /
      DATA ISUC / 2,3,4,1 /
      DATA IPRE / 4,1,2,3 /
C
      NBOBO = 1
      IF (NDS.GE.27) THEN
        DO I=1,NFACE
          DO J=1,4
            NBOR(J,I) = 1
          ENDDO
        ENDDO
        DO I=1,NEL
          ITAB(I) = 0
        ENDDO
        DO I=1,NFACE
          IE = NNUMFA(I)
          IF (ITAB(IE).EQ.0) THEN
            ITAB(IE) = I
          ELSEIF (ITAB(IE).GT.0) THEN
            ITAB(IE) = -2
          ELSE
            ITAB(IE) = ITAB(IE)-1
          ENDIF
          DO J=1,4
            IF (INDEX(NFAC(J,I)).EQ.1) THEN
              J0 = IPRE(J)
              J1 = ISUC(J)
              IF (INDEX(NFAC(J1,I)).NE.-1) NBOR(J,I)=0
              IF (INDEX(NFAC(J0,I)).NE.-1) NBOR(J0,I)=0
            ENDIF
          ENDDO
        ENDDO
      ELSEIF(NDS.EQ.8) THEN
        DO I=1,NEL
          ITAB(I) = 0
        ENDDO
        DO I=1,NFACE
          DO J=1,4
            NBOR(J,I) = 1
          ENDDO
          IE = NNUMFA(I)
          IF (ITAB(IE).EQ.0) THEN
            ITAB(IE) = I
          ELSEIF (ITAB(IE).GT.0) THEN
            ITAB(IE) = -2
          ELSE
            ITAB(IE) = ITAB(IE)-1
          ENDIF
        ENDDO
        DO I=1,NFACE
          NNN = NNUMFA(I)
          IF (ITAB(NNN).LT.0) THEN
            DO J=1,4
              I2 = NFAC(J,I)
              I1 = NFAC(ISUC(J),I)
              II1 = MAX(1,I-5)
              II2 = MIN(NFACE,I+5)
              DO II=II1,II2
                IF (NNUMFA(II).EQ.NNN) THEN
                  DO JJ=1,4
                    IF (NFAC(JJ,II).EQ.I1) THEN
                      IF (NFAC(ISUC(JJ),II).EQ.I2) THEN
                        NBOR(J,I) = 0
                        NBOR(JJ,II) = 0
                      ENDIF
                    ENDIF
                  ENDDO
                ENDIF
              ENDDO
            ENDDO
          ENDIF
        ENDDO
      ELSEIF(I2D.NE.0.OR.(NDS.EQ.4.AND.NTYP.EQ.3).OR.NDS.EQ.3) THEN
        NMODP = MAX(1,NFACE/50)
        DO I=1,NEL
          ITAB(I) = 0
        ENDDO
        IF (NMODP.EQ.1) NMODP = NFMAX
        NGROS = 0
        DO I=1,NFACE
          DO K=1,NDS
            NBOR(K,I) = 0
          ENDDO
        ENDDO
        IF (NDS.EQ.3) THEN
          DO I=1,NFACE
            IF (MOD(I,NMODP).EQ.0.AND.ISTDOUT.EQ.0)
     &           CALL MYFLUSH(100.*REAL(I)/REAL(NFACE))
            DO K=1,3
              IF (NBOR(K,I).EQ.0) THEN
                N = NFAC(K,I)
                K1 = ISUC3(K)
                NN = NFAC(K1,I)
                IF (INDEX(N).LE.NVMX) THEN
                  DO L=1,INDEX(N)
                    J = NVOI(L,N)
                    IF (J.NE.I) THEN
                      DO M=1,3
                        IF (NFAC(M,J).EQ.NN) NBOR(K,I) = 1
                      ENDDO
                    ENDIF
                  ENDDO
                ELSE
                  NGROS = NGROS+1
                  DO J=1,NFACE
                    IF (J.NE.I) THEN
                      DO M=1,3
                        IF (NFAC(M,J).EQ.NN) THEN
                          IF (NFAC(ISUC3(M),J).EQ.N) THEN
                            NBOR(K,I) = 1
                            NBOR(M,J) = 1
                          ENDIF
                        ENDIF
                      ENDDO
                    ENDIF
                  ENDDO
                ENDIF
              ENDIF
            ENDDO
          ENDDO
        ELSE
          DO I=1,NFACE
            IF (MOD(I,NMODP).EQ.0.AND.ISTDOUT.EQ.0)
     &           CALL MYFLUSH(100.*REAL(I)/REAL(NFACE))
            DO K=1,4
              IF (NBOR(K,I).EQ.0) THEN
                N = NFAC(K,I)
                K1 = ISUC(K)
                NN = NFAC(K1,I)
                IF (INDEX(N).LE.NVMX) THEN
                  DO L=1,INDEX(N)
                    J = NVOI(L,N)
                    IF (J.NE.I) THEN
                      DO M=1,4
                        IF (NFAC(M,J).EQ.NN) NBOR(K,I) = 1
                      ENDDO
                    ENDIF
                  ENDDO
                ELSE
                  NGROS = NGROS+1
                  DO J=1,NFACE
                    IF (J.NE.I) THEN
                      DO M=1,4
                        IF (NFAC(M,J).EQ.NN) THEN
                          IF (NFAC(ISUC(M),J).EQ.N) THEN
                            NBOR(K,I) = 1
                            NBOR(M,J) = 1
                          ENDIF
                        ENDIF
                      ENDDO
                    ENDIF
                  ENDDO
                ENDIF
              ENDIF
            ENDDO
          ENDDO
        ENDIF
        NBOBO = 0
        DO I=1,NFACE
          DO K=1,NDS
            IF (NBOR(K,I).EQ.0) NBOBO = NBOBO+1
          ENDDO
        ENDDO
        IF (ISTDOUT.EQ.0) THEN
          IF (NMODP.NE.NFMAX) CALL ENDFLUSH
          IF (NGROS.NE.0) THEN
            IF (ILANG.EQ.0) THEN
              PRINT*,'Nombre de noeuds à plus de',NVMX,' voisins ='
     &             ,NGROS,' (',REAL(100*NGROS)/REAL(NUMNP),' %)'
            ELSE
              PRINT*,
     &           'Number of nodes having more than',NVMX,' neighbours ='
     &             ,NGROS,' (',REAL(100*NGROS)/REAL(NUMNP),' %)'
            ENDIF
          ENDIF
          IF (NBOBO.EQ.0) THEN
            IF (ILANG.EQ.0) THEN
              PRINT*,'Surface fermée...'
            ELSE
              PRINT*,'Closed surface...'
            ENDIF
            IPREFC = 2
          ELSE
            IF (ILANG.EQ.0) THEN
              PRINT*,NBOBO,' arêtes de bord'
            ELSE
              PRINT*,NBOBO,' boundary vertices'
            ENDIF
          ENDIF
        ENDIF
      ELSE
        DO I=1,NEL
          ITAB(I) = 0
        ENDDO
        DO I=1,NFACE
          IE = NNUMFA(I)
          IF (ITAB(IE).EQ.0) THEN
            ITAB(IE) = I
          ELSEIF (ITAB(IE).GT.0) THEN
            ITAB(IE) = -2
          ELSE
            ITAB(IE) = ITAB(IE)-1
          ENDIF
        ENDDO
      ENDIF
C 
      IF (NBCORN.GT.0) THEN
        DO I=1,NUMNP
          IF (ICOR(I).GT.1) THEN
cc            RAYON1(I) = RAYON1(I)/REAL(ICOR(I)-1)
            RAYON2(I) = RAYON2(I)/REAL(ICOR(I)-1)
          ENDIF
        ENDDO
      ENDIF
C
      END
