Dear Help Desk-
I found an issue in ROMS/Utility/def_diags.F.
The variable zeta is now written out to the diagnostics file for CF compliance. It works fine for a new run.
But when we do a restart, the variable zeta is not given a varid.  I fixed this in def_diags.F
Here is the section that needs to be modified:
!  Scan variable list from input NetCDF and activate switches for
!  diagnostics variables. Get variable IDs.
!
747    DO i=1,n_var
          IF (TRIM(var_name(i)).eq.TRIM(Vname(1,idtime))) THEN
            got_var(idtime)=.TRUE.
            DIA(ng)%Vid(idtime)=var_id(i)
          END IF
!!!!!!!!!     here is  the start for new code.
          IF (TRIM(var_name(i)).eq.TRIM(Vname(1,idFsur))) THEN
            got_var(idFsur)=.TRUE.
            DIA(ng)%Vid(idFsur)=var_id(i)
          END IF
!!!!!!!!!     here is  the end for new code.
....
Maybe further down you could add a block
       IF (.not.got_var(idFsur)) THEN 
         IF (Master) WRITE (stdout,60) TRIM(Vname(1,ifield)),        &
   &                                    TRIM(ncname)
	            exit_flag=3
	            RETURN
     END IF
thanks
-j