1265
1266
1268
1269
1270
1271 integer, intent(in) :: ng, model, tile
1272# ifdef ADJUST_BOUNDARY
1273 integer, intent(in) :: LBij, UBij
1274# endif
1275 integer, intent(in) :: LBi, UBi, LBj, UBj
1276
1277
1278
1279 integer :: Fcount, ifield, status
1280# ifdef SOLVE3D
1281 integer :: i, itrc, j, k
1282# endif
1283
1284 real(dp) :: scale
1285 real(r8) :: Tval(1)
1286
1287 character (len=*), parameter :: MyFile = &
1288 & __FILE__//", tl_wrt_his_pio"
1289
1290 TYPE (IO_desc_t), pointer :: ioDesc
1291
1292 sourcefile=myfile
1293
1294
1295
1296
1297
1298 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1299
1300
1301
1302 tlm(ng)%Rindex=tlm(ng)%Rindex+1
1303 fcount=tlm(ng)%load
1304 tlm(ng)%Nrec(fcount)=tlm(ng)%Nrec(fcount)+1
1305
1306
1307
1308# ifdef SOLVE3D
1309# ifdef NESTING
1310 IF (master) WRITE (stdout,10) kout, nout, tlm(ng)%Rindex, ng
1311# else
1312 IF (master) WRITE (stdout,10) kout, nout, tlm(ng)%Rindex
1313# endif
1314# else
1315# ifdef NESTING
1316 IF (master) WRITE (stdout,10) kout, tlm(ng)%Rindex, ng
1317# else
1318 IF (master) WRITE (stdout,10) kout, tlm(ng)%Rindex
1319# endif
1320# endif
1321
1322
1323
1324
1325 IF (lcycletlm(ng)) THEN
1326 tlm(ng)%Rindex=mod(tlm(ng)%Rindex-1,2)+1
1327 END IF
1328
1329
1330
1331 IF (lwrtper(ng)) THEN
1332 tval(1)=real(tlm(ng)%Rindex,r8)*day2sec
1333 ELSE
1334 tval(1)=time(ng)
1335 END IF
1337 & trim(vname(1,idtime)), tval, &
1338 & (/tlm(ng)%Rindex/), (/1/), &
1339 & piofile = tlm(ng)%pioFile, &
1340 & piovar = tlm(ng)%pioVar(idtime)%vd)
1341 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1342
1343# ifdef ADJUST_WSTRESS
1344
1345
1346
1347
1348
1349 scale=1.0_dp
1350 IF (tlm(ng)%pioVar(idusms)%dkind.eq.pio_double) THEN
1352 ELSE
1354 END IF
1355
1356 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idusms, &
1357 & tlm(ng)%pioVar(idusms), &
1358 & tlm(ng)%Rindex, iodesc, &
1359 & lbi, ubi, lbj, ubj, 1, nfrec(ng), scale, &
1360# ifdef MASKING
1361 & grid(ng) % umask, &
1362# endif
1363 & forces(ng) % tl_ustr(:,:,:,lfout(ng)))
1364 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1365 IF (master) THEN
1366 WRITE (stdout,20) trim(vname(1,idusms)), lfout(ng)
1367 END IF
1368 exit_flag=3
1369 ioerror=status
1370 RETURN
1371 END IF
1372
1373
1374
1375 scale=1.0_dp
1376 IF (tlm(ng)%pioVar(idvsms)%dkind.eq.pio_double) THEN
1378 ELSE
1380 END IF
1381
1382 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvsms, &
1383 & tlm(ng)%pioVar(idvsms), &
1384 & tlm(ng)%Rindex, iodesc, &
1385 & lbi, ubi, lbj, ubj, 1, nfrec(ng), scale, &
1386# ifdef MASKING
1387 & grid(ng) % vmask, &
1388# endif
1389 & forces(ng) % tl_vstr(:,:,:,lfout(ng)))
1390 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1391 IF (master) THEN
1392 WRITE (stdout,20) trim(vname(1,idvsms)), lfout(ng)
1393 END IF
1394 exit_flag=3
1395 ioerror=status
1396 RETURN
1397 END IF
1398# endif
1399# if defined ADJUST_STFLUX && defined SOLVE3D
1400
1401
1402
1403
1404
1405 DO itrc=1,nt(ng)
1406 IF (lstflux(itrc,ng)) THEN
1407 scale=1.0_dp
1408 IF (tlm(ng)%pioVar(idtsur(itrc))%dkind.eq.pio_double) THEN
1410 ELSE
1412 END IF
1413
1414 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idtsur(itrc), &
1415 & tlm(ng)%pioVar(idtsur(itrc)), &
1416 & tlm(ng)%Rindex, iodesc, &
1417 & lbi, ubi, lbj, ubj, 1, nfrec(ng), scale, &
1418# ifdef MASKING
1419 & grid(ng) % rmask, &
1420# endif
1421 & forces(ng)% tl_tflux(:,:,:,lfout(ng),itrc))
1422 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1423 IF (master) THEN
1424 WRITE (stdout,20) trim(vname(1,idtsur(itrc))), lfout(ng)
1425 END IF
1426 exit_flag=3
1427 ioerror=status
1428 RETURN
1429 END IF
1430 END IF
1431 END DO
1432# endif
1433# if defined FORCING_SV || defined STOCHASTIC_OPT || \
1434 defined hessian_so || defined hessian_fsv
1435
1436
1437
1438 IF (hout(idusms,ng)) THEN
1439 scale=1.0_dp
1440 IF (tlm(ng)%pioVar(idusms)%dkind.eq.pio_double) THEN
1442 ELSE
1444 END IF
1445
1446 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idusms, &
1447 & tlm(ng)%pioVar(idusms), &
1448 & tlm(ng)%Rindex, iodesc, &
1449 & lbi, ubi, lbj, ubj, scale, &
1450# ifdef MASKING
1451 & grid(ng) % umask, &
1452# endif
1453 & forces(ng) % tl_sustr)
1454 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1455 IF (master) THEN
1456 WRITE (stdout,20) trim(vname(1,idusms)), tlm(ng)%Rindex
1457 END IF
1458 exit_flag=3
1459 ioerror=status
1460 RETURN
1461 END IF
1462 END IF
1463
1464
1465
1466 IF (hout(idvsms,ng)) THEN
1467 scale=1.0_dp
1468 IF (tlm(ng)%pioVar(idvsms)%dkind.eq.pio_double) THEN
1470 ELSE
1472 END IF
1473
1474 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idvsms, &
1475 & tlm(ng)%pioVar(idvsms), &
1476 & tlm(ng)%Rindex, iodesc, &
1477 & lbi, ubi, lbj, ubj, scale, &
1478# ifdef MASKING
1479 & grid(ng) % vmask, &
1480# endif
1481 & forces(ng) % tl_svstr)
1482 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1483 IF (master) THEN
1484 WRITE (stdout,20) trim(vname(1,idvsms)), tlm(ng)%Rindex
1485 END IF
1486 exit_flag=3
1487 ioerror=status
1488 RETURN
1489 END IF
1490 END IF
1491
1492# ifdef SOLVE3D
1493
1494
1495
1496 DO itrc=1,nt(ng)
1497 IF (hout(idtsur(itrc),ng)) THEN
1498 scale=1.0_dp
1499 IF (tlm(ng)%pioVar(idtsur(itrc))%dkind.eq.pio_double) THEN
1501 ELSE
1503 END IF
1504
1505 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idtsur(itrc), &
1506 & tlm(ng)%pioVar(idtsur(itrc)), &
1507 & tlm(ng)%Rindex, iodesc, &
1508 & lbi, ubi, lbj, ubj, scale, &
1509# ifdef MASKING
1510 & grid(ng) % rmask, &
1511# endif
1512 & forces(ng) % tl_stflx(:,:,itrc))
1513 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1514 IF (master) THEN
1515 WRITE (stdout,20) trim(vname(1,idtsur(itrc))), &
1516 & tlm(ng)%Rindex
1517 END IF
1518 exit_flag=3
1519 ioerror=status
1520 RETURN
1521 END IF
1522 END IF
1523 END DO
1524# endif
1525# endif
1526# ifdef SOLVE3D
1527
1528
1529
1530 IF (hout(idpthr,ng)) THEN
1531 scale=1.0_dp
1532 IF (his(ng)%pioVar(idpthr)%dkind.eq.pio_double) THEN
1534 ELSE
1536 END IF
1537 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idpthr, &
1538 & tlm(ng)%pioVar(idpthr), &
1539 & tlm(ng)%Rindex, &
1540 & iodesc, &
1541 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
1542# ifdef MASKING
1543 & grid(ng) % rmask, &
1544# endif
1545 & grid(ng) % tl_z_r, &
1546 & setfillval = .false.)
1547 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1548 IF (master) THEN
1549 WRITE (stdout,20) trim(vname(1,idpthr)), tlm(ng)%Rindex
1550 END IF
1551 exit_flag=3
1552 ioerror=status
1553 RETURN
1554 END IF
1555 END IF
1556
1557
1558
1559 IF (hout(idpthw,ng)) THEN
1560 scale=1.0_dp
1561 IF (his(ng)%pioVar(idpthw)%dkind.eq.pio_double) THEN
1563 ELSE
1565 END IF
1566 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idpthw, &
1567 & tlm(ng)%pioVar(idpthw), &
1568 & tlm(ng)%Rindex, &
1569 & iodesc, &
1570 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
1571# ifdef MASKING
1572 & grid(ng) % rmask, &
1573# endif
1574 & grid(ng) % tl_z_w, &
1575 & setfillval = .false.)
1576 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1577 IF (master) THEN
1578 WRITE (stdout,20) trim(vname(1,idpthw)), tlm(ng)%Rindex
1579 END IF
1580 exit_flag=3
1581 ioerror=status
1582 RETURN
1583 END IF
1584 END IF
1585# endif
1586
1587
1588
1589 IF (hout(idfsur,ng)) THEN
1590 scale=1.0_dp
1591 IF (tlm(ng)%pioVar(idfsur)%dkind.eq.pio_double) THEN
1593 ELSE
1595 END IF
1596
1597 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idfsur, &
1598 & tlm(ng)%pioVar(idfsur), &
1599 & tlm(ng)%Rindex, iodesc, &
1600 & lbi, ubi, lbj, ubj, scale, &
1601# ifdef MASKING
1602 & grid(ng) % rmask, &
1603# endif
1604# ifdef WET_DRY
1605 & ocean(ng) % tl_zeta(:,:,kout), &
1606 & setfillval = .false.)
1607# else
1608# ifdef FORCING_SV
1609 & ocean(ng) % f_zeta(:,:))
1610# else
1611 & ocean(ng) % tl_zeta(:,:,kout))
1612# endif
1613# endif
1614 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1615 IF (master) THEN
1616 WRITE (stdout,20) trim(vname(1,idfsur)), tlm(ng)%Rindex
1617 END IF
1618 exit_flag=3
1619 ioerror=status
1620 RETURN
1621 END IF
1622
1623# if defined FORWARD_WRITE && defined FORWARD_RHS
1624
1625 IF (tlm(ng)%pioVar(idrzet)%dkind.eq.pio_double) THEN
1627 ELSE
1629 END IF
1630
1631 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idrzet, &
1632 & tlm(ng)%pioVar(idrzet), &
1633 & tlm(ng)%Rindex, iodesc, &
1634 & lbi, ubi, lbj, ubj, scale, &
1635# ifdef MASKING
1636 & grid(ng) % rmask, &
1637# endif
1638 & ocean(ng) % tl_rzeta(:,:,kout))
1639 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1640 IF (master) THEN
1641 WRITE (stdout,20) trim(vname(1,idrzet)), tlm(ng)%Rindex
1642 END IF
1643 exit_flag=3
1644 ioerror=status
1645 RETURN
1646 END IF
1647# endif
1648 END IF
1649
1650# ifdef ADJUST_BOUNDARY
1651
1652
1653
1654 IF (any(lobc(:,isfsur,ng))) THEN
1655 scale=1.0_dp
1656 ifield=idsbry(isfsur)
1657 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
1659 ELSE
1661 END IF
1662
1663 status=nf_fwrite2d_bry(ng, model, tlm(ng)%name, &
1664 & tlm(ng)%pioFile, &
1665 & vname(1,ifield), &
1666 & tlm(ng)%pioVar(ifield), &
1667 & tlm(ng)%Rindex, iodesc, &
1668 & lbij, ubij, nbrec(ng), scale, &
1669 & boundary(ng) % tl_zeta_obc(lbij:,:,:, &
1670 & lbout(ng)))
1671 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1672 IF (master) THEN
1673 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
1674 END IF
1675 exit_flag=3
1676 ioerror=status
1677 RETURN
1678 END IF
1679 END IF
1680# endif
1681
1682
1683
1684 IF (hout(idubar,ng)) THEN
1685 scale=1.0_dp
1686 IF (tlm(ng)%pioVar(idubar)%dkind.eq.pio_double) THEN
1688 ELSE
1690 END IF
1691
1692 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idubar, &
1693 & tlm(ng)%pioVar(idubar), &
1694 & tlm(ng)%Rindex, iodesc, &
1695 & lbi, ubi, lbj, ubj, scale, &
1696# ifdef MASKING
1697 & grid(ng) % umask_full, &
1698# endif
1699# ifdef FORCING_SV
1700 & ocean(ng) % f_ubar(:,:))
1701# else
1702 & ocean(ng) % tl_ubar(:,:,kout))
1703# endif
1704 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1705 IF (master) THEN
1706 WRITE (stdout,20) trim(vname(1,idubar)), tlm(ng)%Rindex
1707 END IF
1708 exit_flag=3
1709 ioerror=status
1710 RETURN
1711 END IF
1712
1713# ifdef FORWARD_WRITE
1714# ifdef FORWARD_RHS
1715
1716 IF (tlm(ng)%pioVar(idru2d)%dkind.eq.pio_double) THEN
1718 ELSE
1720 END IF
1721
1722 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idru2d, &
1723 & tlm(ng)%pioVar(idru2d), &
1724 & tlm(ng)%Rindex, iodesc, &
1725 & lbi, ubi, lbj, ubj, scale, &
1726# ifdef MASKING
1727 & grid(ng) % umask_full, &
1728# endif
1729 & ocean(ng) % tl_rubar(:,:,kout))
1730 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1731 IF (master) THEN
1732 WRITE (stdout,20) trim(vname(1,idru2d)), tlm(ng)%Rindex
1733 END IF
1734 exit_flag=3
1735 ioerror=status
1736 RETURN
1737 END IF
1738# endif
1739# ifdef SOLVE3D
1740# ifdef FORWARD_RHS
1741
1742 IF (tlm(ng)%pioVar(idruct)%dkind.eq.pio_double) THEN
1744 ELSE
1746 END IF
1747
1748 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idruct, &
1749 & tlm(ng)%pioVar(idruct), &
1750 & tlm(ng)%Rindex, iodesc, &
1751 & lbi, ubi, lbj, ubj, scale, &
1752# ifdef MASKING
1753 & grid(ng) % umask_full, &
1754# endif
1755 & coupling(ng) % tl_rufrc)
1756 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1757 IF (master) THEN
1758 WRITE (stdout,20) trim(vname(1,idruct)), tlm(ng)%Rindex
1759 END IF
1760 exit_flag=3
1761 ioerror=status
1762 RETURN
1763 END IF
1764# endif
1765
1766 IF (tlm(ng)%pioVar(idufx1)%dkind.eq.pio_double) THEN
1768 ELSE
1770 END IF
1771
1772 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idufx1, &
1773 & tlm(ng)%pioVar(idufx1), &
1774 & tlm(ng)%Rindex, iodesc, &
1775 & lbi, ubi, lbj, ubj, scale, &
1776# ifdef MASKING
1777 & grid(ng) % umask_full, &
1778# endif
1779 & coupling(ng) % tl_DU_avg1)
1780 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1781 IF (master) THEN
1782 WRITE (stdout,20) trim(vname(1,idufx1)), tlm(ng)%Rindex
1783 END IF
1784 exit_flag=3
1785 ioerror=status
1786 RETURN
1787 END IF
1788
1789 IF (tlm(ng)%pioVar(idufx2)%dkind.eq.pio_double) THEN
1791 ELSE
1793 END IF
1794
1795 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idufx2, &
1796 & tlm(ng)%pioVar(idufx2), &
1797 & tlm(ng)%Rindex, iodesc, &
1798 & lbi, ubi, lbj, ubj, scale, &
1799# ifdef MASKING
1800 & grid(ng) % umask_full, &
1801# endif
1802 & coupling(ng) % tl_DU_avg2)
1803 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1804 IF (master) THEN
1805 WRITE (stdout,20) trim(vname(1,idufx2)), tlm(ng)%Rindex
1806 END IF
1807 exit_flag=3
1808 ioerror=status
1809 RETURN
1810 END IF
1811# endif
1812# endif
1813 END IF
1814
1815# ifdef ADJUST_BOUNDARY
1816
1817
1818
1819 IF (any(lobc(:,isubar,ng))) THEN
1820 scale=1.0_dp
1821 ifield=idsbry(isubar)
1822 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
1824 ELSE
1826 END IF
1827
1828 status=nf_fwrite2d_bry(ng, model, tlm(ng)%name, &
1829 & tlm(ng)%pioFile, &
1830 & vname(1,ifield), &
1831 & tlm(ng)%pioVar(ifield), &
1832 & tlm(ng)%Rindex, iodesc, &
1833 & lbij, ubij, nbrec(ng), scale, &
1834 & boundary(ng) % tl_ubar_obc(lbij:,:,:, &
1835 & lbout(ng)))
1836 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1837 IF (master) THEN
1838 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
1839 END IF
1840 exit_flag=3
1841 ioerror=status
1842 RETURN
1843 END IF
1844 END IF
1845# endif
1846
1847
1848
1849 IF (hout(idvbar,ng)) THEN
1850 scale=1.0_dp
1851 IF (tlm(ng)%pioVar(idvbar)%dkind.eq.pio_double) THEN
1853 ELSE
1855 END IF
1856
1857 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idvbar, &
1858 & tlm(ng)%pioVar(idvbar), &
1859 & tlm(ng)%Rindex, iodesc, &
1860 & lbi, ubi, lbj, ubj, scale, &
1861# ifdef MASKING
1862 & grid(ng) % vmask_full, &
1863# endif
1864# ifdef FORCING_SV
1865 & ocean(ng) % f_vbar(:,:))
1866# else
1867 & ocean(ng) % tl_vbar(:,:,kout))
1868# endif
1869 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1870 IF (master) THEN
1871 WRITE (stdout,20) trim(vname(1,idvbar)), tlm(ng)%Rindex
1872 END IF
1873 exit_flag=3
1874 ioerror=status
1875 RETURN
1876 END IF
1877
1878# ifdef FORWARD_WRITE
1879# ifdef FORWARD_RHS
1880
1881 IF (tlm(ng)%pioVar(idrv2d)%dkind.eq.pio_double) THEN
1883 ELSE
1885 END IF
1886
1887 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idrv2d, &
1888 & tlm(ng)%pioVar(idrv2d), &
1889 & tlm(ng)%Rindex, iodesc, &
1890 & lbi, ubi, lbj, ubj, scale, &
1891# ifdef MASKING
1892 & grid(ng) % vmask_full, &
1893# endif
1894 & ocean(ng) % tl_rvbar(:,:,kout))
1895 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1896 IF (master) THEN
1897 WRITE (stdout,20) trim(vname(1,idrv2d)), tlm(ng)%Rindex
1898 END IF
1899 exit_flag=3
1900 ioerror=status
1901 RETURN
1902 END IF
1903# endif
1904# ifdef SOLVE3D
1905# ifdef FORWARD_RHS
1906
1907 IF (tlm(ng)%pioVar(idrvct)%dkind.eq.pio_double) THEN
1909 ELSE
1911 END IF
1912
1913 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idrvct, &
1914 & tlm(ng)%pioVar(idrvct), &
1915 & tlm(ng)%Rindex, iodesc, &
1916 & lbi, ubi, lbj, ubj, scale, &
1917# ifdef MASKING
1918 & grid(ng) % vmask_full, &
1919# endif
1920 & coupling(ng) % tl_rvfrc)
1921 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1922 IF (master) THEN
1923 WRITE (stdout,20) trim(vname(1,idrvct)), tlm(ng)%Rindex
1924 END IF
1925 exit_flag=3
1926 ioerror=status
1927 RETURN
1928 END IF
1929# endif
1930
1931 IF (tlm(ng)%pioVar(idvfx1)%dkind.eq.pio_double) THEN
1933 ELSE
1935 END IF
1936
1937 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idvfx1, &
1938 & tlm(ng)%pioVar(idvfx1), &
1939 & tlm(ng)%Rindex, iodesc, &
1940 & lbi, ubi, lbj, ubj, scale, &
1941# ifdef MASKING
1942 & grid(ng) % vmask_full, &
1943# endif
1944 & coupling(ng) % tl_DV_avg1)
1945 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1946 IF (master) THEN
1947 WRITE (stdout,20) trim(vname(1,idvfx1)), tlm(ng)%Rindex
1948 END IF
1949 exit_flag=3
1950 ioerror=status
1951 RETURN
1952 END IF
1953
1954 IF (tlm(ng)%pioVar(idvfx2)%dkind.eq.pio_double) THEN
1956 ELSE
1958 END IF
1959
1960 status=nf_fwrite2d(ng, model, tlm(ng)%pioFile, idvfx2, &
1961 & tlm(ng)%pioVar(idvfx2), &
1962 & tlm(ng)%Rindex, iodesc, &
1963 & lbi, ubi, lbj, ubj, scale, &
1964# ifdef MASKING
1965 & grid(ng) % vmask_full, &
1966# endif
1967 & coupling(ng) % tl_DV_avg2)
1968 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
1969 IF (master) THEN
1970 WRITE (stdout,20) trim(vname(1,idvfx2)), tlm(ng)%Rindex
1971 END IF
1972 exit_flag=3
1973 ioerror=status
1974 RETURN
1975 END IF
1976# endif
1977# endif
1978 END IF
1979
1980# ifdef ADJUST_BOUNDARY
1981
1982
1983
1984 IF (any(lobc(:,isvbar,ng))) THEN
1985 scale=1.0_dp
1986 ifield=idsbry(isvbar)
1987 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
1989 ELSE
1991 END IF
1992
1993 status=nf_fwrite2d_bry(ng, model, tlm(ng)%name, &
1994 & tlm(ng)%pioFile, &
1995 & vname(1,ifield), &
1996 & tlm(ng)%pioVar(ifield), &
1997 & tlm(ng)%Rindex, iodesc, &
1998 & lbij, ubij, nbrec(ng), scale, &
1999 & boundary(ng) % tl_vbar_obc(lbij:,:,:, &
2000 & lbout(ng)))
2001 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2002 IF (master) THEN
2003 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
2004 END IF
2005 exit_flag=3
2006 ioerror=status
2007 RETURN
2008 END IF
2009 END IF
2010# endif
2011# ifdef SOLVE3D
2012
2013
2014
2015 IF (hout(iduvel,ng)) THEN
2016 scale=1.0_dp
2017 IF (tlm(ng)%pioVar(iduvel)%dkind.eq.pio_double) THEN
2019 ELSE
2021 END IF
2022
2023 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, iduvel, &
2024 & tlm(ng)%pioVar(iduvel), &
2025 & tlm(ng)%Rindex, iodesc, &
2026 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2027# ifdef MASKING
2028 & grid(ng) % umask_full, &
2029# endif
2030# ifdef FORCING_SV
2031 & ocean(ng) % f_u(:,:,:))
2032# else
2033 & ocean(ng) % tl_u(:,:,:,nout))
2034# endif
2035 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2036 IF (master) THEN
2037 WRITE (stdout,20) trim(vname(1,iduvel)), tlm(ng)%Rindex
2038 END IF
2039 exit_flag=3
2040 ioerror=status
2041 RETURN
2042 END IF
2043
2044# if defined FORWARD_WRITE && defined FORWARD_RHS
2045
2046 IF (tlm(ng)%pioVar(idru3d)%dkind.eq.pio_double) THEN
2048 ELSE
2050 END IF
2051
2052 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idru3d, &
2053 & tlm(ng)%pioVar(idru3d), &
2054 & tlm(ng)%Rindex, iodesc, &
2055 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2056# ifdef MASKING
2057 & grid(ng) % umask_full, &
2058# endif
2059 & ocean(ng) % tl_ru(:,:,:,nout))
2060 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2061 IF (master) THEN
2062 WRITE (stdout,20) trim(vname(1,idru3d)), tlm(ng)%Rindex
2063 END IF
2064 exit_flag=3
2065 ioerror=status
2066 RETURN
2067 END IF
2068# endif
2069 END IF
2070
2071# ifdef ADJUST_BOUNDARY
2072
2073
2074
2075 IF (any(lobc(:,isuvel,ng))) THEN
2076 scale=1.0_dp
2077 ifield=idsbry(isuvel)
2078 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
2080 ELSE
2082 END IF
2083
2084 status=nf_fwrite3d_bry(ng, model, tlm(ng)%name, &
2085 & tlm(ng)%pioFile, &
2086 & vname(1,ifield), &
2087 & tlm(ng)%pioVar(ifield), &
2088 & tlm(ng)%Rindex, iodesc, &
2089 & lbij, ubij, 1, n(ng), nbrec(ng), scale, &
2090 & boundary(ng) % tl_u_obc(lbij:,:,:,:, &
2091 & lbout(ng)))
2092 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2093 IF (master) THEN
2094 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
2095 END IF
2096 exit_flag=3
2097 ioerror=status
2098 RETURN
2099 END IF
2100 END IF
2101# endif
2102
2103
2104
2105 IF (hout(idvvel,ng)) THEN
2106 scale=1.0_dp
2107 IF (tlm(ng)%pioVar(idvvel)%dkind.eq.pio_double) THEN
2109 ELSE
2111 END IF
2112
2113 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvvel, &
2114 & tlm(ng)%pioVar(idvvel), &
2115 & tlm(ng)%Rindex, iodesc, &
2116 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2117# ifdef MASKING
2118 & grid(ng) % vmask_full, &
2119# endif
2120# ifdef FORCING_SV
2121 & ocean(ng) % f_v(:,:,:))
2122# else
2123 & ocean(ng) % tl_v(:,:,:,nout))
2124# endif
2125 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2126 IF (master) THEN
2127 WRITE (stdout,20) trim(vname(1,idvvel)), tlm(ng)%Rindex
2128 END IF
2129 exit_flag=3
2130 ioerror=status
2131 RETURN
2132 END IF
2133
2134# if defined FORWARD_WRITE && defined FORWARD_RHS
2135
2136 IF (tlm(ng)%pioVar(idrv3d)%dkind.eq.pio_double) THEN
2138 ELSE
2140 END IF
2141
2142 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idrv3d, &
2143 & tlm(ng)%pioVar(idrv3d), &
2144 & tlm(ng)%Rindex, iodesc, &
2145 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2146# ifdef MASKING
2147 & grid(ng) % vmask_full, &
2148# endif
2149 & ocean(ng) % tl_rv(:,:,:,nout))
2150 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2151 IF (master) THEN
2152 WRITE (stdout,20) trim(vname(1,idrv3d)), tlm(ng)%Rindex
2153 END IF
2154 exit_flag=3
2155 ioerror=status
2156 RETURN
2157 END IF
2158# endif
2159 END IF
2160
2161# ifdef ADJUST_BOUNDARY
2162
2163
2164
2165 IF (any(lobc(:,isvvel,ng))) THEN
2166 scale=1.0_dp
2167 ifield=idsbry(isvvel)
2168 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
2170 ELSE
2172 END IF
2173
2174 status=nf_fwrite3d_bry(ng, model, tlm(ng)%name, &
2175 & tlm(ng)%pioFile, &
2176 & vname(1,ifield), &
2177 & tlm(ng)%pioVar(ifield), &
2178 & tlm(ng)%Rindex, iodesc, &
2179 & lbij, ubij, 1, n(ng), nbrec(ng), scale, &
2180 & boundary(ng) % tl_v_obc(lbij:,:,:,:, &
2181 & lbout(ng)))
2182 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2183 IF (master) THEN
2184 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
2185 END IF
2186 exit_flag=3
2187 ioerror=status
2188 RETURN
2189 END IF
2190 END IF
2191# endif
2192# ifdef UV_DESTAGGERED
2193
2194
2195
2196 IF (hout(idu3de,ng)) THEN
2197 scale=1.0_dp
2198 IF (tlm(ng)%pioVar(idu3de)%dkind.eq.pio_double) THEN
2200 ELSE
2202 END IF
2203 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idu3de, &
2204 & tlm(ng)%pioVar(idu3de), &
2205 & tlm(ng)%Rindex, &
2206 & iodesc, &
2207 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2208# ifdef MASKING
2209 & grid(ng) % rmask_full, &
2210# endif
2211 & ocean(ng) % tl_ua)
2212 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2213 IF (master) THEN
2214 WRITE (stdout,20) trim(vname(1,idu3de)), tlm(ng)%Rindex
2215 END IF
2216 exit_flag=3
2217 ioerror=status
2218 RETURN
2219 END IF
2220 END IF
2221
2222
2223
2224 IF (hout(idv3dn,ng)) THEN
2225 IF (tlm(ng)%pioVar(idv3dn)%dkind.eq.pio_double) THEN
2227 ELSE
2229 END IF
2230 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idv3dn, &
2231 & tlm(ng)%pioVar(idv3dn), &
2232 & tlm(ng)%Rindex, &
2233 & iodesc, &
2234 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2235# ifdef MASKING
2236 & grid(ng) % rmask_full, &
2237# endif
2238 & ocean(ng) % tl_va)
2239 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2240 IF (master) THEN
2241 WRITE (stdout,20) trim(vname(1,idv3dn)), tlm(ng)%Rindex
2242 END IF
2243 exit_flag=3
2244 ioerror=status
2245 RETURN
2246 END IF
2247 END IF
2248# endif
2249
2250
2251
2252 DO itrc=1,nt(ng)
2253 IF (hout(idtvar(itrc),ng)) THEN
2254 scale=1.0_dp
2255 IF (tlm(ng)%pioTrc(itrc)%dkind.eq.pio_double) THEN
2257 ELSE
2259 END IF
2260
2261 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idtvar(itrc), &
2262 & tlm(ng)%pioTrc(itrc), &
2263 & tlm(ng)%Rindex, iodesc, &
2264 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2265# ifdef MASKING
2266 & grid(ng) % rmask, &
2267# endif
2268# ifdef FORCING_SV
2269 & ocean(ng) % f_t(:,:,:,itrc))
2270# else
2271 & ocean(ng) % tl_t(:,:,:,nout,itrc))
2272# endif
2273 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2274 IF (master) THEN
2275 WRITE (stdout,20) trim(vname(1,idtvar(itrc))), &
2276 & tlm(ng)%Rindex
2277 END IF
2278 exit_flag=3
2279 ioerror=status
2280 RETURN
2281 END IF
2282 END IF
2283 END DO
2284
2285# ifdef ADJUST_BOUNDARY
2286
2287
2288
2289 DO itrc=1,nt(ng)
2290 IF (any(lobc(:,istvar(itrc),ng))) THEN
2291 scale=1.0_dp
2292 ifield=idsbry(istvar(itrc))
2293 IF (tlm(ng)%pioVar(ifield)%dkind.eq.pio_double) THEN
2295 ELSE
2297 END IF
2298
2299 status=nf_fwrite3d_bry(ng, model, tlm(ng)%name, &
2300 & tlm(ng)%pioFile, &
2301 & vname(1,ifield), &
2302 & tlm(ng)%pioVar(ifield), &
2303 & tlm(ng)%Rindex, iodesc, &
2304 & lbij, ubij, 1, n(ng), nbrec(ng), &
2305 & scale, &
2306 & boundary(ng) % tl_t_obc(lbij:,:,:,:, &
2307 & lbout(ng),itrc))
2308 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2309 IF (master) THEN
2310 WRITE (stdout,20) trim(vname(1,ifield)), tlm(ng)%Rindex
2311 END IF
2312 exit_flag=3
2313 ioerror=status
2314 RETURN
2315 END IF
2316 END IF
2317 END DO
2318# endif
2319
2320
2321
2322 IF (hout(iddano,ng)) THEN
2323 scale=1.0_dp
2324 IF (tlm(ng)%pioVar(iddano)%dkind.eq.pio_double) THEN
2326 ELSE
2328 END IF
2329
2330 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, iddano, &
2331 & tlm(ng)%pioVar(iddano), &
2332 & tlm(ng)%Rindex, iodesc, &
2333 & lbi, ubi, lbj, ubj, 1, n(ng), scale, &
2334# ifdef MASKING
2335 & grid(ng) % rmask, &
2336# endif
2337 & ocean(ng) % tl_rho)
2338 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2339 IF (master) THEN
2340 WRITE (stdout,20) trim(vname(1,iddano)), tlm(ng)%Rindex
2341 END IF
2342 exit_flag=3
2343 ioerror=status
2344 RETURN
2345 END IF
2346 END IF
2347
2348# if defined FORWARD_MIXING && \
2349 (defined bvf_mixing || defined gls_mixing || \
2350 defined lmd_mixing || defined my25_mixing)
2351
2352
2353
2354 IF (hout(idvvis,ng)) THEN
2355 scale=1.0_dp
2356 IF (tlm(ng)%pioVar(idvvis)%dkind.eq.pio_double) THEN
2358 ELSE
2360 END IF
2361
2362 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvvis, &
2363 & tlm(ng)%pioVar(idvvis), &
2364 & tlm(ng)%Rindex, iodesc, &
2365 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2366# ifdef MASKING
2367 & grid(ng) % rmask, &
2368# endif
2369# ifdef WEAK_CONSTRAINT
2370 & mixing(ng) % Akv, &
2371# else
2372 & mixing(ng) % tl_Akv, &
2373# endif
2374 & setfillval = .false.)
2375 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2376 IF (master) THEN
2377 WRITE (stdout,20) trim(vname(1,idvvis)), tlm(ng)%Rindex
2378 END IF
2379 exit_flag=3
2380 ioerror=status
2381 RETURN
2382 END IF
2383 END IF
2384
2385
2386
2387 IF (hout(idtdif,ng)) THEN
2388 scale=1.0_dp
2389 IF (tlm(ng)%pioVar(idtdif)%dkind.eq.pio_double) THEN
2391 ELSE
2393 END IF
2394
2395 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idtdif, &
2396 & tlm(ng)%pioVar(idtdif), &
2397 & tlm(ng)%Rindex, iodesc, &
2398 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2399# ifdef MASKING
2400 & grid(ng) % rmask, &
2401# endif
2402# ifdef WEAK_CONSTRAINT
2403 & mixing(ng) % Akt(:,:,:,itemp), &
2404# else
2405 & mixing(ng) % tl_Akt(:,:,:,itemp), &
2406# endif
2407 & setfillval = .false.)
2408 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2409 IF (master) THEN
2410 WRITE (stdout,20) trim(vname(1,idtdif)), tlm(ng)%Rindex
2411 END IF
2412 exit_flag=3
2413 ioerror=status
2414 RETURN
2415 END IF
2416 END IF
2417
2418# ifdef SALINITY
2419
2420
2421
2422 IF (hout(idsdif,ng)) THEN
2423 scale=1.0_dp
2424 IF (tlm(ng)%pioVar(idsdif)%dkind.eq.pio_double) THEN
2426 ELSE
2428 END IF
2429
2430 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idsdif, &
2431 & tlm(ng)%pioVar(idsdif), &
2432 & tlm(ng)%Rindex, iodesc, &
2433 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2434# ifdef MASKING
2435 & grid(ng) % rmask, &
2436# endif
2437# ifdef WEAK_CONSTRAINT
2438 & mixing(ng) % Akt(:,:,:,isalt), &
2439# else
2440 & mixing(ng) % tl_Akt(:,:,:,isalt), &
2441# endif
2442 & setfillval = .false.)
2443 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2444 IF (master) THEN
2445 WRITE (stdout,20) trim(vname(1,idsdif)), tlm(ng)%Rindex
2446 END IF
2447 exit_flag=3
2448 ioerror=status
2449 RETURN
2450 END IF
2451 END IF
2452# endif
2453# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
2454
2455
2456
2457 IF (hout(idmtke,ng)) THEN
2458 scale=1.0_dp
2459 IF (tlm(ng)%pioVar(idmtke)%dkind.eq.pio_double) THEN
2461 ELSE
2463 END IF
2464
2465 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idmtke, &
2466 & tlm(ng)%pioVar(idmtke), &
2467 & tlm(ng)%Rindex, iodesc, &
2468 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2469# ifdef MASKING
2470 & grid(ng) % rmask, &
2471# endif
2472 & mixing(ng) % tl_tke(:,:,:,nout), &
2473 & setfillval = .false.)
2474 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2475 IF (master) THEN
2476 WRITE (stdout,20) trim(vname(1,idmtke)), tlm(ng)%Rindex
2477 END IF
2478 exit_flag=3
2479 ioerror=status
2480 RETURN
2481 END IF
2482
2483 scale=1.0_dp
2484 IF (tlm(ng)%pioVar(idvmkk)%dkind.eq.pio_double) THEN
2486 ELSE
2488 END IF
2489
2490 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvmkk, &
2491 & tlm(ng)%pioVar(idvmkk), &
2492 & tlm(ng)%Rindex, iodesc, &
2493 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2494# ifdef MASKING
2495 & grid(ng) % rmask, &
2496# endif
2497 & mixing(ng) % tl_Akk)
2498 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2499 IF (master) THEN
2500 WRITE (stdout,20) trim(vname(1,idvmkk)), tlm(ng)%Rindex
2501 END IF
2502 exit_flag=3
2503 ioerror=status
2504 RETURN
2505 END IF
2506 END IF
2507
2508
2509
2510 IF (hout(idmtls,ng)) THEN
2511 scale=1.0_dp
2512 IF (tlm(ng)%pioVar(idmtld)%dkind.eq.pio_double) THEN
2514 ELSE
2516 END IF
2517
2518 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idmtls, &
2519 & tlm(ng)%pioVar(idmtls), &
2520 & tlm(ng)%Rindex, iodesc, &
2521 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2522# ifdef MASKING
2523 & grid(ng) % rmask, &
2524# endif
2525 & mixing(ng) % tl_gls(:,:,:,nout), &
2526 & setfillval = .false.)
2527 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2528 IF (master) THEN
2529 WRITE (stdout,20) trim(vname(1,idmtls)), tlm(ng)%Rindex
2530 END IF
2531 exit_flag=3
2532 ioerror=status
2533 RETURN
2534 END IF
2535
2536 scale=1.0_dp
2537 IF (tlm(ng)%pioVar(idvmls)%dkind.eq.pio_double) THEN
2539 ELSE
2541 END IF
2542
2543 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvmls, &
2544 & tlm(ng)%pioVar(idvmls), &
2545 & tlm(ng)%Rindex, iodesc, &
2546 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2547# ifdef MASKING
2548 & grid(ng) % rmask, &
2549# endif
2550 & mixing(ng) % tl_Lscale)
2551 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2552 IF (master) THEN
2553 WRITE (stdout,20) trim(vname(1,idvmls)), tlm(ng)%Rindex
2554 END IF
2555 exit_flag=3
2556 ioerror=status
2557 RETURN
2558 END IF
2559
2560# ifdef GSL_MIXING
2561
2562 scale=1.0_dp
2563 IF (tlm(ng)%pioVar(idvmkp)%dkind.eq.pio_double) THEN
2565 ELSE
2567 END IF
2568
2569 status=nf_fwrite3d(ng, model, tlm(ng)%pioFile, idvmkp, &
2570 & tlm(ng)%pioVar(idvmkp), &
2571 & tlm(ng)%Rindex, iodesc, &
2572 & lbi, ubi, lbj, ubj, 0, n(ng), scale, &
2573# ifdef MASKING
2574 & grid(ng) % rmask, &
2575# endif
2576 & mixing(ng) % tl_Akp)
2577 IF (founderror(status, pio_noerr, __line__, myfile)) THEN
2578 IF (master) THEN
2579 WRITE (stdout,20) trim(vname(1,idvmkp)), tlm(ng)%Rindex
2580 END IF
2581 exit_flag=3
2582 ioerror=status
2583 RETURN
2584 END IF
2585# endif
2586 END IF
2587# endif
2588# endif
2589# endif
2590
2591
2592
2593
2594
2595
2597 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2598
2599 10 FORMAT (2x,'TL_WRT_HIS_PIO - writing history', t42, &
2600# ifdef SOLVE3D
2601# ifdef NESTING
2602 & 'fields (Index=',i1,',',i1,') in record = ',i0,t92,i2.2)
2603# else
2604 & 'fields (Index=',i1,',',i1,') in record = ',i0)
2605# endif
2606# else
2607# ifdef NESTING
2608 & 'fields (Index=',i1,') in record = ',i0,t92,i2.2)
2609# else
2610 & 'fields (Index=',i1,') in record = ',i0)
2611# endif
2612# endif
2613 20 FORMAT (/,' TL_WRT_HIS_PIO - error while writing variable: ',a, &
2614 & /,19x,'into tangent NetCDF file for time record: ',i0)
2615
2616 RETURN
type(io_desc_t), dimension(:), pointer iodesc_sp_w3dvar
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
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dobc
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
type(io_desc_t), dimension(:), pointer iodesc_dp_w3dvar
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