# Plotting z = f(x,y)

The following code is extracted from program simdem22.f95 in the
Simdem package,
and it illustrates how easy it is to plot a surface defined
as z = f(x,y), where x, y, and z are double precision arrays.
The x and y values must be in the form of a rectangular grid.

!
! Define x and y
!
nx = 20
ny = 20
x(1) = - one
x(nx) = one
delta = (x(nx) - x(1))/(dble(nx) - one)
do i = 2, nx - 1
x(i) = x(i - 1) + delta
enddo
y(1) = - one
y(ny) = one
delta = (y(ny) - y(1))/(dble(ny) - one)
do j = 2, ny - 1
y(j) = y(j - 1) + delta
enddo
!
! Define z = f(x,y) and the ranges (xmin,xmax), (ymin,ymax)
!
do j = 1, ny
do i = 1, nx
z(i,j) = x(i)**2 - y(j)**2
enddo
enddo
xmax = x(nx)
xmin = x(1)
ymax = y(ny)
ymin = y(1)
!
! Display the surface, contours, projection, skyscraper blocks, etc.
!
call surd2s (isend, nmax, nx, ny, vector, xmax, xmin, ymax, ymin, z, unused)

The following plot is then displayed, and can be edited to add further
features, printed, or archived as a graphics file. The contours can be
suppressed, or plotted separately, and there are options to rotate, add
labels, arrows, text, graphical objects, etc. In addition, the points
defined by z = f(x,y) can be plotted as bars, or cylinders, when error
bars can also be added.

##