Commit df365636 authored by kbk's avatar kbk
Browse files

save lat/lon info for spherical grid

parent e2f5db12
!$Id: init_2d_ncdf.F90,v 1.2 2003-04-07 12:48:11 kbk Exp $
!$Id: init_2d_ncdf.F90,v 1.3 2003-04-23 11:53:24 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -18,7 +18,7 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
character(len=*), intent(in) :: fn,title,starttime
character(len=*), intent(in) :: fn,title,starttime
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -27,7 +27,10 @@
! !REVISION HISTORY:
!
! $Log: init_2d_ncdf.F90,v $
! Revision 1.2 2003-04-07 12:48:11 kbk
! Revision 1.3 2003-04-23 11:53:24 kbk
! save lat/lon info for spherical grid
!
! Revision 1.2 2003/04/07 12:48:11 kbk
! uses metfocing variable
!
! Revision 1.1.1.1 2002/05/02 14:01:48 gotm
......@@ -49,11 +52,11 @@
! Cleaner and smaller NetCDF implementation + better axis support
!
! !LOCAL VARIABLES:
integer :: i,j,err
character(32):: xname,yname,xunits,yunits,gridname
integer :: scalar(1),axisdim(1),f2_dims(2),f3_dims(3)
REALTYPE :: fv,mv,vr(2)
character(len=80) :: history,ts
integer :: i,j,err
character(32) :: xname,yname,xunits,yunits,gridname
integer :: scalar(1),axisdim(1),f2_dims(2),f3_dims(3)
REALTYPE :: fv,mv,vr(2)
character(len=80) :: history,ts
!EOP
!-------------------------------------------------------------------------
!BOC
......@@ -94,9 +97,9 @@
err = nf_def_dim(ncid,'time',NF_UNLIMITED,time_dim)
if (err .NE. NF_NOERR) go to 10
f3_dims(3) = time_dim
f3_dims(2) = y_dim
f3_dims(1) = x_dim
f3_dims(3)= time_dim
f3_dims(2)= y_dim
f3_dims(1)= x_dim
history = 'Generated by getm, ver. '//RELEASE
ts = 'seconds since '//starttime
......@@ -122,20 +125,35 @@
call set_attributes(ncid,time_id,units=trim(ts),long_name='time')
! coordinate variables
#ifndef CURVILINEAR
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,xc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,xc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,yc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,yc_id,units=yunits)
#else
if(grid_type .eq. 3) then
select case (grid_type)
case (1)
#if ! ( defined(SPHERICAL) || defined(CURVILINEAR) )
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,xc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,xc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,yc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,yc_id,units=yunits)
#endif
case (2)
#if defined(SPHERICAL)
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,lonc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,lonc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,latc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,latc_id,units=yunits)
#endif
case (3)
#if defined(CURVILINEAR)
! do something about curvi-linear coordinates - define xu,xv,....
end if
#endif
case default
end select
! now to the variables
! bathymetry
......@@ -145,9 +163,9 @@
mv = -10.
vr(1) = -5.
vr(2) = 4000.
call set_attributes(ncid,bathymetry_id, &
long_name='bathymetry',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,bathymetry_id,&
long_name='bathymetry',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
! elevation
err = nf_def_var(ncid,'elev',NF_REAL,3,f3_dims,elev_id)
......@@ -157,7 +175,7 @@
vr(1) = -15.
vr(2) = 15.
call set_attributes(ncid,elev_id,long_name='elevation',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_
mv = _ZERO_
......@@ -167,13 +185,13 @@
err = nf_def_var(ncid,'u',NF_REAL,3,f3_dims,u_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,u_id,long_name='zonal velocity',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! meridional velocity
err = nf_def_var(ncid,'v',NF_REAL,3,f3_dims,v_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,v_id,long_name='meridional velocity',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! meteorology
if (metforcing .and. save_meteo) then
......@@ -182,67 +200,67 @@
err = nf_def_var(ncid,'u10',NF_REAL,3,f3_dims,u10_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,u10_id,long_name='U10',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
err = nf_def_var(ncid,'v10',NF_REAL,3,f3_dims,v10_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,v10_id,long_name='U10',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = 90.e3; vr(2) = 110.e3
err = nf_def_var(ncid,'airp',NF_REAL,3,f3_dims,airp_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,airp_id, &
call set_attributes(ncid,airp_id, &
long_name='air pressure',units='Pascal', &
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = 0; vr(2) = 325.
err = nf_def_var(ncid,'t2',NF_REAL,3,f3_dims,t2_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,t2_id, &
long_name='temperature (2m)',units='Kelvin', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,t2_id, &
long_name='temperature (2m)',units='Kelvin', &
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = 0; vr(2) = 100.
err = nf_def_var(ncid,'hum',NF_REAL,3,f3_dims,hum_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,hum_id, &
long_name='humidity',units='kg/kg', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,hum_id, &
long_name='humidity',units='kg/kg', &
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = 0.; vr(2) = 1.
err = nf_def_var(ncid,'cc',NF_REAL,3,f3_dims,cc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,cc_id, &
long_name='cloud cover',units='fraction', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,cc_id, &
long_name='cloud cover',units='fraction', &
FillValue=fv,missing_value=mv,valid_range=vr)
end if
fv = _ZERO_; mv = _ZERO_; vr(1) = -1; vr(2) = 1.
err = nf_def_var(ncid,'tausx',NF_REAL,3,f3_dims,tausx_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,tausx_id, &
long_name='surface stress - x',units='N/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,tausx_id, &
long_name='surface stress - x',units='N/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
err = nf_def_var(ncid,'tausy',NF_REAL,3,f3_dims,tausy_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,tausy_id, &
long_name='surface stress - y',units='N/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,tausy_id, &
long_name='surface stress - y',units='N/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = 0; vr(2) = 1500.
err = nf_def_var(ncid,'swr',NF_REAL,3,f3_dims,swr_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,swr_id, &
long_name='short wave radiation',units='W/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,swr_id, &
long_name='short wave radiation',units='W/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
fv = _ZERO_; mv = _ZERO_; vr(1) = -1000; vr(2) = 1000.
err = nf_def_var(ncid,'shf',NF_REAL,3,f3_dims,shf_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,shf_id, &
long_name='surface heat fluxes',units='W/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,shf_id, &
long_name='surface heat fluxes',units='W/m2', &
FillValue=fv,missing_value=mv,valid_range=vr)
end if
fv = _ZERO_; mv = _ZERO_; vr(1) = -3.; vr(2) = 3.
......@@ -250,18 +268,18 @@
err = nf_def_var(ncid,'div',NF_REAL,3,f3_dims,surfdiv_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,surfdiv_id,long_name='divergence',units='s-1', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! residual currents - u and v
err = nf_def_var(ncid,'res_u',NF_REAL,2,f3_dims,res_u_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,res_u_id,long_name='res. u',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
err = nf_def_var(ncid,'res_v',NF_REAL,2,f3_dims,res_v_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,res_v_id,long_name='res. v',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! globals
err = nf_put_att_text(ncid,NF_GLOBAL,'title',LEN_TRIM(title),title)
......
!$Id: init_3d_ncdf.F90,v 1.2 2003-04-07 12:51:26 kbk Exp $
!$Id: init_3d_ncdf.F90,v 1.3 2003-04-23 11:53:24 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -21,7 +21,7 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
character(len=*), intent(in) :: fn,title,starttime
character(len=*), intent(in) :: fn,title,starttime
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -30,7 +30,10 @@
! !REVISION HISTORY:
!
! $Log: init_3d_ncdf.F90,v $
! Revision 1.2 2003-04-07 12:51:26 kbk
! Revision 1.3 2003-04-23 11:53:24 kbk
! save lat/lon info for spherical grid
!
! Revision 1.2 2003/04/07 12:51:26 kbk
! CURVILINEAR --> defined(SPHERICAL) || defined(CURVILINEAR)
!
! Revision 1.1.1.1 2002/05/02 14:01:46 gotm
......@@ -58,13 +61,13 @@
! Cleaner and smaller NetCDF implementation + better axis support
!
! !LOCAL VARIABLES:
integer :: i,j,k,err
character(32):: xname,yname,zname,xunits,yunits,zunits
character(32):: gridname,vertname
integer :: scalar(1),axisdim(1),f3_dims(3),f4_dims(4)
REALTYPE :: fv,mv,vr(2)
REALTYPE :: x
character(len=80) :: history,ts
integer :: i,j,k,err
character(32) :: xname,yname,zname,xunits,yunits,zunits
character(32) :: gridname,vertname
integer :: scalar(1),axisdim(1),f3_dims(3),f4_dims(4)
REALTYPE :: fv,mv,vr(2)
REALTYPE :: x
character(len=80) :: history,ts
!EOP
!-------------------------------------------------------------------------
!BOC
......@@ -80,19 +83,19 @@
yname = 'yax'
xunits = 'meters'
yunits = 'meters'
gridname='cartesian'
gridname='cartesian'
case (2)
xname = 'lon'
yname = 'lat'
xunits = 'degrees_east'
yunits = 'degrees_north'
gridname='spherical'
gridname='spherical'
case (3)
xname = 'xdim'
yname = 'ydim'
xunits = 'curvi-x'
yunits = 'curvi-y'
gridname='curvi-linear'
gridname='curvi-linear'
case default
end select
......@@ -100,15 +103,15 @@
case (1)
zname = 'zax'
zunits = 'sigma_level'
vertname='sigma coordinates'
vertname='sigma coordinates'
case (2)
zname = 'zax'
zunits = 'meters'
vertname='z-levels'
vertname='z-levels'
case (3)
zname = 'zax'
zunits = 'level'
vertname='general vertical coordinates'
vertname='general vertical coordinates'
case default
end select
......@@ -128,14 +131,14 @@
err = nf_def_dim(ncid,'time',NF_UNLIMITED,time_dim)
if (err .NE. NF_NOERR) go to 10
f3_dims(3) = time_dim
f3_dims(2) = y_dim
f3_dims(1) = x_dim
f3_dims(3)= time_dim
f3_dims(2)= y_dim
f3_dims(1)= x_dim
f4_dims(4) = time_dim
f4_dims(3) = z_dim
f4_dims(2) = y_dim
f4_dims(1) = x_dim
f4_dims(4)= time_dim
f4_dims(3)= z_dim
f4_dims(2)= y_dim
f4_dims(1)= x_dim
history = 'Generated by getm, ver. '//RELEASE
ts = 'seconds since '//starttime
......@@ -165,20 +168,36 @@
call set_attributes(ncid,time_id,units=trim(ts),long_name='time')
! coordinate variables
select case (grid_type)
case (1)
#if ! ( defined(SPHERICAL) || defined(CURVILINEAR) )
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,xc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,xc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,yc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,yc_id,units=yunits)
#else
if(grid_type .eq. 3) then
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,xc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,xc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,yc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,yc_id,units=yunits)
#endif
case (2)
#if defined(SPHERICAL)
axisdim(1) = x_dim
err = nf_def_var(ncid,xname,NF_REAL,1,axisdim,lonc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,lonc_id,units=xunits)
axisdim(1) = y_dim
err = nf_def_var(ncid,yname,NF_REAL,1,axisdim,latc_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,latc_id,units=yunits)
#endif
case (3)
#if defined(CURVILINEAR)
! do something about curvi-linear coordinates - define xu,xv,....
end if
#endif
case default
end select
axisdim(1) = z_dim
err = nf_def_var(ncid,zname,NF_REAL,1,axisdim,z_id)
if (err .NE. NF_NOERR) go to 10
......@@ -191,9 +210,9 @@
mv = -10.
vr(1) = -5.
vr(2) = 4000.
call set_attributes(ncid,bathymetry_id, &
long_name='bathymetry',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
call set_attributes(ncid,bathymetry_id, &
long_name='bathymetry',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
! now to the variables
! elevation
......@@ -204,7 +223,7 @@
vr(1) = -15.
vr(2) = 15.
call set_attributes(ncid,elev_id,long_name='elevation',units='meters', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! depth integrated zonal velocity
err = nf_def_var(ncid,'u',NF_REAL,3,f3_dims,u_id)
......@@ -214,7 +233,7 @@
vr(1) = -3.
vr(2) = 3.
call set_attributes(ncid,u_id,long_name='int. zonal vel.',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! depth integrated zonal velocity
err = nf_def_var(ncid,'v',NF_REAL,3,f3_dims,v_id)
......@@ -224,20 +243,20 @@
vr(1) = -3.
vr(2) = 3.
call set_attributes(ncid,v_id,long_name='int. meridional vel.',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
select case (vert_cord)
case (1)
case (2)
STDERR 'store z-levels'
stop 'init_3d_ncdf'
stop 'init_3d_ncdf'
case (3)
fv = 0.
mv = 0.
err = nf_def_var(ncid,'h',NF_REAL,4,f4_dims,h_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,h_id,long_name='layer thickness', &
units='meters',FillValue=fv,missing_value=mv)
call set_attributes(ncid,h_id,long_name='layer thickness', &
units='meters',FillValue=fv,missing_value=mv)
case default
end select
......@@ -251,19 +270,19 @@
err = nf_def_var(ncid,'uu',NF_REAL,4,f4_dims,uu_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,uu_id,long_name='zonal vel.',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! meridional velocity
err = nf_def_var(ncid,'vv',NF_REAL,4,f4_dims,vv_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,vv_id,long_name='meridional vel.',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! vertical velocity
err = nf_def_var(ncid,'w',NF_REAL,4,f4_dims,w_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,w_id,long_name='vertical vel.',units='m/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
if (save_strho) then
......@@ -276,7 +295,7 @@
err = nf_def_var(ncid,'salt',NF_REAL,4,f4_dims,salt_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,salt_id,long_name='salinity',units='PSU', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
if (save_t) then
......@@ -285,7 +304,7 @@
err = nf_def_var(ncid,'temp',NF_REAL,4,f4_dims,temp_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,temp_id,long_name='temperature',units='degC',&
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
if (save_rho) then
......@@ -294,7 +313,7 @@
err = nf_def_var(ncid,'sigma_t',NF_REAL,4,f4_dims,sigma_t_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,sigma_t_id,long_name='sigma_t',units='kg/m3',&
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
end if
......@@ -306,7 +325,7 @@
err = nf_def_var(ncid,'tke',NF_REAL,4,f4_dims,tke_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,tke_id,long_name='TKE',units='m2/s2', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
if (save_num) then
......@@ -315,7 +334,7 @@
err = nf_def_var(ncid,'num',NF_REAL,4,f4_dims,num_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,num_id,long_name='viscosity',units='m2/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
! if (save_nuh) then
......@@ -324,7 +343,7 @@
err = nf_def_var(ncid,'nuh',NF_REAL,4,f4_dims,nuh_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,nuh_id,long_name='diffusivity',units='m2/s', &
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
! end if
if (save_eps) then
......@@ -333,7 +352,7 @@
err = nf_def_var(ncid,'diss',NF_REAL,4,f4_dims,eps_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,eps_id,long_name='dissipation',units='m2/s3',&
FillValue=fv,missing_value=mv,valid_range=vr)
FillValue=fv,missing_value=mv,valid_range=vr)
end if
end if
......@@ -342,7 +361,7 @@
vr(2) = 30.
err = nf_def_var(ncid,'spm',NF_REAL,4,f4_dims,spm_id)
if (err .NE. NF_NOERR) go to 10
call set_attributes(ncid,spm_id, &
call set_attributes(ncid,spm_id, &
long_name='suspended particulate matter',units='?????', &
FillValue=fv,missing_value=mv,valid_range=vr)
end if
......
!$Id: ncdf_2d.F90,v 1.1 2002-05-02 14:01:49 gotm Exp $
!$Id: ncdf_2d.F90,v 1.2 2003-04-23 11:53:24 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -18,30 +18,35 @@
! private
!
! !PUBLIC DATA MEMBERS:
integer, public :: ncid=-1
integer, public :: ncid=-1
integer :: x_dim,y_dim,time_dim
integer :: x_dim,y_dim,time_dim
integer :: ioff_id,joff_id,grid_type_id
integer :: xc_id,xx_id,xu_id,xv_id
integer :: yc_id,yx_id,yu_id,yv_id
integer :: dx_id,dy_id
integer :: time_id
integer :: bathymetry_id
integer :: elev_id,u_id,v_id
integer :: res_u_id,res_v_id,surfdiv_id
integer :: u10_id,v10_id,airp_id,t2_id,hum_id,cc_id
integer :: tausx_id,tausy_id,swr_id,shf_id