1017 & rmask, umask, vmask, &
1018# endif
1019# ifdef ADJUST_BOUNDARY
1020# ifdef SOLVE3D
1021 & s_t_obc, s_u_obc, s_v_obc, &
1022# endif
1023 & s_ubar_obc, s_vbar_obc, &
1024 & s_zeta_obc, &
1025# endif
1026# ifdef ADJUST_WSTRESS
1027 & s_ustr, s_vstr, &
1028# endif
1029# ifdef SOLVE3D
1030# ifdef ADJUST_STFLUX
1031 & s_tflux, &
1032# endif
1033 & s_t, s_u, s_v, &
1034# else
1035 & s_ubar, s_vbar, &
1036# endif
1037 & s_zeta)
1038
1039
1041
1042
1043
1044 logical, intent(in) :: Lreport
1045
1046 integer, intent(in) :: ng, tile, model
1047 integer, intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
1048 integer, intent(in) :: Lout, rec, nopen
1049
1050 TYPE (File_desc_t), intent(inout) :: pioFile
1051
1052 character (len=*), intent(in) :: ncname
1053
1054# ifdef ASSUMED_SHAPE
1055# ifdef MASKING
1056 real(r8), intent(in) :: rmask(LBi:,LBj:)
1057 real(r8), intent(in) :: umask(LBi:,LBj:)
1058 real(r8), intent(in) :: vmask(LBi:,LBj:)
1059# endif
1060# ifdef ADJUST_BOUNDARY
1061# ifdef SOLVE3D
1062 real(r8), intent(inout) :: s_t_obc(LBij:,:,:,:,:,:)
1063 real(r8), intent(inout) :: s_u_obc(LBij:,:,:,:,:)
1064 real(r8), intent(inout) :: s_v_obc(LBij:,:,:,:,:)
1065# endif
1066 real(r8), intent(inout) :: s_ubar_obc(LBij:,:,:,:)
1067 real(r8), intent(inout) :: s_vbar_obc(LBij:,:,:,:)
1068 real(r8), intent(inout) :: s_zeta_obc(LBij:,:,:,:)
1069# endif
1070# ifdef ADJUST_WSTRESS
1071 real(r8), intent(inout) :: s_ustr(LBi:,LBj:,:,:)
1072 real(r8), intent(inout) :: s_vstr(LBi:,LBj:,:,:)
1073# endif
1074# ifdef SOLVE3D
1075# ifdef ADJUST_STFLUX
1076 real(r8), intent(inout) :: s_tflux(LBi:,LBj:,:,:,:)
1077# endif
1078 real(r8), intent(inout) :: s_t(LBi:,LBj:,:,:,:)
1079 real(r8), intent(inout) :: s_u(LBi:,LBj:,:,:)
1080 real(r8), intent(inout) :: s_v(LBi:,LBj:,:,:)
1081# else
1082 real(r8), intent(inout) :: s_ubar(LBi:,LBj:,:)
1083 real(r8), intent(inout) :: s_vbar(LBi:,LBj:,:)
1084# endif
1085 real(r8), intent(inout) :: s_zeta(LBi:,LBj:,:)
1086
1087# else
1088
1089# ifdef MASKING
1090 real(r8), intent(in) :: rmask(LBi:UBi,LBj:UBj)
1091 real(r8), intent(in) :: umask(LBi:UBi,LBj:UBj)
1092 real(r8), intent(in) :: vmask(LBi:UBi,LBj:UBj)
1093# endif
1094# ifdef ADJUST_BOUNDARY
1095# ifdef SOLVE3D
1096 real(r8), intent(inout) :: s_t_obc(LBij:UBij,N(ng),4, &
1097 & Nbrec(ng),2,NT(ng))
1098 real(r8), intent(inout) :: s_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
1099 real(r8), intent(inout) :: s_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
1100# endif
1101 real(r8), intent(inout) :: s_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
1102 real(r8), intent(inout) :: s_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
1103 real(r8), intent(inout) :: s_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
1104# endif
1105# ifdef ADJUST_WSTRESS
1106 real(r8), intent(inout) :: s_ustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
1107 real(r8), intent(inout) :: s_vstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
1108# endif
1109# ifdef SOLVE3D
1110# ifdef ADJUST_STFLUX
1111 real(r8), intent(inout) :: s_tflux(LBi:UBi,LBj:UBj, &
1112 & Nfrec(ng),2,NT(ng))
1113# endif
1114 real(r8), intent(inout) :: s_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
1115 real(r8), intent(inout) :: s_u(LBi:UBi,LBj:UBj,N(ng),2)
1116 real(r8), intent(inout) :: s_v(LBi:UBi,LBj:UBj,N(ng),2)
1117# else
1118 real(r8), intent(inout) :: s_ubar(LBi:UBi,LBj:UBj,:)
1119 real(r8), intent(inout) :: s_vbar(LBi:UBi,LBj:UBj,:)
1120# endif
1121 real(r8), intent(inout) :: s_zeta(LBi:UBi,LBj:UBj,:)
1122# endif
1123
1124
1125
1126 integer :: Sstr, Send
1127 integer :: i, j, k
1128 integer :: ifield, itrc
1129 integer :: status
1130
1131 integer, dimension(4) :: Vsize
1132
1133 real(r8) :: Fmin, Fmax
1134 real(dp) :: stime, scale
1135
1136 character (len=15) :: Tstring
1137 character (len=22) :: t_code
1138
1139 character (len=*), parameter :: MyFile = &
1140 & __FILE__//", state_read_pio"
1141
1142 TYPE (IO_desc_t), pointer :: my_ioDesc
1143 TYPE (File_desc_t) :: my_pioFile
1144 TYPE (My_VarDesc) :: my_pioVar
1145
1146# include "set_bounds.h"
1147
1148 sourcefile=myfile
1149
1150
1151
1152
1153
1154# ifdef PROFILE
1155
1156
1157
1158 CALL wclock_on (ng, model, 80, __line__, myfile)
1159# endif
1160
1161
1162
1163 IF ((nopen.gt.0).or.(piofile%fh.eq.-1)) THEN
1165 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1166 piofile=my_piofile
1167 ELSE
1168 my_piofile=piofile
1169 END IF
1170
1171 DO i=1,4
1172 vsize(i)=0
1173 END DO
1174
1175#ifdef SP4DVAR
1176
1177
1178
1179
1180
1181
1183 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1184#endif
1185
1186
1187
1189 & rclock%DateNumber, stime, &
1190 & my_piofile, (/rec/), (/1/))
1191 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1192
1193
1194
1195 IF (master) THEN
1196 CALL time_string (stime, t_code)
1197 sstr=scan(calledfrom,'/',back=.true.)+1
1198 send=len_trim(calledfrom)
1199 WRITE (tstring,'(f15.4)') stime*sec2day
1200 WRITE (stdout,10) 'Reading state fields,', t_code, &
1201 & ng, tstring, trim(ncname), rec, lout, &
1202 & calledfrom(sstr:send)
1203 END IF
1204
1205
1206
1207 scale=1.0_dp
1209 & my_piofile, my_piovar%vd)
1210 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1211
1212 my_piovar%gtype=r2dvar
1213 IF (kind(s_zeta).eq.8) THEN
1214 my_piovar%dkind=pio_double
1216 ELSE
1217 my_piovar%dkind=pio_real
1219 END IF
1220
1221 status=nf_fread2d(ng, model, ncname, my_piofile, &
1222 & vname(1,idfsur), my_piovar, &
1223 & rec, my_iodesc, vsize, &
1224 & lbi, ubi, lbj, ubj, &
1225 & scale, fmin, fmax, &
1226# ifdef MASKING
1227 & rmask, &
1228# endif
1229 & s_zeta(:,:,lout))
1230 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1231 IF (master) THEN
1232 WRITE (stdout,30) trim(vname(1,idfsur)), rec, trim(ncname)
1233 END IF
1234 exit_flag=3
1235 ioerror=status
1236 RETURN
1237 ELSE
1238 IF (master.and.lreport) THEN
1239 WRITE (stdout,40) trim(vname(2,idfsur)), fmin, fmax
1240 END IF
1241 END IF
1242
1243# ifdef ADJUST_BOUNDARY
1244
1245
1246
1247 IF (any(lobc(:,isfsur,ng))) THEN
1248 ifield=idsbry(isfsur)
1249 scale=1.0_dp
1251 & my_piofile, my_piovar%vd)
1252 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1253
1254 my_piovar%gtype=r2dobc
1255 IF (kind(s_zeta_obc).eq.8) THEN
1256 my_piovar%dkind=pio_double
1258 ELSE
1259 my_piovar%dkind=pio_real
1261 END IF
1262
1263 status=nf_fread2d_bry(ng, model, ncname, my_piofile, &
1264 & vname(1,ifield), my_piovar, &
1265 & rec, my_iodesc, &
1266 & lbij, ubij, nbrec(ng), &
1267 & scale, fmin, fmax, &
1268 & s_zeta_obc(:,:,:,lout))
1269 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1270 IF (master) THEN
1271 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1272 END IF
1273 exit_flag=3
1274 ioerror=status
1275 RETURN
1276 ELSE
1277 IF (master.and.lreport) THEN
1278 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1279 END IF
1280 END IF
1281 END IF
1282# endif
1283
1284# ifndef SOLVE3D
1285
1286
1287
1288 scale=1.0_dp
1290 & my_piofile, my_piovar%vd)
1291 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1292
1293 my_piovar%gtype=u2dvar
1294 IF (kind(s_ubar).eq.8) THEN
1295 my_piovar%dkind=pio_double
1297 ELSE
1298 my_piovar%dkind=pio_real
1300 END IF
1301
1302 status=nf_fread2d(ng, model, ncname, my_piofile, &
1303 & vname(1,idubar), my_piovar, &
1304 & rec, my_iodesc, vsize, &
1305 & lbi, ubi, lbj, ubj, &
1306 & scale, fmin, fmax, &
1307# ifdef MASKING
1308 & umask, &
1309# endif
1310 & s_ubar(:,:,lout))
1311 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1312 IF (master) THEN
1313 WRITE (stdout,30) trim(vname(1,idubar)), rec, trim(ncname)
1314 END IF
1315 exit_flag=3
1316 ioerror=status
1317 RETURN
1318 ELSE
1319 IF (master.and.lreport) THEN
1320 WRITE (stdout,40) trim(vname(2,idubar)), fmin, fmax
1321 END IF
1322 END IF
1323
1324
1325
1326 scale=1.0_dp
1328 & my_piofile, my_piovar%vd)
1329 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1330
1331 my_piovar%gtype=v2dvar
1332 IF (kind(s_vbar).eq.8) THEN
1333 my_piovar%dkind=pio_double
1335 ELSE
1336 my_piovar%dkind=pio_real
1338 END IF
1339
1340 status=nf_fread2d(ng, model, ncname, my_piofile, &
1341 & vname(1,idvbar), my_piovar, &
1342 & rec, my_iodesc, vsize, &
1343 & lbi, ubi, lbj, ubj, &
1344 & scale, fmin, fmax, &
1345# ifdef MASKING
1346 & vmask, &
1347# endif
1348 & s_vbar(:,:,lout))
1349 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1350 IF (master) THEN
1351 WRITE (stdout,30) trim(vname(1,idvbar)), rec, trim(ncname)
1352 END IF
1353 exit_flag=3
1354 ioerror=status
1355 RETURN
1356 ELSE
1357 IF (master.and.lreport) THEN
1358 WRITE (stdout,40) trim(vname(2,idvbar)), fmin, fmax
1359 END IF
1360 END IF
1361# endif
1362
1363# ifdef ADJUST_BOUNDARY
1364
1365
1366
1367 IF (any(lobc(:,isubar,ng))) THEN
1368 ifield=idsbry(isubar)
1369 scale=1.0_dp
1371 & my_piofile, my_piovar%vd)
1372 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1373
1374 my_piovar%gtype=u2dobc
1375 IF (kind(s_ubar_obc).eq.8) THEN
1376 my_piovar%dkind=pio_double
1378 ELSE
1379 my_piovar%dkind=pio_real
1381 END IF
1382
1383 status=nf_fread2d_bry(ng, model, ncname, my_piofile, &
1384 & vname(1,ifield), my_piovar, &
1385 & rec, my_iodesc, &
1386 & lbij, ubij, nbrec(ng), &
1387 & scale, fmin, fmax, &
1388 & s_ubar_obc(:,:,:,lout))
1389 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1390 IF (master) THEN
1391 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1392 END IF
1393 exit_flag=3
1394 ioerror=status
1395 RETURN
1396 ELSE
1397 IF (master.and.lreport) THEN
1398 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1399 END IF
1400 END IF
1401 END IF
1402
1403
1404
1405 IF (any(lobc(:,isvbar,ng))) THEN
1406 ifield=idsbry(isvbar)
1407 scale=1.0_dp
1409 & my_piofile, my_piovar%vd)
1410 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1411
1412 my_piovar%gtype=v2dobc
1413 IF (kind(s_vbar_obc).eq.8) THEN
1414 my_piovar%dkind=pio_double
1416 ELSE
1417 my_piovar%dkind=pio_real
1419 END IF
1420
1421 status=nf_fread2d_bry(ng, model, ncname, my_piofile, &
1422 & vname(1,ifield), my_piovar, &
1423 & rec, my_iodesc, &
1424 & lbij, ubij, nbrec(ng), &
1425 & scale, fmin, fmax, &
1426 & s_vbar_obc(:,:,:,lout))
1427 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1428 IF (master) THEN
1429 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1430 END IF
1431 exit_flag=3
1432 ioerror=status
1433 RETURN
1434 ELSE
1435 IF (master.and.lreport) THEN
1436 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1437 END IF
1438 END IF
1439 END IF
1440# endif
1441
1442# ifdef ADJUST_WSTRESS
1443
1444
1445
1446 scale=1.0_dp
1448 & my_piofile, my_piovar%vd)
1449 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1450
1451 my_piovar%gtype=u2dvar
1452 IF (kind(s_ustr).eq.8) THEN
1453 my_piovar%dkind=pio_double
1455 ELSE
1456 my_piovar%dkind=pio_real
1458 END IF
1459
1460 status=nf_fread3d(ng, model, ncname, my_piofile, &
1461 & vname(1,idusms), my_piovar, &
1462 & rec, my_iodesc, vsize, &
1463 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1464 & scale, fmin, fmax, &
1465# ifdef MASKING
1466 & umask, &
1467# endif
1468 & s_ustr(:,:,:,lout))
1469 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1470 IF (master) THEN
1471 WRITE (stdout,30) trim(vname(1,idusms)), rec, trim(ncname)
1472 END IF
1473 exit_flag=3
1474 ioerror=status
1475 RETURN
1476 ELSE
1477 IF (master.and.lreport) THEN
1478 WRITE (stdout,40) trim(vname(2,idusms)), fmin, fmax
1479 END IF
1480 END IF
1481
1482 scale=1.0_dp
1484 & my_piofile, my_piovar%vd)
1485 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1486
1487 my_piovar%gtype=v2dvar
1488 IF (kind(s_vstr).eq.8) THEN
1489 my_piovar%dkind=pio_double
1491 ELSE
1492 my_piovar%dkind=pio_real
1494 END IF
1495
1496 status=nf_fread3d(ng, model, ncname, my_piofile, &
1497 & vname(1,idvsms), my_piovar, &
1498 & rec, my_iodesc, vsize, &
1499 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1500 & scale, fmin, fmax, &
1501# ifdef MASKING
1502 & vmask, &
1503# endif
1504 & s_vstr(:,:,:,lout))
1505 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1506 IF (master) THEN
1507 WRITE (stdout,30) trim(vname(1,idvsms)), rec, trim(ncname)
1508 END IF
1509 exit_flag=3
1510 ioerror=status
1511 RETURN
1512 ELSE
1513 IF (master.and.lreport) THEN
1514 WRITE (stdout,40) trim(vname(2,idvsms)), fmin, fmax
1515 END IF
1516 END IF
1517# endif
1518
1519# ifdef SOLVE3D
1520
1521
1522
1523 scale=1.0_dp
1525 & my_piofile, my_piovar%vd)
1526 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1527
1528 my_piovar%gtype=u3dvar
1529 IF (kind(s_u).eq.8) THEN
1530 my_piovar%dkind=pio_double
1532 ELSE
1533 my_piovar%dkind=pio_real
1535 END IF
1536
1537 status=nf_fread3d(ng, model, ncname, my_piofile, &
1538 & vname(1,iduvel), my_piovar, &
1539 & rec, my_iodesc, vsize, &
1540 & lbi, ubi, lbj, ubj, 1, n(ng), &
1541 & scale, fmin, fmax, &
1542# ifdef MASKING
1543 & umask, &
1544# endif
1545 & s_u(:,:,:,lout))
1546 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1547 IF (master) THEN
1548 WRITE (stdout,30) trim(vname(1,iduvel)), rec, trim(ncname)
1549 END IF
1550 exit_flag=3
1551 ioerror=status
1552 RETURN
1553 ELSE
1554 IF (master.and.lreport) THEN
1555 WRITE (stdout,40) trim(vname(2,iduvel)), fmin, fmax
1556 END IF
1557 END IF
1558
1559# ifdef ADJUST_BOUNDARY
1560
1561
1562
1563 IF (any(lobc(:,isuvel,ng))) THEN
1564 ifield=idsbry(isuvel)
1565 scale=1.0_dp
1567 & my_piofile, my_piovar%vd)
1568 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1569
1570 my_piovar%gtype=u3dobc
1571 IF (kind(s_u_obc).eq.8) THEN
1572 my_piovar%dkind=pio_double
1574 ELSE
1575 my_piovar%dkind=pio_real
1577 END IF
1578
1579 status=nf_fread3d_bry(ng, model, ncname, my_piofile, &
1580 & vname(1,ifield), my_piovar, &
1581 & rec, my_iodesc, &
1582 & lbij, ubij, 1, n(ng), nbrec(ng), &
1583 & scale, fmin, fmax, &
1584 & s_u_obc(:,:,:,:,lout))
1585 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1586 IF (master) THEN
1587 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1588 END IF
1589 exit_flag=3
1590 ioerror=status
1591 RETURN
1592 ELSE
1593 IF (master.and.lreport) THEN
1594 WRITE (stdout,40) trim(vname(1,ifield)), fmin, fmax
1595 END IF
1596 END IF
1597 END IF
1598# endif
1599
1600
1601
1602 scale=1.0_dp
1604 & my_piofile, my_piovar%vd)
1605 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1606
1607 my_piovar%gtype=v3dvar
1608 IF (kind(s_v).eq.8) THEN
1609 my_piovar%dkind=pio_double
1611 ELSE
1612 my_piovar%dkind=pio_real
1614 END IF
1615
1616 status=nf_fread3d(ng, model, ncname, my_piofile, &
1617 & vname(1,idvvel), my_piovar, &
1618 & rec, my_iodesc, vsize, &
1619 & lbi, ubi, lbj, ubj, 1, n(ng), &
1620 & scale, fmin, fmax, &
1621# ifdef MASKING
1622 & vmask, &
1623# endif
1624 & s_v(:,:,:,lout))
1625 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1626 IF (master) THEN
1627 WRITE (stdout,30) trim(vname(1,idvvel)), rec, trim(ncname)
1628 END IF
1629 exit_flag=3
1630 ioerror=status
1631 RETURN
1632 ELSE
1633 IF (master.and.lreport) THEN
1634 WRITE (stdout,40) trim(vname(2,idvvel)), fmin, fmax
1635 END IF
1636 END IF
1637
1638# ifdef ADJUST_BOUNDARY
1639
1640
1641
1642 IF (any(lobc(:,isvvel,ng))) THEN
1643 ifield=idsbry(isvvel)
1644 scale=1.0_dp
1646 & my_piofile, my_piovar%vd)
1647 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1648
1649 my_piovar%gtype=v3dobc
1650 IF (kind(s_v_obc).eq.8) THEN
1651 my_piovar%dkind=pio_double
1653 ELSE
1654 my_piovar%dkind=pio_real
1656 END IF
1657
1658 status=nf_fread3d_bry(ng, model, ncname, my_piofile, &
1659 & vname(1,ifield), my_piovar, &
1660 & rec, my_iodesc, &
1661 & lbij, ubij, 1, n(ng), nbrec(ng), &
1662 & scale, fmin, fmax, &
1663 & s_v_obc(:,:,:,:,lout))
1664 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1665 IF (master) THEN
1666 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1667 END IF
1668 exit_flag=3
1669 ioerror=status
1670 RETURN
1671 ELSE
1672 IF (master.and.lreport) THEN
1673 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1674 END IF
1675 END IF
1676 END IF
1677# endif
1678
1679
1680
1681 scale=1.0_dp
1682 DO itrc=1,nt(ng)
1684 & vname(1,idtvar(itrc)), &
1685 & my_piofile, my_piovar%vd)
1686 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1687
1688 my_piovar%gtype=r3dvar
1689 IF (kind(s_t).eq.8) THEN
1690 my_piovar%dkind=pio_double
1692 ELSE
1693 my_piovar%dkind=pio_real
1695 END IF
1696
1697 status=nf_fread3d(ng, model, ncname, my_piofile, &
1698 & vname(1,idtvar(itrc)), my_piovar, &
1699 & rec, my_iodesc, vsize, &
1700 & lbi, ubi, lbj, ubj, 1, n(ng), &
1701 & scale, fmin, fmax, &
1702# ifdef MASKING
1703 & rmask, &
1704# endif
1705 & s_t(:,:,:,lout,itrc))
1706 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1707 IF (master) THEN
1708 WRITE (stdout,30) trim(vname(1,idtvar(itrc))), rec, &
1709 & trim(ncname)
1710 END IF
1711 exit_flag=3
1712 ioerror=status
1713 RETURN
1714 ELSE
1715 IF (master.and.lreport) THEN
1716 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1717 END IF
1718 END IF
1719 END DO
1720
1721# ifdef ADJUST_BOUNDARY
1722
1723
1724
1725 DO itrc=1,nt(ng)
1726 IF (any(lobc(:,istvar(itrc),ng))) THEN
1727 ifield=idsbry(istvar(itrc))
1728 scale=1.0_dp
1730 & vname(1,ifield), &
1731 & my_piofile, my_piovar%vd)
1732 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1733
1734 my_piovar%gtype=r3dobc
1735 IF (kind(s_t_obc).eq.8) THEN
1736 my_piovar%dkind=pio_double
1738 ELSE
1739 my_piovar%dkind=pio_real
1741 END IF
1742
1743 status=nf_fread3d_bry(ng, model, ncname, my_piofile, &
1744 & vname(1,ifield), my_piovar, &
1745 & rec, my_iodesc, &
1746 & lbij, ubij, 1, n(ng), nbrec(ng), &
1747 & scale, fmin, fmax, &
1748 & s_t_obc(:,:,:,:,lout,itrc))
1749 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1750 IF (master) THEN
1751 WRITE (stdout,30) trim(vname(1,ifield)), rec, trim(ncname)
1752 END IF
1753 exit_flag=3
1754 ioerror=status
1755 RETURN
1756 ELSE
1757 IF (master.and.lreport) THEN
1758 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1759 END IF
1760 END IF
1761 END IF
1762 END DO
1763# endif
1764
1765# ifdef ADJUST_STFLUX
1766
1767
1768
1769 scale=1.0_dp
1770 DO itrc=1,nt(ng)
1771 IF (lstflux(itrc,ng)) THEN
1773 & vname(1,idtsur(itrc)), &
1774 & my_piofile, my_piovar%vd)
1775 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1776
1777 my_piovar%gtype=r2dvar
1778 IF (kind(s_tflux).eq.8) THEN
1779 my_piovar%dkind=pio_double
1781 ELSE
1782 my_piovar%dkind=pio_real
1784 END IF
1785
1786 status=nf_fread3d(ng, model, ncname, my_piofile, &
1787 & vname(1,idtsur(itrc)), my_piovar, &
1788 & rec, my_iodesc, vsize, &
1789 & lbi, ubi, lbj, ubj, 1, nfrec(ng), &
1790 & scale, fmin, fmax, &
1791# ifdef MASKING
1792 & rmask, &
1793# endif
1794 & s_tflux(:,:,:,lout,itrc))
1795 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1796 IF (master) THEN
1797 WRITE (stdout,30) trim(vname(1,idtsur(itrc))), rec, &
1798 & trim(ncname)
1799 END IF
1800 exit_flag=3
1801 ioerror=status
1802 RETURN
1803 ELSE
1804 IF (master.and.lreport) THEN
1805 WRITE (stdout,40) trim(vname(2,ifield)), fmin, fmax
1806 END IF
1807 END IF
1808 END IF
1809 END DO
1810# endif
1811# endif
1812
1813
1814
1815 IF (nopen.gt.0) THEN
1817 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1818 END IF
1819
1820# ifdef PROFILE
1821
1822
1823
1824 CALL wclock_off (ng, model, 80, __line__, myfile)
1825# endif
1826
1827 10 FORMAT ('STATE_READ_PIO - ',a,t75,a, &
1828 & /,19x,'(Grid ',i2.2,', t = ',a,', File: ',a, &
1829 & ', Rec=',i4.4,', Index=',i1,')', &
1830 & /,19x,'Called from ''',a,'''')
1831 20 FORMAT (' STATE_READ_PIO - unable to open NetCDF file: ',a)
1832 30 FORMAT (' STATE_READ_PIO - error while reading variable: ',a,2x, &
1833 & 'at time record = ',i3,/,14x,'in NetCDF file: ',a)
1834 40 FORMAT (16x,'- ',a,/,19x,'(Min = ',1p,e15.8, &
1835 & ' Max = ',1p,e15.8,')')
1836
1837 RETURN
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dobc
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dobc
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dobc
subroutine, public pio_netcdf_close(ng, model, piofile, ncname, lupdate)
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dobc
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dfrc
subroutine, public pio_netcdf_inq_varid(ng, model, ncname, myvarname, piofile, piovar)
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dfrc
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dobc
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dfrc