How I can draw a surface wave model like the figure below?

program Make_2D_Model
	implicit none
	integer :: radius, cx, cy
     integer:: i,j,nx,nz 
     integer :: idepth
 character*1,allocatable,dimension(:,:) :: icode

nx=1000  
nz=500
idepth=100
radius=20
 cx=500 !Center-X
 cy=40  !Center-y
	allocate(icode(1:nx,1:nz))	
	do i=1,nx
		do j=1,nz
			if(j<=idepth)then
				icode(i,j)='1'
			elseif(j>idepth)then
				icode(i,j)='3'		
            endif
		enddo
    enddo

    do i=1,nx
        do j=1,nz
            if(((i-cx)**2+(j-cy)**2)<=radius**2)then
                icode(i,j)='2'
            endif
        enddo
    enddo


open(2012,file='model.txt',status='unknown')
		do j=1,nz
			write(2012,1000)(icode(i,j),i=1,nx)
		enddo
	close(2012)
	1000 format(<nx>a1)

    end program Make_2D_Model
![Snipaste_2022-06-17_21-29-16|690x420](upload://ZfGwp8qMj5y21HhRlNPtCX59fs.png)

2 Likes