1617
1618
1620
1621
1622
1623 logical, intent(in) :: ldef, VarOut(NV,Ngrids)
1624
1625 integer, intent(in) :: ng, model
1626 integer, intent(in), optional :: t2dgrd(:), u2dgrd(:), v2dgrd(:)
1627 integer, intent(in), optional :: t3dgrd(:), u3dgrd(:), v3dgrd(:)
1628 integer, intent(in), optional :: w3dgrd(:)
1629
1630 TYPE(T_IO), intent(inout) :: S(Ngrids)
1631
1632
1633
1634 logical :: got_var(NV)
1635
1636 integer, parameter :: Natt = 25
1637
1638 integer :: i, itrc, j, nvd3, nvd4, status
1639
1640 real(r8) :: Aval(6)
1641
1642# ifdef ADJOINT
1643 character (len=21) :: Prefix
1644# else
1645 character (len=13) :: Prefix
1646# endif
1647 character (len=120) :: Vinfo(Natt)
1648 character (len=256) :: ncname
1649
1650 character (len=*), parameter :: MyFile = &
1651 & __FILE__//", sediment_def_pio"
1652
1653 sourcefile=myfile
1654
1655
1656
1657
1658
1659 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1660 ncname=s(ng)%name
1661
1662 define : IF (ldef) THEN
1663
1664
1665
1666# if defined WRITE_WATER && defined MASKING
1667 nvd3=2
1668 nvd4=2
1669# else
1670 nvd3=3
1671 nvd4=4
1672# endif
1673
1674
1675
1676# ifdef ADJOINT
1677
1678 prefix='adjoint'
1679# else
1680
1681 prefix=char(32)
1682# endif
1683
1684
1685
1686 DO i=1,natt
1687 DO j=1,len(vinfo(1))
1688 vinfo(i)(j:j)=' '
1689 END DO
1690 END DO
1691 DO i=1,6
1692 aval(i)=0.0_r8
1693 END DO
1694
1695# if defined SEDIMENT && defined SED_MORPH
1696
1697
1698
1699 IF (varout(idbath,ng)) THEN
1700 vinfo( 1)=vname(1,idbath)
1701 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1702 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idbath))
1703 ELSE
1704 vinfo( 2)=vname(2,idbath)
1705 END IF
1706 vinfo( 3)=vname(3,idbath)
1707 vinfo(14)=vname(4,idbath)
1708 vinfo(16)=vname(1,idtime)
1709 vinfo(21)=vname(6,idbath)
1710 vinfo(22)='coordinates'
1711 aval(5)=real(iinfo(1,idbath,ng),r8)
1712 s(ng)%pioVar(idbath)%dkind=
pio_fout
1713 s(ng)%pioVar(idbath)%gtype=r2dvar
1714
1715 status=def_var(ng, model, s(ng)%pioFile, &
1716 & s(ng)%pioVar(idbath)%vd, &
1717 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
1718 & setfillval = .false.)
1719 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1720 END IF
1721# endif
1722
1723# if defined SEDIMENT && defined BEDLOAD
1724
1725
1726
1727 DO i=1,nst
1728 IF (varout(idubld(i),ng)) THEN
1729 vinfo( 1)=vname(1,idubld(i))
1730 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1731 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1732 & trim(vname(2,idubld(i)))
1733 ELSE
1734 vinfo( 2)=vname(2,idubld(i))
1735 END IF
1736 vinfo( 3)=vname(3,idubld(i))
1737 vinfo(14)=vname(4,idubld(i))
1738 vinfo(16)=vname(1,idtime)
1739# if defined WRITE_WATER && defined MASKING
1740 vinfo(20)='mask_u'
1741# endif
1742 vinfo(21)=vname(6,idubld(i))
1743 vinfo(22)='coordinates'
1744 aval(5)=real(iinfo(1,idubld(i),ng),r8)
1745 s(ng)%pioVar(idubld(i))%dkind=
pio_fout
1746 s(ng)%pioVar(idubld(i))%gtype=u2dvar
1747
1748 status=def_var(ng, model, s(ng)%pioFile, &
1749 & s(ng)%pioVar(idubld(i))%vd, &
1750 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1751 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1752 END IF
1753
1754
1755
1756 IF (varout(idvbld(i),ng)) THEN
1757 vinfo( 1)=vname(1,idvbld(i))
1758 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1759 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1760 & trim(vname(2,idvbld(i)))
1761 ELSE
1762 vinfo( 2)=vname(2,idvbld(i))
1763 END IF
1764 vinfo( 3)=vname(3,idvbld(i))
1765 vinfo(14)=vname(4,idvbld(i))
1766 vinfo(16)=vname(1,idtime)
1767# if defined WRITE_WATER && defined MASKING
1768 vinfo(20)='mask_v'
1769# endif
1770 vinfo(21)=vname(6,idvbld(i))
1771 vinfo(22)='coordinates'
1772 aval(5)=real(iinfo(1,idvbld(i),ng),r8)
1773 s(ng)%pioVar(idvbld(i))%dkind=
pio_fout
1774 s(ng)%pioVar(idvbld(i))%gtype=v2dvar
1775
1776 status=def_var(ng, model, s(ng)%pioFile, &
1777 & s(ng)%pioVar(idvbld(i))%vd, &
1778 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1779 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1780 END IF
1781 END DO
1782# endif
1783
1784# ifdef SEDIMENT
1785
1786
1787
1788 DO i=1,nst
1789 IF (varout(idfrac(i),ng)) THEN
1790 vinfo( 1)=vname(1,idfrac(i))
1791 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1792 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1793 & trim(vname(2,idfrac(i)))
1794 ELSE
1795 vinfo( 2)=vname(2,idfrac(i))
1796 END IF
1797 vinfo( 3)=vname(3,idfrac(i))
1798 vinfo(14)=vname(4,idfrac(i))
1799 vinfo(16)=vname(1,idtime)
1800 WRITE (vinfo(19),10) 1000.0_r8*sd50(i,ng)
1801# if defined WRITE_WATER && defined MASKING
1802 vinfo(20)='mask_rho'
1803# endif
1804 vinfo(21)=vname(6,idfrac(i))
1805 vinfo(22)='coordinates'
1806 aval(5)=real(iinfo(1,idfrac(i),ng))
1807 s(ng)%pioVar(idfrac(i))%dkind=
pio_fout
1808 s(ng)%pioVar(idfrac(i))%gtype=b3dvar
1809
1810 status=def_var(ng, model, s(ng)%pioFile, &
1811 & s(ng)%pioVar(idfrac(i))%vd, &
1812 &
pio_fout, nvd4, b3dgrd, aval, vinfo, ncname)
1813 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1814 END IF
1815 END DO
1816
1817
1818
1819 DO i=1,nst
1820 IF (varout(idbmas(i),ng)) THEN
1821 vinfo( 1)=vname(1,idbmas(i))
1822 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1823 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1824 & trim(vname(2,idbmas(i)))
1825 ELSE
1826 vinfo( 2)=vname(2,idbmas(i))
1827 END IF
1828 vinfo( 3)=vname(3,idbmas(i))
1829 vinfo(14)=vname(4,idbmas(i))
1830 vinfo(16)=vname(1,idtime)
1831 WRITE (vinfo(19),10) 1000.0_r8*sd50(i,ng)
1832# if defined WRITE_WATER && defined MASKING
1833 vinfo(20)='mask_rho'
1834# endif
1835 vinfo(21)=vname(6,idbmas(i))
1836 vinfo(22)='coordinates'
1837 aval(5)=real(iinfo(1,idbmas(i),ng),r8)
1838 s(ng)%pioVar(idbmas(i))%dkind=
pio_fout
1839 s(ng)%pioVar(idbmas(i))%gtype=b3dvar
1840
1841 status=def_var(ng, model, s(ng)%pioFile, &
1842 & s(ng)%pioVar(idbmas(i))%vd, &
1843 &
pio_fout, nvd4, b3dgrd, aval, vinfo, ncname)
1844 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1845 END IF
1846 END DO
1847
1848
1849
1850 DO i=1,mbedp
1851 IF (varout(idsbed(i),ng)) THEN
1852 vinfo( 1)=vname(1,idsbed(i))
1853 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1854 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1855 & trim(vname(2,idsbed(i)))
1856 ELSE
1857 vinfo( 2)=vname(2,idsbed(i))
1858 END IF
1859 vinfo( 3)=vname(3,idsbed(i))
1860 vinfo(14)=vname(4,idsbed(i))
1861 vinfo(16)=vname(1,idtime)
1862# if defined WRITE_WATER && defined MASKING
1863 vinfo(20)='mask_rho'
1864# endif
1865 vinfo(21)=vname(6,idsbed(i))
1866 vinfo(22)='coordinates'
1867 aval(5)=real(iinfo(1,idsbed(i),ng),r8)
1868 s(ng)%pioVar(idsbed(i))%dkind=
pio_fout
1869 s(ng)%pioVar(idsbed(i))%gtype=b3dvar
1870
1871 status=def_var(ng, model, s(ng)%pioFile, &
1872 & s(ng)%pioVar(idsbed(i))%vd, &
1873 pio_fout, nvd4, b3dgrd, aval, vinfo, ncname)
1874 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1875 END IF
1876 END DO
1877# endif
1878
1879# if defined SEDIMENT || defined BBL_MODEL
1880
1881
1882
1883 DO i=1,mbotp
1884 IF (varout(idbott(i),ng)) THEN
1885 vinfo( 1)=vname(1,idbott(i))
1886 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1887 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1888 & trim(vname(2,idbott(i)))
1889 ELSE
1890 vinfo( 2)=vname(2,idbott(i))
1891 END IF
1892 vinfo( 3)=vname(3,idbott(i))
1893 vinfo(14)=vname(4,idbott(i))
1894 vinfo(16)=vname(1,idtime)
1895# if defined WRITE_WATER && defined MASKING
1896 vinfo(20)='mask_rho'
1897# endif
1898 vinfo(21)=vname(6,idbott(i))
1899 vinfo(22)='coordinates'
1900 aval(5)=real(iinfo(1,idbott(i),ng),r8)
1901 s(ng)%pioVar(idbott(i))%dkind=
pio_fout
1902 s(ng)%pioVar(idbott(i))%gtype=r2dvar
1903
1904 status=def_var(ng, model, s(ng)%pioFile, &
1905 & s(ng)%pioVar(idbott(i))%vd, &
1906 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1907 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1908 END IF
1909 END DO
1910# endif
1911
1912# if defined SEDIMENT && defined BEDLOAD && defined BEDLOAD_VANDERA
1913
1914
1915
1916 IF (varout(idsurs,ng)) THEN
1917 vinfo( 1)=vname(1,idsurs)
1918 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1919 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsurs))
1920 ELSE
1921 vinfo( 2)=vname(2,idsurs)
1922 END IF
1923 vinfo( 3)=vname(3,idsurs)
1924 vinfo(14)=vname(4,idsurs)
1925 vinfo(16)=vname(1,idsurs)
1926# if defined WRITE_WATER && defined MASKING
1927 vinfo(20)='mask_rho'
1928# endif
1929 vinfo(21)=vname(6,idsurs)
1930 vinfo(22)='coordinates'
1931 aval(5)=real(iinfo(1,idsurs,ng),r8)
1932 s(ng)%pioVar(idsurs)%dkind=
pio_fout
1933 s(ng)%pioVar(idsurs)%gtype=r2dvar
1934
1935 status=def_var(ng, model, s(ng)%pioFile, &
1936 & s(ng)%pioVar(idsurs)%vd, &
1937 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1938 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1939 END IF
1940
1941
1942
1943 IF (varout(idsrrw,ng)) THEN
1944 vinfo( 1)=vname(1,idsrrw)
1945 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1946 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsrrw))
1947 ELSE
1948 vinfo( 2)=vname(2,idsrrw)
1949 END IF
1950 vinfo( 3)=vname(3,idsrrw)
1951 vinfo(14)=vname(4,idsrrw)
1952 vinfo(16)=vname(1,idsrrw)
1953# if defined WRITE_WATER && defined MASKING
1954 vinfo(20)='mask_rho'
1955# endif
1956 vinfo(21)=vname(6,idsrrw)
1957 vinfo(22)='coordinates'
1958 aval(5)=real(iinfo(1,idsrrw,ng),r8)
1959 s(ng)%pioVar(idsrrw)%dkind=
pio_fout
1960 s(ng)%pioVar(idsrrw)%gtype=r2dvar
1961
1962 status=def_var(ng, model, s(ng)%pioFile, &
1963 & s(ng)%pioVar(idsrrw)%vd, &
1964 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1965 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1966 END IF
1967
1968
1969
1970 IF (varout(idsbtw,ng)) THEN
1971 vinfo( 1)=vname(1,idsbtw)
1972 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
1973 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsbtw))
1974 ELSE
1975 vinfo( 2)=vname(2,idsbtw)
1976 END IF
1977 vinfo( 3)=vname(3,idsbtw)
1978 vinfo(14)=vname(4,idsbtw)
1979 vinfo(16)=vname(1,idsbtw)
1980# if defined WRITE_WATER && defined MASKING
1981 vinfo(20)='mask_rho'
1982# endif
1983 vinfo(21)=vname(6,idsbtw)
1984 vinfo(22)='coordinates'
1985 aval(5)=real(iinfo(1,idsbtw,ng),r8)
1986 s(ng)%pioVar(idsbtw)%dkind=
pio_fout
1987 s(ng)%pioVar(idsbtw)%gtype=r2dvar
1988
1989 status=def_var(ng, model, s(ng)%pioFile, &
1990 & s(ng)%pioVar(idsbtw)%vd, &
1991 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1992 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1993 END IF
1994
1995
1996
1997 IF (varout(idsucr,ng)) THEN
1998 vinfo( 1)=vname(1,idsucr)
1999 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
2000 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsucr))
2001 ELSE
2002 vinfo( 2)=vname(2,idsucr)
2003 END IF
2004 vinfo( 3)=vname(3,idsucr)
2005 vinfo(14)=vname(4,idsucr)
2006 vinfo(16)=vname(1,idsucr)
2007# if defined WRITE_WATER && defined MASKING
2008 vinfo(20)='mask_rho'
2009# endif
2010 vinfo(21)=vname(6,idsucr)
2011 vinfo(22)='coordinates'
2012 aval(5)=real(iinfo(1,idsucr,ng),r8)
2013 s(ng)%pioVar(idsucr)%dkind=
pio_fout
2014 s(ng)%pioVar(idsucr)%gtype=r2dvar
2015
2016 status=def_var(ng, model, s(ng)%pioFile, &
2017 & s(ng)%pioVar(idsucr)%vd, &
2018 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2019 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2020 END IF
2021
2022
2023
2024 IF (varout(idsutr,ng)) THEN
2025 vinfo( 1)=vname(1,idsutr)
2026 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
2027 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsutr))
2028 ELSE
2029 vinfo( 2)=vname(2,idsutr)
2030 END IF
2031 vinfo( 3)=vname(3,idsutr)
2032 vinfo(14)=vname(4,idsutr)
2033 vinfo(16)=vname(1,idsutr)
2034# if defined WRITE_WATER && defined MASKING
2035 vinfo(20)='mask_rho'
2036# endif
2037 vinfo(21)=vname(6,idsutr)
2038 vinfo(22)='coordinates'
2039 aval(5)=real(iinfo(1,idsutr,ng),r8)
2040 s(ng)%pioVar(idsutr)%dkind=
pio_fout
2041 s(ng)%pioVar(idsutr)%gtype=r2dvar
2042
2043 status=def_var(ng, model, s(ng)%pioFile, &
2044 & s(ng)%pioVar(idsutr)%vd, &
2045 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2046 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2047 END IF
2048
2049
2050
2051 IF (varout(idstcr,ng)) THEN
2052 vinfo( 1)=vname(1,idstcr)
2053 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
2054 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idstcr))
2055 ELSE
2056 vinfo( 2)=vname(2,idstcr)
2057 END IF
2058 vinfo( 3)=vname(3,idstcr)
2059 vinfo(14)=vname(4,idstcr)
2060 vinfo(16)=vname(1,idstcr)
2061# if defined WRITE_WATER && defined MASKING
2062 vinfo(20)='mask_rho'
2063# endif
2064 vinfo(21)=vname(6,idstcr)
2065 vinfo(22)='coordinates'
2066 aval(5)=real(iinfo(1,idstcr,ng),r8)
2067 s(ng)%pioVar(idstcr)%dkind=
pio_fout
2068 s(ng)%pioVar(idstcr)%gtype=r2dvar
2069
2070 status=def_var(ng, model, s(ng)%pioFile, &
2071 & s(ng)%pioVar(idstcr)%vd, &
2072 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2073 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2074 END IF
2075
2076
2077
2078 IF (varout(idsttr,ng)) THEN
2079 vinfo( 1)=vname(1,idsttr)
2080 IF (s(ng)%ncid.eq.avg(ng)%ncid) THEN
2081 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsttr))
2082 ELSE
2083 vinfo( 2)=vname(2,idsttr)
2084 END IF
2085 vinfo( 3)=vname(3,idsttr)
2086 vinfo(14)=vname(4,idsttr)
2087 vinfo(16)=vname(1,idsttr)
2088# if defined WRITE_WATER && defined MASKING
2089 vinfo(20)='mask_rho'
2090# endif
2091 vinfo(21)=vname(6,idsttr)
2092 vinfo(22)='coordinates'
2093 aval(5)=real(iinfo(1,idsttr,ng),r8)
2094 s(ng)%pioVar(idsttr)%dkind=
pio_fout
2095 s(ng)%pioVar(idsttr)%gtype=r2dvar
2096
2097 status=def_var(ng, model, s(ng)%pioFile, &
2098 & s(ng)%pioVar(idsttr)%vd, &
2099 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2100 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2101 END IF
2102# endif
2103
2104 END IF define
2105
2106
2107
2108
2109
2110
2111 query : IF (.not.ldef) THEN
2112
2113
2114
2115 DO i=1,nv
2116 got_var(i)=.false.
2117 END DO
2118
2119
2120
2121
2122 DO i=1,n_var
2123 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
2124 got_var(idtime)=.true.
2125 s(ng)%pioVar(idtime)%vd=
var_desc(i)
2126 s(ng)%pioVar(idtime)%dkind=
pio_tout
2127 s(ng)%pioVar(idtime)%gtype=0
2128# if defined SEDIMENT && defined SED_MORPH
2129 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idbath))) THEN
2130 got_var(idbath)=.true.
2131 s(ng)%pioVar(idbath)%vd=
var_desc(i)
2132 s(ng)%pioVar(idbath)%dkind=
pio_fout
2133 s(ng)%pioVar(idbath)%gtype=r2dvar
2134# endif
2135# if defined SEDIMENT && defined BEDLOAD && defined BEDLOAD_VANDERA
2136 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsurs))) THEN
2137 got_var(idsurs)=.true.
2138 s(ng)%pioVar(idsurs)%vd=
var_desc(i)
2139 s(ng)%pioVar(idsurs)%dkind=
pio_fout
2140 s(ng)%pioVar(idsurs)%gtype=r2dvar
2141 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrrw))) THEN
2142 got_var(idsrrw)=.true.
2143 s(ng)%pioVar(idsrrw)%vd=
var_desc(i)
2144 s(ng)%pioVar(idsrrw)%dkind=
pio_fout
2145 s(ng)%pioVar(idsrrw)%gtype=r2dvar
2146 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsbtw))) THEN
2147 got_var(idsbtw)=.true.
2148 s(ng)%pioVar(idsbtw)%vd=
var_desc(i)
2149 s(ng)%pioVar(idsbtw)%dkind=
pio_fout
2150 s(ng)%pioVar(idsbtw)%gtype=r2dvar
2151 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsucr))) THEN
2152 got_var(idsucr)=.true.
2153 s(ng)%pioVar(idsucr)%vd=
var_desc(i)
2154 s(ng)%pioVar(idsucr)%dkind=
pio_fout
2155 s(ng)%pioVar(idsucr)%gtype=r2dvar
2156 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsutr))) THEN
2157 got_var(idsutr)=.true.
2158 s(ng)%pioVar(idsutr)%vd=
var_desc(i)
2159 s(ng)%pioVar(idsutr)%dkind=
pio_fout
2160 s(ng)%pioVar(idsutr)%gtype=r2dvar
2161 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idstcr))) THEN
2162 got_var(idstcr)=.true.
2163 s(ng)%pioVar(idstcr)%vd=
var_desc(i)
2164 s(ng)%pioVar(idstcr)%dkind=
pio_fout
2165 s(ng)%pioVar(idstcr)%gtype=r2dvar
2166 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsttr))) THEN
2167 got_var(idsttr)=.true.
2168 s(ng)%pioVar(idsttr)%vd=
var_desc(i)
2169 s(ng)%pioVar(idsttr)%dkind=
pio_fout
2170 s(ng)%pioVar(idsttr)%gtype=r2dvar
2171# endif
2172# ifdef SEDIMENT
2173 DO itrc=1,nst
2174 IF (trim(var_name(i)).eq. &
2175 & trim(vname(1,idfrac(itrc)))) THEN
2176 got_var(idfrac(itrc))=.true.
2177 s(ng)%pioVar(idfrac(itrc))%vd=
var_desc(i)
2178 s(ng)%pioVar(idfrac(itrc))%dkind=
pio_fout
2179 s(ng)%pioVar(idfrac(itrc))%gtype=b3dvar
2180 ELSE IF (trim(var_name(i)).eq. &
2181 & trim(vname(1,idbmas(itrc)))) THEN
2182 got_var(idbmas(itrc))=.true.
2183 s(ng)%pioVar(idbmas(itrc))%vd=
var_desc(i)
2184 s(ng)%pioVar(idbmas(itrc))%dkind=
pio_fout
2185 s(ng)%pioVar(idbmas(itrc))%gtype=b3dvar
2186# ifdef BEDLOAD
2187 ELSE IF (trim(var_name(i)).eq. &
2188 & trim(vname(1,idubld(itrc)))) THEN
2189 got_var(idubld(itrc))=.true.
2190 s(ng)%pioVar(idubld(itrc))%vd=
var_desc(i)
2191 s(ng)%pioVar(idubld(itrc))%dkind=
pio_fout
2192 s(ng)%pioVar(idubld(itrc))%gtype=u2dvar
2193 ELSE IF (trim(var_name(i)).eq. &
2194 & trim(vname(1,idvbld(itrc)))) THEN
2195 got_var(idvbld(itrc))=.true.
2196 s(ng)%pioVar(idvbld(itrc))%vd=
var_desc(i)
2197 s(ng)%pioVar(idvbld(itrc))%dkind=
pio_fout
2198 s(ng)%pioVar(idvbld(itrc))%gtype=v2dvar
2199# endif
2200 END IF
2201 END DO
2202 DO itrc=1,mbedp
2203 IF (trim(var_name(i)).eq.trim(vname(1,idsbed(itrc)))) THEN
2204 got_var(idsbed(itrc))=.true.
2205 s(ng)%pioVar(idsbed(itrc))%vd=
var_desc(i)
2206 s(ng)%pioVar(idsbed(itrc))%dkind=
pio_fout
2207 s(ng)%pioVar(idsbed(itrc))%gtype=b3dvar
2208 END IF
2209 END DO
2210# endif
2211# if defined SEDIMENT || defined BBL_MODEL
2212 DO itrc=1,mbotp
2213 IF (trim(var_name(i)).eq.trim(vname(1,idbott(itrc)))) THEN
2214 got_var(idbott(itrc))=.true.
2215 s(ng)%pioVar(idbott(itrc))%vd=
var_desc(i)
2216 s(ng)%pioVar(idbott(itrc))%dkind=
pio_fout
2217 s(ng)%pioVar(idbott(itrc))%gtype=r2dvar
2218 END IF
2219 END DO
2220# endif
2221 END DO
2222
2223
2224
2225 IF (.not.got_var(idtime)) THEN
2226 IF (master) WRITE (stdout,20) trim(vname(1,idtime)), &
2227 & trim(ncname)
2228 exit_flag=3
2229 RETURN
2230 END IF
2231# if defined SEDIMENT && defined SED_MORPH
2232 IF (.not.got_var(idbath).and.varout(idbath,ng)) THEN
2233 IF (master) WRITE (stdout,20) trim(vname(1,idbath)), &
2234 & trim(ncname)
2235 exit_flag=3
2236 RETURN
2237 END IF
2238# endif
2239# if defined SEDIMENT && defined BEDLOAD && defined BEDLOAD_VANDERA
2240 IF (.not.got_var(idsurs).and.varout(idsurs,ng)) THEN
2241 IF (master) WRITE (stdout,20) trim(vname(1,idsurs)), &
2242 & trim(ncname)
2243 exit_flag=3
2244 RETURN
2245 END IF
2246 IF (.not.got_var(idsrrw).and.varout(idsrrw,ng)) THEN
2247 IF (master) WRITE (stdout,20) trim(vname(1,idsrrw)), &
2248 & trim(ncname)
2249 exit_flag=3
2250 RETURN
2251 END IF
2252 IF (.not.got_var(idsbtw).and.varout(idsbtw,ng)) THEN
2253 IF (master) WRITE (stdout,20) trim(vname(1,idsbtw)), &
2254 & trim(ncname)
2255 exit_flag=3
2256 RETURN
2257 END IF
2258 IF (.not.got_var(idsucr).and.varout(idsucr,ng)) THEN
2259 IF (master) WRITE (stdout,20) trim(vname(1,idsucr)), &
2260 & trim(ncname)
2261 exit_flag=3
2262 RETURN
2263 END IF
2264 IF (.not.got_var(idsutr).and.varout(idsutr,ng)) THEN
2265 IF (master) WRITE (stdout,20) trim(vname(1,idsutr)), &
2266 & trim(ncname)
2267 exit_flag=3
2268 RETURN
2269 END IF
2270 IF (.not.got_var(idstcr).and.varout(idstcr,ng)) THEN
2271 IF (master) WRITE (stdout,20) trim(vname(1,idstcr)), &
2272 & trim(ncname)
2273 exit_flag=3
2274 RETURN
2275 END IF
2276 IF (.not.got_var(idsttr).and.varout(idsttr,ng)) THEN
2277 IF (master) WRITE (stdout,20) trim(vname(1,idsttr)), &
2278 & trim(ncname)
2279 exit_flag=3
2280 RETURN
2281 END IF
2282# endif
2283# ifdef SEDIMENT
2284 DO i=1,nst
2285 IF (.not.got_var(idfrac(i)).and.varout(idfrac(i),ng)) THEN
2286 IF (master) WRITE (stdout,20) trim(vname(1,idfrac(i))), &
2287 & trim(ncname)
2288 exit_flag=3
2289 RETURN
2290 END IF
2291
2292 IF(.not.got_var(idbmas(i)).and.varout(idbmas(i),ng)) THEN
2293 IF (master) WRITE (stdout,20) trim(vname(1,idbmas(i))), &
2294 & trim(ncname)
2295 exit_flag=3
2296 RETURN
2297 END IF
2298# ifdef BEDLOAD
2299 IF (.not.got_var(idubld(i)).and.varout(idubld(i),ng)) THEN
2300 IF (master) WRITE (stdout,20) trim(vname(1,idubld(i))), &
2301 & trim(ncname)
2302 exit_flag=3
2303 RETURN
2304 END IF
2305 IF (.not.got_var(idvbld(i)).and.varout(idvbld(i),ng)) THEN
2306 IF (master) WRITE (stdout,20) trim(vname(1,idvbld(i))), &
2307 & trim(ncname)
2308 exit_flag=3
2309 RETURN
2310 END IF
2311# endif
2312 END DO
2313 DO i=1,mbedp
2314 IF (.not.got_var(idsbed(i)).and.varout(idsbed(i),ng)) THEN
2315 IF (master) WRITE (stdout,20) trim(vname(1,idsbed(i))), &
2316 & trim(ncname)
2317 exit_flag=3
2318 RETURN
2319 END IF
2320 END DO
2321# endif
2322# if defined SEDIMENT || defined BBL_MODEL
2323 DO i=1,mbotp
2324 IF (.not.got_var(idbott(i)).and.varout(idbott(i),ng)) THEN
2325 IF (master) WRITE (stdout,20) trim(vname(1,idbott(i))), &
2326 & trim(ncname)
2327 exit_flag=3
2328 RETURN
2329 END IF
2330 END DO
2331# endif
2332 END IF query
2333
2334 10 FORMAT (1pe11.4,1x,'millimeter')
2335 20 FORMAT (/,' SEDIMENT_DEF_PIO - unable to find variable: ', &
2336 & a,2x,' in output NetCDF file: ',a)
2337
2338 RETURN
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
integer, parameter pio_tout