51# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
53# if defined PIO_LIB && defined DISTRIBUTE
60# if defined ICE_MODEL && defined SOLVE3D
62# if defined PIO_LIB && defined DISTRIBUTE
66# if defined SEDIMENT && defined SOLVE3D
68# if defined PIO_LIB && defined DISTRIBUTE
73# if defined WEC_VF && defined SOLVE3D
74 USE wec_output_mod,
ONLY : wec_def_nf90
75# if defined PIO_LIB && defined DISTRIBUTE
76 USE wec_output_mod,
ONLY : wec_def_pio
84 PRIVATE :: def_extract_nf90
85# if defined PIO_LIB && defined DISTRIBUTE
86 PRIVATE :: def_extract_pio
92 SUBROUTINE def_extract (ng, ldef)
97 logical,
intent(in) :: ldef
99 integer,
intent(in) :: ng
103 character (len=*),
parameter :: MyFile = &
110 SELECT CASE (
xtr(ng)%IOtype)
112 CALL def_extract_nf90 (ng,
inlm, ldef)
114# if defined PIO_LIB && defined DISTRIBUTE
116 CALL def_extract_pio (ng,
inlm, ldef)
124 10
FORMAT (
' DEF_EXTRACT - Illegal output file type, io_type = ',i0, &
125 & /,11x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
128 END SUBROUTINE def_extract
131 SUBROUTINE def_extract_nf90 (ng, model, ldef)
138 logical,
intent(in) :: ldef
139 integer,
intent(in) :: ng, model
143 logical :: got_var(NV)
145 integer,
parameter :: Natt = 25
147 integer :: i, j, ifield, itrc, nvd3, nvd4, varid
148 integer :: recdim, status
149# ifdef ADJUST_BOUNDARY
150 integer :: IorJdim, brecdim
152 integer :: DimIDs(nDimID)
153 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
154# ifdef ADJUST_BOUNDARY
162 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
163# ifdef ADJUST_BOUNDARY
168 integer :: sp2dgrd(3)
173 character (len=256) :: ncname
174 character (len=MaxLen) :: Vinfo(Natt)
176 character (len=*),
parameter :: MyFile = &
177 & __FILE__//
", def_extract_nf90"
190 WRITE (
stdout,10) ng, trim(ncname)
192 WRITE (
stdout,20) ng, trim(ncname)
200 define :
IF (ldef)
THEN
213 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xi_rho', &
214 & xtr_iobounds(ng)%xi_rho, dimids( 1))
217 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xi_u', &
218 & xtr_iobounds(ng)%xi_u, dimids( 2))
221 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xi_v', &
222 & xtr_iobounds(ng)%xi_v, dimids( 3))
225 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xi_psi', &
226 & xtr_iobounds(ng)%xi_psi, dimids( 4))
229 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'eta_rho', &
230 & xtr_iobounds(ng)%eta_rho, dimids( 5))
233 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'eta_u', &
234 & xtr_iobounds(ng)%eta_u, dimids( 6))
237 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'eta_v', &
238 & xtr_iobounds(ng)%eta_v, dimids( 7))
241 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'eta_psi', &
242 & xtr_iobounds(ng)%eta_psi, dimids( 8))
245# ifdef ADJUST_BOUNDARY
246 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'IorJ', &
247 & xtr_iobounds(ng)%IorJ, iorjdim)
251# if defined WRITE_WATER && defined MASKING
252 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xy_rho', &
253 & xtr_iobounds(ng)%xy_rho, dimids(17))
256 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xy_u', &
257 & xtr_iobounds(ng)%xy_u, dimids(18))
260 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xy_v', &
261 & xtr_iobounds(ng)%xy_v, dimids(19))
266# if defined WRITE_WATER && defined MASKING
267 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xyz_rho', &
268 & xtr_iobounds(ng)%xy_rho*
n(ng), dimids(20))
271 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xyz_u', &
272 & xtr_iobounds(ng)%xy_u*
n(ng), dimids(21))
275 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xyz_v', &
276 & xtr_iobounds(ng)%xy_v*
n(ng), dimids(22))
279 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xyz_w', &
280 & xtr_iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
284 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'N', &
288 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
's_rho', &
292 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
's_w', &
293 &
n(ng)+1, dimids(10))
296 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'tracer', &
297 &
nt(ng), dimids(11))
301 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'NST', &
305 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nbed', &
309# if defined WRITE_WATER && defined MASKING
310 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'xybed', &
317 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nbands', &
321 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nphy', &
325 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nbac', &
329 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Ndom', &
333 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nfec', &
339 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'boundary', &
344 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'Nstate', &
349# ifdef ADJUST_BOUNDARY
350 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname,
'obc_adjust', &
351 &
nbrec(ng), dimids(31))
355 status=
def_dim(ng, model,
xtr(ng)%ncid, ncname, &
357 & nf90_unlimited, dimids(12))
361# ifdef ADJUST_BOUNDARY
367# if defined WRITE_WATER && defined MASKING
377# if defined WRITE_WATER && defined MASKING
395# ifdef ADJUST_BOUNDARY
412 sp2dgrd(1)=dimids( 4)
413 sp2dgrd(2)=dimids( 8)
414 sp2dgrd(3)=dimids(12)
419# if defined WRITE_WATER && defined MASKING
440# if defined WRITE_WATER && defined MASKING
462# if defined WRITE_WATER && defined MASKING
475# if defined WRITE_WATER && defined MASKING
506 CALL def_info (ng, model,
xtr(ng)%ncid, ncname, dimids)
517 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
518 vinfo( 4)=trim(
rclock%calendar)
522 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
523 & setparaccess = .true.)
530 vinfo( 1)=
'Ritz_rvalue'
531 vinfo( 2)=
'real Ritz eigenvalues'
533 & 1, (/recdim/), aval, vinfo, ncname, &
534 & setparaccess = .true.)
537 vinfo( 1)=
'Ritz_norm'
538 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
540 & 1, (/recdim/), aval, vinfo, ncname, &
541 & setparaccess = .true.)
557 vinfo(22)=
'coordinates'
560 &
nf_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
561 & setfillval = .false.)
574 vinfo(22)=
'coordinates'
577 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
578 & setfillval = .false.)
591 vinfo(22)=
'coordinates'
594 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
595 & setfillval = .false.)
608 vinfo(22)=
'coordinates'
611 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
612 & setfillval = .false.)
625# if defined WRITE_WATER && defined MASKING
629 vinfo(22)=
'coordinates'
632 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
633 & setfillval = .false.)
645# if defined WRITE_WATER && defined MASKING
649 vinfo(22)=
'coordinates'
652 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
653 & setfillval = .false.)
665# if defined WRITE_WATER && defined MASKING
669 vinfo(22)=
'coordinates'
672 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
673 & setfillval = .false.)
685# if defined WRITE_WATER && defined MASKING
689 vinfo(22)=
'coordinates'
692 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
693 & setfillval = .false.)
706# if defined WRITE_WATER && defined MASKING
710 vinfo(22)=
'coordinates'
714 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
715 & setfillval = .false.)
717 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
721# if defined FORWARD_WRITE && defined FORWARD_RHS
728# if defined WRITE_WATER && defined MASKING
732 vinfo(22)=
'coordinates'
735 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
740# ifdef ADJUST_BOUNDARY
746 vinfo( 1)=
vname(1,ifield)
747 vinfo( 2)=
vname(2,ifield)
748 vinfo( 3)=
vname(3,ifield)
749 vinfo(14)=
vname(4,ifield)
751 vinfo(21)=
vname(6,ifield)
752 aval(5)=real(
iinfo(1,ifield,ng),r8)
753 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield), &
754 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
755 & setfillval = .false.)
768# if defined WRITE_WATER && defined MASKING
772 vinfo(22)=
'coordinates'
775 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
786# if defined WRITE_WATER && defined MASKING
790 vinfo(22)=
'coordinates'
793 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
804# if defined WRITE_WATER && defined MASKING
808 vinfo(22)=
'coordinates'
811 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
820# if defined WRITE_WATER && defined MASKING
824 vinfo(22)=
'coordinates'
827 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
835# if defined WRITE_WATER && defined MASKING
839 vinfo(22)=
'coordinates'
842 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
848# ifdef ADJUST_BOUNDARY
854 vinfo( 1)=
vname(1,ifield)
855 vinfo( 2)=
vname(2,ifield)
856 vinfo( 3)=
vname(3,ifield)
857 vinfo(14)=
vname(4,ifield)
859 vinfo(21)=
vname(6,ifield)
860 aval(5)=real(
iinfo(1,ifield,ng),r8)
861 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield), &
862 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
863 & setfillval = .false.)
876# if defined WRITE_WATER && defined MASKING
880 vinfo(22)=
'coordinates'
883 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
894# if defined WRITE_WATER && defined MASKING
898 vinfo(22)=
'coordinates'
901 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
912# if defined WRITE_WATER && defined MASKING
916 vinfo(22)=
'coordinates'
919 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
928# if defined WRITE_WATER && defined MASKING
932 vinfo(22)=
'coordinates'
935 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
943# if defined WRITE_WATER && defined MASKING
947 vinfo(22)=
'coordinates'
950 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
956# ifdef ADJUST_BOUNDARY
962 vinfo( 1)=
vname(1,ifield)
963 vinfo( 2)=
vname(2,ifield)
964 vinfo( 3)=
vname(3,ifield)
965 vinfo(14)=
vname(4,ifield)
967 vinfo(21)=
vname(6,ifield)
968 aval(5)=real(
iinfo(1,ifield,ng),r8)
969 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield), &
970 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
971 & setfillval = .false.)
984# if defined WRITE_WATER && defined MASKING
988 vinfo(22)=
'coordinates'
991 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1003# if defined WRITE_WATER && defined MASKING
1004 vinfo(20)=
'mask_rho'
1007 vinfo(22)=
'coordinates'
1010 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1024# if defined WRITE_WATER && defined MASKING
1028 vinfo(22)=
'coordinates'
1031 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1034# if defined FORWARD_WRITE && defined FORWARD_RHS
1041# if defined WRITE_WATER && defined MASKING
1045 vinfo(22)=
'coordinates'
1048 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1053# ifdef ADJUST_BOUNDARY
1059 vinfo( 1)=
vname(1,ifield)
1060 vinfo( 2)=
vname(2,ifield)
1061 vinfo( 3)=
vname(3,ifield)
1062 vinfo(14)=
vname(4,ifield)
1064 vinfo(21)=
vname(6,ifield)
1065 aval(5)=real(
iinfo(1,ifield,ng),r8)
1066 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield), &
1067 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1068 & setfillval = .false.)
1081# if defined WRITE_WATER && defined MASKING
1085 vinfo(22)=
'coordinates'
1088 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1091# if defined FORWARD_WRITE && defined FORWARD_RHS
1098# if defined WRITE_WATER && defined MASKING
1102 vinfo(22)=
'coordinates'
1105 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1110# ifdef ADJUST_BOUNDARY
1116 vinfo( 1)=
vname(1,ifield)
1117 vinfo( 2)=
vname(2,ifield)
1118 vinfo( 3)=
vname(3,ifield)
1119 vinfo(14)=
vname(4,ifield)
1121 vinfo(21)=
vname(6,ifield)
1122 aval(5)=real(
iinfo(1,ifield,ng),r8)
1123 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield), &
1124 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1125 & setfillval = .false.)
1138# if defined WRITE_WATER && defined MASKING
1139 vinfo(20)=
'mask_rho'
1142 vinfo(22)=
'coordinates'
1145 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1157# if defined WRITE_WATER && defined MASKING
1158 vinfo(20)=
'mask_rho'
1161 vinfo(22)=
'coordinates'
1164 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1176# if defined WRITE_WATER && defined MASKING
1177 vinfo(20)=
'mask_rho'
1180 vinfo(22)=
'coordinates'
1183 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1192 vinfo( 3)=
'meter second-1'
1195# if defined WRITE_WATER && defined MASKING
1196 vinfo(20)=
'mask_rho'
1199 vinfo(22)=
'coordinates'
1202 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1206# ifdef OMEGA_IMPLICIT
1213 vinfo( 3)=
'meter second-1'
1216# if defined WRITE_WATER && defined MASKING
1217 vinfo(20)=
'mask_rho'
1220 vinfo(22)=
'coordinates'
1223 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1239 IF (itrc.eq.
idsed(i))
THEN
1240 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1244# if defined WRITE_WATER && defined MASKING
1245 vinfo(20)=
'mask_rho'
1248 vinfo(22)=
'coordinates'
1250 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Tid(itrc), &
1251 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1256# ifdef ADJUST_BOUNDARY
1263 vinfo( 1)=
vname(1,ifield)
1264 vinfo( 2)=
vname(2,ifield)
1265 vinfo( 3)=
vname(3,ifield)
1266 vinfo(14)=
vname(4,ifield)
1270 IF (itrc.eq.
idsed(i))
THEN
1271 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
1275 vinfo(21)=
vname(6,ifield)
1276 aval(5)=real(
iinfo(1,ifield,ng),r8)
1277 status=
def_var(ng, model,
xtr(ng)%ncid,
xtr(ng)%Vid(ifield),&
1278 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1279 & setfillval = .false.)
1293# if defined WRITE_WATER && defined MASKING
1294 vinfo(20)=
'mask_rho'
1297 vinfo(22)=
'coordinates'
1300 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1314# if defined WRITE_WATER && defined MASKING
1315 vinfo(20)=
'mask_rho'
1318 vinfo(22)=
'coordinates'
1321 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1335# if defined WRITE_WATER && defined MASKING
1336 vinfo(20)=
'mask_rho'
1339 vinfo(22)=
'coordinates'
1342 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1346# if defined FORWARD_WRITE && defined LMD_NONLOCAL
1357# if defined WRITE_WATER && defined MASKING
1358 vinfo(20)=
'mask_rho'
1361 vinfo(22)=
'coordinates'
1365 & nvd4, w3dgrd, aval, vinfo, ncname)
1379# if defined WRITE_WATER && defined MASKING
1380 vinfo(20)=
'mask_rho'
1383 vinfo(22)=
'coordinates'
1386 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1387 & setfillval = .false.)
1399# if defined WRITE_WATER && defined MASKING
1400 vinfo(20)=
'mask_rho'
1403 vinfo(22)=
'coordinates'
1406 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1407 & setfillval = .false.)
1421# if defined WRITE_WATER && defined MASKING
1422 vinfo(20)=
'mask_rho'
1425 vinfo(22)=
'coordinates'
1428 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1429 & setfillval = .false.)
1433# if defined GLS_MIXING || defined MY25_MIXING
1443# if defined WRITE_WATER && defined MASKING
1444 vinfo(20)=
'mask_rho'
1447 vinfo(22)=
'coordinates'
1450 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1451 & setfillval = .false.)
1454# ifdef FORWARD_WRITE
1461# if defined WRITE_WATER && defined MASKING
1462 vinfo(20)=
'mask_rho'
1465 vinfo(22)=
'coordinates'
1468 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1481# if defined WRITE_WATER && defined MASKING
1482 vinfo(20)=
'mask_rho'
1485 vinfo(22)=
'coordinates'
1488 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1489 & setfillval = .false.)
1492# ifdef FORWARD_WRITE
1499# if defined WRITE_WATER && defined MASKING
1500 vinfo(20)=
'mask_rho'
1503 vinfo(22)=
'coordinates'
1506 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1509# if defined FORWARD_WRITE && defined GLS_MIXING
1516# if defined WRITE_WATER && defined MASKING
1517 vinfo(20)=
'mask_rho'
1520 vinfo(22)=
'coordinates'
1523 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1528# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1538# if defined WRITE_WATER && defined MASKING
1539 vinfo(20)=
'mask_rho'
1542 vinfo(22)=
'coordinates'
1545 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1549# if defined BULK_FLUXES || defined ECOSIM
1559# if defined WRITE_WATER && defined MASKING
1560 vinfo(20)=
'mask_rho'
1563 vinfo(22)=
'coordinates'
1566 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1576# if defined WRITE_WATER && defined MASKING
1577 vinfo(20)=
'mask_rho'
1580 vinfo(22)=
'coordinates'
1583 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1595# if defined WRITE_WATER && defined MASKING
1596 vinfo(20)=
'mask_rho'
1599 vinfo(22)=
'coordinates'
1602 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1612# if defined WRITE_WATER && defined MASKING
1613 vinfo(20)=
'mask_rho'
1616 vinfo(22)=
'coordinates'
1619 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1631 IF (itrc.eq.
itemp)
THEN
1632 vinfo(11)=
'upward flux, cooling'
1633 vinfo(12)=
'downward flux, heating'
1634 ELSE IF (itrc.eq.
isalt)
THEN
1635 vinfo(11)=
'upward flux, freshening (net precipitation)'
1636 vinfo(12)=
'downward flux, salting (net evaporation)'
1640# if defined WRITE_WATER && defined MASKING
1641 vinfo(20)=
'mask_rho'
1644 vinfo(22)=
'coordinates'
1648 & nvd3, t2dgrd, aval, vinfo, ncname)
1653# if defined BULK_FLUXES || defined FRC_COUPLING
1661 vinfo(11)=
'upward flux, cooling'
1662 vinfo(12)=
'downward flux, heating'
1665# if defined WRITE_WATER && defined MASKING
1666 vinfo(20)=
'mask_rho'
1669 vinfo(22)=
'coordinates'
1672 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1682 vinfo(11)=
'upward flux, cooling'
1683 vinfo(12)=
'downward flux, heating'
1686# if defined WRITE_WATER && defined MASKING
1687 vinfo(20)=
'mask_rho'
1690 vinfo(22)=
'coordinates'
1693 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1703 vinfo(11)=
'upward flux, cooling'
1704 vinfo(12)=
'downward flux, heating'
1707# if defined WRITE_WATER && defined MASKING
1708 vinfo(20)=
'mask_rho'
1711 vinfo(22)=
'coordinates'
1714 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1719# if defined BULK_FLUXES
1729# if defined WRITE_WATER && defined MASKING
1730 vinfo(20)=
'mask_rho'
1733 vinfo(22)=
'coordinates'
1736 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1748 vinfo(11)=
'downward flux, freshening (condensation)'
1749 vinfo(12)=
'upward flux, salting (evaporation)'
1752# if defined WRITE_WATER && defined MASKING
1753 vinfo(20)=
'mask_rho'
1756 vinfo(22)=
'coordinates'
1759 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1769 vinfo(11)=
'upward flux, salting (NOT POSSIBLE)'
1770 vinfo(12)=
'downward flux, freshening (precipitation)'
1773# if defined WRITE_WATER && defined MASKING
1774 vinfo(20)=
'mask_rho'
1777 vinfo(22)=
'coordinates'
1780 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1792 vinfo(11)=
'upward flux, freshening (net precipitation)'
1793 vinfo(12)=
'downward flux, salting (net evaporation)'
1796# if defined WRITE_WATER && defined MASKING
1797 vinfo(20)=
'mask_rho'
1800 vinfo(22)=
'coordinates'
1803 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1815 vinfo(11)=
'upward flux, cooling'
1816 vinfo(12)=
'downward flux, heating'
1819# if defined WRITE_WATER && defined MASKING
1820 vinfo(20)=
'mask_rho'
1823 vinfo(22)=
'coordinates'
1826 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1840# if defined WRITE_WATER && defined MASKING
1844 vinfo(22)=
'coordinates'
1847 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1859# if defined WRITE_WATER && defined MASKING
1863 vinfo(22)=
'coordinates'
1866 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1878# if defined WRITE_WATER && defined MASKING
1882 vinfo(22)=
'coordinates'
1885 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1897# if defined WRITE_WATER && defined MASKING
1901 vinfo(22)=
'coordinates'
1904 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1908# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
1915 & t2dgrd, u2dgrd, v2dgrd)
1919# if defined ICE_MODEL && defined SOLVE3D
1925 CALL ice_def_nf90 (ng, model, ldef,
hout,
xtr, &
1926 & t2dgrd, u2dgrd, v2dgrd)
1930# if defined SEDIMENT && defined SOLVE3D
1937 & t2dgrd, u2dgrd, v2dgrd, &
1942# if defined WEC_VF && defined SOLVE3D
1948 CALL wec_def_nf90 (ng, model, ldef,
hout,
xtr, &
1949 & t2dgrd, u2dgrd, v2dgrd, &
1950 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
1975 query :
IF (.not.ldef)
THEN
1982 WRITE (
stdout,60) trim(ncname)
1989 & ncid =
xtr(ng)%ncid)
1995 & ncid =
xtr(ng)%ncid)
2048# ifdef ADJUST_BOUNDARY
2068# ifdef FORWARD_WRITE
2118# ifdef ADJUST_BOUNDARY
2140# ifdef OMEGA_IMPLICIT
2167# if defined GLS_MIXING || defined MY25_MIXING
2175# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2180# if defined BULK_FLUXES || defined ECOSIM
2194# if defined BULK_FLUXES || defined FRC_COUPLING
2243 got_var(
idtvar(itrc))=.true.
2245# ifdef ADJUST_BOUNDARY
2255 got_var(
idtsur(itrc))=.true.
2257# if defined FORWARD_WRITE && defined LMD_NONLOCAL
2260 got_var(
idghat(itrc))=.true.
2270 IF (.not.got_var(
idtime))
THEN
2277 IF (.not.got_var(
idpwet))
THEN
2283 IF (.not.got_var(
idrwet))
THEN
2289 IF (.not.got_var(
iduwet))
THEN
2295 IF (.not.got_var(
idvwet))
THEN
2346# ifdef ADJUST_BOUNDARY
2378# ifdef FORWARD_WRITE
2407 IF (.not.got_var(idrcvt).and.
hout(idrcvt,ng))
THEN
2467# ifdef ADJUST_BOUNDARY
2505# ifdef OMEGA_IMPLICIT
2555# if defined GLS_MIXING || defined MY25_MIXING
2569# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2577# if defined BULK_FLUXES || defined ECOSIM
2603# if defined BULK_FLUXES || defined FRC_COUPLING
2692# ifdef ADJUST_BOUNDARY
2709# if defined FORWARD_WRITE && defined LMD_NONLOCAL
2720# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
2730# if defined ICE_MODEL && defined SOLVE3D
2735 CALL ice_def_nf90 (ng, model, ldef,
hout,
xtr)
2739# if defined SEDIMENT && defined SOLVE3D
2748# if defined WEC_VF && defined SOLVE3D
2753 CALL wec_def_nf90 (ng, model, ldef,
hout,
xtr)
2769 10
FORMAT (2x,
'DEF_EXTRACT_NF90 - creating decimate file,',t56, &
2770 &
'Grid ',i2.2,
': ',a)
2771 20
FORMAT (2x,
'DEF_EXTRACT_NF90 - inquiring decimate file,',t56, &
2772 &
'Grid ',i2.2,
': ',a)
2773 30
FORMAT (/,
' DEF_EXTRACT_NF90 - unable to create decimate NetCDF', &
2775 40
FORMAT (
'time dependent',1x,a)
2776 50
FORMAT (1pe11.4,1x,
'millimeter')
2777 60
FORMAT (/,
' DEF_EXTRACT_NF90 - unable to open decimate NetCDF', &
2779 70
FORMAT (/,
' DEF_EXTRACT_NF90 - unable to find variable: ',a,2x, &
2780 &
' in decimate NetCDF file: ',a)
2783 END SUBROUTINE def_extract_nf90
2785# if defined PIO_LIB && defined DISTRIBUTE
2788 SUBROUTINE def_extract_pio (ng, model, ldef)
2795 logical,
intent(in) :: ldef
2796 integer,
intent(in) :: ng, model
2800 logical :: got_var(NV)
2802 integer,
parameter :: Natt = 25
2804 integer :: i, j, ifield, itrc, nvd3, nvd4
2805 integer :: recdim, status
2806# ifdef ADJUST_BOUNDARY
2807 integer :: IorJdim, brecdim
2809 integer :: DimIDs(nDimID)
2810 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
2811# ifdef ADJUST_BOUNDARY
2812 integer :: t2dobc(4)
2817 integer :: b3dgrd(4)
2819 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
2820# ifdef ADJUST_BOUNDARY
2821 integer :: t3dobc(5)
2825 integer :: sp2dgrd(3)
2830 character (len=256) :: ncname
2831 character (len=MaxLen) :: Vinfo(Natt)
2833 character (len=*),
parameter :: MyFile = &
2834 & __FILE__//
", def_extract_pio"
2836 TYPE (Var_desc_t) :: varDesc
2849 WRITE (
stdout,10) ng, trim(ncname)
2851 WRITE (
stdout,20) ng, trim(ncname)
2859 define :
IF (ldef)
THEN
2872 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xi_rho', &
2873 & xtr_iobounds(ng)%xi_rho, dimids( 1))
2876 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xi_u', &
2877 & xtr_iobounds(ng)%xi_u, dimids( 2))
2880 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xi_v', &
2881 & xtr_iobounds(ng)%xi_v, dimids( 3))
2884 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xi_psi', &
2885 & xtr_iobounds(ng)%xi_psi, dimids( 4))
2888 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'eta_rho', &
2889 & xtr_iobounds(ng)%eta_rho, dimids( 5))
2892 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'eta_u', &
2893 & xtr_iobounds(ng)%eta_u, dimids( 6))
2896 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'eta_v', &
2897 & xtr_iobounds(ng)%eta_v, dimids( 7))
2900 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'eta_psi', &
2901 & xtr_iobounds(ng)%eta_psi, dimids( 8))
2904# ifdef ADJUST_BOUNDARY
2905 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'IorJ', &
2906 & xtr_iobounds(ng)%IorJ, iorjdim)
2910# if defined WRITE_WATER && defined MASKING
2911 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xy_rho', &
2912 & xtr_iobounds(ng)%xy_rho, dimids(17))
2915 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xy_u', &
2916 & xtr_iobounds(ng)%xy_u, dimids(18))
2919 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xy_v', &
2920 & xtr_iobounds(ng)%xy_v, dimids(19))
2925# if defined WRITE_WATER && defined MASKING
2926 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xyz_rho', &
2927 & xtr_iobounds(ng)%xy_rho*
n(ng), dimids(20))
2930 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xyz_u', &
2931 & xtr_iobounds(ng)%xy_u*
n(ng), dimids(21))
2934 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xyz_v', &
2935 & xtr_iobounds(ng)%xy_v*
n(ng), dimids(22))
2938 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xyz_w', &
2939 & xtr_iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
2943 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'N', &
2944 &
n(ng), dimids( 9))
2947 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
's_rho', &
2948 &
n(ng), dimids( 9))
2951 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
's_w', &
2952 &
n(ng)+1, dimids(10))
2955 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'tracer', &
2956 &
nt(ng), dimids(11))
2960 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'NST', &
2964 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nbed', &
2968# if defined WRITE_WATER && defined MASKING
2969 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'xybed', &
2970 & xtr_iobounds(ng)%xy_rho*
nbed, dimids(24))
2976 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nbands', &
2980 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nphy', &
2984 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nbac', &
2988 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Ndom', &
2992 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nfec', &
2998 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'boundary', &
3003 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'Nstate', &
3008# ifdef ADJUST_BOUNDARY
3009 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname,
'obc_adjust',&
3010 &
nbrec(ng), dimids(31))
3014 status=
def_dim(ng, model,
xtr(ng)%pioFile, ncname, &
3016 & pio_unlimited, dimids(12))
3020# ifdef ADJUST_BOUNDARY
3026# if defined WRITE_WATER && defined MASKING
3036# if defined WRITE_WATER && defined MASKING
3037 t2dgrd(1)=dimids(17)
3038 t2dgrd(2)=dimids(12)
3040 t3dgrd(1)=dimids(20)
3041 t3dgrd(2)=dimids(12)
3044 t2dgrd(1)=dimids( 1)
3045 t2dgrd(2)=dimids( 5)
3046 t2dgrd(3)=dimids(12)
3048 t3dgrd(1)=dimids( 1)
3049 t3dgrd(2)=dimids( 5)
3050 t3dgrd(3)=dimids( 9)
3051 t3dgrd(4)=dimids(12)
3054# ifdef ADJUST_BOUNDARY
3056 t2dobc(2)=dimids(14)
3058 t2dobc(4)=dimids(12)
3061 t3dobc(2)=dimids( 9)
3062 t3dobc(3)=dimids(14)
3064 t3dobc(5)=dimids(12)
3071 sp2dgrd(1)=dimids( 4)
3072 sp2dgrd(2)=dimids( 8)
3073 sp2dgrd(3)=dimids(12)
3078# if defined WRITE_WATER && defined MASKING
3079 u2dgrd(1)=dimids(18)
3080 u2dgrd(2)=dimids(12)
3082 u3dgrd(1)=dimids(21)
3083 u3dgrd(2)=dimids(12)
3086 u2dgrd(1)=dimids( 2)
3087 u2dgrd(2)=dimids( 6)
3088 u2dgrd(3)=dimids(12)
3090 u3dgrd(1)=dimids( 2)
3091 u3dgrd(2)=dimids( 6)
3092 u3dgrd(3)=dimids( 9)
3093 u3dgrd(4)=dimids(12)
3099# if defined WRITE_WATER && defined MASKING
3100 v2dgrd(1)=dimids(19)
3101 v2dgrd(2)=dimids(12)
3103 v3dgrd(1)=dimids(22)
3104 v3dgrd(2)=dimids(12)
3107 v2dgrd(1)=dimids( 3)
3108 v2dgrd(2)=dimids( 7)
3109 v2dgrd(3)=dimids(12)
3111 v3dgrd(1)=dimids( 3)
3112 v3dgrd(2)=dimids( 7)
3113 v3dgrd(3)=dimids( 9)
3114 v3dgrd(4)=dimids(12)
3121# if defined WRITE_WATER && defined MASKING
3122 w3dgrd(1)=dimids(23)
3123 w3dgrd(2)=dimids(12)
3125 w3dgrd(1)=dimids( 1)
3126 w3dgrd(2)=dimids( 5)
3127 w3dgrd(3)=dimids(10)
3128 w3dgrd(4)=dimids(12)
3134# if defined WRITE_WATER && defined MASKING
3135 b3dgrd(1)=dimids(24)
3136 b3dgrd(2)=dimids(12)
3138 b3dgrd(1)=dimids( 1)
3139 b3dgrd(2)=dimids( 5)
3140 b3dgrd(3)=dimids(16)
3141 b3dgrd(4)=dimids(12)
3153 DO j=1,len(vinfo(1))
3165 CALL def_info (ng, model,
xtr(ng)%pioFile, ncname, dimids)
3176 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
3177 vinfo( 4)=trim(
rclock%calendar)
3185 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
3186 & setparaccess = .true.)
3193 vinfo( 1)=
'Ritz_rvalue'
3194 vinfo( 2)=
'real Ritz eigenvalues'
3196 & 1, (/recdim/), aval, vinfo, ncname, &
3197 & setparaccess = .true.)
3200 vinfo( 1)=
'Ritz_norm'
3201 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
3203 & 1, (/recdim/), aval, vinfo, ncname, &
3204 & setparaccess = .true.)
3219 vinfo(22)=
'coordinates'
3226 &
pio_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
3227 & setfillval = .false.)
3240 vinfo(22)=
'coordinates'
3247 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3248 & setfillval = .false.)
3261 vinfo(22)=
'coordinates'
3268 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
3269 & setfillval = .false.)
3282 vinfo(22)=
'coordinates'
3289 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
3290 & setfillval = .false.)
3303# if defined WRITE_WATER && defined MASKING
3304 vinfo(20)=
'mask_rho'
3307 vinfo(22)=
'coordinates'
3314 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
3315 & setfillval = .false.)
3327# if defined WRITE_WATER && defined MASKING
3331 vinfo(22)=
'coordinates'
3338 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
3339 & setfillval = .false.)
3351# if defined WRITE_WATER && defined MASKING
3355 vinfo(22)=
'coordinates'
3362 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
3363 & setfillval = .false.)
3375# if defined WRITE_WATER && defined MASKING
3376 vinfo(20)=
'mask_rho'
3379 vinfo(22)=
'coordinates'
3386 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3387 & setfillval = .false.)
3400# if defined WRITE_WATER && defined MASKING
3401 vinfo(20)=
'mask_rho'
3404 vinfo(22)=
'coordinates'
3412 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3413 & setfillval = .false.)
3415 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3419# if defined FORWARD_WRITE && defined FORWARD_RHS
3426# if defined WRITE_WATER && defined MASKING
3427 vinfo(20)=
'mask_rho'
3430 vinfo(22)=
'coordinates'
3437 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3442# ifdef ADJUST_BOUNDARY
3448 vinfo( 1)=
vname(1,ifield)
3449 vinfo( 2)=
vname(2,ifield)
3450 vinfo( 3)=
vname(3,ifield)
3451 vinfo(14)=
vname(4,ifield)
3453 vinfo(21)=
vname(6,ifield)
3454 aval(5)=real(
iinfo(1,ifield,ng),r8)
3459 &
xtr(ng)%pioVar(ifield)%vd, &
3460 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3461 & setfillval = .false.)
3474# if defined WRITE_WATER && defined MASKING
3478 vinfo(22)=
'coordinates'
3485 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3488# ifdef FORWARD_WRITE
3496# if defined WRITE_WATER && defined MASKING
3500 vinfo(22)=
'coordinates'
3507 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3518# if defined WRITE_WATER && defined MASKING
3522 vinfo(22)=
'coordinates'
3529 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3538# if defined WRITE_WATER && defined MASKING
3542 vinfo(22)=
'coordinates'
3549 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3557# if defined WRITE_WATER && defined MASKING
3561 vinfo(22)=
'coordinates'
3568 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3574# ifdef ADJUST_BOUNDARY
3580 vinfo( 1)=
vname(1,ifield)
3581 vinfo( 2)=
vname(2,ifield)
3582 vinfo( 3)=
vname(3,ifield)
3583 vinfo(14)=
vname(4,ifield)
3585 vinfo(21)=
vname(6,ifield)
3586 aval(5)=real(
iinfo(1,ifield,ng),r8)
3591 &
xtr(ng)%pioVar(ifield)%vd, &
3592 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3593 & setfillval = .false.)
3606# if defined WRITE_WATER && defined MASKING
3610 vinfo(22)=
'coordinates'
3617 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3620# ifdef FORWARD_WRITE
3628# if defined WRITE_WATER && defined MASKING
3632 vinfo(22)=
'coordinates'
3639 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3650# if defined WRITE_WATER && defined MASKING
3654 vinfo(22)=
'coordinates'
3661 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3670# if defined WRITE_WATER && defined MASKING
3674 vinfo(22)=
'coordinates'
3681 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3689# if defined WRITE_WATER && defined MASKING
3693 vinfo(22)=
'coordinates'
3700 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3706# ifdef ADJUST_BOUNDARY
3712 vinfo( 1)=
vname(1,ifield)
3713 vinfo( 2)=
vname(2,ifield)
3714 vinfo( 3)=
vname(3,ifield)
3715 vinfo(14)=
vname(4,ifield)
3717 vinfo(21)=
vname(6,ifield)
3718 aval(5)=real(
iinfo(1,ifield,ng),r8)
3723 &
xtr(ng)%pioVar(ifield)%vd, &
3724 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3725 & setfillval = .false.)
3738# if defined WRITE_WATER && defined MASKING
3739 vinfo(20)=
'mask_rho'
3742 vinfo(22)=
'coordinates'
3749 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3761# if defined WRITE_WATER && defined MASKING
3762 vinfo(20)=
'mask_rho'
3765 vinfo(22)=
'coordinates'
3772 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3786# if defined WRITE_WATER && defined MASKING
3790 vinfo(22)=
'coordinates'
3797 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3800# if defined FORWARD_WRITE && defined FORWARD_RHS
3807# if defined WRITE_WATER && defined MASKING
3811 vinfo(22)=
'coordinates'
3818 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3823# ifdef ADJUST_BOUNDARY
3829 vinfo( 1)=
vname(1,ifield)
3830 vinfo( 2)=
vname(2,ifield)
3831 vinfo( 3)=
vname(3,ifield)
3832 vinfo(14)=
vname(4,ifield)
3834 vinfo(21)=
vname(6,ifield)
3835 aval(5)=real(
iinfo(1,ifield,ng),r8)
3840 &
xtr(ng)%pioVar(ifield)%vd, &
3841 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3842 & setfillval = .false.)
3855# if defined WRITE_WATER && defined MASKING
3859 vinfo(22)=
'coordinates'
3866 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3869# if defined FORWARD_WRITE && defined FORWARD_RHS
3876# if defined WRITE_WATER && defined MASKING
3880 vinfo(22)=
'coordinates'
3887 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3892# ifdef ADJUST_BOUNDARY
3898 vinfo( 1)=
vname(1,ifield)
3899 vinfo( 2)=
vname(2,ifield)
3900 vinfo( 3)=
vname(3,ifield)
3901 vinfo(14)=
vname(4,ifield)
3903 vinfo(21)=
vname(6,ifield)
3904 aval(5)=real(
iinfo(1,ifield,ng),r8)
3909 &
xtr(ng)%pioVar(ifield)%vd, &
3910 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3911 & setfillval = .false.)
3924# if defined WRITE_WATER && defined MASKING
3925 vinfo(20)=
'mask_rho'
3928 vinfo(22)=
'coordinates'
3935 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3947# if defined WRITE_WATER && defined MASKING
3948 vinfo(20)=
'mask_rho'
3951 vinfo(22)=
'coordinates'
3958 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3970# if defined WRITE_WATER && defined MASKING
3971 vinfo(20)=
'mask_rho'
3974 vinfo(22)=
'coordinates'
3981 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3990 vinfo( 3)=
'meter second-1'
3993# if defined WRITE_WATER && defined MASKING
3994 vinfo(20)=
'mask_rho'
3997 vinfo(22)=
'coordinates'
4004 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4008# ifdef OMEGA_IMPLICIT
4015 vinfo( 3)=
'meter second-1'
4018# if defined WRITE_WATER && defined MASKING
4019 vinfo(20)=
'mask_rho'
4022 vinfo(22)=
'coordinates'
4029 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4045 IF (itrc.eq.
idsed(i))
THEN
4046 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
4050# if defined WRITE_WATER && defined MASKING
4051 vinfo(20)=
'mask_rho'
4054 vinfo(22)=
'coordinates'
4060 &
xtr(ng)%pioTrc(itrc)%vd, &
4061 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4066# ifdef ADJUST_BOUNDARY
4073 vinfo( 1)=
vname(1,ifield)
4074 vinfo( 2)=
vname(2,ifield)
4075 vinfo( 3)=
vname(3,ifield)
4076 vinfo(14)=
vname(4,ifield)
4080 IF (itrc.eq.
idsed(i))
THEN
4081 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
4085 vinfo(21)=
vname(6,ifield)
4086 aval(5)=real(
iinfo(1,ifield,ng),r8)
4091 &
xtr(ng)%pioVar(ifield)%vd, &
4092 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
4093 & setfillval = .false.)
4107# if defined WRITE_WATER && defined MASKING
4108 vinfo(20)=
'mask_rho'
4111 vinfo(22)=
'coordinates'
4118 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4132# if defined WRITE_WATER && defined MASKING
4133 vinfo(20)=
'mask_rho'
4136 vinfo(22)=
'coordinates'
4143 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4157# if defined WRITE_WATER && defined MASKING
4158 vinfo(20)=
'mask_rho'
4161 vinfo(22)=
'coordinates'
4168 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4172# if defined FORWARD_WRITE && defined LMD_NONLOCAL
4183# if defined WRITE_WATER && defined MASKING
4184 vinfo(20)=
'mask_rho'
4187 vinfo(22)=
'coordinates'
4194 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4208# if defined WRITE_WATER && defined MASKING
4209 vinfo(20)=
'mask_rho'
4212 vinfo(22)=
'coordinates'
4219 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4220 & setfillval = .false.)
4232# if defined WRITE_WATER && defined MASKING
4233 vinfo(20)=
'mask_rho'
4236 vinfo(22)=
'coordinates'
4243 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4244 & setfillval = .false.)
4258# if defined WRITE_WATER && defined MASKING
4259 vinfo(20)=
'mask_rho'
4262 vinfo(22)=
'coordinates'
4269 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4270 & setfillval = .false.)
4274# if defined GLS_MIXING || defined MY25_MIXING
4284# if defined WRITE_WATER && defined MASKING
4285 vinfo(20)=
'mask_rho'
4288 vinfo(22)=
'coordinates'
4295 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4296 & setfillval = .false.)
4299# ifdef FORWARD_WRITE
4306# if defined WRITE_WATER && defined MASKING
4307 vinfo(20)=
'mask_rho'
4310 vinfo(22)=
'coordinates'
4317 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4330# if defined WRITE_WATER && defined MASKING
4331 vinfo(20)=
'mask_rho'
4334 vinfo(22)=
'coordinates'
4341 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4342 & setfillval = .false.)
4345# ifdef FORWARD_WRITE
4352# if defined WRITE_WATER && defined MASKING
4353 vinfo(20)=
'mask_rho'
4356 vinfo(22)=
'coordinates'
4363 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4366# if defined FORWARD_WRITE && defined GLS_MIXING
4373# if defined WRITE_WATER && defined MASKING
4374 vinfo(20)=
'mask_rho'
4377 vinfo(22)=
'coordinates'
4384 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4389# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4399# if defined WRITE_WATER && defined MASKING
4400 vinfo(20)=
'mask_rho'
4403 vinfo(22)=
'coordinates'
4410 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4414# if defined BULK_FLUXES || defined ECOSIM
4424# if defined WRITE_WATER && defined MASKING
4425 vinfo(20)=
'mask_rho'
4428 vinfo(22)=
'coordinates'
4435 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4445# if defined WRITE_WATER && defined MASKING
4446 vinfo(20)=
'mask_rho'
4449 vinfo(22)=
'coordinates'
4456 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4468# if defined WRITE_WATER && defined MASKING
4469 vinfo(20)=
'mask_rho'
4472 vinfo(22)=
'coordinates'
4479 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4489# if defined WRITE_WATER && defined MASKING
4490 vinfo(20)=
'mask_rho'
4493 vinfo(22)=
'coordinates'
4500 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4512 IF (itrc.eq.
itemp)
THEN
4513 vinfo(11)=
'upward flux, cooling'
4514 vinfo(12)=
'downward flux, heating'
4515 ELSE IF (itrc.eq.
isalt)
THEN
4516 vinfo(11)=
'upward flux, freshening (net precipitation)'
4517 vinfo(12)=
'downward flux, salting (net evaporation)'
4521# if defined WRITE_WATER && defined MASKING
4522 vinfo(20)=
'mask_rho'
4525 vinfo(22)=
'coordinates'
4532 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4537# if defined BULK_FLUXES || defined FRC_COUPLING
4545 vinfo(11)=
'upward flux, cooling'
4546 vinfo(12)=
'downward flux, heating'
4549# if defined WRITE_WATER && defined MASKING
4550 vinfo(20)=
'mask_rho'
4553 vinfo(22)=
'coordinates'
4560 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4570 vinfo(11)=
'upward flux, cooling'
4571 vinfo(12)=
'downward flux, heating'
4574# if defined WRITE_WATER && defined MASKING
4575 vinfo(20)=
'mask_rho'
4578 vinfo(22)=
'coordinates'
4585 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4595 vinfo(11)=
'upward flux, cooling'
4596 vinfo(12)=
'downward flux, heating'
4599# if defined WRITE_WATER && defined MASKING
4600 vinfo(20)=
'mask_rho'
4603 vinfo(22)=
'coordinates'
4610 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4615# if defined BULK_FLUXES
4625# if defined WRITE_WATER && defined MASKING
4626 vinfo(20)=
'mask_rho'
4629 vinfo(22)=
'coordinates'
4636 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4648 vinfo(11)=
'downward flux, freshening (condensation)'
4649 vinfo(12)=
'upward flux, salting (evaporation)'
4652# if defined WRITE_WATER && defined MASKING
4653 vinfo(20)=
'mask_rho'
4656 vinfo(22)=
'coordinates'
4663 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4673 vinfo(11)=
'upward flux, salting (NOT POSSIBLE)'
4674 vinfo(12)=
'downward flux, freshening (precipitation)'
4677# if defined WRITE_WATER && defined MASKING
4678 vinfo(20)=
'mask_rho'
4681 vinfo(22)=
'coordinates'
4688 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4700 vinfo(11)=
'upward flux, freshening (net precipitation)'
4701 vinfo(12)=
'downward flux, salting (net evaporation)'
4704# if defined WRITE_WATER && defined MASKING
4705 vinfo(20)=
'mask_rho'
4708 vinfo(22)=
'coordinates'
4715 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4727 vinfo(11)=
'upward flux, cooling'
4728 vinfo(12)=
'downward flux, heating'
4731# if defined WRITE_WATER && defined MASKING
4732 vinfo(20)=
'mask_rho'
4735 vinfo(22)=
'coordinates'
4742 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4756# if defined WRITE_WATER && defined MASKING
4760 vinfo(22)=
'coordinates'
4767 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4779# if defined WRITE_WATER && defined MASKING
4783 vinfo(22)=
'coordinates'
4790 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4802# if defined WRITE_WATER && defined MASKING
4806 vinfo(22)=
'coordinates'
4813 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4825# if defined WRITE_WATER && defined MASKING
4829 vinfo(22)=
'coordinates'
4836 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4840# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
4847 & t2dgrd, u2dgrd, v2dgrd)
4851# if defined ICE_MODEL && defined SOLVE3D
4857 CALL ice_def_pio (ng, model, ldef,
hout,
xtr, &
4858 & t2dgrd, u2dgrd, v2dgrd)
4862# if defined SEDIMENT && defined SOLVE3D
4869 & t2dgrd, u2dgrd, v2dgrd)
4873# if defined WEC_VF && defined SOLVE3D
4879 CALL wec_def_pio (ng, model, ldef,
hout,
xtr, &
4880 & t2dgrd, u2dgrd, v2dgrd, &
4881 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
4896 CALL wrt_info (ng, model,
xtr(ng)%pioFile, ncname)
4905 query :
IF (.not.ldef)
THEN
4912 WRITE (
stdout,60) trim(ncname)
4919 & piofile =
xtr(ng)%pioFile)
4925 & piofile =
xtr(ng)%pioFile)
4938 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
4944 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpwet)))
THEN
4949 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrwet)))
THEN
4954 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduwet)))
THEN
4959 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvwet)))
THEN
4966 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthr)))
THEN
4971 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthu)))
THEN
4976 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthv)))
THEN
4981 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthw)))
THEN
4987 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
4992 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
4997 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
5002# ifdef ADJUST_BOUNDARY
5003 ELSE IF (trim(var_name(i)).eq. &
5009 ELSE IF (trim(var_name(i)).eq. &
5015 ELSE IF (trim(var_name(i)).eq. &
5022 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu2de)))
THEN
5027 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv2dn)))
THEN
5032# ifdef FORWARD_WRITE
5034 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrzet)))
THEN
5039 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru2d)))
THEN
5044 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv2d)))
THEN
5052 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idruct)))
THEN
5057 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrvct)))
THEN
5063 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx1)))
THEN
5068 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx2)))
THEN
5073 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx1)))
THEN
5078 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx2)))
THEN
5084 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru3d)))
THEN
5089 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv3d)))
THEN
5098 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
5103 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
5108# ifdef ADJUST_BOUNDARY
5109 ELSE IF (trim(var_name(i)).eq. &
5115 ELSE IF (trim(var_name(i)).eq. &
5122 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu3de)))
THEN
5127 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv3dn)))
THEN
5132 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idwvel)))
THEN
5137 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idovel)))
THEN
5142# ifdef OMEGA_IMPLICIT
5143 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idovil)))
THEN
5149 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iddano)))
THEN
5155 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhsbl)))
THEN
5162 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhbbl)))
THEN
5168 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvis)))
THEN
5173 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtdif)))
THEN
5178 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsdif)))
THEN
5183# if defined GLS_MIXING || defined MY25_MIXING
5184 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtke)))
THEN
5189 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtls)))
THEN
5195# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5196 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpair)))
THEN
5202# if defined BULK_FLUXES || defined ECOSIM
5203 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduair)))
THEN
5208 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvair)))
THEN
5213 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduaie)))
THEN
5218 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvain)))
THEN
5224# if defined BULK_FLUXES || defined FRC_COUPLING
5225 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idlhea)))
THEN
5230 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idshea)))
THEN
5235 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idlrad)))
THEN
5242 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtair)))
THEN
5248 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idevap)))
THEN
5253 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrain)))
THEN
5260 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idempf)))
THEN
5266 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsrad)))
THEN
5273 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
5278 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
5283 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubms)))
THEN
5288 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbms)))
THEN
5296 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
5297 got_var(
idtvar(itrc))=.true.
5301# ifdef ADJUST_BOUNDARY
5302 ELSE IF (trim(var_name(i)).eq. &
5312 IF (trim(var_name(i)).eq.trim(
vname(1,
idtsur(itrc))))
THEN
5313 got_var(
idtsur(itrc))=.true.
5317# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5318 ELSE IF (trim(var_name(i)).eq. &
5320 got_var(
idghat(itrc))=.true.
5332 IF (.not.got_var(
idtime))
THEN
5339 IF (.not.got_var(
idpwet))
THEN
5345 IF (.not.got_var(
idrwet))
THEN
5351 IF (.not.got_var(
iduwet))
THEN
5357 IF (.not.got_var(
idvwet))
THEN
5408# ifdef ADJUST_BOUNDARY
5440# ifdef FORWARD_WRITE
5469 IF (.not.got_var(idrcvt).and.
hout(idrcvt,ng))
THEN
5529# ifdef ADJUST_BOUNDARY
5567# ifdef OMEGA_IMPLICIT
5617# if defined GLS_MIXING || defined MY25_MIXING
5631# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5639# if defined BULK_FLUXES || defined ECOSIM
5665# if defined BULK_FLUXES || defined FRC_COUPLING
5754# ifdef ADJUST_BOUNDARY
5771# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5782# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
5792# if defined ICE_MODEL && defined SOLVE3D
5797 CALL ice_def_pio (ng, model, ldef,
hout,
xtr)
5801# if defined SEDIMENT && defined SOLVE3D
5810# if defined WEC || defined WEC_VF
5815 CALL wec_def_pio (ng, model, ldef,
hout,
xtr)
5828 xtr(ng)%Rindex=min(
xtr(ng)%Rindex,rec_size)
5831 10
FORMAT (2x,
'DEF_EXTRACT_PIO - creating decimate file,',t56, &
5832 &
'Grid ',i2.2,
': ',a)
5833 20
FORMAT (2x,
'DEF_EXTRACT_PIO - inquiring decimate file,',t56, &
5834 &
'Grid ',i2.2,
': ',a)
5835 30
FORMAT (/,
' DEF_EXTRACT_PIO - unable to create decimate NetCDF', &
5837 40
FORMAT (
'time dependent',1x,a)
5838 50
FORMAT (1pe11.4,1x,
'millimeter')
5839 60
FORMAT (/,
' DEF_EXTRACT_PIO - unable to open decimate NetCDF file: ', &
5841 70
FORMAT (/,
' DEF_EXTRACT_PIO - unable to find variable: ',a,2x, &
5842 &
' in decimate NetCDF file: ',a)
5845 END SUBROUTINE def_extract_pio
subroutine, public bbl_def_nf90(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd)
subroutine, public bbl_def_pio(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd)
integer, parameter nbands
integer, dimension(:), allocatable nstatevar
type(t_io), dimension(:), allocatable xtr
character(len=256) sourcefile
logical, dimension(:,:), allocatable hout
integer, parameter io_nf90
integer, dimension(:), allocatable idsbry
integer, parameter io_pio
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
integer, dimension(2) idghat
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
integer, parameter nf_tout
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
integer, dimension(mvars) var_id
integer, parameter nf_type
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)
integer, parameter u2dobc
integer, parameter v3dobc
integer, parameter r2dobc
integer, dimension(:), allocatable n
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, parameter p2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
integer, parameter pio_type
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
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)
integer, dimension(:), allocatable nxtr
logical, dimension(:,:,:), allocatable lobc
integer, dimension(:), allocatable ndefxtr
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable nbrec
integer, dimension(:), allocatable idsed
real(r8), dimension(:,:), allocatable sd50
subroutine, public sediment_def_pio(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd, t3dgrd, u3dgrd, v3dgrd, w3dgrd)
subroutine, public sediment_def_nf90(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd, b3dgrd)
logical function, public founderror(flag, noerr, line, routine)