33# if defined PIO_LIB && defined DISTRIBUTE
45 integer,
intent(in) :: ng
49 character (len=*),
parameter :: myfile = &
57 SELECT CASE (
ini(ng)%IOtype)
61# if defined PIO_LIB && defined DISTRIBUTE
71 10
FORMAT (
' DEF_INI - Illegal output file type, io_type = ',i0, &
72 & /,11x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
85 integer,
intent(in) :: ng
89# ifdef ADJUST_BOUNDARY
90 logical :: got_iorj, got_boundary, got_obc_adjust
92# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
93 logical :: got_frc_adjust
95 logical :: got_var(
nv)
96 logical :: ldefine = .false.
98 integer,
parameter :: natt = 25
100 integer :: i, j, ifield, itrc, status
102# ifdef ADJUST_BOUNDARY
103 integer :: iorjdim, brecdim, brecsize
105# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
106 integer :: frecdim, frecsize
109# ifdef ADJUST_BOUNDARY
115# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
116 integer :: t4dfrc(4), u4dfrc(4), v4dfrc(4)
121 character (len=256) :: ncname
122 character (len=MaxLen) :: vinfo(natt)
124 character (len=*),
parameter :: myfile = &
125 & __FILE__//
", def_ini_nf90"
129# if !defined CORRELATION && \
130 (defined adjust_boundary || defined adjust_stflux || \
131 defined adjust_wstress)
152 & ncid =
ini(ng)%ncid)
158 & ncid =
ini(ng)%ncid)
168# ifdef ADJUST_BOUNDARY
202# ifdef ADJUST_WSTRESS
229# if defined ADJUST_STFLUX && defined SOLVE3D
233 got_var(
idtsur(itrc))=.true.
250# ifdef ADJUST_BOUNDARY
259 & any(
lobc(:,
istvar(itrc),ng))) ldefine=.true.
263# ifdef ADJUST_WSTRESS
264 IF (.not.got_var(
idusms)) ldefine=.true.
265 IF (.not.got_var(
idvsms)) ldefine=.true.
267# if defined ADJUST_STFLUX && defined SOLVE3D
270 IF (.not.got_var(
idtsur(itrc))) ldefine=.true.
289 define:
IF (ldefine)
THEN
291# ifdef ADJUST_BOUNDARY
294 got_obc_adjust=.false.
296# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
297 got_frc_adjust=.false.
300 SELECT CASE (trim(adjustl(
dim_name(i))))
319# ifdef ADJUST_BOUNDARY
327# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
331 got_frc_adjust=.true.
333# ifdef ADJUST_BOUNDARY
337 got_obc_adjust=.true.
343# ifdef ADJUST_BOUNDARY
344 IF (.not.got_boundary)
THEN
346 &
'boundary', 4, dimids(14))
349 IF (.not.got_iorj)
THEN
351 &
'IorJ',
iobounds(ng)%IorJ, iorjdim)
355# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
356 IF (.not.got_frc_adjust)
THEN
358 &
'frc_adjust',
nfrec(ng), frecdim)
362# ifdef ADJUST_BOUNDARY
363 IF (.not.got_obc_adjust)
THEN
365 &
'obc_adjust',
nbrec(ng), brecdim)
372# ifdef ADJUST_BOUNDARY
391# ifdef ADJUST_WSTRESS
400# ifdef ADJUST_WSTRESS
427# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
434 vinfo( 1)=
vname(1,ifield)
435 vinfo( 2)=
vname(2,ifield)
436 vinfo( 3)=
vname(3,ifield)
437 vinfo(14)=
vname(4,ifield)
439 vinfo(21)=
vname(6,ifield)
440 aval(5)=real(
iinfo(1,ifield,ng),r8)
442 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
443 & setfillval = .false.)
452 vinfo( 1)=
vname(1,ifield)
453 vinfo( 2)=
vname(2,ifield)
454 vinfo( 3)=
vname(3,ifield)
455 vinfo(14)=
vname(4,ifield)
457 vinfo(21)=
vname(6,ifield)
458 aval(5)=real(
iinfo(1,ifield,ng),r8)
460 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
461 & setfillval = .false.)
470 vinfo( 1)=
vname(1,ifield)
471 vinfo( 2)=
vname(2,ifield)
472 vinfo( 3)=
vname(3,ifield)
473 vinfo(14)=
vname(4,ifield)
475 vinfo(21)=
vname(6,ifield)
476 aval(5)=real(
iinfo(1,ifield,ng),r8)
478 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
479 & setfillval = .false.)
490 vinfo( 1)=
vname(1,ifield)
491 vinfo( 2)=
vname(2,ifield)
492 vinfo( 3)=
vname(3,ifield)
493 vinfo(14)=
vname(4,ifield)
495 vinfo(21)=
vname(6,ifield)
496 aval(5)=real(
iinfo(1,ifield,ng),r8)
498 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
499 & setfillval = .false.)
508 vinfo( 1)=
vname(1,ifield)
509 vinfo( 2)=
vname(2,ifield)
510 vinfo( 3)=
vname(3,ifield)
511 vinfo(14)=
vname(4,ifield)
513 vinfo(21)=
vname(6,ifield)
514 aval(5)=real(
iinfo(1,ifield,ng),r8)
516 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
517 & setfillval = .false.)
527 vinfo( 1)=
vname(1,ifield)
528 vinfo( 2)=
vname(2,ifield)
529 vinfo( 3)=
vname(3,ifield)
530 vinfo(14)=
vname(4,ifield)
532 vinfo(21)=
vname(6,ifield)
533 aval(5)=real(
iinfo(1,ifield,ng),r8)
535 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
536 & setfillval = .false.)
542# ifdef ADJUST_WSTRESS
546 IF (.not.got_var(
idusms))
THEN
550# if defined WRITE_WATER && defined MASKING
553 vinfo(22)=
'coordinates'
556 &
nf_fout, 4, u4dfrc, aval, vinfo, ncname)
562 IF (.not.got_var(
idvsms))
THEN
566# if defined WRITE_WATER && defined MASKING
569 vinfo(22)=
'coordinates'
572 &
nf_fout, 4, v4dfrc, aval, vinfo, ncname)
576# if defined ADJUST_STFLUX && defined SOLVE3D
585 IF (itrc.eq.
itemp)
THEN
586 vinfo(11)=
'upward flux, cooling'
587 vinfo(12)=
'downward flux, heating'
588 ELSE IF (itrc.eq.
isalt)
THEN
589 vinfo(11)=
'upward flux, freshening (net precipitation)'
590 vinfo(12)=
'downward flux, salting (net evaporation)'
592# if defined WRITE_WATER && defined MASKING
595 vinfo(22)=
'coordinates'
599 & 4, t4dfrc, aval, vinfo, ncname)
625 IF (
ini(ng)%ncid.eq.-1)
THEN
628 WRITE (
stdout,10) trim(ncname)
636 & ncid =
ini(ng)%ncid)
642 & ncid =
ini(ng)%ncid)
667# ifdef ADJUST_BOUNDARY
681# ifdef ADJUST_WSTRESS
696# ifdef ADJUST_BOUNDARY
706# if defined BVF_MIXING || defined LMD_MIXING || \
707 defined gls_mixing || defined my25_mixing
723 got_var(
idtvar(itrc))=.true.
725# ifdef ADJUST_BOUNDARY
734 got_var(
idtsur(itrc))=.true.
745 IF (.not.got_var(
idtime))
THEN
751 IF (.not.got_var(
idfsur))
THEN
757 IF (.not.got_var(
idubar))
THEN
763 IF (.not.got_var(
idvbar))
THEN
769# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
792# ifdef ADJUST_WSTRESS
793 IF (.not.got_var(
idusms))
THEN
799 IF (.not.got_var(
idvsms))
THEN
807 IF (.not.got_var(
iduvel))
THEN
813 IF (.not.got_var(
idvvel))
THEN
819# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
836 IF (.not.got_var(
idtvar(itrc)))
THEN
842# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
866 fcount=
ini(ng)%Fcount
870 10
FORMAT (/,
' DEF_INI_NF90 - unable to open initial NetCDF', &
872 20
FORMAT (/,
' DEF_INI_NF90 - illegal dimensions for variable : ',a, &
873 & /,16x,
'Nvardims = ',i0,
', missing dimension: ''',a,
'''', &
874 & /,16x,
'in file: ',a, &
875 & /,16x,
'Remove such variable from input file.')
876 30
FORMAT (/,
' DEF_INI_NF90 - unable to put in define mode initial', &
877 &
' NetCDF file: ',a)
878 40
FORMAT (/,
' DEF_INI_NF90 - unable to find variable: ',a,2x, &
884# if defined PIO_LIB && defined DISTRIBUTE
894 integer,
intent(in) :: ng
898# ifdef ADJUST_BOUNDARY
899 logical :: got_iorj, got_boundary, got_obc_adjust
901# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
902 logical :: got_frc_adjust
904 logical :: got_var(
nv)
905 logical :: ldefine = .false.
907 integer,
parameter :: natt = 25
909 integer :: i, j, ifield, itrc, status
911# ifdef ADJUST_BOUNDARY
912 integer :: iorjdim, brecdim, brecsize
914# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
915 integer :: frecdim, frecsize
918# ifdef ADJUST_BOUNDARY
924# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
925 integer :: t4dfrc(4), u4dfrc(4), v4dfrc(4)
930 character (len=256) :: ncname
931 character (len=MaxLen) :: vinfo(natt)
933 character (len=*),
parameter :: myfile = &
934 & __FILE__//
", def_ini_pio"
938# if !defined CORRELATION && \
939 (defined adjust_boundary || defined adjust_stflux || \
940 defined adjust_wstress)
961 & piofile =
ini(ng)%pioFile)
967 & piofile =
ini(ng)%pioFile)
977# ifdef ADJUST_BOUNDARY
978 IF (trim(var_name(i)).eq. &
984 ELSE IF (trim(var_name(i)).eq. &
990 ELSE IF (trim(var_name(i)).eq. &
997 ELSE IF (trim(var_name(i)).eq. &
1003 ELSE IF (trim(var_name(i)).eq. &
1013 IF (trim(var_name(i)).eq. &
1023# ifdef ADJUST_WSTRESS
1024 IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
1029 IF (var_ndim(i).ne.4)
THEN
1032 & var_ndim(i),
'frc_adjust', &
1038 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
1043 IF (var_ndim(i).ne.4)
THEN
1046 & var_ndim(i),
'frc_adjust', &
1054# if defined ADJUST_STFLUX && defined SOLVE3D
1057 IF (trim(var_name(i)).eq.trim(
vname(1,
idtsur(itrc))))
THEN
1058 got_var(
idtsur(itrc))=.true.
1062 IF (var_ndim(i).ne.4)
THEN
1065 & var_ndim(i),
'frc_adjust', &
1077# ifdef ADJUST_BOUNDARY
1086 & any(
lobc(:,
istvar(itrc),ng))) ldefine=.true.
1090# ifdef ADJUST_WSTRESS
1091 IF (.not.got_var(
idusms)) ldefine=.true.
1092 IF (.not.got_var(
idvsms)) ldefine=.true.
1094# if defined ADJUST_STFLUX && defined SOLVE3D
1097 IF (.not.got_var(
idtsur(itrc))) ldefine=.true.
1116 define:
IF (ldefine)
THEN
1118# ifdef ADJUST_BOUNDARY
1120 got_boundary=.false.
1121 got_obc_adjust=.false.
1123# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1124 got_frc_adjust=.false.
1127 SELECT CASE (trim(adjustl(dim_name(i))))
1129 dimids( 1)=dim_id(i)
1131 dimids( 2)=dim_id(i)
1133 dimids( 3)=dim_id(i)
1135 dimids( 5)=dim_id(i)
1137 dimids( 6)=dim_id(i)
1139 dimids( 7)=dim_id(i)
1142 dimids( 9)=dim_id(i)
1144 dimids(10)=dim_id(i)
1146# ifdef ADJUST_BOUNDARY
1148 dimids(14)=dim_id(i)
1154# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1157 frecsize=dim_size(i)
1158 got_frc_adjust=.true.
1160# ifdef ADJUST_BOUNDARY
1163 brecsize=dim_size(i)
1164 got_obc_adjust=.true.
1170# ifdef ADJUST_BOUNDARY
1171 IF (.not.got_boundary)
THEN
1173 &
'boundary', 4, dimids(14))
1176 IF (.not.got_iorj)
THEN
1178 &
'IorJ',
iobounds(ng)%IorJ, iorjdim)
1182# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1183 IF (.not.got_frc_adjust)
THEN
1185 &
'frc_adjust',
nfrec(ng), frecdim)
1189# ifdef ADJUST_BOUNDARY
1190 IF (.not.got_obc_adjust)
THEN
1192 &
'obc_adjust',
nbrec(ng), brecdim)
1199# ifdef ADJUST_BOUNDARY
1201 t2dobc(2)=dimids(14)
1203 t2dobc(4)=dimids(12)
1206 t3dobc(2)=dimids( 9)
1207 t3dobc(3)=dimids(14)
1209 t3dobc(5)=dimids(12)
1212# ifdef ADJUST_STFLUX
1213 t4dfrc(1)=dimids( 1)
1214 t4dfrc(2)=dimids( 5)
1216 t4dfrc(4)=dimids(12)
1218# ifdef ADJUST_WSTRESS
1222 u4dfrc(1)=dimids( 2)
1223 u4dfrc(2)=dimids( 6)
1225 u4dfrc(4)=dimids(12)
1227# ifdef ADJUST_WSTRESS
1231 v4dfrc(1)=dimids( 3)
1232 v4dfrc(2)=dimids( 7)
1234 v4dfrc(4)=dimids(12)
1240 DO j=1,len(vinfo(1))
1254# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
1261 vinfo( 1)=
vname(1,ifield)
1262 vinfo( 2)=
vname(2,ifield)
1263 vinfo( 3)=
vname(3,ifield)
1264 vinfo(14)=
vname(4,ifield)
1266 vinfo(21)=
vname(6,ifield)
1267 aval(5)=real(
iinfo(1,ifield,ng),r8)
1272 &
ini(ng)%pioVar(ifield)%vd, &
1273 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1274 & setfillval = .false.)
1283 vinfo( 1)=
vname(1,ifield)
1284 vinfo( 2)=
vname(2,ifield)
1285 vinfo( 3)=
vname(3,ifield)
1286 vinfo(14)=
vname(4,ifield)
1288 vinfo(21)=
vname(6,ifield)
1289 aval(5)=real(
iinfo(1,ifield,ng),r8)
1294 &
ini(ng)%pioVar(ifield)%vd, &
1295 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1296 & setfillval = .false.)
1305 vinfo( 1)=
vname(1,ifield)
1306 vinfo( 2)=
vname(2,ifield)
1307 vinfo( 3)=
vname(3,ifield)
1308 vinfo(14)=
vname(4,ifield)
1310 vinfo(21)=
vname(6,ifield)
1311 aval(5)=real(
iinfo(1,ifield,ng),r8)
1316 &
ini(ng)%pioVar(ifield)%vd, &
1317 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1318 & setfillval = .false.)
1329 vinfo( 1)=
vname(1,ifield)
1330 vinfo( 2)=
vname(2,ifield)
1331 vinfo( 3)=
vname(3,ifield)
1332 vinfo(14)=
vname(4,ifield)
1334 vinfo(21)=
vname(6,ifield)
1335 aval(5)=real(
iinfo(1,ifield,ng),r8)
1340 &
ini(ng)%pioVar(ifield)%vd, &
1341 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1342 & setfillval = .false.)
1351 vinfo( 1)=
vname(1,ifield)
1352 vinfo( 2)=
vname(2,ifield)
1353 vinfo( 3)=
vname(3,ifield)
1354 vinfo(14)=
vname(4,ifield)
1356 vinfo(21)=
vname(6,ifield)
1357 aval(5)=real(
iinfo(1,ifield,ng),r8)
1362 &
ini(ng)%pioVar(ifield)%vd, &
1363 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1364 & setfillval = .false.)
1374 vinfo( 1)=
vname(1,ifield)
1375 vinfo( 2)=
vname(2,ifield)
1376 vinfo( 3)=
vname(3,ifield)
1377 vinfo(14)=
vname(4,ifield)
1379 vinfo(21)=
vname(6,ifield)
1380 aval(5)=real(
iinfo(1,ifield,ng),r8)
1385 &
ini(ng)%pioVar(ifield)%vd, &
1386 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1387 & setfillval = .false.)
1393# ifdef ADJUST_WSTRESS
1397 IF (.not.got_var(
idusms))
THEN
1401# if defined WRITE_WATER && defined MASKING
1404 vinfo(22)=
'coordinates'
1411 &
pio_fout, 4, u4dfrc, aval, vinfo, ncname)
1417 IF (.not.got_var(
idvsms))
THEN
1421# if defined WRITE_WATER && defined MASKING
1424 vinfo(22)=
'coordinates'
1431 &
pio_fout, 4, v4dfrc, aval, vinfo, ncname)
1436# if defined ADJUST_STFLUX && defined SOLVE3D
1445 IF (itrc.eq.
itemp)
THEN
1446 vinfo(11)=
'upward flux, cooling'
1447 vinfo(12)=
'downward flux, heating'
1448 ELSE IF (itrc.eq.
isalt)
THEN
1449 vinfo(11)=
'upward flux, freshening (net precipitation)'
1450 vinfo(12)=
'downward flux, salting (net evaporation)'
1452# if defined WRITE_WATER && defined MASKING
1453 vinfo(20)=
'mask_rho'
1455 vinfo(22)=
'coordinates'
1462 &
pio_fout, 4, t4dfrc, aval, vinfo, ncname)
1488 IF (
ini(ng)%pioFile%fh.eq.-1)
THEN
1491 WRITE (
stdout,10) trim(ncname)
1499 & piofile =
ini(ng)%pioFile)
1505 & piofile =
ini(ng)%pioFile)
1518 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1523 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
1528 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
1533 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
1538# ifdef ADJUST_BOUNDARY
1539 ELSE IF (trim(var_name(i)).eq. &
1545 ELSE IF (trim(var_name(i)).eq. &
1551 ELSE IF (trim(var_name(i)).eq. &
1558# ifdef ADJUST_WSTRESS
1559 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
1564 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
1571 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
1576 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
1581# ifdef ADJUST_BOUNDARY
1582 ELSE IF (trim(var_name(i)).eq. &
1588 ELSE IF (trim(var_name(i)).eq. &
1595# if defined BVF_MIXING || defined LMD_MIXING || \
1596 defined gls_mixing || defined my25_mixing
1597 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvis)))
THEN
1602 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtdif)))
THEN
1607 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsdif)))
THEN
1617 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
1618 got_var(
idtvar(itrc))=.true.
1622# ifdef ADJUST_BOUNDARY
1623 ELSE IF (trim(var_name(i)).eq. &
1630# ifdef ADJUST_STFLUX
1631 ELSE IF (trim(var_name(i)).eq. &
1633 got_var(
idtsur(itrc))=.true.
1646 IF (.not.got_var(
idtime))
THEN
1652 IF (.not.got_var(
idfsur))
THEN
1658 IF (.not.got_var(
idubar))
THEN
1664 IF (.not.got_var(
idvbar))
THEN
1670# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
1693# ifdef ADJUST_WSTRESS
1694 IF (.not.got_var(
idusms))
THEN
1700 IF (.not.got_var(
idvsms))
THEN
1708 IF (.not.got_var(
iduvel))
THEN
1714 IF (.not.got_var(
idvvel))
THEN
1720# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
1737 IF (.not.got_var(
idtvar(itrc)))
THEN
1743# if defined ADJUST_BOUNDARY && !defined RBL4DVAR_FCT_SENSITIVITY
1753# ifdef ADJUST_STFLUX
1766 ini(ng)%Rindex=rec_size
1767 fcount=
ini(ng)%Fcount
1768 ini(ng)%Nrec(fcount)=rec_size
1771 10
FORMAT (/,
' DEF_INI_PIO - unable to open initial NetCDF', &
1773 20
FORMAT (/,
' DEF_INI_PIO - illegal dimensions for variable : ',a, &
1774 & /,16x,
'Nvardims = ',i0,
', missing dimension: ''',a,
'''', &
1775 & /,16x,
'in file: ',a, &
1776 & /,16x,
'Remove such variable from input file.')
1777 30
FORMAT (/,
' DEF_INI_PIO - unable to put in define mode initial', &
1778 &
' NetCDF file: ',a)
1779 40
FORMAT (/,
' DEF_INI_pio - unable to find variable: ',a,2x, &
subroutine, private def_ini_nf90(ng)
subroutine, public def_ini(ng)
subroutine, private def_ini_pio(ng)
type(t_io), dimension(:), allocatable ini
character(len=256) sourcefile
integer, parameter io_nf90
integer, dimension(:), allocatable idsbry
integer, parameter io_pio
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
integer, parameter ndimid
subroutine, public netcdf_redef(ng, model, ncname, ncid)
integer, dimension(mdims) dim_id
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
character(len=100), dimension(mdims) dim_name
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
integer, dimension(mvars) var_ndim
integer, dimension(mdims) dim_size
character(len=100), dimension(mvars) var_name
integer, dimension(mvars) var_id
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)
integer, parameter u2dobc
integer, parameter v3dobc
integer, parameter r2dobc
integer, parameter r3dvar
integer, parameter r3dobc
integer, parameter v2dobc
type(t_iobounds), dimension(:), allocatable iobounds
integer, parameter u3dobc
integer, parameter u3dvar
integer, parameter u2dvar
integer, parameter w3dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
subroutine, public pio_netcdf_redef(ng, model, ncname, piofile)
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)
logical, dimension(:,:,:), allocatable lobc
logical, dimension(:,:), allocatable lstflux
integer, dimension(:), allocatable nfrec
logical, dimension(:), allocatable ldefini
integer, dimension(:), allocatable nbrec
logical function, public founderror(flag, noerr, line, routine)