       PROGRAM creatgrid
	   dimension XL(100,2),YL(100,2),mappt(2),XL1(100),XL2(100)
       REAL*8 GRIDX(100),GRIDY(100)
!
!    define line numbers in map file
!
       DIST(A,B,C,D)=SQRT((C-A)*2+(D-C)**2)
       XL(1,1)=0.
       XL(2,1)=320.
       XL(3,1)=530.
       YL(1,1)=0.
       YL(2,1)=20.
       YL(3,1)=50.
       MAPPT(1)=3
       XL(1,2)=0.
       XL(2,2)=600.
       YL(1,2)=70.
       YL(2,2)=90.
       MAPPT(2)=2
       K1=1
       K2=2
       
!
!    compute line length
!
      XL1=0.
	  nlpts1=mappt(k1)
      do n=2,nlpts1
        XL1(n)=XL1(n-1)+dist(XL(n-1,1),YL(n-1,1),XL(n,1),YL(n,1))
      enddo     
      XL2=0.
	  nlpts2=mappt(k2)
      do n=2,nlpts2
        XL2(n)=XL2(n-1)+dist(XL(n-1,2),YL(n-1,2),XL(n,2),YL(n,2))
      enddo 
      xmean=(XL1(nlpts1)+XL2(nlpts2))/2.	 
!
!    get size spacing
!
!      read xsz,NY
      XSZ=100.
      NY=5
	  along=xmean/xsz
	  NX=(along+0.99)

      NXP=NX+1 
      NYP=NY+1 
      NRL=NX*NYP+1 
      NRT=NXP*NYP 

!      DO N=1,NE
!        DO M=1,8
!          NOPSV(N,M)=NOP(N,M)
!        ENDDO
!          IMATSV(N)=IMAT(N)
!      ENDDO
!      NESAV=NE
!      NEFSAV=NENTRY
!      NPUNDO=NRT
!                                                                       
!     Initialize GRIDX and GRIDY                                        
!                                                                       
      DO N=1,NRT 
        GRIDX(N)=0. 
        GRIDY(N)=0. 
!        IGSKP(N)=0 
      END DO 
!
!    calculate lengths
!
      xalong1=XL1(nlpts1)/NX
	  xalong2=XL2(nlpts2)/NX
!
!    compute cords along the edges
!
      XALONG=0.
      XXALONG=0.
      GRIDX(1)=XL(1,1)
      GRIDY(1)=YL(1,1)
      GRIDX(NYP)=XL(1,2)
      GRIDY(NYP)=YL(1,2)
      NRT=NXP*NYP
      DO N=NY+2,NRT,NYP
	    XALONG=XALONG+XALONG1
		NX1=2
	    DO M=NX1,NLPTS1
	      IF(XALONG .LT. XL1(M)) THEN
		    M1=M
		    GO TO 200
     	  ENDIF
	    ENDDO
  200	CONTINUE
        FRAC1=(XALONG-XL1(M1-1))/(XL1(M1)-XL1(M1-1))
		GRIDX(N)=XL(m1-1,1)+FRAC1*(XL(m1,1)-XL(m1-1,1))
		GRIDY(N)=YL(m1-1,1)+FRAC1*(YL(m1,1)-YL(m1-1,1))
        NX1=M1		
	    XXALONG=XXALONG+XALONG2
		NX2=2
	    DO M=NX2,NLPTS2
	      IF(XXALONG .LT. XL2(M)) THEN
		    M2=M
		    GO TO 250
     	  ENDIF
	    ENDDO
  250	CONTINUE
        FRAC1=(XXALONG-XL2(M2-1))/(XL2(M2)-XL2(M2-1))
		GRIDX(N+NY)=XL(m2-1,2)+FRAC1*(XL(m2,2)-XL(m2-1,2))
		GRIDY(N+NY)=YL(m2-1,2)+FRAC1*(YL(m2,2)-YL(m2-1,2))
        NX2=M2		
	  ENDDO
!
!
!    check if points ok  allow for move
!    
!
!    form elements and other coordinates
!
!                                                                       
!     Interpolate interior points                                       
!                                                                       
      DO M=1,NRT,NYP 
        NFS=NRL+M-1 
      CALL INTERP(GRIDX,GRIDY,M,M+NY,1,GRIDX(M),GRIDY(M),GRIDX(M+NY)    &
     &    ,GRIDY(M+NY),NY,0) 
!        DO N=M,NFS
!          XTEMP=GRIDX(N)
!          YTEMP=GRIDY(N)
!          GRIDXL(N) = GRIDX(N)*TXSCAL - XS 
!          GRIDYL(N) = GRIDY(N)*TXSCAL - YS 
!          CALL RRed 
!          call drawcr(xtemp,ytemp,siz)
!          CALL RBlue 
!        ENDDO
      END DO 
!
!    query for depths
!
!
!    query for happY
	   STOP
    end
      SUBROUTINE INTERP(GRIDX,GRIDY,NL,NH,INT,ALX,ALY,ATX,ATY,NINT,ISWT) 
!                                                                       
!     Routine to fill GRIDX and GRIDY by interpolation                  
!     NL = START OF GENERATED
!     NH = END OF GENERATED
!     INT = INTERVAL      
!     ALX, ALY =  START LOC
!     ATX, ATY =  END LOC      
!     NINT = NUMBER OF POINTS
!     ISWT = 0  BASELINE   = 1 APPLY CHANGES
!IPK MAY02
      REAL*8 GRIDX(NH),GRIDY(NH),ALX,ALY,ATX,ATY
!                                                                       
!     Compute intervals                                                 
!                                                                       
      XINT=(ATX-ALX)/FLOAT(NINT) 
      YINT=(ATY-ALY)/FLOAT(NINT) 
!                                                                       
!     Generate points                                                   
!                                                                       
      IF(ISWT .EQ. 0) THEN 
        KP=0 
        DO 200 K=NL,NH,INT 
          IF(KP .EQ. 0) THEN 
            GRIDX(K)=ALX 
            GRIDY(K)=ALY 
          ELSE 
            GRIDX(K)=GRIDX(KP)+XINT 
            GRIDY(K)=GRIDY(KP)+YINT 
          ENDIF 
          KP=K 
  200   CONTINUE 
      ELSE 
        XAD=ALX 
        YAD=ALY 
        KP=0 
        DO 220 K=NL,NH,INT 
          IF(KP .EQ. 0) THEN 
            GRIDX(K)=GRIDX(K)+XAD 
            GRIDY(K)=GRIDY(K)+YAD 
          ELSE 
            XAD=XAD+XINT 
            YAD=YAD+YINT 
            GRIDX(K)=GRIDX(K)+XAD 
            GRIDY(K)=GRIDY(K)+YAD 
          ENDIF 
          KP=K 
  220   CONTINUE 
      ENDIF 
      RETURN 
      END                                           
    