1120
1121
1123
1124
1125
1126 integer, intent(in) :: ng
1127
1128
1129
1130 logical :: got_var(NV)
1131
1132 integer, parameter :: Natt = 25
1133
1134 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
1135 integer :: recdim, status
1136 integer :: NinnerDim
1137# ifdef ADJUST_BOUNDARY
1138 integer :: IorJdim, brecdim
1139# endif
1140# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1141 integer :: frecdim
1142# endif
1143 integer :: DimIDs(nDimID)
1144 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1145# ifdef ADJUST_BOUNDARY
1146 integer :: t2dobc(4)
1147# endif
1148# ifdef SOLVE3D
1149 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1150# ifdef ADJUST_BOUNDARY
1151 integer :: t3dobc(5)
1152# endif
1153# ifdef ADJUST_STFLUX
1154 integer :: t3dfrc(4)
1155# endif
1156# endif
1157# ifdef ADJUST_WSTRESS
1158 integer :: u3dfrc(4), v3dfrc(4)
1159# endif
1160
1161 real(r8) :: Aval(6)
1162
1163 character (len=256) :: ncname
1164 character (len=MaxLen) :: Vinfo(Natt)
1165
1166 character (len=*), parameter :: MyFile = &
1167 & __FILE__//", def_error_pio"
1168
1169 TYPE (Var_desc_t) :: varDesc
1170
1171 sourcefile=myfile
1172
1173
1174
1175
1176
1177 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1178 ncname=err(ng)%name
1179
1180 IF (master) THEN
1181 IF (ldeferr(ng)) THEN
1182 WRITE (stdout,10) ng, trim(ncname)
1183 ELSE
1184 WRITE (stdout,20) ng, trim(ncname)
1185 END IF
1186 END IF
1187
1188
1189
1190
1191
1192 define : IF (ldeferr(ng)) THEN
1194 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1195 IF (master) WRITE (stdout,30) trim(ncname)
1196 RETURN
1197 END IF
1198
1199
1200
1201
1202
1203 dimids=0
1204
1205 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xi_rho', &
1206 & iobounds(ng)%xi_rho, dimids( 1))
1207 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1208
1209 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xi_u', &
1210 & iobounds(ng)%xi_u, dimids( 2))
1211 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1212
1213 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xi_v', &
1214 & iobounds(ng)%xi_v, dimids( 3))
1215 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1216
1217 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xi_psi', &
1218 & iobounds(ng)%xi_psi, dimids( 4))
1219 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1220
1221 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'eta_rho', &
1222 & iobounds(ng)%eta_rho, dimids( 5))
1223 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1224
1225 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'eta_u', &
1226 & iobounds(ng)%eta_u, dimids( 6))
1227 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1228
1229 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'eta_v', &
1230 & iobounds(ng)%eta_v, dimids( 7))
1231 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1232
1233 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'eta_psi', &
1234 & iobounds(ng)%eta_psi, dimids( 8))
1235 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1236
1237# ifdef ADJUST_BOUNDARY
1238 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'IorJ', &
1239 & iobounds(ng)%IorJ, iorjdim)
1240 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1241# endif
1242
1243# if defined WRITE_WATER && defined MASKING
1244 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xy_rho', &
1245 & iobounds(ng)%xy_rho, dimids(17))
1246 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1247
1248 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xy_u', &
1249 & iobounds(ng)%xy_u, dimids(18))
1250 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1251
1252 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xy_v', &
1253 & iobounds(ng)%xy_v, dimids(19))
1254 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1255# endif
1256
1257# ifdef SOLVE3D
1258# if defined WRITE_WATER && defined MASKING
1259 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xyz_rho', &
1260 & iobounds(ng)%xy_rho*n(ng), dimids(20))
1261 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1262
1263 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xyz_u', &
1264 & iobounds(ng)%xy_u*n(ng), dimids(21))
1265 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1266
1267 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xyz_v', &
1268 & iobounds(ng)%xy_v*n(ng), dimids(22))
1269 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1270
1271 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xyz_w', &
1272 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
1273 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1274# endif
1275
1276 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'N', &
1277 & n(ng), dimids( 9))
1278 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1279
1280 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 's_rho', &
1281 & n(ng), dimids( 9))
1282 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1283
1284 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 's_w', &
1285 & n(ng)+1, dimids(10))
1286 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1287
1288 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'tracer', &
1289 & nt(ng), dimids(11))
1290 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1291
1292# ifdef SEDIMENT
1293 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'NST', &
1294 & nst, dimids(32))
1295 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1296
1297 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Nbed', &
1298 & nbed, dimids(16))
1299 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1300
1301# if defined WRITE_WATER && defined MASKING
1302 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'xybed', &
1303 & iobounds(ng)%xy_rho*nbed, dimids(24))
1304 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1305# endif
1306# endif
1307
1308# ifdef ECOSIM
1309 status=def_dim(ng, inlm, err(ng)%pioFile, ncname, 'Nbands', &
1310 & nbands, dimids(33))
1311 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1312
1313 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Nphy', &
1314 & nphy, dimids(25))
1315 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1316
1317 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Nbac', &
1318 & nbac, dimids(26))
1319 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1320
1321 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Ndom', &
1322 & ndom, dimids(27))
1323 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1324
1325 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Nfec', &
1326 & nfec, dimids(28))
1327 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1328# endif
1329# endif
1330
1331 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'boundary', &
1332 & 4, dimids(14))
1333 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1334
1335# ifdef FOUR_DVAR
1336 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Nstate', &
1337 & nstatevar(ng), dimids(29))
1338 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1339# endif
1340
1341 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'Ninner', &
1342 & ninner, ninnerdim)
1343 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1344
1345# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1346 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'frc_adjust', &
1347 & nfrec(ng), dimids(30))
1348 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1349# endif
1350
1351# ifdef ADJUST_BOUNDARY
1352 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, 'obc_adjust', &
1353 & nbrec(ng), dimids(31))
1354 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1355# endif
1356
1357 status=def_dim(ng, itlm, err(ng)%pioFile, ncname, &
1358 & trim(adjustl(vname(5,idtime))), &
1359 & pio_unlimited, dimids(12))
1360 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1361
1362 recdim=dimids(12)
1363# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1364 frecdim=dimids(30)
1365# endif
1366# ifdef ADJUST_BOUNDARY
1367 brecdim=dimids(31)
1368# endif
1369
1370
1371
1372# if defined WRITE_WATER && defined MASKING
1373 nvd3=2
1374 nvd4=2
1375# else
1376 nvd3=3
1377 nvd4=4
1378# endif
1379
1380
1381
1382# if defined WRITE_WATER && defined MASKING
1383 t2dgrd(1)=dimids(17)
1384 t2dgrd(2)=dimids(12)
1385# ifdef SOLVE3D
1386 t3dgrd(1)=dimids(20)
1387 t3dgrd(2)=dimids(12)
1388# endif
1389# else
1390 t2dgrd(1)=dimids( 1)
1391 t2dgrd(2)=dimids( 5)
1392 t2dgrd(3)=dimids(12)
1393# ifdef SOLVE3D
1394 t3dgrd(1)=dimids( 1)
1395 t3dgrd(2)=dimids( 5)
1396 t3dgrd(3)=dimids( 9)
1397 t3dgrd(4)=dimids(12)
1398# endif
1399# ifdef ADJUST_STFLUX
1400 t3dfrc(1)=dimids( 1)
1401 t3dfrc(2)=dimids( 5)
1402 t3dfrc(3)=frecdim
1403 t3dfrc(4)=dimids(12)
1404# endif
1405# endif
1406# ifdef ADJUST_BOUNDARY
1407 t2dobc(1)=iorjdim
1408 t2dobc(2)=dimids(14)
1409 t2dobc(3)=brecdim
1410 t2dobc(4)=dimids(12)
1411# ifdef SOLVE3D
1412 t3dobc(1)=iorjdim
1413 t3dobc(2)=dimids( 9)
1414 t3dobc(3)=dimids(14)
1415 t3dobc(4)=brecdim
1416 t3dobc(5)=dimids(12)
1417# endif
1418# endif
1419
1420
1421
1422# if defined WRITE_WATER && defined MASKING
1423 u2dgrd(1)=dimids(18)
1424 u2dgrd(2)=dimids(12)
1425# ifdef SOLVE3D
1426 u3dgrd(1)=dimids(21)
1427 u3dgrd(2)=dimids(12)
1428# endif
1429# else
1430 u2dgrd(1)=dimids( 2)
1431 u2dgrd(2)=dimids( 6)
1432 u2dgrd(3)=dimids(12)
1433# ifdef SOLVE3D
1434 u3dgrd(1)=dimids( 2)
1435 u3dgrd(2)=dimids( 6)
1436 u3dgrd(3)=dimids( 9)
1437 u3dgrd(4)=dimids(12)
1438# endif
1439# ifdef ADJUST_WSTRESS
1440 u3dfrc(1)=dimids( 2)
1441 u3dfrc(2)=dimids( 6)
1442 u3dfrc(3)=frecdim
1443 u3dfrc(4)=dimids(12)
1444# endif
1445# endif
1446
1447
1448
1449# if defined WRITE_WATER && defined MASKING
1450 v2dgrd(1)=dimids(19)
1451 v2dgrd(2)=dimids(12)
1452# ifdef SOLVE3D
1453 v3dgrd(1)=dimids(22)
1454 v3dgrd(2)=dimids(12)
1455# endif
1456# else
1457 v2dgrd(1)=dimids( 3)
1458 v2dgrd(2)=dimids( 7)
1459 v2dgrd(3)=dimids(12)
1460# ifdef SOLVE3D
1461 v3dgrd(1)=dimids( 3)
1462 v3dgrd(2)=dimids( 7)
1463 v3dgrd(3)=dimids( 9)
1464 v3dgrd(4)=dimids(12)
1465# endif
1466# ifdef ADJUST_WSTRESS
1467 v3dfrc(1)=dimids( 3)
1468 v3dfrc(2)=dimids( 7)
1469 v3dfrc(3)=frecdim
1470 v3dfrc(4)=dimids(12)
1471# endif
1472# endif
1473# ifdef SOLVE3D
1474
1475
1476
1477# if defined WRITE_WATER && defined MASKING
1478 w3dgrd(1)=dimids(23)
1479 w3dgrd(2)=dimids(12)
1480# else
1481 w3dgrd(1)=dimids( 1)
1482 w3dgrd(2)=dimids( 5)
1483 w3dgrd(3)=dimids(10)
1484 w3dgrd(4)=dimids(12)
1485# endif
1486# endif
1487
1488
1489
1490 err(ng)%Rindex=0
1491
1492
1493
1494 DO i=1,natt
1495 DO j=1,len(vinfo(1))
1496 vinfo(i)(j:j)=' '
1497 END DO
1498 END DO
1499 DO i=1,6
1500 aval(i)=0.0_r8
1501 END DO
1502
1503
1504
1505
1506
1507 CALL def_info (ng, itlm, err(ng)%pioFile, ncname, dimids)
1508 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1509
1510
1511
1512
1513
1514
1515
1516 vinfo( 1)='zLanczos_coef'
1517 vinfo( 2)='inner-loop Lanczos vector tridiagonal matrix'
1518 status=def_var(ng, itlm, err(ng)%pioFile, vardesc,
pio_type, &
1519 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1520 & setparaccess = .false.)
1521 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1522
1523
1524
1525 vinfo( 1)='zLanczos_inv'
1526 vinfo( 2)='inverse inner-loop Lanczos vector tridiagonal matrix'
1527 status=def_var(ng, itlm, err(ng)%pioFile, vardesc,
pio_type, &
1528 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1529 & setparaccess = .false.)
1530 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1531
1532
1533
1534
1535 vinfo( 1)='zLanczos_err'
1536 vinfo( 2)='inner-loop Lanczos vector tridiagonal matrix '// &
1537 & 'inversion error'
1538 status=def_var(ng, itlm, err(ng)%pioFile, vardesc,
pio_type, &
1539 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1540 & setparaccess = .false.)
1541 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1542
1543
1544
1545 vinfo( 1)=vname(1,idtime)
1546 vinfo( 2)=vname(2,idtime)
1547 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
1548 vinfo( 4)=trim(rclock%calendar)
1549 vinfo(14)=vname(4,idtime)
1550 vinfo(21)=vname(6,idtime)
1551 err(ng)%pioVar(idtime)%dkind=
pio_tout
1552 err(ng)%pioVar(idtime)%gtype=0
1553
1554 status=def_var(ng, itlm, err(ng)%pioFile, &
1555 & err(ng)%pioVar(idtime)%vd, &
1556 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1557 & setparaccess = .true.)
1558 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1559
1560
1561
1562 vinfo( 1)=vname(1,idfsur)
1563 WRITE (vinfo( 2),40) trim(vname(2,idfsur))
1564 vinfo( 3)='meter2'
1565 vinfo(14)=vname(4,idfsur)
1566 vinfo(16)=vname(1,idtime)
1567# if defined WRITE_WATER && defined MASKING
1568 vinfo(20)='mask_rho'
1569# endif
1570 vinfo(21)=vname(6,idfsur)
1571 vinfo(22)='coordinates'
1572 aval(5)=real(iinfo(1,idfsur,ng),r8)
1573 err(ng)%pioVar(idfsur)%dkind=
pio_fout
1574 err(ng)%pioVar(idfsur)%gtype=r2dvar
1575
1576 status=def_var(ng, itlm, err(ng)%pioFile, &
1577 & err(ng)%pioVar(idfsur)%vd, &
1578 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1579 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1580
1581# ifdef ADJUST_BOUNDARY
1582
1583
1584
1585 IF (any(lobc(:,isfsur,ng))) THEN
1586 ifield=idsbry(isfsur)
1587 vinfo( 1)=vname(1,ifield)
1588 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1589 vinfo( 3)='meter2'
1590 vinfo(14)=vname(4,ifield)
1591 vinfo(16)=vname(1,idtime)
1592 vinfo(21)=vname(6,ifield)
1593 aval(5)=real(iinfo(1,ifield,ng),r8)
1594 err(ng)%pioVar(ifield)%dkind=
pio_fout
1595 err(ng)%pioVar(ifield)%gtype=r2dobc
1596
1597 status=def_var(ng, itlm, err(ng)%pioFile, &
1598 & err(ng)%pioVar(ifield)%vd, &
1599 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1600 & setfillval = .false.)
1601 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1602 END IF
1603# endif
1604
1605
1606
1607 vinfo( 1)=vname(1,idubar)
1608 WRITE (vinfo( 2),40) trim(vname(2,idubar))
1609 vinfo( 3)='meter2 second-2'
1610 vinfo(14)=vname(4,idubar)
1611 vinfo(16)=vname(1,idtime)
1612# if defined WRITE_WATER && defined MASKING
1613 vinfo(20)='mask_u'
1614# endif
1615 vinfo(21)=vname(6,idubar)
1616 vinfo(22)='coordinates'
1617 aval(5)=real(iinfo(1,idubar,ng),r8)
1618 err(ng)%pioVar(idubar)%dkind=
pio_fout
1619 err(ng)%pioVar(idubar)%gtype=u2dvar
1620
1621 status=def_var(ng, itlm, err(ng)%pioFile, &
1622 & err(ng)%pioVar(idubar)%vd, &
1623 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1624 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1625
1626# ifdef ADJUST_BOUNDARY
1627
1628
1629
1630 IF (any(lobc(:,isubar,ng))) THEN
1631 ifield=idsbry(isubar)
1632 vinfo( 1)=vname(1,ifield)
1633 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1634 vinfo( 3)='meter2 second-2'
1635 vinfo(14)=vname(4,ifield)
1636 vinfo(16)=vname(1,idtime)
1637 vinfo(21)=vname(6,ifield)
1638 aval(5)=real(iinfo(1,ifield,ng),r8)
1639 err(ng)%pioVar(ifield)%dkind=
pio_fout
1640 err(ng)%pioVar(ifield)%gtype=u2dobc
1641
1642 status=def_var(ng, itlm, err(ng)%pioFile, &
1643 & err(ng)%pioVar(ifield)%vd, &
1644 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1645 & setfillval = .false.)
1646 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1647 END IF
1648# endif
1649
1650
1651
1652 vinfo( 1)=vname(1,idvbar)
1653 WRITE (vinfo( 2),40) trim(vname(2,idvbar))
1654 vinfo( 3)='meter2 second-2'
1655 vinfo(14)=vname(4,idvbar)
1656 vinfo(16)=vname(1,idtime)
1657# if defined WRITE_WATER && defined MASKING
1658 vinfo(20)='mask_v'
1659# endif
1660 vinfo(21)=vname(6,idvbar)
1661 vinfo(22)='coordinates'
1662 aval(5)=real(iinfo(1,idvbar,ng),r8)
1663 err(ng)%pioVar(idvbar)%dkind=
pio_fout
1664 err(ng)%pioVar(idvbar)%gtype=v2dvar
1665
1666 status=def_var(ng, itlm, err(ng)%pioFile, &
1667 & err(ng)%pioVar(idvbar)%vd, &
1668 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1669 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1670
1671# ifdef ADJUST_BOUNDARY
1672
1673
1674
1675 IF (any(lobc(:,isvbar,ng))) THEN
1676 ifield=idsbry(isvbar)
1677 vinfo( 1)=vname(1,ifield)
1678 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1679 vinfo( 3)='meter2 second-2'
1680 vinfo(14)=vname(4,ifield)
1681 vinfo(16)=vname(1,idtime)
1682 vinfo(21)=vname(6,ifield)
1683 aval(5)=real(iinfo(1,ifield,ng),r8)
1684 err(ng)%pioVar(ifield)%dkind=
pio_fout
1685 err(ng)%pioVar(ifield)%gtype=v2dobc
1686
1687 status=def_var(ng, itlm, err(ng)%pioFile, &
1688 & err(ng)%pioVar(ifield)%vd, &
1689 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1690 & setfillval = .false.)
1691 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1692 END IF
1693# endif
1694# ifdef SOLVE3D
1695
1696
1697
1698 vinfo( 1)=vname(1,iduvel)
1699 WRITE (vinfo( 2),40) trim(vname(2,iduvel))
1700 vinfo( 3)='meter2 second-2'
1701 vinfo(14)=vname(4,iduvel)
1702 vinfo(16)=vname(1,idtime)
1703# if defined WRITE_WATER && defined MASKING
1704 vinfo(20)='mask_u'
1705# endif
1706 vinfo(21)=vname(6,iduvel)
1707 vinfo(22)='coordinates'
1708 aval(5)=real(iinfo(1,iduvel,ng),r8)
1709 err(ng)%pioVar(iduvel)%dkind=
pio_fout
1710 err(ng)%pioVar(iduvel)%gtype=u3dvar
1711
1712 status=def_var(ng, itlm, err(ng)%pioFile, &
1713 & err(ng)%pioVar(iduvel)%vd, &
1714 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1715 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1716
1717# ifdef ADJUST_BOUNDARY
1718
1719
1720
1721 IF (any(lobc(:,isuvel,ng))) THEN
1722 ifield=idsbry(isuvel)
1723 vinfo( 1)=vname(1,ifield)
1724 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1725 vinfo( 3)='meter2 second-2'
1726 vinfo(14)=vname(4,ifield)
1727 vinfo(16)=vname(1,idtime)
1728 vinfo(21)=vname(6,ifield)
1729 aval(5)=real(iinfo(1,ifield,ng),r8)
1730 err(ng)%pioVar(ifield)%dkind=
pio_fout
1731 err(ng)%pioVar(ifield)%gtype=u3dobc
1732
1733 status=def_var(ng, itlm, err(ng)%pioFile, &
1734 & err(ng)%pioVar(ifield)%vd, &
1735 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1736 & setfillval = .false.)
1737 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1738 END IF
1739# endif
1740
1741
1742
1743 vinfo( 1)=vname(1,idvvel)
1744 WRITE (vinfo( 2),40) trim(vname(2,idvvel))
1745 vinfo( 3)='meter2 second-2'
1746 vinfo(14)=vname(4,idvvel)
1747 vinfo(16)=vname(1,idtime)
1748# if defined WRITE_WATER && defined MASKING
1749 vinfo(20)='mask_v'
1750# endif
1751 vinfo(21)=vname(6,idvvel)
1752 vinfo(22)='coordinates'
1753 aval(5)=real(iinfo(1,idvvel,ng),r8)
1754 err(ng)%pioVar(idvvel)%dkind=
pio_fout
1755 err(ng)%pioVar(idvvel)%gtype=v3dvar
1756
1757 status=def_var(ng, itlm, err(ng)%pioFile, &
1758 & err(ng)%pioVar(idvvel)%vd, &
1759 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1760 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1761
1762# ifdef ADJUST_BOUNDARY
1763
1764
1765
1766 IF (any(lobc(:,isvvel,ng))) THEN
1767 ifield=idsbry(isvvel)
1768 vinfo( 1)=vname(1,ifield)
1769 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1770 vinfo( 3)='meter2 second-2'
1771 vinfo(14)=vname(4,ifield)
1772 vinfo(16)=vname(1,idtime)
1773 vinfo(21)=vname(6,ifield)
1774 aval(5)=real(iinfo(1,ifield,ng),r8)
1775 err(ng)%pioVar(ifield)%dkind=
pio_fout
1776 err(ng)%pioVar(ifield)%gtype=v3dobc
1777
1778 status=def_var(ng, itlm, err(ng)%pioFile, &
1779 & err(ng)%pioVar(ifield)%vd, &
1780 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1781 & setfillval = .false.)
1782 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1783 END IF
1784# endif
1785
1786
1787
1788 DO itrc=1,nt(ng)
1789 vinfo( 1)=vname(1,idtvar(itrc))
1790 WRITE (vinfo( 2),40) trim(vname(2,idtvar(itrc)))
1791 IF (itrc.eq.itemp) THEN
1792 vinfo( 3)='Celsius2'
1793 ELSE IF (itrc.eq.isalt) THEN
1794 vinfo( 3)='nondimensional'
1795 ELSE
1796 WRITE (vinfo( 3),50) trim(vname(3,idtvar(itrc)))
1797 END IF
1798 vinfo(14)=vname(4,idtvar(itrc))
1799 vinfo(16)=vname(1,idtime)
1800# ifdef SEDIMENT
1801 DO i=1,nst
1802 IF (itrc.eq.idsed(i)) THEN
1803 WRITE (vinfo(19),60) 1000.0_r8*sd50(i,ng)
1804 END IF
1805 END DO
1806# endif
1807# if defined WRITE_WATER && defined MASKING
1808 vinfo(20)='mask_rho'
1809# endif
1810 vinfo(21)=vname(6,idtvar(itrc))
1811 vinfo(22)='coordinates'
1812 aval(5)=real(r3dvar,r8)
1813 err(ng)%pioTrc(itrc)%dkind=
pio_fout
1814 err(ng)%pioTrc(itrc)%gtype=r3dvar
1815
1816 status=def_var(ng, itlm, err(ng)%pioFile, &
1817 & err(ng)%pioTrc(itrc)%vd, &
1818 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1819 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1820 END DO
1821
1822# ifdef ADJUST_BOUNDARY
1823
1824
1825
1826 DO itrc=1,nt(ng)
1827 IF (any(lobc(:,istvar(itrc),ng))) THEN
1828 ifield=idsbry(istvar(itrc))
1829 vinfo( 1)=vname(1,ifield)
1830 WRITE (vinfo( 2),40) trim(vname(2,ifield))
1831 IF (itrc.eq.itemp) THEN
1832 vinfo( 3)='Celsius2'
1833 ELSE IF (itrc.eq.isalt) THEN
1834 vinfo( 3)='nondimensional'
1835 ELSE
1836 WRITE (vinfo( 3),50) trim(vname(3,idtvar(itrc)))
1837 END IF
1838 vinfo(14)=vname(4,ifield)
1839 vinfo(16)=vname(1,idtime)
1840# ifdef SEDIMENT
1841 DO i=1,nst
1842 IF (itrc.eq.idsed(i)) THEN
1843 WRITE (vinfo(19),60) 1000.0_r8*sd50(i,ng)
1844 END IF
1845 END DO
1846# endif
1847 vinfo(21)=vname(6,ifield)
1848 aval(5)=real(iinfo(1,ifield,ng),r8)
1849 err(ng)%pioVar(ifield)%dkind=
pio_fout
1850 err(ng)%pioVar(ifield)%gtype=r3dobc
1851
1852 status=def_var(ng, itlm, err(ng)%pioFile, &
1853 & err(ng)%pioVar(ifield)%vd, &
1854 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1855 & setfillval = .false.)
1856 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1857 END IF
1858 END DO
1859# endif
1860# ifdef ADJUST_STFLUX
1861
1862
1863
1864 DO itrc=1,nt(ng)
1865 IF (lstflux(itrc,ng)) THEN
1866 vinfo( 1)=vname(1,idtsur(itrc))
1867 WRITE (vinfo( 2),40) trim(vname(2,idtsur(itrc)))
1868 WRITE (vinfo( 3),50) trim(vname(3,idtsur(itrc)))
1869 IF (itrc.eq.itemp) THEN
1870 vinfo(11)='upward flux, cooling'
1871 vinfo(12)='downward flux, heating'
1872 ELSE IF (itrc.eq.isalt) THEN
1873 vinfo(11)='upward flux, freshening (net precipitation)'
1874 vinfo(12)='downward flux, salting (net evaporation)'
1875 END IF
1876 vinfo(14)=vname(4,idtsur(itrc))
1877 vinfo(16)=vname(1,idtime)
1878# if defined WRITE_WATER && defined MASKING
1879 vinfo(20)='mask_rho'
1880# endif
1881 vinfo(21)=vname(6,idtsur(itrc))
1882 vinfo(22)='coordinates'
1883 aval(5)=real(r2dvar,r8)
1884 err(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
1885 err(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
1886
1887 status=def_var(ng, itlm, err(ng)%pioFile, &
1888 & err(ng)%pioVar(idtsur(itrc))%vd, &
1889 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
1890 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1891 END IF
1892 END DO
1893# endif
1894# endif
1895# ifdef ADJUST_WSTRESS
1896
1897
1898
1899 vinfo( 1)=vname(1,idusms)
1900 WRITE (vinfo( 2),40) trim(vname(2,idusms))
1901 vinfo( 3)='meter4 second-4'
1902 vinfo(14)=vname(4,idusms)
1903 vinfo(16)=vname(1,idtime)
1904# if defined WRITE_WATER && defined MASKING
1905 vinfo(20)='mask_u'
1906# endif
1907 vinfo(21)=vname(6,idusms)
1908 vinfo(22)='coordinates'
1909 aval(5)=real(u2dvar,r8)
1910 err(ng)%pioVar(idusms)%dkind=
pio_fout
1911 err(ng)%pioVar(idusms)%gtype=u2dvar
1912
1913 status=def_var(ng, itlm, err(ng)%pioFile, &
1914 & err(ng)%pioVar(idusms)%vd, &
1915 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
1916 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1917
1918
1919
1920 vinfo( 1)=vname(1,idvsms)
1921 WRITE (vinfo( 2),40) trim(vname(2,idvsms))
1922 vinfo( 2)=vname(2,idvsms)
1923 vinfo( 3)='meter4 second4'
1924 vinfo(14)=vname(4,idvsms)
1925 vinfo(16)=vname(1,idtime)
1926# if defined WRITE_WATER && defined MASKING
1927 vinfo(20)='mask_v'
1928# endif
1929 vinfo(21)=vname(6,idvsms)
1930 vinfo(22)='coordinates'
1931 aval(5)=real(v2dvar,r8)
1932 err(ng)%pioVar(idvsms)%dkind=
pio_fout
1933 err(ng)%pioVar(idvsms)%gtype=v2dvar
1934
1935 status=def_var(ng, itlm, err(ng)%pioFile, &
1936 & err(ng)%pioVar(idvsms)%vd, &
1937 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
1938 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1939# endif
1940
1941
1942
1943
1944
1946 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1947
1948
1949
1950
1951
1952 CALL wrt_info (ng, itlm, err(ng)%pioFile, ncname)
1953 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1954 END IF define
1955
1956
1957
1958
1959
1960
1961 query: IF (.not.ldeferr(ng)) THEN
1962 ncname=err(ng)%name
1963
1964
1965
1967 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1968 WRITE (stdout,70) trim(ncname)
1969 RETURN
1970 END IF
1971
1972
1973
1975 & piofile = err(ng)%pioFile)
1976 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1977
1978
1979
1981 & piofile = err(ng)%pioFile)
1982 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1983
1984
1985
1986 DO i=1,nv
1987 got_var(i)=.false.
1988 END DO
1989
1990
1991
1992
1993 DO i=1,n_var
1994 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1995 got_var(idtime)=.true.
1996 err(ng)%pioVar(idtime)%vd=
var_desc(i)
1997 err(ng)%pioVar(idtime)%dkind=
pio_tout
1998 err(ng)%pioVar(idtime)%gtype=0
1999 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
2000 got_var(idfsur)=.true.
2001 err(ng)%pioVar(idfsur)%vd=
var_desc(i)
2002 err(ng)%pioVar(idfsur)%dkind=
pio_fout
2003 err(ng)%pioVar(idfsur)%gtype=r2dvar
2004 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
2005 got_var(idubar)=.true.
2006 err(ng)%pioVar(idubar)%vd=
var_desc(i)
2007 err(ng)%pioVar(idubar)%dkind=
pio_fout
2008 err(ng)%pioVar(idubar)%gtype=u2dvar
2009 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
2010 got_var(idvbar)=.true.
2011 err(ng)%pioVar(idvbar)%vd=
var_desc(i)
2012 err(ng)%pioVar(idvbar)%dkind=
pio_fout
2013 err(ng)%pioVar(idvbar)%gtype=v2dvar
2014# ifdef ADJUST_BOUNDARY
2015 ELSE IF (trim(var_name(i)).eq. &
2016 & trim(vname(1,idsbry(isfsur)))) THEN
2017 got_var(idsbry(isfsur))=.true.
2018 err(ng)%pioVar(idsbry(isfsur))%vd=
var_desc(i)
2019 err(ng)%pioVar(idsbry(isfsur))%dkind=
pio_fout
2020 err(ng)%pioVar(idsbry(isfsur))%gtype=r2dobc
2021 ELSE IF (trim(var_name(i)).eq. &
2022 & trim(vname(1,idsbry(isubar)))) THEN
2023 got_var(idsbry(isubar))=.true.
2024 err(ng)%pioVar(idsbry(isubar))%vd=
var_desc(i)
2025 err(ng)%pioVar(idsbry(isubar))%dkind=
pio_fout
2026 err(ng)%pioVar(idsbry(isubar))%gtype=u2dobc
2027 ELSE IF (trim(var_name(i)).eq. &
2028 & trim(vname(1,idsbry(isvbar)))) THEN
2029 got_var(idsbry(isvbar))=.true.
2030 err(ng)%pioVar(idsbry(isvbar))%vd=
var_desc(i)
2031 err(ng)%pioVar(idsbry(isvbar))%dkind=
pio_fout
2032 err(ng)%pioVar(idsbry(isvbar))%gtype=v2dobc
2033# endif
2034# ifdef ADJUST_WSTRESS
2035 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
2036 got_var(idusms)=.true.
2037 err(ng)%pioVar(idusms)%vd=
var_desc(i)
2038 err(ng)%pioVar(idusms)%dkind=
pio_fout
2039 err(ng)%pioVar(idusms)%gtype=u2dvar
2040 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
2041 got_var(idvsms)=.true.
2042 err(ng)%pioVar(idvsms)%vd=
var_desc(i)
2043 err(ng)%pioVar(idvsms)%dkind=
pio_fout
2044 err(ng)%pioVar(idvsms)%gtype=v2dvar
2045# endif
2046# ifdef SOLVE3D
2047 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
2048 got_var(iduvel)=.true.
2049 err(ng)%pioVar(iduvel)%vd=
var_desc(i)
2050 err(ng)%pioVar(iduvel)%dkind=
pio_fout
2051 err(ng)%pioVar(iduvel)%gtype=u3dvar
2052 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
2053 got_var(idvvel)=.true.
2054 err(ng)%pioVar(idvvel)%vd=
var_desc(i)
2055 err(ng)%pioVar(idvvel)%dkind=
pio_fout
2056 err(ng)%pioVar(idvvel)%gtype=v3dvar
2057# ifdef ADJUST_BOUNDARY
2058 ELSE IF (trim(var_name(i)).eq. &
2059 & trim(vname(1,idsbry(isuvel)))) THEN
2060 got_var(idsbry(isuvel))=.true.
2061 err(ng)%pioVar(idsbry(isuvel))%vd=
var_desc(i)
2062 err(ng)%pioVar(idsbry(isuvel))%dkind=
pio_fout
2063 err(ng)%pioVar(idsbry(isuvel))%gtype=u3dobc
2064 ELSE IF (trim(var_name(i)).eq. &
2065 & trim(vname(1,idsbry(isvvel)))) THEN
2066 got_var(idsbry(isvvel))=.true.
2067 err(ng)%pioVar(idsbry(isvvel))%vd=
var_desc(i)
2068 err(ng)%pioVar(idsbry(isvvel))%dkind=
pio_fout
2069 err(ng)%pioVar(idsbry(isvvel))%gtype=v3dobc
2070# endif
2071# endif
2072 END IF
2073# ifdef SOLVE3D
2074 DO itrc=1,nt(ng)
2075 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
2076 got_var(idtvar(itrc))=.true.
2077 err(ng)%pioTrc(itrc)%vd=
var_desc(i)
2078 err(ng)%pioTrc(itrc)%dkind=
pio_fout
2079 err(ng)%pioTrc(itrc)%gtype=r3dvar
2080# ifdef ADJUST_BOUNDARY
2081 ELSE IF (trim(var_name(i)).eq. &
2082 & trim(vname(1,idsbry(istvar(itrc))))) THEN
2083 got_var(idsbry(istvar(itrc)))=.true.
2084 err(ng)%pioVar(idsbry(istvar(itrc)))%vd=
var_desc(i)
2085 err(ng)%pioVar(idsbry(istvar(itrc)))%dkind=
pio_fout
2086 err(ng)%pioVar(idsbry(istvar(itrc)))%gtype=r3dobc
2087# endif
2088# ifdef ADJUST_STFLUX
2089 ELSE IF (trim(var_name(i)).eq. &
2090 & trim(vname(1,idtsur(itrc)))) THEN
2091 got_var(idtsur(itrc))=.true.
2092 err(ng)%pioVar(idtsur(itrc))%vd=
var_desc(i)
2093 err(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
2094 err(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
2095# endif
2096 END IF
2097 END DO
2098# endif
2099 END DO
2100
2101
2102
2103
2104 IF (.not.got_var(idtime)) THEN
2105 IF (master) WRITE (stdout,80) trim(vname(1,idtime)), &
2106 & trim(ncname)
2107 exit_flag=3
2108 RETURN
2109 END IF
2110 IF (.not.got_var(idfsur)) THEN
2111 IF (master) WRITE (stdout,80) trim(vname(1,idfsur)), &
2112 & trim(ncname)
2113 exit_flag=3
2114 RETURN
2115 END IF
2116 IF (.not.got_var(idubar)) THEN
2117 IF (master) WRITE (stdout,80) trim(vname(1,idubar)), &
2118 & trim(ncname)
2119 exit_flag=3
2120 RETURN
2121 END IF
2122 IF (.not.got_var(idvbar)) THEN
2123 IF (master) WRITE (stdout,80) trim(vname(1,idvbar)), &
2124 & trim(ncname)
2125 exit_flag=3
2126 RETURN
2127 END IF
2128# ifdef ADJUST_BOUNDARY
2129 IF (.not.got_var(idsbry(isfsur))) THEN
2130 IF (master) WRITE (stdout,80) trim(vname(1,idsbry(isfsur))), &
2131 & trim(ncname)
2132 exit_flag=3
2133 RETURN
2134 END IF
2135 IF (.not.got_var(idsbry(isubar))) THEN
2136 IF (master) WRITE (stdout,80) trim(vname(1,idsbry(isubar))), &
2137 & trim(ncname)
2138 exit_flag=3
2139 RETURN
2140 END IF
2141 IF (.not.got_var(idsbry(isvbar))) THEN
2142 IF (master) WRITE (stdout,80) trim(vname(1,idsbry(isvbar))), &
2143 & trim(ncname)
2144 exit_flag=3
2145 RETURN
2146 END IF
2147# endif
2148# ifdef ADJUST_WSTRESS
2149 IF (.not.got_var(idusms)) THEN
2150 IF (master) WRITE (stdout,80) trim(vname(1,idusms)), &
2151 & trim(ncname)
2152 exit_flag=3
2153 RETURN
2154 END IF
2155 IF (.not.got_var(idvsms)) THEN
2156 IF (master) WRITE (stdout,80) trim(vname(1,idvsms)), &
2157 & trim(ncname)
2158 exit_flag=3
2159 RETURN
2160 END IF
2161# endif
2162# ifdef SOLVE3D
2163 IF (.not.got_var(iduvel)) THEN
2164 IF (master) WRITE (stdout,80) trim(vname(1,iduvel)), &
2165 & trim(ncname)
2166 exit_flag=3
2167 RETURN
2168 END IF
2169 IF (.not.got_var(idvvel)) THEN
2170 IF (master) WRITE (stdout,80) trim(vname(1,idvvel)), &
2171 & trim(ncname)
2172 exit_flag=3
2173 RETURN
2174 END IF
2175# ifdef ADJUST_BOUNDARY
2176 IF (.not.got_var(idsbry(isuvel))) THEN
2177 IF (master) WRITE (stdout,80) trim(vname(1,idsbry(isuvel))), &
2178 & trim(ncname)
2179 exit_flag=3
2180 RETURN
2181 END IF
2182 IF (.not.got_var(idsbry(isvvel))) THEN
2183 IF (master) WRITE (stdout,80) trim(vname(1,idsbry(isvvel))), &
2184 & trim(ncname)
2185 exit_flag=3
2186 RETURN
2187 END IF
2188# endif
2189# endif
2190# ifdef SOLVE3D
2191 DO itrc=1,nt(ng)
2192 IF (.not.got_var(idtvar(itrc))) THEN
2193 IF (master) WRITE (stdout,80) trim(vname(1,idtvar(itrc))), &
2194 & trim(ncname)
2195 exit_flag=3
2196 RETURN
2197 END IF
2198# ifdef ADJUST_BOUNDARY
2199 IF (.not.got_var(idsbry(istvar(itrc)))) THEN
2200 IF (master) WRITE (stdout,80) &
2201 & trim(vname(1,idsbry(istvar(itrc)))), &
2202 & trim(ncname)
2203 exit_flag=3
2204 RETURN
2205 END IF
2206# endif
2207# ifdef ADJUST_STFLUX
2208 IF (.not.got_var(idtsur(itrc)).and.lstflux(itrc,ng)) THEN
2209 IF (master) WRITE (stdout,80) trim(vname(1,idtsur(itrc))), &
2210 & trim(ncname)
2211 exit_flag=3
2212 RETURN
2213 END IF
2214# endif
2215 END DO
2216# endif
2217
2218
2219
2220 err(ng)%Rindex=rec_size
2221 END IF query
2222
2223 10 FORMAT (2x,'DEF_ERROR_PIO - creating error file,',t56, &
2224 & 'Grid ',i2.2,': ',a)
2225 20 FORMAT (2x,'DEF_ERROR_PIO - inquiring error file,',t56, &
2226 & 'Grid ',i2.2,': ',a)
2227 30 FORMAT (/,' DEF_ERROR_PIO - unable to create 4DVar error NetCDF' &
2228 & ' file:',1x,a)
2229# if defined POSTERIOR_ERROR_I
2230 40 FORMAT (a,', initial posterior error variance')
2231# elif defined POSTERIOR_ERROR_F
2232 40 FORMAT (a,', final posterior error variance')
2233# endif
2234 50 FORMAT ('(',a,')^2')
2235 60 FORMAT (1pe11.4,1x,'millimeter')
2236 70 FORMAT (/,' DEF_ERROR_PIO - unable to open error NetCDF', &
2237 & ' file: ',a)
2238 80 FORMAT (/,' DEF_ERROR_PIO - unable to find variable: ',a,2x, &
2239 & ' in 4DVar error NetCDF file: ',a)
2240
2241 RETURN
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)