      SUBROUTINE DELN2(NVERT,ISWT1) 
      
      USE BLKMAP
      USE BLK1MOD
      USE BLK2MOD 
!      INCLUDE 'BLK1.COM'                                                             
!      INCLUDE 'BLK2.COM'

      CHARACTER*80 LIND
	  CHARACTER*1 ANS
      DATA SPAC/0.0/
      VOID = -1.E10
      NEDGE=0
      NINTV=1
      NGAP=0

!     Check options 

      IF(ISWT1 .EQ. 0) THEN
        CALL TRIANOPT(NINTV,SPAC)
      ELSE
        NINTV=1
        SPAC=0
      ENDIF

!     Sort points into ascending x order

      CALL SORTDB(XUSR,NKEY,NVERT) 

!     Drop points based on spacing

       IF(ISWT1 .NE. 0) THEN
         IF(NINTV .GT. 1  .OR.  SPAC .GT. 0.) THEN
           CALL DROPPTS(NVERT,NINTV,SPAC)
         ENDIF
       ENDIF

!     Get location of supertriangle                                     
                                                                        
       iprt=0
                                                                        
       call supert(XUSR,YUSR,NVERT) 

      NELTS=1 
                                                                        
      NVERTM=NVERT-3 

!     Loop on the vertices                                              
                                                                        
       DO NN=1,NVERT-3 

!     process next point                                                                        

         N=NKEY(NN) 
!     Skip out if inactive point
         IF(N .EQ. 0) GO TO 500
         IF(LIST(N) .EQ. 0) GO TO 500

         IF(NN .LT. NVERTM) THEN 
           DO KK=NN+1,NVERTM 
             K=NKEY(KK) 
             IF(K .NE. 0) THEN 
               IF(XUSR(N) .EQ. XUSR(K)) THEN 
                 IF(YUSR(N) .EQ. YUSR(K)) THEN 
                   WRITE(45,*) 'IDENT',N,K 
                   NKEY(KK)=0 
                 ENDIF 
               ELSE 
                 GO TO 200 
               ENDIF 
             ENDIF 
   200       CONTINUE 
           ENDDO 
         ENDIF 
                                                                        
!     Set edge buffers to zero                                          
                                                                        
         IF(NEDGE .GT. 0) THEN 
           DO J=1,NEDGE 
             IEDGE(J,1)=0 
             IEDGE(J,2)=0 
           END DO 
         ELSE 
           DO J=1,100 
             IEDGE(J,1)=0 
             IEDGE(J,2)=0 
           END DO 
         ENDIF 
         NEDGE=0 
                                                                        
!     test for point in circumcircle                                    
                                                                        
         if(n .eq. 6) then
           aa=0
         endif
         DO J=1,NELTS 
           CALL INSIDCIRC(XUSR,YUSR,J,N,ISWT) 
           WRITE(156,*) J,N,ISWT
                                                                        
!     If inside process edges                                           
                                                                        
           IF(ISWT .EQ. 1) THEN 
             CALL PROCESS(J,NEDGE,NGAP) 
             WRITE(156,*) J,NEDGE,NGAP
           ENDIF 
         END DO 
                                                                        
!     Setup to form new triangles                                       

         CALL SETEDG(NEDGE)
                                                              
!     Now form triangles as needed                                      
                                                                        
         DO J=1,NEDGE 
           NELFM(J)=0
           IF(IEDGE(J,1) .NE. 0) THEN 
             CALL FORMT(XUSR,YUSR,J,N,NGAP,KK,WD)
             NELFM(J)=KK                           
           ENDIF 
         END DO 

         DO J=1,NEDGE
           IF(NELFM(J) .GT. 0) THEN
             CALL TESTTR(XUSR,YUSR,NELFM(J),WD)
           ENDIF
         ENDDO

         NEDGE=0 
        iprt=1
        if(iprt .eq. 0) go to 500 
        DO J=1,NELTS 
          IF(NOPEL(J,1) .GT. 0) THEN 
            WRITE(155,'(2i5,2i10,19x,''1'')') J,(NOPEL(J,K),K=1,3) 
          ENDIF 
        END DO 
        ninnin=9999
!        write(150+nn,'(i5)') ninnin

!        do j=1,nvert
!          write(150+nn,'(i10,f16.6,f20.6,f10.2)') j,xusr(j),yusr(j),val(j)
!        enddo
!        write(150+nn,'(i10)') ninnin
   500   continue 
       END DO 
                                                                        
!     Get rid of elements from super point                              
                                                                        
       CALL RIDPOINT(NVERT) 

       XUSR(NP+1)=VOID                    
       XUSR(NP+2)=VOID                    
       XUSR(NP+3)=VOID                    
       YUSR(NP+1)=VOID                    
       YUSR(NP+2)=VOID                    
       YUSR(NP+3)=VOID                    
       DO J=1,NELTS
         DO K=1,3
           NOPSTO(J,2*K-1,1)=NOPEL(J,K)
           NOPSTO(J,2*K,1)=0
         ENDDO
         NOPSTO(J,7,1)=0
         NOPSTO(J,8,1)=0
         IMATSTO(J,1)=1
         THTASTO(J,1)=0.
       ENDDO
       NP=NP-3
       NPSTO(1)=NP
       NESTO(1)=NELTS
      
!      Get edge nodes for later filling

!       IF(ISWT1 .EQ. 0) THEN
!         CALL GETEDG
!       ENDIF
       if(iswt1 .eq. 2) then
         do j=1,np
           xusrsto(j,1)=xusr(j)
           yusrsto(j,1)=yusr(j)
         enddo
         call mergemesh1(1)
!         call mergemesh
       endif
       CALL ADDMESH(1)
                                                                        
      RETURN 
      END SUBROUTINE 

          
      SUBROUTINE GETEDG
      
      USE BLKMAP
      USE BLK1MOD
      USE BLK2MOD 
!      INCLUDE 'BLK1.COM'
!      INCLUDE 'BLK2.COM'

!     Look for edges that are duplicates

      DO N=1,NESTO(1)
        DO NN=1,3
          N1=NOPEL(N,NN)
          IF(NN .EQ. 3) THEN
            N2=NOPEL(N,1)
          ELSE
            N2=NOPEL(N,NN+1)
          ENDIF

          DO M=1,NESTO(1)
            DO MM=1,3
              M1=NOPEL(M,MM)
              IF(M1 .EQ. N2) THEN

!       Keep looking for match
              
                IF(MM .EQ. 3) THEN
                  M2=NOPEL(M,1)
                ELSE
                  M2=NOPEL(M,MM+1)
                ENDIF
                IF(M2 .EQ. N1) THEN

!       We have a match, this is no edge  skip out to next side

                  GO TO 400
                ENDIF
              ENDIF
            ENDDO
          ENDDO

!       No match these nodes are on an edge

          NINC(N1)=1
          NINC(N2)=1

  400     CONTINUE
        ENDDO
      ENDDO
      RETURN
      END