1552
1553
1555
1556
1557
1558 integer, intent(in) :: ng
1559
1560 logical, intent(in) :: ldef
1561
1562
1563
1564 logical :: got_var(NV)
1565
1566 integer, parameter :: Natt = 25
1567
1568 integer :: i, j, ifield, itrc, nvd3, nvd4
1569 integer :: recdim, status, varid
1570 integer :: Fcount
1571# ifdef ADJUST_BOUNDARY
1572 integer :: IorJdim, brecdim
1573# endif
1574# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1575 integer :: frecdim
1576# endif
1577# if defined I4DVAR
1578 integer :: MinnerDim, NinnerDim, NouterDim
1579 integer :: vardim(2)
1580# endif
1581 integer :: DimIDs(nDimID)
1582 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1583# ifdef ADJUST_BOUNDARY
1584 integer :: t2dobc(4)
1585# endif
1586# ifdef SOLVE3D
1587 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1588# ifdef ADJUST_BOUNDARY
1589 integer :: t3dobc(5)
1590# endif
1591# ifdef ADJUST_STFLUX
1592 integer :: t3dfrc(4)
1593# endif
1594# endif
1595# ifdef ADJUST_WSTRESS
1596 integer :: u3dfrc(4), v3dfrc(4)
1597# endif
1598
1599 real(r8) :: Aval(6)
1600
1601 character (len=256) :: ncname
1602 character (len=MaxLen) :: Vinfo(Natt)
1603
1604 character (len=*), parameter :: MyFile = &
1605 & __FILE__//", ad_def_his_pio"
1606
1607 TYPE (Var_desc_t) :: varDesc
1608
1609 sourcefile=myfile
1610
1611
1612
1613
1614
1615 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1616 ncname=adm(ng)%name
1617
1618 IF (master) THEN
1619 IF (ldef) THEN
1620 WRITE (stdout,10) ng, trim(ncname)
1621 ELSE
1622 WRITE (stdout,20) ng, trim(ncname)
1623 END IF
1624 END IF
1625
1626
1627
1628
1629
1630 define : IF (ldef) THEN
1632 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1633 IF (master) WRITE (stdout,30) trim(ncname)
1634 RETURN
1635 END IF
1636
1637
1638
1639
1640
1641 dimids=0
1642
1643 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xi_rho', &
1644 & iobounds(ng)%xi_rho, dimids( 1))
1645 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1646
1647 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xi_u', &
1648 & iobounds(ng)%xi_u, dimids( 2))
1649 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1650
1651 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xi_v', &
1652 & iobounds(ng)%xi_v, dimids( 3))
1653 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1654
1655 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xi_psi', &
1656 & iobounds(ng)%xi_psi, dimids( 4))
1657 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1658
1659 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'eta_rho', &
1660 & iobounds(ng)%eta_rho, dimids( 5))
1661 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1662
1663 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'eta_u', &
1664 & iobounds(ng)%eta_u, dimids( 6))
1665 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1666
1667 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'eta_v', &
1668 & iobounds(ng)%eta_v, dimids( 7))
1669 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1670
1671 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'eta_psi', &
1672 & iobounds(ng)%eta_psi, dimids( 8))
1673 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1674
1675# ifdef ADJUST_BOUNDARY
1676 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'IorJ', &
1677 & iobounds(ng)%IorJ, iorjdim)
1678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1679# endif
1680
1681# if defined WRITE_WATER && defined MASKING
1682 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xy_rho', &
1683 & iobounds(ng)%xy_rho, dimids(17))
1684 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1685
1686 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xy_u', &
1687 & iobounds(ng)%xy_u, dimids(18))
1688 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1689
1690 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xy_v', &
1691 & iobounds(ng)%xy_v, dimids(19))
1692 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1693# endif
1694
1695# ifdef SOLVE3D
1696# if defined WRITE_WATER && defined MASKING
1697 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xyz_rho', &
1698 & iobounds(ng)%xy_rho*n(ng), dimids(20))
1699 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1700
1701 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xyz_u', &
1702 & iobounds(ng)%xy_u*n(ng), dimids(21))
1703 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1704
1705 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xyz_v', &
1706 & iobounds(ng)%xy_v*n(ng), dimids(22))
1707 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1708
1709 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xyz_w', &
1710 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
1711 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1712# endif
1713
1714 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'N', &
1715 & n(ng), dimids( 9))
1716 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1717
1718 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 's_rho', &
1719 & n(ng), dimids( 9))
1720 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1721
1722 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 's_w', &
1723 & n(ng)+1, dimids(10))
1724 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1725
1726 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'tracer', &
1727 & nt(ng), dimids(11))
1728 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1729
1730# ifdef SEDIMENT
1731 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'NST', &
1732 & nst, dimids(32))
1733 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1734
1735 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nbed', &
1736 & nbed, dimids(16))
1737 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1738
1739# if defined WRITE_WATER && defined MASKING
1740 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'xybed', &
1741 & iobounds(ng)%xy_rho*nbed, dimids(24))
1742 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1743# endif
1744# endif
1745
1746# ifdef ECOSIM
1747 status=def_dim(ng, inlm, adm(ng)%pioFile, ncname, 'Nbands', &
1748 & nbands, dimids(33))
1749 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1750
1751 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nphy', &
1752 & nphy, dimids(25))
1753 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1754
1755 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nbac', &
1756 & nbac, dimids(26))
1757 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1758
1759 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Ndom', &
1760 & ndom, dimids(27))
1761 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1762
1763 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nfec', &
1764 & nfec, dimids(28))
1765 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1766# endif
1767# endif
1768
1769 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'boundary', &
1770 & 4, dimids(14))
1771 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1772
1773# ifdef FOUR_DVAR
1774 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nstate', &
1775 & nstatevar(ng), dimids(29))
1776 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1777# endif
1778
1779# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1780 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'frc_adjust',&
1781 & nfrec(ng), dimids(30))
1782 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1783# endif
1784
1785# ifdef ADJUST_BOUNDARY
1786 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'obc_adjust',&
1787 & nbrec(ng), dimids(31))
1788 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1789# endif
1790
1791# if defined I4DVAR
1792 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Ninner', &
1793 & ninner, ninnerdim)
1794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1795
1796 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Minner', &
1797 & ninner+1, minnerdim)
1798 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1799
1800 status=def_dim(ng, model, adm(ng)%pioFile, ncname, 'Nouter', &
1801 & nouter, nouterdim)
1802 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1803# endif
1804
1805 status=def_dim(ng, model, adm(ng)%pioFile, ncname, &
1806 & trim(adjustl(vname(5,idtime))), &
1807 & pio_unlimited, dimids(12))
1808 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1809
1810 recdim=dimids(12)
1811# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1812 frecdim=dimids(30)
1813# endif
1814# ifdef ADJUST_BOUNDARY
1815 brecdim=dimids(31)
1816# endif
1817
1818
1819
1820# if defined WRITE_WATER && defined MASKING
1821 nvd3=2
1822 nvd4=2
1823# else
1824 nvd3=3
1825 nvd4=4
1826# endif
1827
1828
1829
1830# if defined WRITE_WATER && defined MASKING
1831 t2dgrd(1)=dimids(17)
1832 t2dgrd(2)=dimids(12)
1833# ifdef SOLVE3D
1834 t3dgrd(1)=dimids(20)
1835 t3dgrd(2)=dimids(12)
1836# endif
1837# else
1838 t2dgrd(1)=dimids( 1)
1839 t2dgrd(2)=dimids( 5)
1840 t2dgrd(3)=dimids(12)
1841# ifdef SOLVE3D
1842 t3dgrd(1)=dimids( 1)
1843 t3dgrd(2)=dimids( 5)
1844 t3dgrd(3)=dimids( 9)
1845 t3dgrd(4)=dimids(12)
1846# endif
1847# ifdef ADJUST_STFLUX
1848 t3dfrc(1)=dimids( 1)
1849 t3dfrc(2)=dimids( 5)
1850 t3dfrc(3)=frecdim
1851 t3dfrc(4)=dimids(12)
1852# endif
1853# endif
1854# ifdef ADJUST_BOUNDARY
1855 t2dobc(1)=iorjdim
1856 t2dobc(2)=dimids(14)
1857 t2dobc(3)=brecdim
1858 t2dobc(4)=dimids(12)
1859# ifdef SOLVE3D
1860 t3dobc(1)=iorjdim
1861 t3dobc(2)=dimids( 9)
1862 t3dobc(3)=dimids(14)
1863 t3dobc(4)=brecdim
1864 t3dobc(5)=dimids(12)
1865# endif
1866# endif
1867
1868
1869
1870# if defined WRITE_WATER && defined MASKING
1871 u2dgrd(1)=dimids(18)
1872 u2dgrd(2)=dimids(12)
1873# ifdef SOLVE3D
1874 u3dgrd(1)=dimids(21)
1875 u3dgrd(2)=dimids(12)
1876# endif
1877# else
1878 u2dgrd(1)=dimids( 2)
1879 u2dgrd(2)=dimids( 6)
1880 u2dgrd(3)=dimids(12)
1881# ifdef SOLVE3D
1882 u3dgrd(1)=dimids( 2)
1883 u3dgrd(2)=dimids( 6)
1884 u3dgrd(3)=dimids( 9)
1885 u3dgrd(4)=dimids(12)
1886# endif
1887# ifdef ADJUST_WSTRESS
1888 u3dfrc(1)=dimids( 2)
1889 u3dfrc(2)=dimids( 6)
1890 u3dfrc(3)=frecdim
1891 u3dfrc(4)=dimids(12)
1892# endif
1893# endif
1894
1895
1896
1897# if defined WRITE_WATER && defined MASKING
1898 v2dgrd(1)=dimids(19)
1899 v2dgrd(2)=dimids(12)
1900# ifdef SOLVE3D
1901 v3dgrd(1)=dimids(22)
1902 v3dgrd(2)=dimids(12)
1903# endif
1904# else
1905 v2dgrd(1)=dimids( 3)
1906 v2dgrd(2)=dimids( 7)
1907 v2dgrd(3)=dimids(12)
1908# ifdef SOLVE3D
1909 v3dgrd(1)=dimids( 3)
1910 v3dgrd(2)=dimids( 7)
1911 v3dgrd(3)=dimids( 9)
1912 v3dgrd(4)=dimids(12)
1913# endif
1914# ifdef ADJUST_WSTRESS
1915 v3dfrc(1)=dimids( 3)
1916 v3dfrc(2)=dimids( 7)
1917 v3dfrc(3)=frecdim
1918 v3dfrc(4)=dimids(12)
1919# endif
1920# endif
1921# ifdef SOLVE3D
1922
1923
1924
1925# if defined WRITE_WATER && defined MASKING
1926 w3dgrd(1)=dimids(23)
1927 w3dgrd(2)=dimids(12)
1928# else
1929 w3dgrd(1)=dimids( 1)
1930 w3dgrd(2)=dimids( 5)
1931 w3dgrd(3)=dimids(10)
1932 w3dgrd(4)=dimids(12)
1933# endif
1934# endif
1935
1936
1937
1938 adm(ng)%Rindex=0
1939
1940
1941
1942 DO i=1,natt
1943 DO j=1,len(vinfo(1))
1944 vinfo(i)(j:j)=' '
1945 END DO
1946 END DO
1947 DO i=1,6
1948 aval(i)=0.0_r8
1949 END DO
1950
1951
1952
1953
1954
1955 CALL def_info (ng, model, adm(ng)%pioFile, ncname, dimids)
1956 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1957
1958
1959
1960
1961
1962
1963
1964 vinfo( 1)=vname(1,idtime)
1965 vinfo( 2)=vname(2,idtime)
1966 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
1967 vinfo( 4)=trim(rclock%calendar)
1968 vinfo(14)=vname(4,idtime)
1969 vinfo(21)=vname(6,idtime)
1970 adm(ng)%pioVar(idtime)%dkind=
pio_tout
1971 adm(ng)%pioVar(idtime)%gtype=0
1972
1973 status=def_var(ng, model, adm(ng)%pioFile, &
1974 & adm(ng)%pioVar(idtime)%vd, &
1975 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1976 & setparaccess = .false.)
1977 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1978
1979# ifdef PROPAGATOR
1980
1981
1982
1983 vinfo( 1)='Ritz_rvalue'
1984 vinfo( 2)='real Ritz eigenvalues'
1985 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_type, &
1986 & 1, (/recdim/), aval, vinfo, ncname, &
1987 & setparaccess = .false.)
1988 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1989
1990# if defined AFT_EIGENMODES
1991 vinfo( 1)='Ritz_ivalue'
1992 vinfo( 2)='imaginary Ritz eigenvalues'
1993 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_type, &
1994 & 1, (/recdim/), aval, vinfo, ncname, &
1995 & setparaccess = .false.)
1996 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1997
1998# endif
1999
2000 vinfo( 1)='Ritz_norm'
2001 vinfo( 2)='Ritz eigenvectors Euclidean norm'
2002 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_type, &
2003 & 1, (/recdim/), aval, vinfo, ncname, &
2004 & setparaccess = .false.)
2005 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2006# endif
2007# if defined I4DVAR
2008
2009
2010
2011
2012
2013 vinfo( 1)='cg_beta'
2014 vinfo( 2)='conjugate gradient beta coefficient'
2015 vardim(1)=minnerdim
2016 vardim(2)=nouterdim
2017 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_frst, &
2018 & 2, vardim, aval, vinfo, ncname, &
2019 & setparaccess = .false.)
2020 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2021
2022 vinfo( 1)='cg_delta'
2023 vinfo( 2)='Lanczos algorithm delta coefficient'
2024 vardim(1)=ninnerdim
2025 vardim(2)=nouterdim
2026 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_frst, &
2027 & 2, vardim, aval, vinfo, ncname, &
2028 & setparaccess = .false.)
2029 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2030
2031 vinfo( 1)='cg_zv'
2032 vinfo( 2)='Lanczos recurrence eigenvectors'
2033 vardim(1)=ninnerdim
2034 vardim(2)=ninnerdim
2035 status=def_var(ng, model, adm(ng)%pioFile, vardesc,
pio_frst, &
2036 & 2, vardim, aval, vinfo, ncname, &
2037 & setparaccess = .false.)
2038 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2039# endif
2040# ifdef ADJUST_WSTRESS
2041
2042
2043
2044
2045
2046 vinfo( 1)=vname(1,idusms)
2047 WRITE (vinfo( 2),40) trim(vname(2,idusms))
2048 vinfo( 3)='meter2 second-2'
2049 vinfo(16)=vname(1,idtime)
2050# if defined WRITE_WATER && defined MASKING
2051 vinfo(20)='mask_u'
2052# endif
2053 vinfo(22)='coordinates'
2054 aval(5)=real(iinfo(1,idusms,ng),r8)
2055 adm(ng)%pioVar(idusms)%dkind=
pio_fout
2056 adm(ng)%pioVar(idusms)%gtype=u2dvar
2057
2058 status=def_var(ng, model, adm(ng)%pioFile, &
2059 & adm(ng)%pioVar(idusms)%vd, &
2060 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
2061 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2062
2063
2064
2065 vinfo( 1)=vname(1,idvsms)
2066 WRITE (vinfo( 2),40) trim(vname(2,idvsms))
2067 vinfo( 3)='meter2 second-2'
2068 vinfo(16)=vname(1,idtime)
2069# if defined WRITE_WATER && defined MASKING
2070 vinfo(20)='mask_v'
2071# endif
2072 vinfo(22)='coordinates'
2073 aval(5)=real(iinfo(1,idvsms,ng),r8)
2074 adm(ng)%pioVar(idvsms)%dkind=
pio_fout
2075 adm(ng)%pioVar(idvsms)%gtype=v2dvar
2076
2077 status=def_var(ng, model, adm(ng)%pioFile, &
2078 & adm(ng)%pioVar(idvsms)%vd, &
2079 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
2080 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2081# endif
2082# if defined ADJUST_STFLUX && defined SOLVE3D
2083
2084
2085
2086
2087
2088 DO itrc=1,nt(ng)
2089 IF (lstflux(itrc,ng)) THEN
2090 vinfo( 1)=vname(1,idtsur(itrc))
2091 WRITE (vinfo( 2),40) trim(vname(2,idtsur(itrc)))
2092 IF (itrc.eq.itemp) THEN
2093 vinfo( 3)='Celsius meter second-1'
2094 vinfo(11)='upward flux, cooling'
2095 vinfo(12)='downward flux, heating'
2096 ELSE IF (itrc.eq.isalt) THEN
2097 vinfo( 3)='meter second-1'
2098 vinfo(11)='upward flux, freshening (net precipitation)'
2099 vinfo(12)='downward flux, salting (net evaporation)'
2100 END IF
2101 vinfo(16)=vname(1,idtime)
2102# if defined WRITE_WATER && defined MASKING
2103 vinfo(20)='mask_rho'
2104# endif
2105 vinfo(22)='coordinates'
2106 aval(5)=real(iinfo(1,idtsur(itrc),ng),r8)
2107 adm(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
2108 adm(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
2109
2110 status=def_var(ng, model, adm(ng)%pioFile, &
2111 & adm(ng)%pioVar(idtsur(itrc))%vd, &
2112 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
2113 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2114 END IF
2115 END DO
2116# endif
2117
2118
2119
2120 IF (hout(idbath,ng)) THEN
2121 vinfo( 1)=vname(1,idbath)
2122 WRITE (vinfo( 2),40) trim(vname(2,idbath))
2123 vinfo( 3)='meter-1'
2124 vinfo(14)=vname(4,idbath)
2125 vinfo(16)=vname(1,idtime)
2126 vinfo(21)=vname(6,idbath)
2127 vinfo(22)='coordinates'
2128 aval(5)=real(iinfo(1,idbath,ng),r8)
2129 adm(ng)%pioVar(idbath)%dkind=
pio_fout
2130 adm(ng)%pioVar(idbath)%gtype=r2dvar
2131
2132 status=def_var(ng, model, adm(ng)%pioFile, &
2133 & adm(ng)%pioVar(idbath)%vd, &
2134 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
2135 & setfillval = .false.)
2136 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2137 END IF
2138
2139# ifdef SOLVE3D
2140
2141
2142
2143 IF (hout(idpthr,ng)) THEN
2144 vinfo( 1)=vname(1,idpthr)
2145 WRITE (vinfo( 2),40) trim(vname(2,idpthr))
2146 vinfo( 3)=vname(3,idpthr)
2147 vinfo(14)=vname(4,idpthr)
2148 vinfo(16)=vname(1,idtime)
2149# if defined WRITE_WATER && defined MASKING
2150 vinfo(20)='mask_rho'
2151# endif
2152 vinfo(21)=vname(6,idpthr)
2153 vinfo(22)='coordinates'
2154 aval(5)=real(iinfo(1,idpthr,ng),r8)
2155 adm(ng)%pioVar(idpthr)%dkind=
pio_fout
2156 adm(ng)%pioVar(idpthr)%gtype=r3dvar
2157
2158 status=def_var(ng, model, adm(ng)%pioFile, &
2159 & adm(ng)%pioVar(idpthr)%vd, &
2160 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
2161 & setfillval = .false.)
2162 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2163 END IF
2164
2165
2166
2167 IF (hout(idpthw,ng)) THEN
2168 vinfo( 1)=vname(1,idpthw)
2169 WRITE (vinfo( 2),40) trim(vname(2,idpthw))
2170 vinfo( 3)=vname(3,idpthw)
2171 vinfo(14)=vname(4,idpthw)
2172 vinfo(16)=vname(1,idtime)
2173# if defined WRITE_WATER && defined MASKING
2174 vinfo(20)='mask_rho'
2175# endif
2176 vinfo(21)=vname(6,idpthw)
2177 vinfo(22)='coordinates'
2178 aval(5)=real(iinfo(1,idpthw,ng),r8)
2179 adm(ng)%pioVar(idpthw)%dkind=
pio_fout
2180 adm(ng)%pioVar(idpthw)%gtype=w3dvar
2181
2182 status=def_var(ng, model, adm(ng)%pioFile, &
2183 & adm(ng)%pioVar(idpthw)%vd, &
2184 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2185 & setfillval = .false.)
2186 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2187 END IF
2188# endif
2189
2190
2191
2192 IF (hout(idfsur,ng)) THEN
2193 vinfo( 1)=vname(1,idfsur)
2194 WRITE (vinfo( 2),40) trim(vname(2,idfsur))
2195 vinfo( 3)='meter-1'
2196 vinfo(14)=vname(4,idfsur)
2197 vinfo(16)=vname(1,idtime)
2198# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
2199 vinfo(20)='mask_rho'
2200# endif
2201 vinfo(21)=vname(6,idfsur)
2202 vinfo(22)='coordinates'
2203 aval(5)=real(iinfo(1,idfsur,ng),r8)
2204 adm(ng)%pioVar(idfsur)%dkind=
pio_fout
2205 adm(ng)%pioVar(idfsur)%gtype=r2dvar
2206
2207 status=def_var(ng, model, adm(ng)%pioFile, &
2208 & adm(ng)%pioVar(idfsur)%vd, &
2209# ifdef WET_DRY
2210 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
2211 & setfillval = .false.)
2212# else
2213 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2214# endif
2215 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2216 END IF
2217
2218# ifdef ADJUST_BOUNDARY
2219
2220
2221
2222 IF (any(lobc(:,isfsur,ng))) THEN
2223 ifield=idsbry(isfsur)
2224 vinfo( 1)=vname(1,ifield)
2225 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2226 vinfo( 3)='meter-1'
2227 vinfo(14)=vname(4,ifield)
2228 vinfo(16)=vname(1,idtime)
2229 vinfo(21)=vname(6,ifield)
2230 aval(5)=real(iinfo(1,ifield,ng),r8)
2231 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2232 adm(ng)%pioVar(ifield)%gtype=r2dobc
2233
2234 status=def_var(ng, model, adm(ng)%pioFile, &
2235 & adm(ng)%pioVar(ifield)%vd, &
2236 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2237 & setfillval = .false.)
2238 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2239 END IF
2240# endif
2241
2242
2243
2244 IF (hout(idubar,ng)) THEN
2245 vinfo( 1)=vname(1,idubar)
2246 WRITE (vinfo( 2),40) trim(vname(2,idubar))
2247 vinfo( 3)='second meter-1'
2248 vinfo(14)=vname(4,idubar)
2249 vinfo(16)=vname(1,idtime)
2250# if defined WRITE_WATER && defined MASKING
2251 vinfo(20)='mask_u'
2252# endif
2253 vinfo(21)=vname(6,idubar)
2254 vinfo(22)='coordinates'
2255 aval(5)=real(iinfo(1,idubar,ng),r8)
2256 adm(ng)%pioVar(idubar)%dkind=
pio_fout
2257 adm(ng)%pioVar(idubar)%gtype=u2dvar
2258
2259 status=def_var(ng, model, adm(ng)%pioFile, &
2260 & adm(ng)%pioVar(idubar)%vd, &
2261 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2262 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2263 END IF
2264
2265# ifdef ADJUST_BOUNDARY
2266
2267
2268
2269 IF (any(lobc(:,isubar,ng))) THEN
2270 ifield=idsbry(isubar)
2271 vinfo( 1)=vname(1,ifield)
2272 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2273 vinfo( 3)='second meter-1'
2274 vinfo(14)=vname(4,ifield)
2275 vinfo(16)=vname(1,idtime)
2276 vinfo(21)=vname(6,ifield)
2277 aval(5)=real(iinfo(1,ifield,ng),r8)
2278 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2279 adm(ng)%pioVar(ifield)%gtype=u2dobc
2280
2281 status=def_var(ng, model, adm(ng)%pioFile, &
2282 & adm(ng)%pioVar(ifield)%vd, &
2283 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2284 & setfillval = .false.)
2285 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2286 END IF
2287# endif
2288
2289
2290
2291 IF (hout(idvbar,ng)) THEN
2292 vinfo( 1)=vname(1,idvbar)
2293 WRITE (vinfo( 2),40) trim(vname(2,idvbar))
2294 vinfo( 3)='second meter-1'
2295 vinfo(14)=vname(4,idvbar)
2296 vinfo(16)=vname(1,idtime)
2297# if defined WRITE_WATER && defined MASKING
2298 vinfo(20)='mask_v'
2299# endif
2300 vinfo(21)=vname(6,idvbar)
2301 vinfo(22)='coordinates'
2302 aval(5)=real(iinfo(1,idvbar,ng),r8)
2303 adm(ng)%pioVar(idvbar)%dkind=
pio_fout
2304 adm(ng)%pioVar(idvbar)%gtype=v2dvar
2305
2306 status=def_var(ng, model, adm(ng)%pioFile, &
2307 & adm(ng)%pioVar(idvbar)%vd, &
2308 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2309 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2310 END IF
2311
2312# ifdef ADJUST_BOUNDARY
2313
2314
2315
2316 IF (any(lobc(:,isvbar,ng))) THEN
2317 ifield=idsbry(isvbar)
2318 vinfo( 1)=vname(1,ifield)
2319 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2320 vinfo( 3)='second meter-1'
2321 vinfo(14)=vname(4,ifield)
2322 vinfo(16)=vname(1,idtime)
2323 vinfo(21)=vname(6,ifield)
2324 aval(5)=real(iinfo(1,ifield,ng),r8)
2325 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2326 adm(ng)%pioVar(ifield)%gtype=v2dobc
2327
2328 status=def_var(ng, model, adm(ng)%pioFile, &
2329 & adm(ng)%pioVar(ifield)%vd, &
2330 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2331 & setfillval = .false.)
2332 IF (founderror(exit_flag, noerror,__line__, myfile)) RETURN
2333 END IF
2334# endif
2335# ifdef SOLVE3D
2336
2337
2338
2339 IF (hout(iduvel,ng)) THEN
2340 vinfo( 1)=vname(1,iduvel)
2341 WRITE (vinfo( 2),40) trim(vname(2,iduvel))
2342 vinfo( 3)='second meter-1'
2343 vinfo(14)=vname(4,iduvel)
2344 vinfo(16)=vname(1,idtime)
2345# if defined WRITE_WATER && defined MASKING
2346 vinfo(20)='mask_u'
2347# endif
2348 vinfo(21)=vname(6,iduvel)
2349 vinfo(22)='coordinates'
2350 aval(5)=real(iinfo(1,iduvel,ng),r8)
2351 adm(ng)%pioVar(iduvel)%dkind=
pio_fout
2352 adm(ng)%pioVar(iduvel)%gtype=u3dvar
2353
2354 status=def_var(ng, model, adm(ng)%pioFile, &
2355 & adm(ng)%pioVar(iduvel)%vd, &
2356 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
2357 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2358 END IF
2359
2360# ifdef ADJUST_BOUNDARY
2361
2362
2363
2364 IF (any(lobc(:,isuvel,ng))) THEN
2365 ifield=idsbry(isuvel)
2366 vinfo( 1)=vname(1,ifield)
2367 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2368 vinfo( 3)='second meter-1'
2369 vinfo(14)=vname(4,ifield)
2370 vinfo(16)=vname(1,idtime)
2371 vinfo(21)=vname(6,ifield)
2372 aval(5)=real(iinfo(1,ifield,ng),r8)
2373 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2374 adm(ng)%pioVar(ifield)%gtype=u3dobc
2375
2376 status=def_var(ng, model, adm(ng)%pioFile, &
2377 & adm(ng)%pioVar(ifield)%vd, &
2378 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
2379 & setfillval = .false.)
2380 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2381 END IF
2382# endif
2383
2384
2385
2386 IF (hout(idvvel,ng)) THEN
2387 vinfo( 1)=vname(1,idvvel)
2388 WRITE (vinfo( 2),40) trim(vname(2,idvvel))
2389 vinfo( 3)='second meter-1'
2390 vinfo(14)=vname(4,idvvel)
2391 vinfo(16)=vname(1,idtime)
2392# if defined WRITE_WATER && defined MASKING
2393 vinfo(20)='mask_v'
2394# endif
2395 vinfo(21)=vname(6,idvvel)
2396 vinfo(22)='coordinates'
2397 aval(5)=real(iinfo(1,idvvel,ng),r8)
2398 adm(ng)%pioVar(idvvel)%dkind=
pio_fout
2399 adm(ng)%pioVar(idvvel)%gtype=v3dvar
2400
2401 status=def_var(ng, model, adm(ng)%pioFile, &
2402 & adm(ng)%pioVar(idvvel)%vd, &
2403 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
2404 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2405 END IF
2406
2407# ifdef ADJUST_BOUNDARY
2408
2409
2410
2411 IF (any(lobc(:,isvvel,ng))) THEN
2412 ifield=idsbry(isvvel)
2413 vinfo( 1)=vname(1,ifield)
2414 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2415 vinfo( 3)='second meter-1'
2416 vinfo(14)=vname(4,ifield)
2417 vinfo(16)=vname(1,idtime)
2418 vinfo(21)=vname(6,ifield)
2419 aval(5)=real(iinfo(1,ifield,ng),r8)
2420 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2421 adm(ng)%pioVar(ifield)%gtype=v3dvar
2422
2423 status=def_var(ng, model, adm(ng)%pioFile, &
2424 & adm(ng)%pioVar(ifield)%vd, &
2425 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
2426 & setfillval = .false.)
2427 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2428 END IF
2429# endif
2430# ifdef UV_DESTAGGERED
2431
2432
2433
2434 IF (hout(idu3de,ng)) THEN
2435 vinfo( 1)=vname(1,idu3de)
2436 vinfo( 2)=vname(2,idu3de)
2437 vinfo( 3)=vname(3,idu3de)
2438 vinfo(14)=vname(4,idu3de)
2439 vinfo(16)=vname(1,idtime)
2440# if defined WRITE_WATER && defined MASKING
2441 vinfo(20)='mask_rho'
2442# endif
2443 vinfo(21)=vname(6,idu3de)
2444 vinfo(22)='coordinates'
2445 aval(5)=real(iinfo(1,idu3de,ng),r8)
2446 adm(ng)%pioVar(idu3de)%dkind=
pio_fout
2447 adm(ng)%pioVar(idu3de)%gtype=r3dvar
2448
2449 status=def_var(ng, model, adm(ng)%pioFile, &
2450 & adm(ng)%pioVar(idu3de)%vd, &
2451 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
2452 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2453 END IF
2454
2455
2456
2457 IF (hout(idv3dn,ng)) THEN
2458 vinfo( 1)=vname(1,idv3dn)
2459 vinfo( 2)=vname(2,idv3dn)
2460 vinfo( 3)=vname(3,idv3dn)
2461 vinfo(14)=vname(4,idv3dn)
2462 vinfo(16)=vname(1,idtime)
2463# if defined WRITE_WATER && defined MASKING
2464 vinfo(20)='mask_rho'
2465# endif
2466 vinfo(21)=vname(6,idv3dn)
2467 vinfo(22)='coordinates'
2468 aval(5)=real(iinfo(1,idv3dn,ng),r8)
2469 adm(ng)%pioVar(idv3dn)%dkind=
pio_fout
2470 adm(ng)%pioVar(idv3dn)%gtype=r3dvar
2471
2472 status=def_var(ng, model, adm(ng)%pioFile, &
2473 & adm(ng)%pioVar(idv3dn)%vd, &
2474 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
2475 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2476 END IF
2477# endif
2478
2479
2480
2481 IF (hout(idovel,ng)) THEN
2482 vinfo( 1)=vname(1,idovel)
2483 WRITE (vinfo( 2),40) trim(vname(2,idovel))
2484 vinfo( 3)='meter second-1'
2485 vinfo(14)=vname(4,idovel)
2486 vinfo(16)=vname(1,idtime)
2487 vinfo(21)=vname(6,idovel)
2488 vinfo(22)='coordinates'
2489 aval(5)=real(iinfo(1,idovel,ng),r8)
2490 adm(ng)%pioVar(idovel)%dkind=
pio_fout
2491 adm(ng)%pioVar(idovel)%gtype=w3dvar
2492
2493 status=def_var(ng, model, adm(ng)%pioFile, &
2494 & adm(ng)%pioVar(idovel)%vd, &
2495 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
2496 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2497 END IF
2498
2499
2500
2501 DO itrc=1,nt(ng)
2502 IF (hout(idtvar(itrc),ng)) THEN
2503 vinfo( 1)=vname(1,idtvar(itrc))
2504 WRITE (vinfo( 2),40) trim(vname(2,idtvar(itrc)))
2505 vinfo( 3)=vname(3,idtvar(itrc))
2506 vinfo(14)=vname(4,idtvar(itrc))
2507 vinfo(16)=vname(1,idtime)
2508# ifdef SEDIMENT_NOT_YET
2509 DO i=1,nst
2510 IF (itrc.eq.idsed(i)) THEN
2511 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
2512 END IF
2513 END DO
2514# endif
2515# if defined WRITE_WATER && defined MASKING
2516 vinfo(20)='mask_rho'
2517# endif
2518 vinfo(21)=vname(6,idtvar(itrc))
2519 vinfo(22)='coordinates'
2520 aval(5)=real(r3dvar,r8)
2521 adm(ng)%pioTrc(itrc)%dkind=
pio_fout
2522 adm(ng)%pioTrc(itrc)%gtype=r3dvar
2523
2524 status=def_var(ng, model, adm(ng)%pioFile, &
2525 & adm(ng)%pioTrc(itrc)%vd, &
2526 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
2527 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2528 END IF
2529 END DO
2530
2531# ifdef ADJUST_BOUNDARY
2532
2533
2534
2535 DO itrc=1,nt(ng)
2536 IF (any(lobc(:,istvar(itrc),ng))) THEN
2537 ifield=idsbry(istvar(itrc))
2538 vinfo( 1)=vname(1,ifield)
2539 WRITE (vinfo( 2),40) trim(vname(2,ifield))
2540 vinfo( 3)=vname(3,ifield)
2541 vinfo(14)=vname(4,ifield)
2542 vinfo(16)=vname(1,idtime)
2543# ifdef SEDIMENT
2544 DO i=1,nst
2545 IF (itrc.eq.idsed(i)) THEN
2546 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
2547 END IF
2548 END DO
2549# endif
2550 vinfo(21)=vname(6,ifield)
2551 aval(5)=real(iinfo(1,ifield,ng),r8)
2552 adm(ng)%pioVar(ifield)%dkind=
pio_fout
2553 adm(ng)%pioVar(ifield)%gtype=r2dvar
2554
2555 status=def_var(ng, model, adm(ng)%pioFile, &
2556 & adm(ng)%pioVar(ifield)%vd, &
2557 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
2558 & setfillval = .false.)
2559 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2560 END IF
2561 END DO
2562# endif
2563
2564
2565
2566 IF (hout(iddano,ng)) THEN
2567 vinfo( 1)=vname(1,iddano)
2568 WRITE (vinfo( 2),40) trim(vname(2,iddano))
2569 vinfo( 3)=vname(3,iddano)
2570 vinfo(14)=vname(4,iddano)
2571 vinfo(16)=vname(1,idtime)
2572# if defined WRITE_WATER && defined MASKING
2573 vinfo(20)='mask_rho'
2574# endif
2575 vinfo(21)=vname(6,iddano)
2576 vinfo(22)='coordinates'
2577 aval(5)=real(iinfo(1,iddano,ng),r8)
2578 adm(ng)%pioVar(iddano)%dkind=
pio_fout
2579 adm(ng)%pioVar(iddano)%gtype=r3dvar
2580
2581 status=def_var(ng, model, adm(ng)%pioFile, &
2582 & adm(ng)%pioVar(iddano)%vd, &
2583 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
2584 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2585 END IF
2586
2587
2588
2589 IF (hout(idvvis,ng)) THEN
2590 vinfo( 1)=vname(1,idvvis)
2591 WRITE (vinfo( 2),40) trim(vname(2,idvvis))
2592 vinfo( 3)=vname(3,idvvis)
2593 vinfo(14)=vname(4,idvvis)
2594 vinfo(16)=vname(1,idtime)
2595 vinfo(21)=vname(6,idvvis)
2596 vinfo(22)='coordinates'
2597 aval(5)=real(iinfo(1,idvvis,ng),r8)
2598 adm(ng)%pioVar(idvvis)%dkind=
pio_fout
2599 adm(ng)%pioVar(idvvis)%gtype=w3dvar
2600
2601 status=def_var(ng, model, adm(ng)%pioFile, &
2602 & adm(ng)%pioVar(idvvis)%vd, &
2603 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2604 & setfillval = .false.)
2605 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2606 END IF
2607
2608
2609
2610 IF (hout(idtdif,ng)) THEN
2611 vinfo( 1)=vname(1,idtdif)
2612 WRITE (vinfo( 2),40) trim(vname(2,idtdif))
2613 vinfo( 3)=vname(3,idtdif)
2614 vinfo(14)=vname(4,idtdif)
2615 vinfo(16)=vname(1,idtime)
2616 vinfo(21)=vname(6,idtdif)
2617 vinfo(22)='coordinates'
2618 aval(5)=real(iinfo(1,idtdif,ng),r8)
2619 adm(ng)%pioVar(idtdif)%dkind=
pio_fout
2620 adm(ng)%pioVar(idtdif)%gtype=w3dvar
2621
2622 status=def_var(ng, model, adm(ng)%pioFile, &
2623 & adm(ng)%pioVar(idtdif)%vd, &
2624 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2625 & setfillval = .false.)
2626 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2627 END IF
2628
2629# ifdef SALINITY
2630
2631
2632
2633 IF (hout(idsdif,ng)) THEN
2634 vinfo( 1)=vname(1,idsdif)
2635 WRITE (vinfo( 2),40) trim(vname(2,idsdif))
2636 vinfo( 3)=vname(3,idsdif)
2637 vinfo(14)=vname(4,idsdif)
2638 vinfo(16)=vname(1,idtime)
2639 vinfo(21)=vname(6,idsdif)
2640 vinfo(22)='coordinates'
2641 aval(5)=real(iinfo(1,idsdif,ng),r8)
2642 adm(ng)%pioVar(idsdif)%dkind=
pio_fout
2643 adm(ng)%pioVar(idsdif)%gtype=w3dvar
2644
2645 status=def_var(ng, model, adm(ng)%pioFile, &
2646 & adm(ng)%pioVar(idsdif)%vd, &
2647 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2648 & setfillval = .false.)
2649 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2650 END IF
2651# endif
2652# ifndef ADJUST_STFLUX
2653
2654
2655
2656 DO itrc=1,nt(ng)
2657 IF (hout(idtsur(itrc),ng)) THEN
2658 vinfo( 1)=vname(1,idtsur(itrc))
2659 WRITE (vinfo( 2),40) trim(vname(2,idtsur(itrc)))
2660 vinfo( 3)=vname(3,idtsur(itrc))
2661 IF (itrc.eq.itemp) THEN
2662 vinfo(11)='upward flux, cooling'
2663 vinfo(12)='downward flux, heating'
2664 ELSE IF (itrc.eq.isalt) THEN
2665 vinfo(11)='upward flux, freshening (net precipitation)'
2666 vinfo(12)='downward flux, salting (net evaporation)'
2667 END IF
2668 vinfo(14)=vname(4,idtsur(itrc))
2669 vinfo(16)=vname(1,idtime)
2670# if defined WRITE_WATER && defined MASKING
2671 vinfo(20)='mask_rho'
2672# endif
2673 vinfo(21)=vname(6,idtsur(itrc))
2674 vinfo(22)='coordinates'
2675 aval(5)=real(iinfo(1,idtsur(itrc),ng),r8)
2676 adm(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
2677 adm(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
2678
2679 status=def_var(ng, model, adm(ng)%pioFile, &
2680 & adm(ng)%pioVar(idtsur(itrc))%vd, &
2682 & nvd3, t2dgrd, aval, vinfo, ncname)
2683 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2684 END IF
2685 END DO
2686# endif
2687# endif
2688# ifndef ADJUST_WSTRESS
2689
2690
2691
2692 IF (hout(idusms,ng)) THEN
2693 vinfo( 1)=vname(1,idusms)
2694 WRITE (vinfo( 2),40) trim(vname(2,idusms))
2695 vinfo( 3)=vname(3,idusms)
2696 vinfo(14)=vname(4,idusms)
2697 vinfo(16)=vname(1,idtime)
2698# if defined WRITE_WATER && defined MASKING
2699 vinfo(20)='mask_u'
2700# endif
2701 vinfo(21)=vname(6,idusms)
2702 vinfo(22)='coordinates'
2703 aval(5)=real(iinfo(1,idusms,ng),r8)
2704 adm(ng)%pioVar(idusms)%dkind=
pio_fout
2705 adm(ng)%pioVar(idusms)%gtype=u2dvar
2706
2707 status=def_var(ng, model, adm(ng)%pioFile, &
2708 & adm(ng)%pioVar(idusms)%vd, &
2709 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2710 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2711 END IF
2712
2713
2714
2715 IF (hout(idvsms,ng)) THEN
2716 vinfo( 1)=vname(1,idvsms)
2717 WRITE (vinfo( 2),40) trim(vname(2,idvsms))
2718 vinfo( 3)=vname(3,idvsms)
2719 vinfo(14)=vname(4,idvsms)
2720 vinfo(16)=vname(1,idtime)
2721# if defined WRITE_WATER && defined MASKING
2722 vinfo(20)='mask_v'
2723# endif
2724 vinfo(21)=vname(6,idvsms)
2725 vinfo(22)='coordinates'
2726 aval(5)=real(iinfo(1,idvsms,ng),r8)
2727 adm(ng)%pioVar(idvsms)%dkind=
pio_fout
2728 adm(ng)%pioVar(idvsms)%gtype=v2dvar
2729
2730 status=def_var(ng, model, adm(ng)%pioFile, &
2731 & adm(ng)%pioVar(idvsms)%vd, &
2732 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2733 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2734 END IF
2735# endif
2736
2737
2738
2739 IF (hout(idubms,ng)) THEN
2740 vinfo( 1)=vname(1,idubms)
2741 WRITE (vinfo( 2),40) trim(vname(2,idubms))
2742 vinfo( 3)=vname(3,idubms)
2743 vinfo(14)=vname(4,idubms)
2744 vinfo(16)=vname(1,idtime)
2745# if defined WRITE_WATER && defined MASKING
2746 vinfo(20)='mask_u'
2747# endif
2748 vinfo(21)=vname(6,idubms)
2749 vinfo(22)='coordinates'
2750 aval(5)=real(iinfo(1,idubms,ng),r8)
2751 adm(ng)%pioVar(idubms)%dkind=
pio_fout
2752 adm(ng)%pioVar(idubms)%gtype=u2dvar
2753
2754 status=def_var(ng, model, adm(ng)%pioFile, &
2755 & adm(ng)%pioVar(idubms)%vd, &
2756 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2757 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2758 END IF
2759
2760
2761
2762 IF (hout(idvbms,ng)) THEN
2763 vinfo( 1)=vname(1,idvbms)
2764 WRITE (vinfo( 2),40) trim(vname(2,idvbms))
2765 vinfo( 3)=vname(3,idvbms)
2766 vinfo(14)=vname(4,idvbms)
2767 vinfo(16)=vname(1,idtime)
2768# if defined WRITE_WATER && defined MASKING
2769 vinfo(20)='mask_v'
2770# endif
2771 vinfo(21)=vname(6,idvbms)
2772 vinfo(22)='coordinates'
2773 aval(5)=real(iinfo(1,idvbms,ng),r8)
2774 adm(ng)%pioVar(idvbms)%dkind=
pio_fout
2775 adm(ng)%pioVar(idvbms)%gtype=v2dvar
2776
2777 status=def_var(ng, model, adm(ng)%pioFile, &
2778 & adm(ng)%pioVar(idvbms)%vd, &
2779 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2780 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2781 END IF
2782
2783
2784
2785
2786
2788 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2789
2790
2791
2792
2793
2794 CALL wrt_info (ng, model, adm(ng)%pioFile, ncname)
2795 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2796 END IF define
2797
2798
2799
2800
2801
2802
2803 query : IF (.not.ldef) THEN
2804 ncname=adm(ng)%name
2805
2806
2807
2809 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
2810 WRITE (stdout,60) trim(ncname)
2811 RETURN
2812 END IF
2813
2814
2815
2817 & piofile = adm(ng)%pioFile)
2818 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2819
2820
2821
2823 & piofile = adm(ng)%pioFile)
2824 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2825
2826
2827
2828 DO i=1,nv
2829 got_var(i)=.false.
2830 END DO
2831
2832
2833
2834
2835 DO i=1,n_var
2836 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
2837 got_var(idtime)=.true.
2838 adm(ng)%pioVar(idtime)%vd=
var_desc(i)
2839 adm(ng)%pioVar(idtime)%dkind=
pio_tout
2840 adm(ng)%pioVar(idtime)%gtype=0
2841# ifdef SOLVE3D
2842 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthr))) THEN
2843 got_var(idpthr)=.true.
2844 adm(ng)%pioVar(idpthr)%vd=
var_desc(i)
2845 adm(ng)%pioVar(idpthr)%dkind=
pio_fout
2846 adm(ng)%pioVar(idpthr)%gtype=r3dvar
2847 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthw))) THEN
2848 got_var(idpthw)=.true.
2849 adm(ng)%pioVar(idpthw)%vd=
var_desc(i)
2850 adm(ng)%pioVar(idpthw)%dkind=
pio_fout
2851 adm(ng)%pioVar(idpthw)%gtype=w3dvar
2852# endif
2853 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
2854 got_var(idfsur)=.true.
2855 adm(ng)%pioVar(idfsur)%vd=
var_desc(i)
2856 adm(ng)%pioVar(idfsur)%dkind=
pio_fout
2857 adm(ng)%pioVar(idfsur)%gtype=r2dvar
2858 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
2859 got_var(idubar)=.true.
2860 adm(ng)%pioVar(idubar)%vd=
var_desc(i)
2861 adm(ng)%pioVar(idubar)%dkind=
pio_fout
2862 adm(ng)%pioVar(idubar)%gtype=u2dvar
2863 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
2864 got_var(idvbar)=.true.
2865 adm(ng)%pioVar(idvbar)%vd=
var_desc(i)
2866 adm(ng)%pioVar(idvbar)%dkind=
pio_fout
2867 adm(ng)%pioVar(idvbar)%gtype=v2dvar
2868# ifdef ADJUST_BOUNDARY
2869 ELSE IF (trim(var_name(i)).eq. &
2870 & trim(vname(1,idsbry(isfsur)))) THEN
2871 got_var(idsbry(isfsur))=.true.
2872 adm(ng)%pioVar(idsbry(isfsur))%vd=
var_desc(i)
2873 adm(ng)%pioVar(idsbry(isfsur))%dkind=
pio_fout
2874 adm(ng)%pioVar(idsbry(isfsur))%gtype=r2dobc
2875 ELSE IF (trim(var_name(i)).eq. &
2876 & trim(vname(1,idsbry(isubar)))) THEN
2877 got_var(idsbry(isubar))=.true.
2878 adm(ng)%pioVar(idsbry(isubar))%vd=
var_desc(i)
2879 adm(ng)%pioVar(idsbry(isubar))%dkind=
pio_fout
2880 adm(ng)%pioVar(idsbry(isubar))%gtype=u2dobc
2881 ELSE IF (trim(var_name(i)).eq. &
2882 & trim(vname(1,idsbry(isvbar)))) THEN
2883 got_var(idsbry(isvbar))=.true.
2884 adm(ng)%pioVar(idsbry(isvbar))%vd=
var_desc(i)
2885 adm(ng)%pioVar(idsbry(isvbar))%dkind=
pio_fout
2886 adm(ng)%pioVar(idsbry(isvbar))%gtype=v2dobc
2887# endif
2888# ifdef ADJUST_WSTRESS
2889 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
2890 got_var(idusms)=.true.
2891 adm(ng)%pioVar(idusms)%vd=
var_desc(i)
2892 adm(ng)%pioVar(idusms)%dkind=
pio_fout
2893 adm(ng)%pioVar(idusms)%gtype=u2dvar
2894 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
2895 got_var(idvsms)=.true.
2896 adm(ng)%pioVar(idvsms)%vd=
var_desc(i)
2897 adm(ng)%pioVar(idvsms)%dkind=
pio_fout
2898 adm(ng)%pioVar(idvsms)%gtype=v2dvar
2899# endif
2900# ifdef SOLVE3D
2901 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
2902 got_var(iduvel)=.true.
2903 adm(ng)%pioVar(iduvel)%vd=
var_desc(i)
2904 adm(ng)%pioVar(iduvel)%dkind=
pio_fout
2905 adm(ng)%pioVar(iduvel)%gtype=u3dvar
2906 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
2907 got_var(idvvel)=.true.
2908 adm(ng)%pioVar(idvvel)%vd=
var_desc(i)
2909 adm(ng)%pioVar(idvvel)%dkind=
pio_fout
2910 adm(ng)%pioVar(idvvel)%gtype=v3dvar
2911# ifdef ADJUST_BOUNDARY
2912 ELSE IF (trim(var_name(i)).eq. &
2913 & trim(vname(1,idsbry(isuvel)))) THEN
2914 got_var(idsbry(isuvel))=.true.
2915 adm(ng)%pioVar(idsbry(isuvel))%vd=
var_desc(i)
2916 adm(ng)%pioVar(idsbry(isuvel))%dkind=
pio_fout
2917 adm(ng)%pioVar(idsbry(isuvel))%gtype=u3dobc
2918 ELSE IF (trim(var_name(i)).eq. &
2919 & trim(vname(1,idsbry(isvvel)))) THEN
2920 got_var(idsbry(isvvel))=.true.
2921 adm(ng)%pioVar(idsbry(isvvel))%vd=
var_desc(i)
2922 adm(ng)%pioVar(idsbry(isvvel))%dkind=
pio_fout
2923 adm(ng)%pioVar(idsbry(isvvel))%gtype=v3dvar
2924# endif
2925# ifdef UV_DESTAGGERED
2926 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
2927 got_var(idu3de)=.true.
2928 adm(ng)%pioVar(idu3de)%vd=
var_desc(i)
2929 adm(ng)%pioVar(idu3de)%dkind=
pio_fout
2930 adm(ng)%pioVar(idu3de)%gtype=r3dvar
2931 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
2932 got_var(idv3dn)=.true.
2933 adm(ng)%pioVar(idv3dn)%vd=
var_desc(i)
2934 adm(ng)%pioVar(idv3dn)%dkind=
pio_fout
2935 adm(ng)%pioVar(idv3dn)%gtype=r3dvar
2936# endif
2937 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
2938 got_var(idovel)=.true.
2939 adm(ng)%pioVar(idovel)%vd=
var_desc(i)
2940 adm(ng)%pioVar(idovel)%dkind=
pio_fout
2941 adm(ng)%pioVar(idovel)%gtype=w3dvar
2942 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
2943 got_var(iddano)=.true.
2944 adm(ng)%pioVar(iddano)%vd=
var_desc(i)
2945 adm(ng)%pioVar(iddano)%dkind=
pio_fout
2946 adm(ng)%pioVar(iddano)%gtype=r3dvar
2947 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
2948 got_var(idvvis)=.true.
2949 adm(ng)%pioVar(idvvis)%vd=
var_desc(i)
2950 adm(ng)%pioVar(idvvis)%dkind=
pio_fout
2951 adm(ng)%pioVar(idvvis)%gtype=w3dvar
2952 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
2953 got_var(idtdif)=.true.
2954 adm(ng)%pioVar(idtdif)%vd=
var_desc(i)
2955 adm(ng)%pioVar(idtdif)%dkind=
pio_fout
2956 adm(ng)%pioVar(idtdif)%gtype=w3dvar
2957# ifdef SALINITY
2958 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
2959 got_var(idsdif)=.true.
2960 adm(ng)%pioVar(idsdif)%vd=
var_desc(i)
2961 adm(ng)%pioVar(idsdif)%dkind=
pio_fout
2962 adm(ng)%pioVar(idsdif)%gtype=w3dvar
2963# endif
2964# endif
2965 END IF
2966# ifdef SOLVE3D
2967 DO itrc=1,nt(ng)
2968 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
2969 got_var(idtvar(itrc))=.true.
2970 adm(ng)%pioTrc(itrc)%vd=
var_desc(i)
2971 adm(ng)%pioTrc(itrc)%dkind=
pio_fout
2972 adm(ng)%pioTrc(itrc)%gtype=r3dvar
2973# ifdef ADJUST_BOUNDARY
2974 ELSE IF (trim(var_name(i)).eq. &
2975 & trim(vname(1,idsbry(istvar(itrc))))) THEN
2976 got_var(idsbry(istvar(itrc)))=.true.
2977 adm(ng)%pioVar(idsbry(istvar(itrc)))%vd=
var_desc(i)
2978 adm(ng)%pioVar(idsbry(istvar(itrc)))%dkind=
pio_fout
2979 adm(ng)%pioVar(idsbry(istvar(itrc)))%gtype=r2dvar
2980# endif
2981# ifdef ADJUST_STFLUX
2982 ELSE IF (trim(var_name(i)).eq. &
2983 & trim(vname(1,idtsur(itrc)))) THEN
2984 got_var(idtsur(itrc))=.true.
2985 adm(ng)%pioVar(idtsur(itrc))%vd=
var_desc(i)
2986 adm(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
2987 adm(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
2988# endif
2989 END IF
2990 END DO
2991# endif
2992 END DO
2993
2994
2995
2996 IF (.not.got_var(idtime)) THEN
2997 IF (master) WRITE (stdout,70) trim(vname(1,idtime)), &
2998 & trim(ncname)
2999 exit_flag=3
3000 RETURN
3001 END IF
3002# ifdef SOLVE3D
3003 IF (.not.got_var(idpthr).and.hout(idpthr,ng)) THEN
3004 IF (master) WRITE (stdout,70) trim(vname(1,idpthr)), &
3005 & trim(ncname)
3006 exit_flag=3
3007 RETURN
3008 END IF
3009 IF (.not.got_var(idpthw).and.hout(idpthw,ng)) THEN
3010 IF (master) WRITE (stdout,70) trim(vname(1,idpthw)), &
3011 & trim(ncname)
3012 exit_flag=3
3013 RETURN
3014 END IF
3015# endif
3016 IF (.not.got_var(idfsur).and.hout(idfsur,ng)) THEN
3017 IF (master) WRITE (stdout,70) trim(vname(1,idfsur)), &
3018 & trim(ncname)
3019 exit_flag=3
3020 RETURN
3021 END IF
3022 IF (.not.got_var(idubar).and.hout(idubar,ng)) THEN
3023 IF (master) WRITE (stdout,70) trim(vname(1,idubar)), &
3024 & trim(ncname)
3025 exit_flag=3
3026 RETURN
3027 END IF
3028 IF (.not.got_var(idvbar).and.hout(idvbar,ng)) THEN
3029 IF (master) WRITE (stdout,70) trim(vname(1,idvbar)), &
3030 & trim(ncname)
3031 exit_flag=3
3032 RETURN
3033 END IF
3034# ifdef ADJUST_BOUNDARY
3035 IF (.not.got_var(idsbry(isfsur)).and. &
3036 & any(lobc(:,isfsur,ng))) THEN
3037 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isfsur))), &
3038 & trim(ncname)
3039 exit_flag=3
3040 RETURN
3041 END IF
3042 IF (.not.got_var(idsbry(isubar)).and. &
3043 & any(lobc(:,isubar,ng))) THEN
3044 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isubar))), &
3045 & trim(ncname)
3046 exit_flag=3
3047 RETURN
3048 END IF
3049 IF (.not.got_var(idsbry(isvbar)).and. &
3050 & any(lobc(:,isvbar,ng))) THEN
3051 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isvbar))), &
3052 & trim(ncname)
3053 exit_flag=3
3054 RETURN
3055 END IF
3056# endif
3057# ifdef ADJUST_WSTRESS
3058 IF (.not.got_var(idusms)) THEN
3059 IF (master) WRITE (stdout,70) trim(vname(1,idusms)), &
3060 & trim(ncname)
3061 exit_flag=3
3062 RETURN
3063 END IF
3064 IF (.not.got_var(idvsms)) THEN
3065 IF (master) WRITE (stdout,70) trim(vname(1,idvsms)), &
3066 & trim(ncname)
3067 exit_flag=3
3068 RETURN
3069 END IF
3070# endif
3071# ifdef SOLVE3D
3072 IF (.not.got_var(iduvel).and.hout(iduvel,ng)) THEN
3073 IF (master) WRITE (stdout,70) trim(vname(1,iduvel)), &
3074 & trim(ncname)
3075 exit_flag=3
3076 RETURN
3077 END IF
3078 IF (.not.got_var(idvvel).and.hout(idvvel,ng)) THEN
3079 IF (master) WRITE (stdout,70) trim(vname(1,idvvel)), &
3080 & trim(ncname)
3081 exit_flag=3
3082 RETURN
3083 END IF
3084# ifdef ADJUST_BOUNDARY
3085 IF (.not.got_var(idsbry(isuvel)).and. &
3086 & any(lobc(:,isuvel,ng))) THEN
3087 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isuvel))), &
3088 & trim(ncname)
3089 exit_flag=3
3090 RETURN
3091 END IF
3092 IF (.not.got_var(idsbry(isvvel)).and. &
3093 & any(lobc(:,isvvel,ng))) THEN
3094 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isvvel))), &
3095 & trim(ncname)
3096 exit_flag=3
3097 RETURN
3098 END IF
3099# endif
3100 IF (.not.got_var(idovel).and.hout(idovel,ng)) THEN
3101 IF (master) WRITE (stdout,70) trim(vname(1,idovel)), &
3102 & trim(ncname)
3103 exit_flag=3
3104 RETURN
3105 END IF
3106# ifdef UV_DESTAGGERED
3107 IF (.not.got_var(idu3de).and.hout(idu3de,ng)) THEN
3108 IF (master) WRITE (stdout,70) trim(vname(1,idu3de)), &
3109 & trim(ncname)
3110 exit_flag=3
3111 RETURN
3112 END IF
3113 IF (.not.got_var(idv3dn).and.hout(idv3dn,ng)) THEN
3114 IF (master) WRITE (stdout,70) trim(vname(1,idv3dn)), &
3115 & trim(ncname)
3116 exit_flag=3
3117 RETURN
3118 END IF
3119# endif
3120 IF (.not.got_var(iddano).and.hout(iddano,ng)) THEN
3121 IF (master) WRITE (stdout,70) trim(vname(1,iddano)), &
3122 & trim(ncname)
3123 exit_flag=3
3124 RETURN
3125 END IF
3126# endif
3127# ifdef SOLVE3D
3128 DO itrc=1,nt(ng)
3129 IF (.not.got_var(idtvar(itrc)).and.hout(idtvar(itrc),ng)) THEN
3130 IF (master) WRITE (stdout,70) trim(vname(1,idtvar(itrc))), &
3131 & trim(ncname)
3132 exit_flag=3
3133 RETURN
3134 END IF
3135# ifdef ADJUST_BOUNDARY
3136 IF (.not.got_var(idsbry(istvar(itrc))).and. &
3137 & any(lobc(:,istvar(itrc),ng))) THEN
3138 IF (master) WRITE (stdout,70) &
3139 & trim(vname(1,idsbry(istvar(itrc)))), &
3140 & trim(ncname)
3141 exit_flag=3
3142 RETURN
3143 END IF
3144# endif
3145# ifdef ADJUST_STFLUX
3146 IF (.not.got_var(idtsur(itrc)).and.lstflux(itrc,ng)) THEN
3147 IF (master) WRITE (stdout,70) trim(vname(1,idtsur(itrc))), &
3148 & trim(ncname)
3149 exit_flag=3
3150 RETURN
3151 END IF
3152# endif
3153 END DO
3154# endif
3155
3156
3157
3158 IF (ndefadj(ng).gt.0) THEN
3159 adm(ng)%Rindex=((ntstart(ng)-1)- &
3160 & ndefadj(ng)*((ntstart(ng)-1)/ndefadj(ng)))/ &
3161 & nadj(ng)
3162 ELSE
3163 adm(ng)%Rindex=(ntstart(ng)-1)/nadj(ng)
3164 END IF
3165 adm(ng)%Rindex=min(adm(ng)%Rindex,rec_size)
3166 fcount=adm(ng)%Fcount
3167 adm(ng)%Nrec(fcount)=rec_size
3168 END IF query
3169
3170 10 FORMAT (2x,'AD_DEF_HIS_PIO - creating adjoint file,',t56, &
3171 & 'Grid ',i2.2,': ',a)
3172 20 FORMAT (2x,'AD_DEF_HIS_PIO - inquiring adjoint file,',t56, &
3173 & 'Grid ',i2.2,': ',a)
3174 30 FORMAT (/,' AD_DEF_HIS_PIO - unable to create adjoint NetCDF', &
3175 & ' file: ',a)
3176 40 FORMAT ('adjoint',1x,a)
3177 50 FORMAT (1pe11.4,1x,'millimeter')
3178 60 FORMAT (/,' AD_DEF_HIS_PIO - unable to open adjoint NetCDF', &
3179 & ' file: ',a)
3180 70 FORMAT (/,' AD_DEF_HIS_PIO - unable to find variable: ',a,2x, &
3181 & ' in adjoint NetCDF file: ',a)
3182
3183 RETURN
integer, parameter pio_type
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
integer, parameter pio_frst
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)