Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/atmc14.dat
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/atmc14.dat (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/atmc14.dat (revision 7041)
@@ -0,0 +1,245 @@
+ Year South 30S-30N North
+ 1765.5 0 0 0
+ 1766.5 0 0 0
+ 1767.5 0 0 0
+ 1768.5 0 0 0
+ 1769.5 0 0 0
+ 1770.5 0 0 0
+ 1771.5 0 0 0
+ 1772.5 0 0 0
+ 1773.5 0 0 0
+ 1774.5 0 0 0
+ 1775.5 0 0 0
+ 1776.5 0 0 0
+ 1777.5 0 0 0
+ 1778.5 0 0 0
+ 1779.5 0 0 0
+ 1780.5 0 0 0
+ 1781.5 0 0 0
+ 1782.5 0 0 0
+ 1783.5 0 0 0
+ 1784.5 0 0 0
+ 1785.5 0 0 0
+ 1786.5 0 0 0
+ 1787.5 0 0 0
+ 1788.5 0 0 0
+ 1789.5 0 0 0
+ 1790.5 0 0 0
+ 1791.5 0 0 0
+ 1792.5 0 0 0
+ 1793.5 0 0 0
+ 1794.5 0 0 0
+ 1795.5 0 0 0
+ 1796.5 0 0 0
+ 1797.5 0 0 0
+ 1798.5 0 0 0
+ 1799.5 0 0 0
+ 1800.5 0 0 0
+ 1801.5 0 0 0
+ 1802.5 0 0 0
+ 1803.5 0 0 0
+ 1804.5 0 0 0
+ 1805.5 0 0 0
+ 1806.5 0 0 0
+ 1807.5 0 0 0
+ 1808.5 0 0 0
+ 1809.5 0 0 0
+ 1810.5 0 0 0
+ 1811.5 0 0 0
+ 1812.5 0 0 0
+ 1813.5 0 0 0
+ 1814.5 0 0 0
+ 1815.5 0 0 0
+ 1816.5 0 0 0
+ 1817.5 0 0 0
+ 1818.5 0 0 0
+ 1819.5 0 0 0
+ 1820.5 0 0 0
+ 1821.5 0 0 0
+ 1822.5 0 0 0
+ 1823.5 0 0 0
+ 1824.5 0 0 0
+ 1825.5 0 0 0
+ 1826.5 0 0 0
+ 1827.5 0 0 0
+ 1828.5 0 0 0
+ 1829.5 0 0 0
+ 1830.5 0 0 0
+ 1831.5 0 0 0
+ 1832.5 0 0 0
+ 1833.5 0 0 0
+ 1834.5 0 0 0
+ 1835.5 0 0 0
+ 1836.5 0 0 0
+ 1837.5 0 0 0
+ 1838.5 0 0 0
+ 1839.5 0 0 0
+ 1840.5 -0.9 -0.9 -0.9
+ 1841.5 -1 -1 -1
+ 1842.5 -1.2 -1.2 -1.2
+ 1843.5 -1.3 -1.3 -1.3
+ 1844.5 -1.5 -1.5 -1.5
+ 1845.5 -1.6 -1.6 -1.6
+ 1846.5 -1.7 -1.7 -1.7
+ 1847.5 -1.9 -1.9 -1.9
+ 1848.5 -2 -2 -2
+ 1849.5 -2.2 -2.2 -2.2
+ 1850.5 -2.3 -2.3 -2.3
+ 1851.5 -2.5 -2.5 -2.5
+ 1852.5 -2.6 -2.6 -2.6
+ 1853.5 -2.8 -2.8 -2.8
+ 1854.5 -3 -3 -3
+ 1855.5 -3.1 -3.1 -3.1
+ 1856.5 -3.3 -3.3 -3.3
+ 1857.5 -3.6 -3.6 -3.6
+ 1858.5 -3.8 -3.8 -3.8
+ 1859.5 -4 -4 -4
+ 1860.5 -4.2 -4.2 -4.2
+ 1861.5 -4.5 -4.5 -4.5
+ 1862.5 -4.7 -4.7 -4.7
+ 1863.5 -4.9 -4.9 -4.9
+ 1864.5 -5.2 -5.2 -5.2
+ 1865.5 -5.4 -5.4 -5.4
+ 1866.5 -5.4 -5.4 -5.4
+ 1867.5 -5.4 -5.4 -5.4
+ 1868.5 -5.4 -5.4 -5.4
+ 1869.5 -5.4 -5.4 -5.4
+ 1870.5 -5.4 -5.4 -5.4
+ 1871.5 -5.3 -5.3 -5.3
+ 1872.5 -5.3 -5.3 -5.3
+ 1873.5 -5.3 -5.3 -5.3
+ 1874.5 -5.3 -5.3 -5.3
+ 1875.5 -5.3 -5.3 -5.3
+ 1876.5 -5.3 -5.3 -5.3
+ 1877.5 -5.3 -5.3 -5.3
+ 1878.5 -5.2 -5.2 -5.2
+ 1879.5 -5.2 -5.2 -5.2
+ 1880.5 -5.2 -5.2 -5.2
+ 1881.5 -5.2 -5.2 -5.2
+ 1882.5 -5.2 -5.2 -5.2
+ 1883.5 -5.1 -5.1 -5.1
+ 1884.5 -5.1 -5.1 -5.1
+ 1885.5 -5.1 -5.1 -5.1
+ 1886.5 -4.9 -4.9 -4.9
+ 1887.5 -4.8 -4.8 -4.8
+ 1888.5 -4.6 -4.6 -4.6
+ 1889.5 -4.5 -4.5 -4.5
+ 1890.5 -7 -4.5 -2
+ 1891.5 -7 -4.5 -2
+ 1892.5 -7 -4.5 -2
+ 1893.5 -7 -4.5 -2
+ 1894.5 -7 -4.5 -2
+ 1895.5 -7 -4.5 -2
+ 1896.5 -7.3 -4.8 -2.3
+ 1897.5 -7.7 -5.2 -2.7
+ 1898.5 -8 -5.5 -3
+ 1899.5 -8.3 -5.8 -3.3
+ 1900.5 -8.7 -6.2 -3.7
+ 1901.5 -9 -6.5 -4
+ 1902.5 -9.3 -6.8 -4.3
+ 1903.5 -9.7 -7.2 -4.7
+ 1904.5 -10 -7.5 -5
+ 1905.5 -10.3 -7.8 -5.3
+ 1906.5 -10.7 -8.2 -5.7
+ 1907.5 -11 -8.5 -6
+ 1908.5 -11.3 -8.8 -6.3
+ 1909.5 -11.7 -9.2 -6.7
+ 1910.5 -12 -9.5 -7
+ 1911.5 -12.3 -9.8 -7.3
+ 1912.5 -12.7 -10.2 -7.7
+ 1913.5 -13 -10.5 -8
+ 1914.5 -13.3 -10.8 -8.3
+ 1915.5 -13.7 -11.2 -8.7
+ 1916.5 -14 -11.5 -9
+ 1917.5 -14.3 -11.8 -9.3
+ 1918.5 -14.7 -12.2 -9.7
+ 1919.5 -15 -12.5 -10
+ 1920.5 -15.3 -12.8 -10.3
+ 1921.5 -15.7 -13.2 -10.7
+ 1922.5 -16 -13.5 -11
+ 1923.5 -16.3 -13.8 -11.3
+ 1924.5 -16.7 -14.2 -11.7
+ 1925.5 -17 -14.5 -12
+ 1926.5 -17.3 -14.8 -12.3
+ 1927.5 -17.7 -15.2 -12.7
+ 1928.5 -18 -15.5 -13
+ 1929.5 -18.3 -15.8 -13.3
+ 1930.5 -18.7 -16.2 -13.7
+ 1931.5 -19 -16.5 -14
+ 1932.5 -19.3 -16.8 -14.3
+ 1933.5 -19.7 -17.2 -14.7
+ 1934.5 -20 -17.5 -15
+ 1935.5 -20.3 -17.8 -15.3
+ 1936.5 -20.7 -18.2 -15.7
+ 1937.5 -21 -18.5 -16
+ 1938.5 -21.3 -18.8 -16.3
+ 1939.5 -21.7 -19.2 -16.7
+ 1940.5 -22.2 -21.5 -20.2
+ 1941.5 -21.4 -20.8 -19.4
+ 1942.5 -21.6 -21 -19.6
+ 1943.5 -24.5 -23.9 -22.5
+ 1944.5 -23.7 -23 -21.7
+ 1945.5 -24.1 -23.4 -22.1
+ 1946.5 -23.6 -22.8 -21.6
+ 1947.5 -23.1 -22.2 -21.1
+ 1948.5 -24.3 -23.4 -22.3
+ 1949.5 -26.6 -25.9 -24.6
+ 1950.5 -26.8 -26.1 -24.8
+ 1951.5 -26.8 -26 -24.8
+ 1952.5 -26.9 -25.7 -24.9
+ 1953.5 -25.9 -23.5 -23.9
+ 1954.5 -23.8 -14.4 -21.1
+ 1955.5 -11 -6.4 -8.2
+ 1956.5 14.7 23.4 26.5
+ 1957.5 35.8 51.9 73
+ 1958.5 81.8 105.7 140.2
+ 1959.5 141.1 176.8 228
+ 1960.5 185.6 200.3 212.3
+ 1961.5 198.7 205.8 221.6
+ 1962.5 215.9 256.2 358.5
+ 1963.5 330.6 474.3 718.3
+ 1964.5 520.6 672.3 835.7
+ 1965.5 637.3 697.5 756.3
+ 1966.5 619.7 658.5 691.9
+ 1967.5 585.6 605.4 623.6
+ 1968.5 549.7 559.6 564.5
+ 1969.5 528.5 537.1 545.4
+ 1970.5 506 519.1 529.1
+ 1971.5 489 495.4 499.4
+ 1972.5 461.6 466.6 465.6
+ 1973.5 430.9 426.1 418.6
+ 1974.5 394.9 400.7 400.8
+ 1975.5 378.2 378.7 369.8
+ 1976.5 349.8 354.4 352.5
+ 1977.5 326.7 330 333.9
+ 1978.5 310.2 320.6 325.8
+ 1979.5 291 296.1 295.8
+ 1980.5 274.8 272 264.5
+ 1981.5 257.5 254.8 256.7
+ 1982.5 241.1 241.1 238.3
+ 1983.5 221.5 225 224.2
+ 1984.5 206.7 209.7 209.3
+ 1985.5 197.1 204 201.1
+ 1986.5 187.4 193.9 191.1
+ 1987.5 175.5 186.5 183.6
+ 1988.5 171.6 177.6 174.7
+ 1989.5 157.3 166.6 163.7
+ 1990.5 148.3 155.1 152.2
+ 1991.5 141.2 145.3 142.4
+ 1992.5 132.2 137.6 136.3
+ 1993.5 127.2 131.8 128.7
+ 1994.5 120.4 125.5 122.1
+ 1995.5 114.9 120 115.8
+ 1996.5 110.3 109.6 109.8
+ 1997.5 105.2 109.7 104
+ 1998.5 100.2 103.2 100.3
+ 1999.5 92.7 98.6 95.7
+ 2000.5 86.5 92.6 89.7
+ 2001.5 80.7 87.6 84.8
+ 2002.5 72.9 80.4 77.5
+ 2003.5 79.5 77.4 73.5
+ 2004.5 77.7 75 70.6
+ 2005.5 75.7 73 67
+ 2006.5 75 72 66
+ 2007.5 74 71 65
+ 2008.5 73 70 64
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/cfc1112.atm
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/cfc1112.atm (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/cfc1112.atm (revision 7041)
@@ -0,0 +1,84 @@
+ % Atmospheric lifetimes are 44.0 for CFC-11
+ % and 125.0 for CFC-12
+ % rel= 0
+ % <-Northern Data-> <-Southern Data->
+ % Year CFC-11 CFC-12 CFC-11 CFC-12
+ % (ppt) (ppt) (ppt) (ppt)
+ 1931.50 0.00 0.00 0.00 0.00
+ 1932.50 0.00 0.01 0.00 0.01
+ 1933.50 0.00 0.02 0.00 0.01
+ 1934.50 0.00 0.03 0.00 0.02
+ 1935.50 0.00 0.04 0.00 0.03
+ 1936.50 0.00 0.07 0.00 0.04
+ 1937.50 0.00 0.11 0.00 0.07
+ 1938.50 0.00 0.17 0.00 0.11
+ 1939.50 0.01 0.25 0.00 0.17
+ 1940.50 0.01 0.37 0.01 0.25
+ 1941.50 0.02 0.53 0.01 0.36
+ 1942.50 0.02 0.72 0.02 0.51
+ 1943.50 0.03 0.94 0.02 0.69
+ 1944.50 0.04 1.25 0.03 0.91
+ 1945.50 0.05 1.65 0.04 1.21
+ 1946.50 0.08 2.33 0.05 1.64
+ 1947.50 0.14 3.42 0.08 2.33
+ 1948.50 0.24 4.73 0.14 3.32
+ 1949.50 0.42 6.10 0.25 4.48
+ 1950.50 0.67 7.58 0.42 5.77
+ 1951.50 1.02 9.23 0.66 7.19
+ 1952.50 1.53 10.94 1.01 8.72
+ 1953.50 2.21 12.82 1.49 10.37
+ 1954.50 3.07 14.97 2.13 12.20
+ 1955.50 4.11 17.40 2.93 14.25
+ 1956.50 5.39 20.22 3.92 16.59
+ 1957.50 6.84 23.45 5.11 19.28
+ 1958.50 8.19 26.86 6.39 22.28
+ 1959.50 9.47 30.58 7.63 25.52
+ 1960.50 11.13 35.03 8.96 29.18
+ 1961.50 13.38 40.12 10.63 33.42
+ 1962.50 16.23 45.89 12.78 38.25
+ 1963.50 19.72 52.66 15.47 43.80
+ 1964.50 23.87 60.57 18.75 50.28
+ 1965.50 28.57 69.53 22.61 57.76
+ 1966.50 33.78 79.46 26.99 66.21
+ 1967.50 39.63 90.60 31.91 75.67
+ 1968.50 46.27 103.16 37.46 86.31
+ 1969.50 53.96 117.17 43.80 98.25
+ 1970.50 62.75 132.52 51.07 111.52
+ 1971.50 72.36 149.00 59.27 126.02
+ 1972.50 83.04 166.85 68.34 141.70
+ 1973.50 95.27 186.59 78.54 158.82
+ 1974.50 108.81 208.14 90.04 177.62
+ 1975.50 121.86 229.37 102.29 197.54
+ 1976.50 134.47 249.51 114.40 217.31
+ 1977.50 146.47 268.67 126.28 236.49
+ 1978.50 157.18 286.35 137.45 254.72
+ 1979.50 166.67 303.74 147.60 272.00
+ 1980.50 175.11 320.96 158.08 290.34
+ 1981.50 182.81 337.33 166.54 306.90
+ 1982.50 189.88 352.01 174.69 323.74
+ 1983.50 197.72 367.69 183.03 341.15
+ 1984.50 206.34 383.86 190.95 357.80
+ 1985.50 216.12 401.25 200.50 376.45
+ 1986.50 227.48 420.96 209.82 394.00
+ 1987.50 239.67 441.49 220.60 412.82
+ 1988.50 251.05 463.22 231.46 433.46
+ 1989.50 257.28 481.80 240.38 452.97
+ 1990.50 263.65 493.96 249.23 470.55
+ 1991.50 266.33 504.64 254.53 484.07
+ 1992.50 266.00 512.87 258.80 495.65
+ 1993.50 267.58 520.12 260.56 504.49
+ 1994.50 267.24 526.58 261.73 512.31
+ 1995.50 266.38 531.59 261.29 518.39
+ 1996.50 265.25 534.81 261.08 523.50
+ 1997.50 263.84 537.67 260.16 528.18
+ 1998.50 262.24 999.99 258.96 999.99
+ 1999.50 260.72 999.99 257.75 999.99
+ 2000.50 259.34 999.99 255.69 999.99
+ 2001.50 257.13 999.99 253.54 999.99
+ 2002.50 254.89 999.99 252.93 999.99
+ 2003.50 251.89 999.99 250.62 999.99
+ 2004.50 250.67 999.99 249.52 999.99
+ 2005.50 249.49 999.99 247.45 999.99
+ 2006.50 248.31 999.99 245.38 999.99
+ 2007.50 247.13 999.99 243.31 999.99
+ 2008.50 245.95 999.99 241.24 999.99
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/domain_def.xml
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/domain_def.xml (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/domain_def.xml (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/domain_def.xml
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/field_def.xml
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/field_def.xml (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/field_def.xml (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/field_def.xml
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/iodef.xml
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/iodef.xml (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/iodef.xml (revision 7041)
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @Age_e3t / @e3t
+ @CFC11_e3t / @e3t
+ @RC14_e3t / @e3t
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50000000
+ 2
+ 0
+ false
+ false
+ oceanx
+
+
+
+
+
+
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_cfg
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_cfg (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_cfg (revision 7041)
@@ -0,0 +1,258 @@
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!! NEMO/OPA Configuration namelist : used to overwrite defaults values defined in SHARED/namelist_ref
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!
+!-----------------------------------------------------------------------
+&namrun ! parameters of the run
+!-----------------------------------------------------------------------
+ nn_no = 0 ! job number (no more used...)
+ cn_exp = "ORCA2" ! experience name
+ nn_it000 = 1 ! first time step
+ nn_itend = 75 ! last time step (std 5475)
+ nn_date0 = 19600101
+ nn_stock = 5475 ! frequency of creation of a restart file (modulo referenced to 1)
+ ln_mskland = .true. ! mask land points in NetCDF outputs (costly: + ~15%)
+ ln_clobber = .true. ! clobber (overwrite) an existing file
+/
+!-----------------------------------------------------------------------
+&namcfg ! parameters of the configuration
+!-----------------------------------------------------------------------
+ cp_cfg = "orca" ! name of the configuration
+ jp_cfg = 2 ! resolution of the configuration
+ jpidta = 182 ! 1st lateral dimension ( >= jpi )
+ jpjdta = 149 ! 2nd " " ( >= jpj )
+ jpkdta = 31 ! number of levels ( >= jpk )
+ jpiglo = 182 ! 1st dimension of global domain --> i =jpidta
+ jpjglo = 149 ! 2nd - - --> j =jpjdta
+ jpizoom = 1 ! left bottom (i,j) indices of the zoom
+ jpjzoom = 1 ! in data domain indices
+ jperio = 4 ! lateral cond. type (between 0 and 6)
+/
+!-----------------------------------------------------------------------
+&namzgr ! vertical coordinate
+!-----------------------------------------------------------------------
+ ln_zps = .true. ! z-coordinate - partial steps
+ ln_linssh = .true. ! linear free surface
+/
+!-----------------------------------------------------------------------
+&namdom ! space and time domain (bathymetry, mesh, timestep)
+!-----------------------------------------------------------------------
+ nn_msh = 0 ! create (=1) a mesh file or not (=0)
+ jphgr_msh = 0 ! type of horizontal mesh
+ ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)
+ ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)
+ ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)
+ ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)
+ ppe1_m = 999999.0 ! zonal grid-spacing (degrees)
+ ppe2_m = 999999.0 ! meridional grid-spacing (degrees)
+ ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients
+ ppa0 = 255.58049070440 ! (default coefficients)
+ ppa1 = 245.58132232490 !
+ ppkth = 21.43336197938 !
+ ppacr = 3.0 !
+ ppdzmin = 999999. ! Minimum vertical spacing
+ pphmax = 999999. ! Maximum depth
+ ldbletanh = .FALSE. ! Use/do not use double tanf function for vertical coordinates
+ ppa2 = 999999. ! Double tanh function parameters
+ ppkth2 = 999999. !
+ ppacr2 = 999999. !
+/
+!-----------------------------------------------------------------------
+&namcrs ! Grid coarsening for dynamics output and/or
+ ! passive tracer coarsened online simulations
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtsd ! data : Temperature & Salinity
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namsbc ! Surface Boundary Condition (surface module)
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namsbc_core ! namsbc_core CORE bulk formulae
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtra_qsr ! penetrative solar radiation
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namsbc_rnf ! runoffs namelist surface boundary condition
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namsbc_ssr ! surface boundary condition : sea surface restoring
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namsbc_alb ! albedo parameters
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namberg ! iceberg parameters
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namlbc ! lateral momentum boundary condition
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&nambfr ! bottom friction
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&nambbc ! bottom temperature boundary condition (default: NO)
+!-----------------------------------------------------------------------
+ ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom
+/
+!-----------------------------------------------------------------------
+&nambbl ! bottom boundary layer scheme
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&nameos ! ocean physical parameters
+!-----------------------------------------------------------------------
+ ln_teos10 = .true. ! = Use TEOS-10 equation of state
+/
+!-----------------------------------------------------------------------
+&namtra_adv ! advection scheme for tracer
+!-----------------------------------------------------------------------
+ ln_traadv_fct = .true. ! FCT scheme
+ nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order
+ nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order
+ nn_fct_zts = 0 ! > 1 , 2nd order FCT scheme with vertical sub-timestepping
+ ! ! (number of sub-timestep = nn_fct_zts)
+/
+!-----------------------------------------------------------------------
+&namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param)
+!-----------------------------------------------------------------------
+/
+!----------------------------------------------------------------------------------
+&namtra_ldf ! lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+ ! ! Operator type:
+ ln_traldf_lap = .true. ! laplacian operator
+ ln_traldf_blp = .false. ! bilaplacian operator
+ ! ! Direction of action:
+ ln_traldf_lev = .false. ! iso-level
+ ln_traldf_hor = .false. ! horizontal (geopotential)
+ ln_traldf_iso = .true. ! iso-neutral (standard operator)
+ ln_traldf_triad = .false. ! iso-neutral (triad operator)
+ !
+ ! ! iso-neutral options:
+ ln_traldf_msc = .true. ! Method of Stabilizing Correction (both operators)
+ rn_slpmax = 0.01 ! slope limit (both operators)
+ ln_triad_iso = .false. ! pure horizontal mixing in ML (triad only)
+ rn_sw_triad = 1 ! =1 switching triad ; =0 all 4 triads used (triad only)
+ ln_botmix_triad = .false. ! lateral mixing on bottom (triad only)
+ !
+ ! ! Coefficients:
+ nn_aht_ijk_t = 20 ! space/time variation of eddy coef
+ ! ! =-20 (=-30) read in eddy_diffusivity_2D.nc (..._3D.nc) file
+ ! ! = 0 constant
+ ! ! = 10 F(k) =ldf_c1d
+ ! ! = 20 F(i,j) =ldf_c2d
+ ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation
+ ! ! = 30 F(i,j,k) =ldf_c2d + ldf_c1d
+ ! ! = 31 F(i,j,k,t)=F(local velocity)
+ rn_aht_0 = 2000. ! lateral eddy diffusivity (lap. operator) [m2/s]
+ rn_bht_0 = 1.e+12 ! lateral eddy diffusivity (bilap. operator) [m4/s]
+/
+!----------------------------------------------------------------------------------
+&namtra_ldfeiv ! eddy induced velocity param.
+!----------------------------------------------------------------------------------
+ ln_ldfeiv =.true. ! use eddy induced velocity parameterization
+ ln_ldfeiv_dia =.true. ! diagnose eiv stream function and velocities
+ rn_aeiv_0 = 2000. ! eddy induced velocity coefficient [m2/s]
+ nn_aei_ijk_t = 21 ! space/time variation of the eiv coeficient
+ ! ! =-20 (=-30) read in eddy_induced_velocity_2D.nc (..._3D.nc) file
+ ! ! = 0 constant
+ ! ! = 10 F(k) =ldf_c1d
+ ! ! = 20 F(i,j) =ldf_c2d
+ ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation
+ ! ! = 30 F(i,j,k) =ldf_c2d + ldf_c1d
+/
+!-----------------------------------------------------------------------
+&namtra_dmp ! tracer: T & S newtonian damping
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namdyn_adv ! formulation of the momentum advection
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namdyn_vor ! option of physics/algorithm (not control by CPP keys)
+!-----------------------------------------------------------------------
+ ln_dynvor_ene = .false. ! enstrophy conserving scheme
+ ln_dynvor_ens = .false. ! energy conserving scheme
+ ln_dynvor_mix = .false. ! mixed scheme
+ ln_dynvor_een = .true. ! energy & enstrophy scheme
+ nn_een_e3f = 0 ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1)
+/
+!-----------------------------------------------------------------------
+&namdyn_hpg ! Hydrostatic pressure gradient option
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namdyn_spg ! surface pressure gradient
+!-----------------------------------------------------------------------
+ ln_dynspg_ts = .true. ! split-explicit free surface
+/
+!-----------------------------------------------------------------------
+&namdyn_ldf ! lateral diffusion on momentum
+!-----------------------------------------------------------------------
+ ! ! Type of the operator :
+ ! ! no diffusion: set ln_dynldf_lap=..._blp=F
+ ln_dynldf_lap = .true. ! laplacian operator
+ ln_dynldf_blp = .false. ! bilaplacian operator
+ ! ! Direction of action :
+ ln_dynldf_lev = .true. ! iso-level
+ ln_dynldf_hor = .false. ! horizontal (geopotential)
+ ln_dynldf_iso = .false. ! iso-neutral
+ ! ! Coefficient
+ nn_ahm_ijk_t = -30 ! space/time variation of eddy coef
+ ! ! =-30 read in eddy_viscosity_3D.nc file
+ ! ! =-20 read in eddy_viscosity_2D.nc file
+ ! ! = 0 constant
+ ! ! = 10 F(k)=c1d
+ ! ! = 20 F(i,j)=F(grid spacing)=c2d
+ ! ! = 30 F(i,j,k)=c2d*c1d
+ ! ! = 31 F(i,j,k)=F(grid spacing and local velocity)
+ rn_ahm_0 = 40000. ! horizontal laplacian eddy viscosity [m2/s]
+ rn_ahm_b = 0. ! background eddy viscosity for ldf_iso [m2/s]
+ rn_bhm_0 = 1.e+12 ! horizontal bilaplacian eddy viscosity [m4/s]
+/
+!-----------------------------------------------------------------------
+&namzdf ! vertical physics
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke")
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm")
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx")
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&nammpp ! Massively Parallel Processing ("key_mpp_mpi)
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namctl ! Control prints & Benchmark
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namptr ! Poleward Transport Diagnostic
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namhsb ! Heat and salt budgets
+!-----------------------------------------------------------------------
+/
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_cfg
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_cfg (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_cfg (revision 7041)
@@ -0,0 +1,137 @@
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!! LIM3 namelist :
+!! 1 - Generic parameters (namicerun)
+!! 2 - Ice initialization (namiceini)
+!! 3 - Ice discretization (namiceitd)
+!! 4 - Ice dynamics and transport (namicedyn)
+!! 5 - Ice thermodynamics (namicethd)
+!! 6 - Ice salinity (namicesal)
+!! 7 - Ice mechanical redistribution (namiceitdme)
+!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!
+!------------------------------------------------------------------------------
+&namicerun ! Generic parameters
+!------------------------------------------------------------------------------
+ jpl = 5 ! number of ice categories
+ nlay_i = 2 ! number of ice layers
+ nlay_s = 1 ! number of snow layers (only 1 is working)
+ cn_icerst_in = "restart_ice" ! suffix of ice restart name (input)
+ cn_icerst_indir = "." ! directory from which to read input ice restarts
+ cn_icerst_out = "restart_ice" ! suffix of ice restart name (output)
+ cn_icerst_outdir = "." ! directory in which to write output ice restarts
+ ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F)
+ rn_amax_n = 0.999 ! maximum tolerated ice concentration NH
+ rn_amax_s = 0.999 ! maximum tolerated ice concentration SH
+ ln_limdiahsb = .false. ! check the heat and salt budgets (T) or not (F)
+ ln_limdiaout = .true. ! output the heat and salt budgets (T) or not (F)
+ ln_icectl = .false. ! ice points output for debug (T or F)
+ iiceprt = 10 ! i-index for debug
+ jiceprt = 10 ! j-index for debug
+/
+!------------------------------------------------------------------------------
+&namiceini ! Ice initialization
+!------------------------------------------------------------------------------
+ ln_iceini = .true. ! activate ice initialization (T) or not (F)
+ rn_thres_sst = 2.0 ! maximum water temperature with initial ice (degC)
+ rn_hts_ini_n = 0.3 ! initial real snow thickness (m), North
+ rn_hts_ini_s = 0.3 ! " " South
+ rn_hti_ini_n = 3.0 ! initial real ice thickness (m), North
+ rn_hti_ini_s = 1.0 ! " " South
+ rn_ati_ini_n = 0.9 ! initial ice concentration (-), North
+ rn_ati_ini_s = 0.9 ! " " South
+ rn_smi_ini_n = 6.3 ! initial ice salinity (g/kg), North
+ rn_smi_ini_s = 6.3 ! " " South
+ rn_tmi_ini_n = 270. ! initial ice/snw temperature (K), North
+ rn_tmi_ini_s = 270. ! " " South
+/
+!------------------------------------------------------------------------------
+&namiceitd ! Ice discretization
+!------------------------------------------------------------------------------
+ nn_catbnd = 2 ! computation of ice category boundaries based on
+ ! 1: tanh function
+ ! 2: h^(-alpha), function of rn_himean
+ rn_himean = 2.0 ! expected domain-average ice thickness (m), nn_catbnd = 2 only
+/
+!------------------------------------------------------------------------------
+&namicedyn ! Ice dynamics and transport
+!------------------------------------------------------------------------------
+ nn_icestr = 0 ! ice strength parameteriztaion
+ ! 0: Hibler_79 P = pstar**exp(-c_rhg*A)
+ ! 1: Rothrock_75 P = Cf*coeff*integral(wr.h^2)
+ ln_icestr_bvf = .false. ! ice strength function brine volume (T) or not (F)
+ rn_pe_rdg = 17.0 ! ridging work divided by pot. energy change in ridging, if nn_icestr = 1
+ rn_pstar = 2.0e+04 ! ice strength thickness parameter (N/m2), nn_icestr = 0
+ rn_crhg = 20.0 ! ice strength conc. parameter (-), nn_icestr = 0
+ rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-)
+ rn_creepl = 1.0e-12 ! creep limit (s-1)
+ rn_ecc = 2.0 ! eccentricity of the elliptical yield curve
+ nn_nevp = 120 ! number of EVP subcycles
+ rn_relast = 0.333 ! ratio of elastic timescale to ice time step: Telast = dt_ice * rn_relast
+ ! advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300)
+ nn_ahi0 = 2 ! horizontal diffusivity computation
+ ! 0: use rn_ahi0_ref
+ ! 1: use rn_ahi0_ref x mean grid cell length / ( 2deg mean grid cell length )
+ ! 2: use rn_ahi0_ref x grid cell length / ( 2deg mean grid cell length )
+ rn_ahi0_ref = 350.0 ! horizontal sea ice diffusivity (m2/s)
+ ! if nn_ahi0 > 0, rn_ahi0_ref is the reference value at a nominal 2 deg resolution
+/
+!------------------------------------------------------------------------------
+&namicehdf ! Ice horizontal diffusion
+!------------------------------------------------------------------------------
+ nn_convfrq = 5 ! convergence check frequency of the Crant-Nicholson scheme (perf. optimization)
+/
+!------------------------------------------------------------------------------
+&namicethd ! Ice thermodynamics
+!------------------------------------------------------------------------------
+ rn_hnewice = 0.1 ! thickness for new ice formation in open water (m)
+ ln_frazil = .false. ! use frazil ice collection thickness as a function of wind (T) or not (F)
+ rn_maxfrazb = 1.0 ! maximum fraction of frazil ice collecting at the ice base
+ rn_vfrazb = 0.417 ! thresold drift speed for frazil ice collecting at the ice bottom (m/s)
+ rn_Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom
+ rn_himin = 0.10 ! minimum ice thickness (m) used in remapping, must be smaller than rn_hnewice
+ rn_betas = 0.66 ! exponent in lead-ice repratition of snow precipitation
+ ! betas = 1 -> equipartition, betas < 1 -> more on leads
+ rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice (m-1)
+ nn_conv_dif = 50 ! maximal number of iterations for heat diffusion computation
+ rn_terr_dif = 0.0001 ! maximum temperature after heat diffusion (degC)
+ nn_ice_thcon= 1 ! sea ice thermal conductivity
+ ! 0: k = k0 + beta.S/T (Untersteiner, 1964)
+ ! 1: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007)
+ nn_monocat = 0 ! virtual ITD mono-category parameterizations (1, jpl = 1 only) or not (0)
+ ! 2: simple piling instead of ridging --- temporary option
+ ! 3: activate G(he) only --- temporary option
+ ! 4: activate lateral melting only --- temporary option
+ ln_it_qnsice = .true. ! iterate the surface non-solar flux with surface temperature (T) or not (F)
+/
+!------------------------------------------------------------------------------
+&namicesal ! Ice salinity
+!------------------------------------------------------------------------------
+ nn_icesal = 2 ! ice salinity option
+ ! 1: constant ice salinity (S=rn_icesal)
+ ! 2: varying salinity parameterization S(z,t)
+ ! 3: prescribed salinity profile S(z), Schwarzacher, 1959
+ rn_icesal = 4. ! ice salinity (g/kg, nn_icesal = 1 only)
+ rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg)
+ rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s)
+ rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg)
+ rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s)
+ rn_simax = 20. ! maximum tolerated ice salinity (g/kg)
+ rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg)
+/
+!------------------------------------------------------------------------------
+&namiceitdme ! Ice mechanical redistribution (ridging and rafting)
+!------------------------------------------------------------------------------
+ rn_Cs = 0.5 ! fraction of shearing energy contributing to ridging
+ rn_fsnowrdg = 0.5 ! snow volume fraction that survives in ridging
+ rn_fsnowrft = 0.5 ! snow volume fraction that survives in rafting
+ nn_partfun = 1 ! type of ridging participation function
+ ! 0: linear (Thorndike et al, 1975)
+ ! 1: exponential (Lipscomb, 2007
+ rn_gstar = 0.15 ! fractional area of thin ice being ridged (nn_partfun = 0)
+ rn_astar = 0.05 ! exponential measure of ridging ice fraction (nn_partfun = 1)
+ rn_hstar = 100.0 ! determines the maximum thickness of ridged ice (m) (Hibler, 1980)
+ ln_rafting = .true. ! rafting activated (T) or not (F)
+ rn_hraft = 0.75 ! threshold thickness for rafting (m)
+ rn_craft = 5.0 ! squeezing coefficient used in the rafting function
+ rn_por_rdg = 0.3 ! porosity of newly ridged ice (Lepparanta et al., 1995)
+/
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_ref (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ice_ref (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/namelist_ice_lim3_ref
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ref (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_ref (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/namelist_ref
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_cfg
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_cfg (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_cfg (revision 7041)
@@ -0,0 +1,62 @@
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!! NEMO/TOP1 : - tracer run information (namtrc_run)
+!! - tracer definition (namtrc )
+!! - tracer data initialisation (namtrc_dta)
+!! - tracer advection (namtrc_adv)
+!! - tracer lateral diffusion (namtrc_ldf)
+!! - tracer vertical physics (namtrc_zdf)
+!! - tracer newtonian damping (namtrc_dmp)
+!! - dynamical tracer trends (namtrc_trd)
+!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!-----------------------------------------------------------------------
+&namtrc_run ! run information
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc ! tracers definition
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_dta ! Initialisation from data input file
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_adv ! advection scheme for passive tracer
+!-----------------------------------------------------------------------
+ ln_trcadv_fct = .true. ! FCT scheme
+ nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order
+ nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order
+/
+!-----------------------------------------------------------------------
+&namtrc_ldf ! lateral diffusion scheme for passive tracer
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_zdf ! vertical physics
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_rad ! treatment of negative concentrations
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_dmp ! passive tracer newtonian damping
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_ice ! Representation of sea ice growth & melt effects
+!-----------------------------------------------------------------------
+/
+!-----------------------------------------------------------------------
+&namtrc_trd ! diagnostics on tracer trends ('key_trdtrc')
+! or mixed-layer trends ('key_trdmld_trc')
+!----------------------------------------------------------------------
+/
+!----------------------------------------------------------------------
+&namtrc_bc ! data for boundary conditions
+!-----------------------------------------------------------------------
+/
+!----------------------------------------------------------------------
+&namtrc_bdy ! Setup of tracer boundary conditions
+!-----------------------------------------------------------------------
+/
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_ref (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_top_ref (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/namelist_top_ref
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_cfg
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_cfg (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_cfg (revision 7041)
@@ -0,0 +1,54 @@
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!! Inert tracers reference namelist
+!! 1 - AGE (namage)
+!! 1 - CFC (namcfc)
+!! 2 - C14 (namc14_typ, namc14_sbc, namc14_fcg)
+!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namage ! AGE - dates
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+/
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namcfcdate ! CFC
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_typ ! C14 - type of C14 tracer, default values of C14/C and pco2
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_sbc ! C14 - surface BC
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_dia ! additional diagnostics
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ln_c14dia=.true. ! !
+ c14dia3d(1) = 'DeltaC14' ! Delta C14 (permil)
+ c14dia3d(2) = 'C14Age' ! Radioage (yr)
+ c14dia2d(1) = 'qtr_c14' ! Air-sea flux (1/m2/s)
+ c14dia2d(2) = 'qint_c14' ! Cumulative air-sea flux (1/m2)
+ c14dia2d(3) = 'RAge' ! Reservoir Age (yr)
+ c14dia0d(1) = 'AtmCO2' ! Global atmospheric CO2 (ppm)
+ c14dia0d(2) = 'AtmC14' ! Global atmospheric Delta-C14 (permil)
+ c14dia0d(3) = 'K_C14' ! Global 14C/C exchange velocity (m/yr)
+ c14dia0d(4) = 'K_CO2' ! Global CO2 piston velocity (cm/h)
+ c14dia0d(5) = 'C14Inv' ! Radiocarbon ocean inventory (10^26 atoms)
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_fcg ! files & dates
+! ! For Paleo-historical: specify tyrc14_beg in yr BP
+! ! For Bomb: tyrc14_beg=0
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ cfileco2 = 'splco2.dat' ! atmospheric co2 - Bomb
+ cfilec14 = 'atmc14.dat' ! atmospheric c14 - Bomb
+ tyrc14_beg = 0.00 ! starting year of experiment - Bomb
+! cfileco2 = 'ByrdEdcCO2.txt' ! atmospheric co2 - Paleo
+! cfilec14 = 'intcal13.14c' ! atmospheric c14 - Paleo
+! tyrc14_beg = 35000.00 ! starting year of experiment - Paleo (yr BP)
+/
+!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_ref (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/namelist_trc_ref (revision 7041)
@@ -0,0 +1,1 @@
+link ../../SHARED/namelist_trc_ref
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/splco2.dat
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/splco2.dat (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/EXP00/splco2.dat (revision 7041)
@@ -0,0 +1,482 @@
+# 4 452
+# Weighted smoothing spline fit
+# Ice core and Mauna Loa CO2
+# 50% attenuation at 23.4968 ; REG = 100.000
+# Time Smoothed data
+ 1765.0 277.9514
+ 1765.5 277.9652
+ 1766.0 277.9797
+ 1766.5 277.9949
+ 1767.0 278.0108
+ 1767.5 278.0275
+ 1768.0 278.0448
+ 1768.5 278.0628
+ 1769.0 278.0816
+ 1769.5 278.1011
+ 1770.0 278.1213
+ 1770.5 278.1423
+ 1771.0 278.1640
+ 1771.5 278.1864
+ 1772.0 278.2096
+ 1772.5 278.2335
+ 1773.0 278.2581
+ 1773.5 278.2835
+ 1774.0 278.3097
+ 1774.5 278.3366
+ 1775.0 278.3642
+ 1775.5 278.3927
+ 1776.0 278.4218
+ 1776.5 278.4518
+ 1777.0 278.4825
+ 1777.5 278.5140
+ 1778.0 278.5463
+ 1778.5 278.5793
+ 1779.0 278.6132
+ 1779.5 278.6478
+ 1780.0 278.6832
+ 1780.5 278.7194
+ 1781.0 278.7564
+ 1781.5 278.7942
+ 1782.0 278.8327
+ 1782.5 278.8721
+ 1783.0 278.9123
+ 1783.5 278.9533
+ 1784.0 278.9951
+ 1784.5 279.0378
+ 1785.0 279.0812
+ 1785.5 279.1255
+ 1786.0 279.1706
+ 1786.5 279.2165
+ 1787.0 279.2633
+ 1787.5 279.3109
+ 1788.0 279.3593
+ 1788.5 279.4085
+ 1789.0 279.4586
+ 1789.5 279.5096
+ 1790.0 279.5614
+ 1790.5 279.6140
+ 1791.0 279.6676
+ 1791.5 279.7219
+ 1792.0 279.7772
+ 1792.5 279.8332
+ 1793.0 279.8902
+ 1793.5 279.9480
+ 1794.0 280.0067
+ 1794.5 280.0662
+ 1795.0 280.1266
+ 1795.5 280.1878
+ 1796.0 280.2499
+ 1796.5 280.3129
+ 1797.0 280.3767
+ 1797.5 280.4414
+ 1798.0 280.5069
+ 1798.5 280.5732
+ 1799.0 280.6401
+ 1799.5 280.7077
+ 1800.0 280.7759
+ 1800.5 280.8447
+ 1801.0 280.9139
+ 1801.5 280.9836
+ 1802.0 281.0537
+ 1802.5 281.1241
+ 1803.0 281.1948
+ 1803.5 281.2657
+ 1804.0 281.3369
+ 1804.5 281.4081
+ 1805.0 281.4794
+ 1805.5 281.5508
+ 1806.0 281.6221
+ 1806.5 281.6933
+ 1807.0 281.7644
+ 1807.5 281.8354
+ 1808.0 281.9060
+ 1808.5 281.9764
+ 1809.0 282.0465
+ 1809.5 282.1161
+ 1810.0 282.1853
+ 1810.5 282.2540
+ 1811.0 282.3222
+ 1811.5 282.3897
+ 1812.0 282.4566
+ 1812.5 282.5228
+ 1813.0 282.5882
+ 1813.5 282.6528
+ 1814.0 282.7166
+ 1814.5 282.7794
+ 1815.0 282.8412
+ 1815.5 282.9021
+ 1816.0 282.9619
+ 1816.5 283.0205
+ 1817.0 283.0779
+ 1817.5 283.1343
+ 1818.0 283.1896
+ 1818.5 283.2438
+ 1819.0 283.2971
+ 1819.5 283.3495
+ 1820.0 283.4011
+ 1820.5 283.4519
+ 1821.0 283.5020
+ 1821.5 283.5513
+ 1822.0 283.6001
+ 1822.5 283.6483
+ 1823.0 283.6959
+ 1823.5 283.7432
+ 1824.0 283.7900
+ 1824.5 283.8365
+ 1825.0 283.8827
+ 1825.5 283.9286
+ 1826.0 283.9745
+ 1826.5 284.0201
+ 1827.0 284.0658
+ 1827.5 284.1115
+ 1828.0 284.1573
+ 1828.5 284.2032
+ 1829.0 284.2494
+ 1829.5 284.2958
+ 1830.0 284.3426
+ 1830.5 284.3898
+ 1831.0 284.4375
+ 1831.5 284.4857
+ 1832.0 284.5346
+ 1832.5 284.5842
+ 1833.0 284.6345
+ 1833.5 284.6856
+ 1834.0 284.7376
+ 1834.5 284.7906
+ 1835.0 284.8445
+ 1835.5 284.8995
+ 1836.0 284.9557
+ 1836.5 285.0131
+ 1837.0 285.0718
+ 1837.5 285.1318
+ 1838.0 285.1932
+ 1838.5 285.2561
+ 1839.0 285.3206
+ 1839.5 285.3866
+ 1840.0 285.4543
+ 1840.5 285.5233
+ 1841.0 285.5936
+ 1841.5 285.6647
+ 1842.0 285.7366
+ 1842.5 285.8088
+ 1843.0 285.8812
+ 1843.5 285.9535
+ 1844.0 286.0255
+ 1844.5 286.0971
+ 1845.0 286.1683
+ 1845.5 286.2390
+ 1846.0 286.3091
+ 1846.5 286.3786
+ 1847.0 286.4475
+ 1847.5 286.5157
+ 1848.0 286.5831
+ 1848.5 286.6498
+ 1849.0 286.7157
+ 1849.5 286.7808
+ 1850.0 286.8451
+ 1850.5 286.9087
+ 1851.0 286.9714
+ 1851.5 287.0332
+ 1852.0 287.0943
+ 1852.5 287.1544
+ 1853.0 287.2138
+ 1853.5 287.2722
+ 1854.0 287.3298
+ 1854.5 287.3865
+ 1855.0 287.4423
+ 1855.5 287.4972
+ 1856.0 287.5515
+ 1856.5 287.6052
+ 1857.0 287.6583
+ 1857.5 287.7111
+ 1858.0 287.7635
+ 1858.5 287.8158
+ 1859.0 287.8680
+ 1859.5 287.9202
+ 1860.0 287.9725
+ 1860.5 288.0250
+ 1861.0 288.0778
+ 1861.5 288.1310
+ 1862.0 288.1848
+ 1862.5 288.2392
+ 1863.0 288.2942
+ 1863.5 288.3501
+ 1864.0 288.4070
+ 1864.5 288.4648
+ 1865.0 288.5238
+ 1865.5 288.5840
+ 1866.0 288.6455
+ 1866.5 288.7084
+ 1867.0 288.7726
+ 1867.5 288.8382
+ 1868.0 288.9053
+ 1868.5 288.9737
+ 1869.0 289.0437
+ 1869.5 289.1151
+ 1870.0 289.1880
+ 1870.5 289.2624
+ 1871.0 289.3384
+ 1871.5 289.4160
+ 1872.0 289.4954
+ 1872.5 289.5764
+ 1873.0 289.6592
+ 1873.5 289.7439
+ 1874.0 289.8304
+ 1874.5 289.9188
+ 1875.0 290.0092
+ 1875.5 290.1014
+ 1876.0 290.1957
+ 1876.5 290.2918
+ 1877.0 290.3899
+ 1877.5 290.4898
+ 1878.0 290.5917
+ 1878.5 290.6954
+ 1879.0 290.8010
+ 1879.5 290.9083
+ 1880.0 291.0174
+ 1880.5 291.1281
+ 1881.0 291.2405
+ 1881.5 291.3543
+ 1882.0 291.4697
+ 1882.5 291.5864
+ 1883.0 291.7044
+ 1883.5 291.8237
+ 1884.0 291.9442
+ 1884.5 292.0658
+ 1885.0 292.1885
+ 1885.5 292.3122
+ 1886.0 292.4368
+ 1886.5 292.5622
+ 1887.0 292.6884
+ 1887.5 292.8154
+ 1888.0 292.9430
+ 1888.5 293.0711
+ 1889.0 293.1996
+ 1889.5 293.3284
+ 1890.0 293.4572
+ 1890.5 293.5860
+ 1891.0 293.7147
+ 1891.5 293.8430
+ 1892.0 293.9709
+ 1892.5 294.0982
+ 1893.0 294.2247
+ 1893.5 294.3504
+ 1894.0 294.4751
+ 1894.5 294.5987
+ 1895.0 294.7210
+ 1895.5 294.8422
+ 1896.0 294.9626
+ 1896.5 295.0822
+ 1897.0 295.2014
+ 1897.5 295.3202
+ 1898.0 295.4390
+ 1898.5 295.5578
+ 1899.0 295.6769
+ 1899.5 295.7964
+ 1900.0 295.9167
+ 1900.5 296.0378
+ 1901.0 296.1599
+ 1901.5 296.2834
+ 1902.0 296.4082
+ 1902.5 296.5348
+ 1903.0 296.6631
+ 1903.5 296.7935
+ 1904.0 296.9261
+ 1904.5 297.0609
+ 1905.0 297.1977
+ 1905.5 297.3365
+ 1906.0 297.4772
+ 1906.5 297.6196
+ 1907.0 297.7637
+ 1907.5 297.9093
+ 1908.0 298.0562
+ 1908.5 298.2043
+ 1909.0 298.3535
+ 1909.5 298.5036
+ 1910.0 298.6545
+ 1910.5 298.8061
+ 1911.0 298.9584
+ 1911.5 299.1113
+ 1912.0 299.2648
+ 1912.5 299.4189
+ 1913.0 299.5734
+ 1913.5 299.7285
+ 1914.0 299.8839
+ 1914.5 300.0397
+ 1915.0 300.1958
+ 1915.5 300.3522
+ 1916.0 300.5088
+ 1916.5 300.6656
+ 1917.0 300.8225
+ 1917.5 300.9796
+ 1918.0 301.1368
+ 1918.5 301.2941
+ 1919.0 301.4514
+ 1919.5 301.6087
+ 1920.0 301.7659
+ 1920.5 301.9232
+ 1921.0 302.0803
+ 1921.5 302.2373
+ 1922.0 302.3942
+ 1922.5 302.5508
+ 1923.0 302.7071
+ 1923.5 302.8628
+ 1924.0 303.0179
+ 1924.5 303.1723
+ 1925.0 303.3258
+ 1925.5 303.4783
+ 1926.0 303.6298
+ 1926.5 303.7800
+ 1927.0 303.9290
+ 1927.5 304.0764
+ 1928.0 304.2224
+ 1928.5 304.3668
+ 1929.0 304.5098
+ 1929.5 304.6515
+ 1930.0 304.7920
+ 1930.5 304.9312
+ 1931.0 305.0694
+ 1931.5 305.2066
+ 1932.0 305.3428
+ 1932.5 305.4782
+ 1933.0 305.6128
+ 1933.5 305.7468
+ 1934.0 305.8803
+ 1934.5 306.0135
+ 1935.0 306.1465
+ 1935.5 306.2795
+ 1936.0 306.4126
+ 1936.5 306.5461
+ 1937.0 306.6801
+ 1937.5 306.8148
+ 1938.0 306.9503
+ 1938.5 307.0871
+ 1939.0 307.2251
+ 1939.5 307.3647
+ 1940.0 307.5059
+ 1940.5 307.6490
+ 1941.0 307.7943
+ 1941.5 307.9417
+ 1942.0 308.0917
+ 1942.5 308.2444
+ 1943.0 308.3999
+ 1943.5 308.5586
+ 1944.0 308.7204
+ 1944.5 308.8857
+ 1945.0 309.0544
+ 1945.5 309.2267
+ 1946.0 309.4026
+ 1946.5 309.5824
+ 1947.0 309.7661
+ 1947.5 309.9538
+ 1948.0 310.1455
+ 1948.5 310.3415
+ 1949.0 310.5418
+ 1949.5 310.7465
+ 1950.0 310.9557
+ 1950.5 311.1696
+ 1951.0 311.3883
+ 1951.5 311.6119
+ 1952.0 311.8406
+ 1952.5 312.0746
+ 1953.0 312.3139
+ 1953.5 312.5587
+ 1954.0 312.8091
+ 1954.5 313.0653
+ 1955.0 313.3275
+ 1955.5 313.5958
+ 1956.0 313.8704
+ 1956.5 314.1514
+ 1957.0 314.4390
+ 1957.5 314.7334
+ 1958.0 315.0347
+ 1958.5 315.3430
+ 1959.0 315.6585
+ 1959.5 315.9810
+ 1960.0 316.3099
+ 1960.5 316.6444
+ 1961.0 316.9835
+ 1961.5 317.3266
+ 1962.0 317.6732
+ 1962.5 318.0236
+ 1963.0 318.3782
+ 1963.5 318.7385
+ 1964.0 319.1062
+ 1964.5 319.4833
+ 1965.0 319.8721
+ 1965.5 320.2745
+ 1966.0 320.6922
+ 1966.5 321.1253
+ 1967.0 321.5737
+ 1967.5 322.0377
+ 1968.0 322.5174
+ 1968.5 323.0131
+ 1969.0 323.5248
+ 1969.5 324.0520
+ 1970.0 324.5937
+ 1970.5 325.1487
+ 1971.0 325.7158
+ 1971.5 326.2941
+ 1972.0 326.8828
+ 1972.5 327.4806
+ 1973.0 328.0859
+ 1973.5 328.6966
+ 1974.0 329.3108
+ 1974.5 329.9296
+ 1975.0 330.5549
+ 1975.5 331.1889
+ 1976.0 331.8340
+ 1976.5 332.4917
+ 1977.0 333.1631
+ 1977.5 333.8474
+ 1978.0 334.5436
+ 1978.5 335.2500
+ 1979.0 335.9649
+ 1979.5 336.6871
+ 1980.0 337.4153
+ 1980.5 338.1481
+ 1981.0 338.8848
+ 1981.5 339.6254
+ 1982.0 340.3708
+ 1982.5 341.1221
+ 1983.0 341.8802
+ 1983.5 342.6460
+ 1984.0 343.4197
+ 1984.5 344.2017
+ 1985.0 344.9922
+ 1985.5 345.7917
+ 1986.0 346.6006
+ 1986.5 347.4193
+ 1987.0 348.2476
+ 1987.5 349.0837
+ 1988.0 349.9257
+ 1988.5 350.7702
+ 1989.0 351.6200
+ 1989.5 352.4700
+ 1990.0 353.3200
+ 1990.5 354.1700
+ 1991.0 354.9666
+ 1991.5 355.4840
+ 1992.0 355.9125
+ 1992.5 356.2656
+ 1993.0 356.4832
+ 1993.5 356.9545
+ 1994.0 357.6902
+ 1994.5 358.6209
+ 1995.0 359.6369
+ 1995.5 360.6260
+ 1996.0 361.5229
+ 1996.5 362.3600
+ 1997.0 362.8839
+ 1997.5 363.4538
+ 1998.0 364.7527
+ 1998.5 366.5040
+ 1999.0 367.6363
+ 1999.5 368.1512
+ 2000.0 368.5849
+ 2000.5 369.4103
+ 2001.0 370.3523
+ 2001.5 371.0773
+ 2002.0 371.9717
+ 2002.5 373.1636
+ 2003.0 374.4362
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/cpp_ORCA2_LIM3_TRC.fcm
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/cpp_ORCA2_LIM3_TRC.fcm (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM3_TRC/cpp_ORCA2_LIM3_TRC.fcm (revision 7041)
@@ -0,0 +1,1 @@
+bld::tool::fppkeys key_trabbl key_lim3 key_zdftke key_zdfddm key_zdftmx key_top key_iomput key_mpp_mpi key_nosignedzero
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/field_def.xml
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 7041)
@@ -786,68 +786,78 @@
- DIC * e3t
+ DIC * e3t
- Alkalini * e3t
+ Alkalini * e3t
- O2 * e3t
+ O2 * e3t
- CaCO3 * e3t
+ CaCO3 * e3t
- PO4 * e3t
+ PO4 * e3t
- POC * e3t
+ POC * e3t
- Si * e3t
+ Si * e3t
- PHY * e3t
+ PHY * e3t
- ZOO * e3t
+ ZOO * e3t
- DOC * e3t
+ DOC * e3t
- PHY2 * e3t
+ PHY2 * e3t
- ZOO2 * e3t
+ ZOO2 * e3t
- DSi * e3t
+ DSi * e3t
- Fer * e3t
+ Fer * e3t
- BFe * e3t
+ BFe * e3t
- GOC * e3t
+ GOC * e3t
- SFe * e3t
+ SFe * e3t
- DFe * e3t
+ DFe * e3t
- GSi * e3t
+ GSi * e3t
- NFe * e3t
+ NFe * e3t
- NCHL * e3t
+ NCHL * e3t
- DCHL * e3t
+ DCHL * e3t
- NO3 * e3t
+ NO3 * e3t
- NH4 * e3t
+ NH4 * e3t
- Num * e3t
+ Num * e3t
- DET * e3t
+ DET * e3t
- DOM * e3t
-
-
-
- CFC11 * e3t
-
-
- C14B * e3t
+ DOM * e3t
+
+
+
+ CFC11 * e3t
+
+
+
+ CFC12 * e3t
+
+
+
+ RC14 * e3t
+
+
+
+ Age * e3t
+
@@ -961,26 +971,39 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: anches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_c14b_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_c14b_ref (revision 7040)
+++ (revision )
@@ -1,19 +1,0 @@
-!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-!! Bomb C14 : 1 - dates (namc14date)
-!! namelists
-!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&namc14date ! dates
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- ndate_beg_b = 650101 ! datedeb1
- nyear_res_b = 1955 ! iannee1
-/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&namc14dia ! additional 2D/3D tracers diagnostics ("key_trc_diaadd")
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-! ! name ! title of the field ! units !
-! ! ! ! !
- c14dia2d(1) = 'qtr_c14 ' , 'Air-sea flux ', 'mol/m2/s '
- c14dia2d(2) = 'qint_c14 ' , 'Cumulative air-sea flux ', 'mol/m2 '
- c14dia3d(1) = 'decay ' , 'Radiactive decay ', 'mol/m3 '
-/
Index: anches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_cfc_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_cfc_ref (revision 7040)
+++ (revision )
@@ -1,18 +1,0 @@
-!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-!! CFC : 1 - dates (namcfcdate)
-!! namelists
-!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&namcfcdate ! dates
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- ndate_beg = 300101 ! datedeb1
- nyear_res = 1932 ! iannee1
-/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&namcfcdia ! additional 2D/3D tracers diagnostics
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-! ! name ! title of the field ! units !
-! ! ! ! !
- cfcdia2d(1) = 'qtr_c11 ' , 'Air-sea flux of CFC-11 ', 'mol/m2/s '
- cfcdia2d(2) = 'qint_c11' , 'Cumulative air-sea flux of CFC-11 ', 'mol/m2 '
-/
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref (revision 7041)
@@ -9,7 +9,12 @@
!! 7 - parameters for calcite chemistry (nampiscal)
!! 8 - parameters for inputs deposition (nampissed)
-!! 9 - parameters for Kriest parameterization (nampiskrp, nampiskrs)
-!! 10 - additional 2D/3D diagnostics (nampisdia)
!! 11 - Damping (nampisdmp)
+!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&nampismod ! Model used
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ln_p2z = .false. ! LOBSTER model used
+ ln_p4z = .true. ! PISCES model used
+/
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
@@ -248,53 +253,4 @@
/
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&nampiskrp ! Kriest parameterization : parameters "key_kriest"
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- xkr_eta = 1.17 ! Sinking exponent
- xkr_zeta = 2.28 ! N content exponent
- xkr_ncontent = 5.7E-6 ! N content factor
- xkr_mass_min = 0.0002 ! Minimum mass for Aggregates
- xkr_mass_max = 1. ! Maximum mass for Aggregates
-/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&nampiskrs ! Kriest parameterization : size classes "key_kriest"
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- xkr_sfact = 942. ! Sinking factor
- xkr_stick = 0.5 ! Stickiness
- xkr_nnano = 2.337 ! Nbr of cell in nano size class
- xkr_ndiat = 3.718 ! Nbr of cell in diatoms size class
- xkr_nmeso = 7.147 ! Nbr of cell in mesozoo size class
- xkr_naggr = 9.877 ! Nbr of cell in aggregates size class
-/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&nampisdia ! additional 2D/3D tracers diagnostics
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-! ! name ! title of the field ! units !
-! ! ! ! !
- pisdia2d(1) = 'Cflx ' , 'DIC flux ', 'molC/m2/s '
- pisdia2d(2) = 'Oflx ' , 'Oxygen flux ', 'molC/m2/s '
- pisdia2d(3) = 'Kg ' , 'Gas transfer ', 'mol/m2/s/uatm'
- pisdia2d(4) = 'Delc ' , 'Delta CO2 ', 'uatm '
- pisdia2d(5) = 'PMO ' , 'POC export ', 'molC/m2/s '
- pisdia2d(6) = 'PMO2 ' , 'GOC export ', 'molC/m2/s '
- pisdia2d(7) = 'ExpFe1 ' , 'Nano iron export ', 'molFe/m2/s '
- pisdia2d(8) = 'ExpFe2 ' , 'Diatoms iron export ', 'molFe/m2/s '
- pisdia2d(9) = 'ExpSi ' , 'Silicate export ', 'molSi/m2/s '
- pisdia2d(10) = 'ExpCaCO3 ' , 'Calcite export ', 'molC/m2/s '
- pisdia2d(11) = 'heup ' , 'euphotic layer depth ', 'm '
- pisdia2d(12) = 'Fedep ' , 'Iron dep ', 'molFe/m2/s '
- pisdia2d(13) = 'Nfix ' , 'Nitrogen Fixation ', 'molN/m2/s '
- pisdia3d(1) = 'PH ' , 'PH ', '- '
- pisdia3d(2) = 'CO3 ' , 'Bicarbonates ', 'mol/l '
- pisdia3d(3) = 'CO3sat ' , 'CO3 saturation ', 'mol/l '
- pisdia3d(4) = 'PAR ' , 'light penetration ', 'W/m2 '
- pisdia3d(5) = 'PPPHY ' , 'Primary production of nanophyto ', 'molC/m3/s '
- pisdia3d(6) = 'PPPHY2 ' , 'Primary production of diatoms ', 'molC/m3/s '
- pisdia3d(7) = 'PPNEWN ' , 'New Primary production of nano ', 'molC/m3/s '
- pisdia3d(8) = 'PPNEWD ' , 'New Primary production of diat ', 'molC/m3/s '
- pisdia3d(9) = 'PBSi ' , 'Primary production of Si diatoms ', 'molSi/m3/s '
- pisdia3d(10) = 'PFeN ' , 'Primary production of nano iron ', 'molFe/m3/s '
- pisdia3d(11) = 'PFeD ' , 'Primary production of diatoms iron', 'molFe/m3/s '
-/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
&nampisdmp ! Damping
!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
@@ -317,6 +273,4 @@
!! 7 - general coefficients (namlobrat)
!! 8 - optical parameters (namlobopt)
-
-!! 10 - biological diagnostics trends (namlobdbi)
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
@@ -389,25 +343,2 @@
rpig = 0.7 ! chla/chla+pheo ratio
/
-!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-&nampisdbi ! biological diagnostics trends
-!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-! ! 2D bio diagnostics units : mmole/m2/s ("key_trdmld_trc")
-! ! name ! title of the field ! units !
- pisdiabio(1) = 'NO3PHY' , 'Flux from NO3 to PHY ', 'mmole/m3/s'
- pisdiabio(2) = 'NH4PHY' , 'Flux from NH4 to PHY ', 'mmole/m3/s'
- pisdiabio(3) = 'PHYNH4' , 'Flux from PHY to NH4 ', 'mmole/m3/s'
- pisdiabio(4) = 'PHYDOM' , 'Flux from PHY to DOM ', 'mmole/m3/s'
- pisdiabio(5) = 'PHYZOO' , 'Flux from PHY to ZOO ', 'mmole/m3/s'
- pisdiabio(6) = 'PHYDET' , 'Flux from PHY to DET ', 'mmole/m3/s'
- pisdiabio(7) = 'DETZOO' , 'Flux from DET to ZOO ', 'mmole/m3/s'
- pisdiabio(8) = 'DETSED' , 'Flux from DET to SED ', 'mmole/m3/s'
- pisdiabio(9) = 'ZOODET' , 'Flux from ZOO to DET ', 'mmole/m3/s'
- pisdiabio(10) = 'ZOOBOD' , 'Zooplankton closure ', 'mmole/m3/s'
- pisdiabio(11) = 'ZOONH4' , 'Flux from ZOO to NH4 ', 'mmole/m3/s'
- pisdiabio(12) = 'ZOODOM' , 'Flux from ZOO to DOM ', 'mmole/m3/s'
- pisdiabio(13) = 'NH4NO3' , 'Flux from NH4 to NO3 ', 'mmole/m3/s'
- pisdiabio(14) = 'DOMNH4' , 'Flux from DOM to NH4 ', 'mmole/m3/s'
- pisdiabio(15) = 'DETNH4' , 'Flux from DET to NH4 ', 'mmole/m3/s'
- pisdiabio(16) = 'DETDOM' , 'Flux from DET to DOM ', 'mmole/m3/s'
- pisdiabio(17) = 'SEDNO3' , 'NO3 remineralization from SED', 'mmole/m3/s'
-/
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_top_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_top_ref (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_top_ref (revision 7041)
@@ -8,11 +8,10 @@
!! - tracer newtonian damping (namtrc_dmp)
!! - dynamical tracer trends (namtrc_trd)
-!! - tracer output diagonstics (namtrc_dia)
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
!-----------------------------------------------------------------------
&namtrc_run ! run information
!-----------------------------------------------------------------------
+ jptra = 3 ! Total number of tracers
nn_dttrc = 1 ! time step frequency for passive sn_tracers
- nn_writetrc = 5475 ! time step frequency for sn_tracer outputs
ln_top_euler = .false. ! use Euler time-stepping for TOP
ln_rsttr = .false. ! start from a restart file (T) or not (F)
@@ -28,7 +27,16 @@
&namtrc ! tracers definition
!-----------------------------------------------------------------------
- ln_trcdta = .true. ! Initialisation from data input file (T) or not (F)
+ ln_age = .true.
+ ln_cfc11 = .true.
+ ln_cfc12 = .false.
+ ln_c14 = .true.
+ ln_trcdta = .false. ! Initialisation from data input file (T) or not (F)
ln_trcdmp = .false. ! add a damping termn (T) or not (F)
ln_trcdmp_clo = .false. ! damping term (T) or not (F) on closed seas
+!
+! ! name ! title of the field ! units ! initial data from file or not !
+ sn_tracer(1) = 'Age ' , 'Sea water age since surface contact ', 'yr' , .false.
+ sn_tracer(2) = 'CFC11 ' , 'CFC11 Concentration ', 'umolC/L', .false.
+ sn_tracer(3) = 'RC14 ' , 'Radiocarbon ratio ', '-' , .false.
/
!-----------------------------------------------------------------------
@@ -111,12 +119,4 @@
ln_trdtrc(23) = .true.
/
-!-----------------------------------------------------------------------
-&namtrc_dia ! parameters for passive tracer additional diagnostics
-!----------------------------------------------------------------------
- ln_diatrc = .true. ! save additional diag. (T) or not (F)
- ln_diabio = .true. ! output biological trends
- nn_writedia = 5475 ! time step frequency for diagnostics
- nn_writebio = 10 ! frequency of biological outputs
-/
!----------------------------------------------------------------------
&namtrc_bc ! data for boundary conditions
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_trc_ref
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_trc_ref (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_trc_ref (revision 7041)
@@ -0,0 +1,49 @@
+!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!! Inert tracers reference namelist
+!! 1 - AGE (namage)
+!! 1 - CFC (namcfc)
+!! 2 - C14 (namc14_typ, namc14_sbc, namc14_fcg)
+!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namage ! AGE - dates
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ rn_age_depth = 10 ! depth over which age tracer reset to zero
+ rn_age_kill_rate = -0.000138888 ! = -1/7200 recip of relaxation timescale (s) for age tracer shallower than age_depth
+/
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namcfc ! CFC
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ndate_beg = 300101 ! datedeb1
+ nyear_res = 1932 ! iannee1
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_typ ! C14 - type of C14 tracer, default values of C14/C and pco2
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ kc14typ = 0 ! Type of C14 tracer (0=equilibrium; 1=bomb transient; 2=past transient)
+ rc14at = 1.0 ! Default value for atmospheric C14/C (used for equil run)
+ pco2at = 280.0 ! Default value for atmospheric pcO2 [atm] (used for equil run)
+ rc14init = 0.85 ! Default value for initialization of ocean C14/C (when no restart)
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_sbc ! C14 - surface BC
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ln_chemh = .true. ! Chemical enhancement in piston vel.: yes/no
+ xkwind = 0.360 ! Coefficient for gas exchange velocity
+ xdicsur = 2.0 ! Reference DIC surface concentration (mol/m3)
+/
+!
+!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+&namc14_fcg ! files & dates
+! ! For Paleo-historical: specify tyrc14_beg in yr BP
+! ! For Bomb: tyrc14_beg=0
+!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+ cfileco2 = 'splco2.dat' ! atmospheric co2 - Bomb
+ cfilec14 = 'atmc14.dat' ! atmospheric c14 - Bomb
+ tyrc14_beg = 0.00 ! starting year of experiment - Bomb
+! cfileco2 = 'ByrdEdcCO2.txt' ! atmospheric co2 - Paleo
+! cfilec14 = 'intcal13.14c' ! atmospheric c14 - Paleo
+! tyrc14_beg = 35000.00 ! starting year of experiment - Paleo (yr BP)
+/
+!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/cfg.txt
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/cfg.txt (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/cfg.txt (revision 7041)
@@ -11,2 +11,4 @@
GYRE OPA_SRC
ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC
+ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC
+ORCA2_LIM3_TRC OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/par_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/par_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/par_age.F90 (revision 7041)
@@ -0,0 +1,20 @@
+MODULE par_age
+ !!======================================================================
+ !! *** par_age ***
+ !! TOP : set the AGE parameters
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) revised architecture
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id$
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+ IMPLICIT NONE
+
+ INTEGER, PUBLIC :: jp_age !: number of passive tracers in PISCES
+ INTEGER, PUBLIC :: jp_age0 !: index of AGE passive tracers
+
+ LOGICAL, PUBLIC :: ln_age
+
+ !!======================================================================
+END MODULE par_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcice_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcice_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcice_age.F90 (revision 7041)
@@ -0,0 +1,31 @@
+MODULE trcice_age
+ !!======================================================================
+ !! *** MODULE trcice_age ***
+ !!======================================================================
+ USE par_trc ! TOP parameters
+ USE oce_trc ! Ocean variables
+ USE trc ! TOP variables
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_ice_ini_age ! called by trcice.F90 module
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: trcice_ageb.F90 4990 2014-12-15 16:42:49Z timgraham $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_ice_ini_age
+ !!----------------------------------------------------------------------
+ !! *** trc_ice_ageb ***
+ !!
+ !!----------------------------------------------------------------------
+ !
+ !
+ END SUBROUTINE trc_ice_ini_age
+
+ !!======================================================================
+END MODULE trcice_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcini_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcini_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcini_age.F90 (revision 7041)
@@ -0,0 +1,73 @@
+MODULE trcini_age
+ !!======================================================================
+ !! *** MODULE trcini_age ***
+ !! TOP : initialisation of the AGE tracer
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (G. Nurser, G. Madec, C. Ethe ) Original code
+ !!----------------------------------------------------------------------
+ !! trc_ini_age : MY_TRC model initialisation
+ !!----------------------------------------------------------------------
+ USE oce_trc
+ USE trc
+ USE trcsms_age
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_ini_age ! called by trcini.F90 module
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id$
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_ini_age
+ !!----------------------------------------------------------------------
+ !! *** trc_ini_age ***
+ !!
+ !! ** Purpose : initialization for AGE model
+ !!
+ !!----------------------------------------------------------------------
+ INTEGER :: jn
+ CHARACTER(len = 20) :: cltra
+
+
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_ini_age: passive tracer age'
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+
+ jp_age = 1
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'AGE' .OR. cltra == 'Age' .OR. cltra == 'age' ) jp_age0 = jn
+ ENDDO
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' Index of age tracer in the passive tracer array jp_age0 = ', jp_age0
+ WRITE(numout,*)
+ ENDIF
+
+
+ rryear = 1._wp / ( nyear_len(1) * rday ) ! recip number of seconds in one year
+
+ !! BUG in s-coordinate this does not work!
+ nlb_age = MINLOC( gdepw_1d, mask = gdepw_1d > rn_age_depth, dim = 1 ) ! shallowest W level Below age_depth
+ ! = shallowest T level wholly below age_depth
+ nl_age = nlb_age - 1 ! deepest W level Above age_depth
+ ! = T level surrounding age_depth
+
+ nla_age = nl_age - 1 ! deepest T level wholly above age_depth
+
+ frac_kill_age = ( rn_age_depth - gdepw_1d(nl_age) ) / e3t_1d(nl_age) ! fraction of level nl_age above age_depth
+ frac_add_age = 1._wp - frac_kill_age ! fraction of level nl_age below age_depth
+
+
+ IF( .NOT. ln_rsttr ) trn(:,:,:,jp_age0) = 0.
+ !
+ END SUBROUTINE trc_ini_age
+
+ !!======================================================================
+END MODULE trcini_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90 (revision 7041)
@@ -0,0 +1,62 @@
+MODULE trcnam_age
+ !!======================================================================
+ !! *** MODULE trcnam_age ***
+ !! TOP : initialisation of some run parameters for Age tracer
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec)
+ !!----------------------------------------------------------------------
+ !! trc_nam_age : AGE tracer initialisation
+ !!----------------------------------------------------------------------
+ USE oce_trc ! Ocean variables
+ USE trc ! Ocean variables
+ USE trcsms_age ! AGE specific variable
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_nam_age ! called by trcnam.F90 module
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id$
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+
+CONTAINS
+
+ SUBROUTINE trc_nam_age
+ !!-------------------------------------------------------------------
+ !! *** ROUTINE trc_nam_age ***
+ !!
+ !! ** Purpose : Definition some run parameter for AGE model
+ !!
+ !! ** input : Namelist namage
+ !!----------------------------------------------------------------------
+ INTEGER :: ios ! Local integer output status for namelist read
+ !!
+ NAMELIST/namage/ rn_age_depth, rn_age_kill_rate
+ !!----------------------------------------------------------------------
+
+ REWIND( numtrc_ref ) ! Namelist namagedate in reference namelist : AGE parameters
+ READ ( numtrc_ref, namage, IOSTAT = ios, ERR = 901)
+901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in reference namelist', lwp )
+
+ REWIND( numtrc_cfg ) ! Namelist namagedate in configuration namelist : AGE parameters
+ READ ( numtrc_cfg, namage, IOSTAT = ios, ERR = 902 )
+902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonr, namage )
+
+ IF(lwp) THEN ! control print
+ WRITE(numout,*)
+ WRITE(numout,*) ' trc_nam_age: Read namage, namelist for Age passive tracer'
+ WRITE(numout,*) ' ~~~~~~~'
+ WRITE(numout,*) ' depth over which age tracer reset to zero rn_age_depth = ', rn_age_depth
+ WRITE(numout,*) ' recip of relax. timescale (s) for age tracer shallower than age_depth rn_age_kill_rate = ', rn_age_kill_rate
+ ENDIF
+
+ IF(lwm) CALL FLUSH ( numonr ) ! flush output namelist
+
+ END SUBROUTINE trc_nam_age
+
+ !!======================================================================
+END MODULE trcnam_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcsms_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcsms_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcsms_age.F90 (revision 7041)
@@ -0,0 +1,77 @@
+MODULE trcsms_age
+ !!======================================================================
+ !! *** MODULE trcsms_age ***
+ !! TOP : Main module of the AGE tracers
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) Original code
+ !!----------------------------------------------------------------------
+ !! trc_sms_age : AGE model main routine
+ !!----------------------------------------------------------------------
+ USE oce_trc ! Ocean variables
+ USE trc ! TOP variables
+ USE trd_oce
+ USE trdtrc
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_sms_age ! called by trcsms.F90 module
+
+ INTEGER , PUBLIC :: nl_age ! T level surrounding age_depth
+ INTEGER , PUBLIC :: nla_age ! T level wholly above age_depth
+ INTEGER , PUBLIC :: nlb_age ! T level wholly below age_depth
+
+ REAL(wp), PUBLIC :: rn_age_depth ! = 10 depth over which age tracer reset to zero
+ REAL(wp), PUBLIC :: rn_age_kill_rate ! = -1./7200 recip of relaxation timescale (s) for age tracer shallower than age_depth
+
+ REAL(wp), PUBLIC :: rryear !: recip number of seconds in one year
+ REAL(wp), PUBLIC :: frac_kill_age !: fraction of level nl_age above age_depth where it is relaxed towards zero
+ REAL(wp), PUBLIC :: frac_add_age !: fraction of level nl_age below age_depth where it is incremented
+
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id$
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_sms_age( kt )
+ !!----------------------------------------------------------------------
+ !! *** trc_sms_age ***
+ !!
+ !! ** Purpose : main routine of AGE model
+ !!
+ !! ** Method : -
+ !!----------------------------------------------------------------------
+ !
+ INTEGER, INTENT(in) :: kt ! ocean time-step index
+ INTEGER :: jn, jk ! dummy loop index
+ !!----------------------------------------------------------------------
+ !
+ IF( nn_timing == 1 ) CALL timing_start('trc_sms_age')
+ !
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_sms_age: AGE model'
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+
+
+ DO jk = 1, nla_age
+ tra(:,:,jk,jp_age0) = rn_age_kill_rate * trb(:,:,jk,jp_age0)
+ ENDDO
+ !
+ tra(:,:,nl_age,jp_age0) = frac_kill_age * rn_age_kill_rate * trb(:,:,nl_age,jp_age0) &
+ & + frac_add_age * rryear * tmask(:,:,nl_age)
+ !
+ DO jk = nlb_age, jpk
+ tra(:,:,jk,jp_age0) = tmask(:,:,jk) * rryear
+ ENDDO
+ !
+ IF( l_trdtrc ) CALL trd_trc( tra(:,:,:,jp_age0), jn, jptra_sms, kt ) ! save trends
+ !
+ IF( nn_timing == 1 ) CALL timing_stop('trc_sms_age')
+ !
+ END SUBROUTINE trc_sms_age
+
+ !!======================================================================
+END MODULE trcsms_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcwri_age.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcwri_age.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/AGE/trcwri_age.F90 (revision 7041)
@@ -0,0 +1,56 @@
+MODULE trcwri_age
+ !!======================================================================
+ !! *** MODULE trcwri ***
+ !! age : Output of age tracers
+ !!======================================================================
+ !! History : 1.0 ! 2009-05 (C. Ethe) Original code
+ !!----------------------------------------------------------------------
+#if defined key_top && defined key_iomput
+ !!----------------------------------------------------------------------
+ !! trc_wri_age : outputs of concentration fields
+ !!----------------------------------------------------------------------
+ USE par_age
+ USE trc
+ USE iom
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_wri_age
+
+CONTAINS
+
+ SUBROUTINE trc_wri_age
+ !!---------------------------------------------------------------------
+ !! *** ROUTINE trc_wri_trc ***
+ !!
+ !! ** Purpose : output passive tracers fields
+ !!---------------------------------------------------------------------
+ CHARACTER (len=20) :: cltra
+ INTEGER :: jn
+ !!---------------------------------------------------------------------
+
+ ! write the tracer concentrations in the file
+
+ cltra = TRIM( ctrcnm(jp_age0) ) ! short title for tracer
+ CALL iom_put( cltra, trn(:,:,:,jp_age0) )
+
+ !
+ END SUBROUTINE trc_wri_age
+
+#else
+ !!----------------------------------------------------------------------
+ !! Dummy module : No passive tracer
+ !!----------------------------------------------------------------------
+ PUBLIC trc_wri_age
+CONTAINS
+ SUBROUTINE trc_wri_age ! Empty routine
+ END SUBROUTINE trc_wri_age
+#endif
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: trcwri_age.F90 3160 2011-11-20 14:27:18Z cetlod $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!======================================================================
+END MODULE trcwri_age
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/par_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/par_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/par_c14.F90 (revision 7041)
@@ -0,0 +1,17 @@
+MODULE par_c14
+ !!======================================================================
+ !! *** par_c14 ***
+ !! TOP : set the C14 parameters
+ !!======================================================================
+ !! History : 2.0 ! 2008-12 (C. Ethe, G. Madec) revised architecture
+ !! History : ! 2015 (A.Mouchet) equilibrium + transient C14
+ !!----------------------------------------------------------------------
+
+ IMPLICIT NONE
+
+ INTEGER, PUBLIC :: jp_c14 !: number of c14 tracer
+ INTEGER, PUBLIC :: jp_c140 !: First index of C14 tracer
+
+ LOGICAL, PUBLIC :: ln_c14
+
+END MODULE par_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/sms_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/sms_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/sms_c14.F90 (revision 7041)
@@ -0,0 +1,75 @@
+MODULE sms_c14
+ !!======================================================================
+ !! *** MODULE trcsms_c14 ***
+ !! TOP : C14 main module
+ !!======================================================================
+ !! History - ! 1994-05 ( J. Orr ) original code
+ !! 1.0 ! 2006-02 ( J.M. Molines ) Free form + modularity
+ !! 2.0 ! 2008-12 ( C. Ethe ) reorganisation
+ !! 4.0 ! 2011-02 ( A.R. Porter, STFC Daresbury ) Dynamic memory
+ !! ! 2015 (A. Mouchet) general C14 + update formulas
+ !!----------------------------------------------------------------------
+ !! sms_c14 : compute and add C14 suface forcing to C14 trends
+ !!----------------------------------------------------------------------
+ USE par_oce
+ USE par_trc
+
+
+ IMPLICIT NONE
+ PUBLIC
+
+
+ LOGICAL :: ln_chemh ! Chemical enhancement (yes/no)
+ INTEGER :: kc14typ ! C14 tracer type
+ REAL(wp) :: tyrc14_beg ! year start atmospheric scenario !! See below
+ REAL(wp) :: pco2at, rc14at ! atm co2, atm 14C ratio (global, reference)
+ REAL(wp) :: rc14init ! ocean 14C ratio for initialization
+ REAL(wp) :: xkwind, xdicsur ! wind coeff, ref DIC
+ REAL(wp) :: rlam14 ! C14 decay rate
+
+ !
+ CHARACTER (len=20) :: cfileco2, cfilec14 ! Name of atmospheric forcing files
+ !
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: c14sbc ! atmospheric c14 ratio
+ REAL(wp) :: co2sbc ! atmospheric co2 pressure
+
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: exch_c14 ! exch. vel. for C14/C
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: exch_co2 ! CO2 invasion rate
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: qtr_c14 ! flux at surface
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: qint_c14 ! cumulative flux
+
+ INTEGER , PARAMETER :: nc14zon = 3 ! number of zones for bomb c14
+ !
+ INTEGER :: nrecco2, nrecc14 ! nb record atm co2 & cc14
+ REAL(wp) :: tyrc14_now ! current yr for transient experiment relative to tyrc14_beg
+ INTEGER :: m1_co2, m1_c14 ! index of first co2 and c14 records to consider
+ INTEGER :: m2_co2, m2_c14 ! index of second co2 and c14 records to consider
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: bomb ! C14 atm data (bomb - 3 zones)
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: atmc14 ! C14 atm data (paleo - 1 zone)
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: tyrc14 ! Time (yr) atmospheric C14 data
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fareaz ! Spatial Interpolation Factors
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: spco2 ! Atmospheric CO2
+ REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: tyrco2 ! Time (yr) atmospheric CO2 data
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $ $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+
+ INTEGER FUNCTION sms_c14_alloc()
+ !!----------------------------------------------------------------------
+ !! *** ROUTINE trc_sms_c14_alloc ***
+ !!----------------------------------------------------------------------
+ sms_c14_alloc = 0
+ ALLOCATE( exch_c14(jpi,jpj) , exch_co2(jpi,jpj) , &
+ & qtr_c14(jpi,jpj) , qint_c14(jpi,jpj) , &
+ & c14sbc(jpi,jpj) , STAT = sms_c14_alloc )
+ !
+ !
+ END FUNCTION sms_c14_alloc
+
+ !!======================================================================
+END MODULE sms_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcatm_c14.F90 (revision 7041)
@@ -0,0 +1,304 @@
+MODULE trcatm_c14
+ !!======================================================================
+ !! *** MODULE trcatm_c14 ***
+ !! TOP : read and manages atmospheric values for radiocarbon model
+ !!=====================================================================
+ !! History: Based on trcini_c14b & trcsms_c14b :
+ !! Anne Mouchet
+ !!----------------------------------------------------------------------
+ !! trc_atm_c14_ini : initialize c14atm & pco2atm
+ !! trc_atm_c14 : read and time interpolate c14atm & pco2atm
+ !!----------------------------------------------------------------------
+ USE par_trc ! passive tracers parameters
+ USE oce_trc ! shared variables between ocean and passive tracers
+ USE trc ! passive tracers common variables
+ USE sms_c14 ! c14 simulation type, atm default values...
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_atm_c14 ! called in trcsms_c14.F90
+ PUBLIC trc_atm_c14_ini ! called in trcini_c14.F90
+ !
+ !!----------------------------------------------------------------------
+ !! NEMO/OPA 3.3 , NEMO Consortium (2010)
+ !! $Id: trcatm_c14.F90 .... $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_atm_c14_ini
+ !!----------------------------------------------------------------------
+ !! *** ROUTINE trc_c14_ini ***
+ !!
+ !! ** Purpose : initialisation of sbc for radiocarbon
+ !!
+ !! ** Method :
+ !!----------------------------------------------------------------------
+ !
+ CHARACTER (len=20) :: clfile ! forcing file name
+ INTEGER :: ji,jj,jn ! dummy loop indice
+ INTEGER :: ierr1,ierr2,ierr3,izco2 ! temporary integers
+ INTEGER :: inum1,inum2,incom,iyear ! temporary integers
+ REAL(wp) :: ys40 = -40. ! 40 degrees south
+ REAL(wp) :: ys20 = -20. ! 20 degrees south
+ REAL(wp) :: yn20 = 20. ! 20 degrees north
+ REAL(wp) :: yn40 = 40. ! 40 degrees north
+ REAL(wp), POINTER, DIMENSION(:) :: zco2, zyrco2 ! temporary arrays for swap
+ !
+ !!----------------------------------------------------------------------
+ !
+ IF( nn_timing == 1 ) CALL timing_start('trc_atm_c14_ini')
+ !
+
+ IF( lwp ) WRITE(numout,*) ' '
+ IF( lwp ) WRITE(numout,*) ' trc_atm_c14_ini : initialize atm CO2 & C14-ratio '
+ IF( lwp ) WRITE(numout,*) ' '
+ !
+ tyrc14_now = 0._wp ! initialize
+ !
+ IF(kc14typ >= 1) THEN ! Transient atmospheric forcing: CO2
+ !
+ clfile = TRIM( cfileco2 )
+ IF(lwp) WRITE(numout,*) 'Read CO2 atmospheric concentrations file ',clfile
+ CALL ctl_opn( inum1, clfile, 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
+ REWIND(inum1)
+
+ READ(inum1,*) nrecco2,incom
+ DO jn = 1, incom ! Skip over descriptor lines
+ READ(inum1,'(1x)')
+ END DO
+ ALLOCATE( spco2(nrecco2), tyrco2(nrecco2) , STAT=ierr1 )
+ IF( ierr1 /= 0 ) CALL ctl_stop( 'STOP', 'trc_atm_c14_ini: unable to allocate co2 arrays' )
+ ! get CO2 data
+ DO jn = 1, nrecco2
+ READ(inum1, *) tyrco2(jn), spco2(jn)
+ END DO
+ CLOSE(inum1)
+ !
+ IF(kc14typ==2) THEN
+ CALL wrk_alloc( nrecco2,zco2)
+ CALL wrk_alloc( nrecco2,zyrco2)
+ zco2(:)=spco2(:)
+ zyrco2(:)=tyrco2(:)
+ ! Set CO2 times on AD time scale & swap records : In CO2 file : youngest first
+ DO jn = 1, nrecco2
+ izco2=nrecco2-jn+1
+ spco2(izco2)=zco2(jn)
+ tyrco2(izco2)=1950._wp-zyrco2(jn) ! BP to AD dates
+ END DO
+ CALL wrk_dealloc(nrecco2,zco2)
+ CALL wrk_dealloc(nrecco2,zyrco2)
+ ENDIF
+ !
+ ! ! Transient atmospheric forcing: Bomb C14 & Paleo C14 : open file
+ !
+ clfile = TRIM( cfilec14 )
+ IF (lwp) WRITE(numout,*) 'Read C-14 atmospheric concentrations file ',clfile
+ CALL ctl_opn( inum2, clfile, 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
+ REWIND(inum2)
+ !
+ ! Bomb C14: 3 zones for atm C14 !
+ IF(kc14typ == 1) THEN ! Transient atmospheric forcing: Bomb C14
+ !
+ READ(inum2,*) nrecc14,incom
+ DO jn = 1, incom ! Skip over descriptor lines
+ READ(inum2,'(1x)')
+ END DO
+ ALLOCATE( bomb(nrecc14,nc14zon), tyrc14(nrecc14) , STAT=ierr2 )
+ IF( ierr2 /= 0 ) CALL ctl_stop( 'STOP', 'trc_atm_c14_ini: unable to allocate c14 arrays' )
+ ! get bomb c14 data
+ DO jn = 1, nrecc14
+ READ(inum2,*) tyrc14(jn), bomb(jn,1), bomb(jn,2), bomb(jn,3)
+ END DO
+ CLOSE(inum2)
+
+ ! Linear interpolation of the C-14 source fonction
+ ! in linear latitude bands (20N,40N) and (20S,40S)
+ !------------------------------------------------------
+ ALLOCATE( fareaz (jpi,jpj ,nc14zon) , STAT=ierr3 )
+ IF( ierr3 /= 0 ) CALL ctl_stop( 'STOP', 'trc_atm_c14_ini: unable to allocate fareaz' )
+ !
+ DO jj = 1 , jpj ! from C14b package
+ DO ji = 1 , jpi
+ IF( gphit(ji,jj) >= yn40 ) THEN
+ fareaz(ji,jj,1) = 0.
+ fareaz(ji,jj,2) = 0.
+ fareaz(ji,jj,3) = 1.
+ ELSE IF( gphit(ji,jj ) <= ys40) THEN
+ fareaz(ji,jj,1) = 1.
+ fareaz(ji,jj,2) = 0.
+ fareaz(ji,jj,3) = 0.
+ ELSE IF( gphit(ji,jj) >= yn20 ) THEN
+ fareaz(ji,jj,1) = 0.
+ fareaz(ji,jj,2) = 2. * ( 1. - gphit(ji,jj) / yn40 )
+ fareaz(ji,jj,3) = 2. * gphit(ji,jj) / yn40 - 1.
+ ELSE IF( gphit(ji,jj) <= ys20 ) THEN
+ fareaz(ji,jj,1) = 2. * gphit(ji,jj) / ys40 - 1.
+ fareaz(ji,jj,2) = 2. * ( 1. - gphit(ji,jj) / ys40 )
+ fareaz(ji,jj,3) = 0.
+ ELSE
+ fareaz(ji,jj,1) = 0.
+ fareaz(ji,jj,2) = 1.
+ fareaz(ji,jj,3) = 0.
+ ENDIF
+ END DO
+ END DO
+ !
+ ENDIF
+ !
+ ! Paleo C14: 1 zone for atm C14 !
+ IF(kc14typ == 2) THEN ! Transient atmospheric forcing: Paleo C14
+ !
+ READ(inum2,*) nrecc14,incom
+ DO jn = 1, incom ! Skip over descriptor lines
+ READ(inum2,'(1x)')
+ END DO
+ ALLOCATE( atmc14(nrecc14), tyrc14(nrecc14) , STAT=ierr2 )
+ IF( ierr2 /= 0 ) CALL ctl_stop( 'STOP', 'trc_atm_c14_ini: unable to allocate c14 arrays' )
+ ! get past c14 data
+ DO jn = 1, nrecc14
+ READ(inum2,*) iyear,incom,incom,atmc14(jn)
+ tyrc14(jn)=1950._wp-float(iyear) ! BP to AD dates
+ END DO
+ CLOSE(inum2)
+ !
+ ENDIF
+ !
+ ! Note on dates:
+ ! In files dates have dimension yr; either AD or BP; if BP date is changed into AD here
+ ! When dealing with dates previous to 0. AD one needs to set tyrc14_beg to the actual starting year
+ ! Do not forget to appropriately set nn_date0 and nn_rstctl in namelist
+ ! AND nn_rsttr in namelist_top if offline run
+ ! All details are given in NEMO-C14.pdf report
+ !
+ tyrc14_now=nyear ! actual initial yr - Bomb
+ if(kc14typ == 2) tyrc14_now=nyear+tyrc14_beg-1 ! actual initial yr - Paleo
+ ! ! we suppose we start on tyrc14_now/01/01 @ 0h
+ m1_c14= 1
+ m1_co2= 1
+ DO jn = 1,nrecco2
+ IF ( tyrc14_now >= tyrco2(jn) ) m1_co2 = jn ! index of first co2 record to consider
+ END DO
+ DO jn = 1,nrecc14
+ IF ( tyrc14_now >= tyrc14(jn) ) m1_c14 = jn ! index of first c14 record to consider
+ END DO
+ IF (lwp) WRITE(numout,*) 'Initial yr for experiment', tyrc14_now
+ IF (lwp) WRITE(numout,*) ' CO2 & C14 start years:', tyrco2(m1_co2),tyrc14(m1_c14)
+ !
+ m2_c14= m1_c14
+ m2_co2= m1_co2
+ !
+ ENDIF
+ !
+ IF( nn_timing == 1 ) CALL timing_stop('trc_atm_c14_ini')
+ !
+ END SUBROUTINE trc_atm_c14_ini
+
+
+ SUBROUTINE trc_atm_c14( kt, co2sbc, c14sbc )
+ !!----------------------------------------------------------------------
+ !! *** ROUTINE trc_flx ***
+ !!
+ !! ** Purpose : provides sbc for co2 & c14 at kt
+ !!
+ !! ** Method : read files
+ !!
+ !! ** Action : atmospheric values interpolated at time-step kt
+ !!----------------------------------------------------------------------
+ INTEGER , INTENT(in ) :: kt ! ocean time-step
+ REAL(wp), DIMENSION(:,:), INTENT( out) :: c14sbc ! atm c14 ratio
+ REAL(wp), INTENT( out) :: co2sbc ! atm co2 p
+ INTEGER :: jz ! dummy loop indice
+ REAL(wp) :: zdint,zint ! work
+ REAL(wp), DIMENSION(nc14zon) :: zonbc14 ! work
+ !
+ !!----------------------------------------------------------------------
+ !
+ IF( nn_timing == 1 ) CALL timing_start('trc_atm_c14')
+ !
+ IF( kc14typ == 0) THEN
+ co2sbc=pco2at
+ c14sbc(:,:)=rc14at
+ ENDIF
+ !
+ IF(kc14typ >= 1) THEN ! Transient C14 & CO2
+ !
+ tyrc14_now = tyrc14_now + ( rdt / ( rday * nyear_len(1)) ) ! current time step in yr relative to tyrc14_beg
+ !
+ ! CO2 --------------------------------------------------------
+ !
+ ! time interpolation of CO2 concentrations ! if out of record keeps first/last value
+ IF( tyrc14_now > tyrco2(m2_co2) ) THEN ! next interval
+ m1_co2 = m2_co2
+ m2_co2 = MIN ( m2_co2 + 1 , nrecco2 )
+ ENDIF
+ !
+ zdint = tyrco2(m2_co2) - tyrco2(m1_co2)
+ co2sbc = spco2(m2_co2) ! if out of record keeps first/last value
+ zint = 0._wp
+ IF ( zdint > 0._wp ) THEN ! if within record interpolate:
+ zint = ( tyrco2(m2_co2) - tyrc14_now ) / zdint
+ co2sbc = spco2(m2_co2) + zint * ( spco2(m1_co2) - spco2(m2_co2) )
+ ENDIF
+ !
+ IF( lwp .AND. kt == nitend ) THEN
+ WRITE(numout, '(3(A,F12.4))') 't1/tn/t2:',tyrco2(m1_co2),'/', tyrc14_now,'/',tyrco2(m2_co2)
+ WRITE(numout, *) 'CO2:',spco2(m1_co2),co2sbc ,spco2(m2_co2)
+ ENDIF
+ !
+ ! C14 --------------------------------------------------------
+ !
+ ! time interpolation of C14 concentrations
+ IF ( tyrc14_now > tyrc14(m2_c14) ) THEN ! next interval
+ m1_c14 = m2_c14
+ m2_c14 = MIN ( m2_c14 + 1 , nrecc14 )
+ ENDIF
+ zdint = tyrc14(m2_c14) - tyrc14(m1_c14)
+ zint=0._wp
+ IF ( zdint > 0._wp ) zint = ( tyrc14(m2_c14) - tyrc14_now ) / zdint ! if within record
+ IF( lwp .AND. kt == nitend ) &
+ & WRITE(numout,'(3(A,F12.4))') 't1/tn/t2:',tyrc14(m1_c14),'/', tyrc14_now,'/',tyrc14(m2_c14)
+ !
+ ! ------- Bomb C14 ------------------------------------------
+ !
+ IF( kc14typ == 1) THEN
+ ! ! time interpolation
+ zonbc14(:) = bomb(m2_c14,:) ! if out of record keeps first/last value
+ ! ! if within record interpolate:
+ IF ( zdint > 0._wp ) zonbc14(:) = bomb(m2_c14,:) + zint * ( bomb(m1_c14,:) - bomb(m2_c14,:) )
+ !
+ IF(lwp .AND. kt == nitend ) &
+ & WRITE(numout, *) 'C14:',bomb(m1_c14,1),zonbc14(1),bomb(m2_c14,1)
+ ! Transform DeltaC14 --> C14 ratio
+ zonbc14(:) = 1._wp + zonbc14(:)/1.d03
+ !
+ ! For each (i,j)-box, with information from the fractional area
+ ! (zonmean), computes area-weighted mean to give the atmospheric C-14
+ ! ----------------------------------------------------------------
+ c14sbc(:,:) = zonbc14(1) * fareaz(:,:,1) &
+ & + zonbc14(2) * fareaz(:,:,2) &
+ & + zonbc14(3) * fareaz(:,:,3)
+ ENDIF
+ !
+ ! ------- Paleo C14 -----------------------------------------
+ !
+ IF( kc14typ == 2 ) THEN
+ ! ! time interpolation
+ zonbc14(1) = atmc14(m2_c14) ! if out of record keeps first/last value
+ ! ! if within record interpolate:
+ IF ( zdint > 0._wp ) zonbc14(1) = atmc14(m2_c14) + zint * ( atmc14(m1_c14) - atmc14(m2_c14) )
+ IF(lwp .AND. kt == nitend ) &
+ & WRITE(numout, *) 'C14: ',atmc14(m1_c14),zonbc14(1),atmc14(m2_c14)
+ ! Transform DeltaC14 --> C14 ratio
+ c14sbc(:,:) = 1._wp + zonbc14(1)/1.d03
+ ENDIF
+ !
+ ENDIF
+ !
+ IF( nn_timing == 1 ) CALL timing_stop('trc_atm_c14')
+ !
+ END SUBROUTINE trc_atm_c14
+
+ !!======================================================================
+END MODULE trcatm_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcice_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcice_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcice_c14.F90 (revision 7041)
@@ -0,0 +1,31 @@
+MODULE trcice_c14
+ !!======================================================================
+ !! *** MODULE trcice_c14 ***
+ !!======================================================================
+ USE par_trc ! TOP parameters
+ USE oce_trc ! Ocean variables
+ USE trc ! TOP variables
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_ice_ini_c14 ! called by trcice.F90 module
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: trcice_c14b.F90 4990 2014-12-15 16:42:49Z timgraham $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_ice_ini_c14
+ !!----------------------------------------------------------------------
+ !! *** trc_ice_c14b ***
+ !!
+ !!----------------------------------------------------------------------
+ !
+ !
+ END SUBROUTINE trc_ice_ini_c14
+
+ !!======================================================================
+END MODULE trcice_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcini_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcini_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcini_c14.F90 (revision 7041)
@@ -0,0 +1,109 @@
+MODULE trcini_c14
+ !!======================================================================
+ !! *** MODULE trcini_c14 ***
+ !! TOP : initialisation of the C14 tracers
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) Original code
+ !! History : 3.0 ! 2015 (A. Mouchet) C14 Code
+ !!----------------------------------------------------------------------
+ !! trc_ini_c14 : C14 model initialisation
+ !!----------------------------------------------------------------------
+ USE par_trc ! TOP parameters
+ USE oce_trc
+ USE trc
+ USE sms_c14
+ USE trcatm_c14
+ USE trcnam_c14
+ USE iom
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_ini_c14 ! called by trcini.F90 module
+
+ !
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_ini_c14
+ !!----------------------------------------------------------------------
+ !! *** trc_ini_c14 ***
+ !!
+ !! ** Purpose : initialization for C14 model
+ !!
+ !! ** Method :
+ !!----------------------------------------------------------------------
+ !
+ REAL(wp) :: ztrai
+ INTEGER :: jn
+ CHARACTER(len = 20) :: cltra
+ !!----------------------------------------------------------------------
+ !
+ ! ! Allocate c14 arrays
+ IF( sms_c14_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'trc_ini_c14: unable to allocate C14 arrays' )
+
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_ini_c14: initialisation of C14 model'
+ !
+ jp_c14 = 1
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'C14' .OR. cltra == 'RC14' .OR. cltra == 'C14b' ) jp_c140 = jn
+ ENDDO
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' Index of c14 tracer in the passive tracer array jp_c140 = ', jp_c140
+ WRITE(numout,*)
+ ENDIF
+
+ !
+ IF( .NOT. ln_rsttr ) THEN
+ !
+ IF(lwp) WRITE(numout,*) ' ==> PRESCRIBED initial VALUES'
+ IF(lwp) WRITE(numout,*) ' ==> Ocean C14/C :', rc14init
+ !
+ trn(:,:,:,jp_c140) = rc14init * tmask(:,:,:)
+ !
+ qtr_c14(:,:) = 0._wp ! Init of air-sea BC
+ !
+ ELSE
+
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_rst_read_c14 : Read specific variables for c14 model '
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+ !
+ CALL iom_get( numrtr, 'co2sbc', co2sbc )
+ CALL iom_get( numrtr, jpdom_autoglo, 'c14sbc', c14sbc )
+ CALL iom_get( numrtr, jpdom_autoglo, 'exch_co2', exch_co2 )
+ CALL iom_get( numrtr, jpdom_autoglo, 'exch_c14', exch_c14 )
+ CALL iom_get( numrtr, jpdom_autoglo, 'qtr_c14', qtr_c14 )
+ !
+ END IF
+ !
+ IF( ( nn_rsttr == 0 ) .OR. ( .NOT. ln_rsttr ) ) THEN
+ !
+ ! ! qint set to zero <=== Initial of transient
+ ! ! <=== Restart=false
+ IF(lwp) WRITE(numout,*) ' ==> qint reset to ZERO '
+ qint_c14(:,:) = 0._wp
+ !
+ ELSE
+ !
+ CALL iom_get( numrtr, jpdom_autoglo, 'qint_c14', qint_c14 )
+ !
+ ENDIF
+ !
+ CALL trc_atm_c14_ini ! Init atm values
+ !
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+ !
+ END SUBROUTINE trc_ini_c14
+
+ !!======================================================================
+END MODULE trcini_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcnam_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcnam_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcnam_c14.F90 (revision 7041)
@@ -0,0 +1,109 @@
+MODULE trcnam_c14
+ !!======================================================================
+ !! *** MODULE trcnam_c14 ***
+ !! TOP : initialisation of some run parameters for C14 chemical model
+ !!======================================================================
+ !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.cfc.h90
+ !! History : ! 2015 (A.Mouchet) equilibrium + transient C14
+ !!----------------------------------------------------------------------
+ !! trc_nam_c14 : C14 model initialisation
+ !!----------------------------------------------------------------------
+ USE oce_trc ! Ocean variables
+ USE trc ! TOP variables
+ USE sms_c14
+
+ IMPLICIT NONE
+ PRIVATE
+ !!
+ PUBLIC trc_nam_c14 ! called by trcnam.F90 module
+ !!
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: trcnam_c14.F90 $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+
+CONTAINS
+
+ SUBROUTINE trc_nam_c14
+ !!-------------------------------------------------------------------
+ !! *** ROUTINE trc_nam_c14 ***
+ !!
+ !! ** Purpose : Definition some run parameter for C14 model
+ !!
+ !! ** Method : Read the namc14 namelist and check the parameter
+ !! values called at the first timestep (nittrc000)
+ !!
+ !! ** input : Namelist namelist_c14
+ !!----------------------------------------------------------------------
+ INTEGER :: ios ! Local integer output status for namelist read
+ !!
+ NAMELIST/namc14_typ/ kc14typ,rc14at, pco2at, rc14init ! type of C14 tracer, default values of C14/C, pco2, & ocean r14
+ NAMELIST/namc14_sbc/ ln_chemh, xkwind, xdicsur ! chem enh, wind coeff, ref DIC
+ NAMELIST/namc14_fcg/ cfileco2, cfilec14, tyrc14_beg ! for transient exps; atm forcing
+ !!-------------------------------------------------------------------
+
+ REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist :
+ READ ( numtrc_ref, namc14_typ, IOSTAT = ios, ERR = 901)
+901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_typ in reference namelist', lwp )
+
+ REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist
+ READ ( numtrc_cfg, namc14_typ, IOSTAT = ios, ERR = 902)
+902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_typ in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonr, namc14_typ )
+
+ IF(lwp) THEN ! control print
+ WRITE(numout,*) ' Namelist namc14_typ'
+ WRITE(numout,*)
+ WRITE(numout,*) ' Type of C14 tracer (0=equilibrium; 1=bomb transient; 2=past transient) kc14typ = ', kc14typ
+ WRITE(numout,*) ' Default value for atmospheric C14/C (used for equil run) rc14at = ', rc14at
+ WRITE(numout,*) ' Default value for atmospheric pcO2 [atm] (used for equil run) pco2at = ', pco2at
+ WRITE(numout,*) ' Default value for initial C14/C in the ocean (used for equil run) rc14init= ', rc14init
+ WRITE(numout,*) ' '
+ ENDIF
+
+ REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist :
+ READ ( numtrc_ref, namc14_sbc, IOSTAT = ios, ERR = 903)
+903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_sbc in reference namelist', lwp )
+
+ REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist
+ READ ( numtrc_cfg, namc14_sbc, IOSTAT = ios, ERR = 904)
+904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_sbc in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonr, namc14_sbc )
+
+ IF(lwp) THEN ! control print
+ WRITE(numout,*) ' Namelist namc14_sbc'
+ WRITE(numout,*)
+ WRITE(numout,*) ' Chemical enhancement in piston velocity ln_chemh = ', ln_chemh
+ WRITE(numout,*) ' Coefficient for gas exchange velocity xkwind = ', xkwind
+ WRITE(numout,*) ' Reference DIC concentration (mol/m3) xdicsur = ', xdicsur
+ WRITE(numout,*) ' '
+ ENDIF
+
+ REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist :
+ READ ( numtrc_ref, namc14_fcg, IOSTAT = ios, ERR = 905)
+905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_fcg in reference namelist', lwp )
+
+ REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist
+ READ ( numtrc_cfg, namc14_fcg, IOSTAT = ios, ERR = 906)
+906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_fcg in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonr, namc14_fcg )
+
+ IF(lwp) THEN ! control print
+ WRITE(numout,*) ' Namelist namc14_fcg'
+ WRITE(numout,*)
+ WRITE(numout,*) ' Atmospheric co2 file ( bomb ) cfileco2 = ', TRIM( cfileco2 )
+ WRITE(numout,*) ' Atmospheric c14 file ( bomb ) cfilec14 = ', TRIM( cfilec14 )
+ WRITE(numout,*) ' Starting year of experiment tyrc14_beg = ', tyrc14_beg
+ WRITE(numout,*) ' '
+ ENDIF
+
+ !
+ IF( kc14typ == 2) tyrc14_beg = 1950._wp - tyrc14_beg ! BP to AD dates
+ ! set units
+ rlam14 = LOG(2._wp) / 5730._wp / rsiyea ! C14 decay rate: yr^-1 --> s^-1
+ ! ! radiocarbon half-life is 5730 yr
+ END SUBROUTINE trc_nam_c14
+
+ !!======================================================================
+END MODULE trcnam_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcsms_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcsms_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcsms_c14.F90 (revision 7041)
@@ -0,0 +1,169 @@
+MODULE trcsms_c14
+ !!======================================================================
+ !! *** MODULE trcsms_c14 ***
+ !! TOP : Bomb C14 main module
+ !!======================================================================
+ !! History - ! 1994-05 ( J. Orr ) original code
+ !! 1.0 ! 2006-02 ( J.M. Molines ) Free form + modularity
+ !! 2.0 ! 2008-12 ( C. Ethe ) reorganisation
+ !! 4.0 ! 2011-02 ( A.R. Porter, STFC Daresbury ) Dynamic memory
+ !! ! 2015 (A. Mouchet) general C14 + update formulas
+ !!----------------------------------------------------------------------
+ !! trc_sms_c14 : compute and add C14 suface forcing to C14 trends
+ !!----------------------------------------------------------------------
+ USE oce_trc ! Ocean variables
+ USE par_trc ! TOP parameters
+ USE trc ! TOP variables
+ USE trd_oce ! trends
+ USE trdtrc ! trends
+ USE sms_c14 ! atmospheric forcing
+ USE trcatm_c14 ! atmospheric forcing
+ USE iom
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_sms_c14 ! called in trcsms.F90
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $ $
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!----------------------------------------------------------------------
+CONTAINS
+
+ SUBROUTINE trc_sms_c14( kt )
+ !!----------------------------------------------------------------------
+ !! *** ROUTINE trc_sms_c14 ***
+ !!
+ !! ** Purpose : Compute the surface boundary contition on C14
+ !! passive tracer associated with air-sea fluxes and add it to
+ !! the general trend of tracers equations.
+ !
+ ! Method:
+ ! - transport the ratio C14/C as in Toggweiler et al. (JGR,1989)
+ ! - if on-line a passive tracer (jpcref; NO sms) allows compensating for
+ ! freshwater fluxes which should not impact the C14/C ratio
+ !
+ ! => Delta-C14= ( trn(...jp_c140) -1)*1000.
+ !!
+ !!----------------------------------------------------------------------
+ !
+ INTEGER, INTENT(in) :: kt ! ocean time-step index
+ !
+ INTEGER :: ji, jj, jk ! dummy loop indices
+ REAL(wp) :: zt, ztp, zsk ! dummy variables
+ REAL(wp) :: zsol ! solubility
+ REAL(wp) :: zsch ! schmidt number
+ REAL(wp) :: zv2 ! wind speed ( square)
+ REAL(wp) :: zpv ! piston velocity
+ !!----------------------------------------------------------------------
+ !
+ IF( nn_timing == 1 ) CALL timing_start('trc_sms_c14')
+ !
+ IF( kt == nittrc000 ) THEN
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_sms_c14: C14 model'
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+ ENDIF
+ !
+
+ ! Get co2sbc & c14sbc(ji,jj): at 1st iter for all, at each time step for transient
+ IF( kc14typ >= 1 .OR. kt == nittrc000 ) CALL trc_atm_c14( kt, co2sbc, c14sbc )
+
+ ! -------------------------------------------------------------------
+ ! Gas exchange coefficient (Wanninkhof, 1992, JGR, 97,7373-7382)
+ ! Schmidt number of CO2 in seawater (Wanninkhof, 1992 & 2014)
+ ! CO2 solubility (Weiss, 1974; Wanninkhof, 2014)
+ ! -------------------------------------------------------------------
+
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ IF( tmask(ji,jj,1) > 0.) THEN
+
+ zt = MIN( 40., tsn(ji,jj,1,jp_tem))
+
+ ! Computation of solubility zsol in [mol/(L * atm)]
+ ! after Wanninkhof (2014) referencing Weiss (1974)
+ ztp = ( zt + 273.16 ) * 0.01
+ zsk = 0.027766 + ztp * ( -0.025888 + 0.0050578 * ztp ) ! [mol/(L * atm)]
+ zsol = EXP( -58.0931 + 90.5069 / ztp + 22.2940 * LOG( ztp ) + zsk * tsn(ji,jj,1,jp_sal) )
+ ! convert solubilities [mol/(L * atm)] -> [mol/(m^3 * ppm)]
+ zsol = zsol * 1.e-03
+
+ ! Computes the Schmidt number of CO2 in seawater
+ ! Wanninkhof-2014
+ zsch = 2116.8 + zt * ( -136.25 + zt * (4.7353 + zt * (-0.092307 + 0.0007555 * zt ) ) )
+
+ ! Wanninkhof Piston velocity: zpv in units [m/s]
+ zv2 = xkwind * (wndm(ji,jj) * wndm(ji,jj)) ! wind speed module at T points
+ ! chemical enhancement (Wanninkhof & Knox, 1996)
+ IF( ln_chemh ) zv2 = zv2 + 2.5 * ( 0.5246 + zt * (0.016256 + 0.00049946 * zt ) )
+ zv2 = zv2/360000._wp ! conversion cm/h -> m/s
+ !
+ zpv = ( zv2 * SQRT( 660./ zsch ) ) * ( 1. - fr_i(ji,jj) ) * tmask(ji,jj,1)
+
+ ! CO2 piston velocity (m/s)
+ exch_co2(ji,jj)= zpv
+ ! CO2 invasion rate (mol/ppm/m2/s) = 1st part of 14C/C exchange velocity
+ exch_c14(ji,jj)= zpv * zsol
+ ELSE
+ exch_co2(ji,jj) = 0._wp
+ exch_c14(ji,jj) = 0._wp
+ ENDIF
+ END DO
+ END DO
+
+ ! Exchange velocity for 14C/C ratio (m/s)
+ zt = co2sbc / xdicsur
+ exch_c14(:,:) = zt * exch_c14(:,:)
+ !
+ ! Flux of C-14 from air-to-sea; units: (C14/C ratio) x m/s
+ ! already masked
+ qtr_c14(:,:) = exch_c14(:,:) * ( c14sbc(:,:) - trb(:,:,1,jp_c140) )
+
+ ! cumulation of air-to-sea flux at each time step
+ qint_c14(:,:) = qint_c14(:,:) + qtr_c14(:,:) * rdttrc
+ !
+ ! Add the surface flux to the trend of jp_c140
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ tra(ji,jj,1,jp_c140) = tra(ji,jj,1,jp_c140) + qtr_c14(ji,jj) / e3t_n(ji,jj,1)
+ END DO
+ END DO
+ !
+ ! Computation of decay effects on jp_c140
+ DO jk = 1, jpk
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ !
+ tra(ji,jj,jk,jp_c140) = tra(ji,jj,jk,jp_c140) - rlam14 * trb(ji,jj,jk,jp_c140) * tmask(ji,jj,jk)
+ !
+ END DO
+ END DO
+ END DO
+
+ !
+ IF( lrst_trc ) THEN
+ IF(lwp) WRITE(numout,*)
+ IF(lwp) WRITE(numout,*) ' trc_rst_wri_c14 : Write specific variables from c14 model '
+ IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
+ !
+ CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc ) ! These five need &
+ CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc ) ! & to be written &
+ CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2 ) ! & for temporal &
+ CALL iom_rstput( kt, nitrst, numrtw, 'exch_c14', exch_c14 ) ! & averages &
+ CALL iom_rstput( kt, nitrst, numrtw, 'qtr_c14', qtr_c14 ) ! & to be coherent.
+ CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14 ) ! Cumulative
+ !
+ ENDIF
+
+ IF( l_trdtrc ) CALL trd_trc( tra(:,:,:,jp_c140), jp_c14, jptra_sms, kt ) ! save trends
+ !
+ IF( nn_timing == 1 ) CALL timing_stop('trc_sms_c14')
+ !
+ END SUBROUTINE trc_sms_c14
+
+
+ !!======================================================================
+END MODULE trcsms_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90 (revision 7041)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/C14/trcwri_c14.F90 (revision 7041)
@@ -0,0 +1,138 @@
+MODULE trcwri_c14
+ !!======================================================================
+ !! *** MODULE trcwri ***
+ !! MY_SRC : Additional outputs for C14 tracers
+ !!======================================================================
+ !! History : 1.0 ! 2009-05 (C. Ethe) Original code
+ !! History : 2.0 ! 2015 (A. Mouchet) adapted code for C14
+ !!----------------------------------------------------------------------
+#if defined key_top && defined key_iomput
+ !!----------------------------------------------------------------------
+ !! trc_wri_c14 : outputs of ventilation fields
+ !!----------------------------------------------------------------------
+ USE oce_trc ! Ocean variables
+ USE trc ! passive tracers common variables
+ USE iom ! I/O manager
+ USE sms_c14
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_wri_c14
+ !
+ ! Standard ratio: 1.176E-12 ; Avogadro's nbr = 6.022E+23 at/mol ; bomb C14 traditionally reported as 1.E+26 atoms
+ REAL(wp), PARAMETER :: atomc14 = 1.176 * 6.022E-15 ! conversion factor
+
+
+CONTAINS
+
+ SUBROUTINE trc_wri_c14
+ !!---------------------------------------------------------------------
+ !! *** ROUTINE trc_wri_c14 ***
+ !!
+ !! ** Purpose : output additional C14 tracers fields
+ !!---------------------------------------------------------------------
+ CHARACTER (len=20) :: cltra ! short title for tracer
+ INTEGER :: ji,jj,jk,jn ! dummy loop indexes
+ REAL(wp) :: zage,zarea,ztemp ! temporary
+ REAL(wp), POINTER, DIMENSION(:,:) :: zres, z2d ! temporary storage 2D
+ REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d , zz3d ! temporary storage 3D
+ !!---------------------------------------------------------------------
+
+ ! write the tracer concentrations in the file
+ ! ---------------------------------------
+ cltra = TRIM( ctrcnm(jp_c140) ) ! short title for tracer
+ CALL iom_put( cltra, trn(:,:,:,jp_c140) )
+
+ ! compute and write the tracer diagnostic in the file
+ ! ---------------------------------------
+
+ IF( iom_use("DeltaC14") .OR. iom_use("C14Age") .OR. iom_use("RAge") ) THEN
+ !
+ CALL wrk_alloc( jpi, jpj , z2d, zres )
+ CALL wrk_alloc( jpi, jpj, jpk, z3d, zz3d )
+ !
+ zage = -1._wp / rlam14 / rsiyea ! factor for radioages in year
+ z3d(:,:,:) = 1._wp
+ zz3d(:,:,:) = 0._wp
+ !
+ DO jk = 1, jpkm1
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ IF( tmask(ji,jj,jk) > 0._wp) THEN
+ z3d (ji,jj,jk) = trn(ji,jj,jk,jp_c140)
+ zz3d(ji,jj,jk) = LOG( z3d(ji,jj,jk) )
+ ENDIF
+ ENDDO
+ ENDDO
+ ENDDO
+ zres(:,:) = z3d(:,:,1)
+
+ ! Reservoir age [yr]
+ z2d(:,:) =0._wp
+ jk = 1
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ ztemp = zres(ji,jj) / c14sbc(ji,jj)
+ IF( ztemp > 0._wp .AND. tmask(ji,jj,jk) > 0._wp ) z2d(ji,jj) = LOG( ztemp )
+ ENDDO
+ ENDDO
+ !
+ z3d(:,:,:) = 1.d03 * ( z3d(:,:,:) - 1._wp )
+ CALL iom_put( "DeltaC14" , z3d(:,:,:) ) ! Delta C14 [permil]
+ CALL iom_put( "C14Age" , zage * zz3d(:,:,:) ) ! Radiocarbon age [yr]
+
+ CALL iom_put( "qtr_c14", rsiyea * qtr_c14(:,:) ) ! Radiocarbon surf flux [./m2/yr]
+ CALL iom_put( "qint_c14" , qint_c14 ) ! cumulative flux [./m2]
+ CALL iom_put( "RAge" , zage * z2d(:,:) ) ! Reservoir age [yr]
+ !
+ CALL wrk_dealloc( jpi, jpj , z2d, zres )
+ CALL wrk_dealloc( jpi, jpj, jpk, z3d, zz3d )
+ !
+ ENDIF
+ !
+ ! 0-D fields
+ !
+ CALL iom_put( "AtmCO2", co2sbc ) ! global atmospheric CO2 [ppm]
+
+ IF( iom_use("AtmC14") ) THEN
+ zarea = glob_sum( e1e2t(:,:) ) ! global ocean surface
+ ztemp = glob_sum( c14sbc(:,:) * e1e2t(:,:) )
+ ztemp = ( ztemp / zarea - 1._wp ) * 1000._wp
+ CALL iom_put( "AtmC14" , ztemp ) ! Global atmospheric DeltaC14 [permil]
+ ENDIF
+ IF( iom_use("K_C14") ) THEN
+ ztemp = glob_sum ( exch_c14(:,:) * e1e2t(:,:) )
+ ztemp = rsiyea * ztemp / zarea
+ CALL iom_put( "K_C14" , ztemp ) ! global mean exchange velocity for C14/C ratio [m/yr]
+ ENDIF
+ IF( iom_use("K_CO2") ) THEN
+ zarea = glob_sum( e1e2t(:,:) ) ! global ocean surface
+ ztemp = glob_sum ( exch_co2(:,:) * e1e2t(:,:) )
+ ztemp = 360000._wp * ztemp / zarea ! cm/h units: directly comparable with literature
+ CALL iom_put( "K_CO2", ztemp ) ! global mean CO2 piston velocity [cm/hr]
+ ENDIF
+ IF( iom_use("C14Inv") ) THEN
+ ztemp = glob_sum( trn(:,:,:,jp_c140) * cvol(:,:,:) )
+ ztemp = atomc14 * xdicsur * ztemp
+ CALL iom_put( "C14Inv", ztemp ) ! Radiocarbon ocean inventory [10^26 atoms]
+ END IF
+ !
+ END SUBROUTINE trc_wri_c14
+
+#else
+ !!----------------------------------------------------------------------
+ !! Dummy module : No C14 tracer
+ !!----------------------------------------------------------------------
+ PUBLIC trc_wri_c14
+CONTAINS
+ SUBROUTINE trc_wri_c14 ! Empty routine
+ END SUBROUTINE trc_wri_c14
+#endif
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id: trcwri_c14
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!======================================================================
+END MODULE trcwri_c14
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90 (revision 7041)
@@ -10,49 +10,12 @@
!! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
!!----------------------------------------------------------------------
- USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES
- USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES
- USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES
- USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES
IMPLICIT NONE
- INTEGER, PARAMETER :: jp_lc = jp_pisces !: cumulative number of passive tracers
- INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d !:
- INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d !:
- INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd !:
-
-#if defined key_cfc
- !!---------------------------------------------------------------------
- !! 'key_cfc' : CFC tracers
- !!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_cfc = .TRUE. !: CFC flag
- INTEGER, PUBLIC, PARAMETER :: jp_cfc = 1 !: number of passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 2 !: additional 2d output arrays ('key_trc_diaadd')
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: additional 3d output arrays ('key_trc_diaadd')
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC
-
- ! assign an index in trc arrays for each CFC prognostic variables
- INTEGER, PUBLIC, PARAMETER :: jpc11 = jp_lc + 1 !: CFC-11
- INTEGER, PUBLIC, PARAMETER :: jpc12 = jp_lc + 2 !: CFC-12
-#else
- !!---------------------------------------------------------------------
- !! Default : No CFC tracers
- !!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_cfc = .FALSE. !: CFC flag
- INTEGER, PUBLIC, PARAMETER :: jp_cfc = 0 !: No CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_2d = 0 !: No CFC additional 2d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_3d = 0 !: No CFC additional 3d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_cfc_trd = 0 !: number of sms trends for CFC
-#endif
+ INTEGER, PUBLIC :: jp_cfc !: number of CFC passive tracers
+ INTEGER, PUBLIC :: jpc11, jpc12 !: index of CFC tracers
+ INTEGER, PUBLIC :: jp_cfc0, jp_cfc1 !: First/last index of CFC tracers
- ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done)
- INTEGER, PUBLIC, PARAMETER :: jp_cfc0 = jp_lc + 1 !: First index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc1 = jp_lc + jp_cfc !: Last index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc0_2d = jp_lc_2d + 1 !: First index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc1_2d = jp_lc_2d + jp_cfc_2d !: Last index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc0_3d = jp_lc_3d + 1 !: First index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc1_3d = jp_lc_3d + jp_cfc_3d !: Last index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc0_trd = jp_lc_trd + 1 !: First index of CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_cfc1_trd = jp_lc_trd + jp_cfc_trd !: Last index of CFC tracers
+ LOGICAL, PUBLIC :: ln_cfc11, ln_cfc12, ll_cfc
!!======================================================================
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcice_cfc.F90 (revision 7041)
@@ -5,8 +5,4 @@
!!======================================================================
!! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) Original code
- !!----------------------------------------------------------------------
-#if defined key_cfc
- !!----------------------------------------------------------------------
- !! 'key_cfc' CFC tracers
!!----------------------------------------------------------------------
!! trc_ice_cfc : MY_TRC model main routine
@@ -40,14 +36,4 @@
END SUBROUTINE trc_ice_ini_cfc
-
-#else
- !!----------------------------------------------------------------------
- !! Dummy module No MY_TRC model
- !!----------------------------------------------------------------------
-CONTAINS
- SUBROUTINE trc_ice_ini_cfc ! Empty routine
- END SUBROUTINE trc_ice_ini_cfc
-#endif
-
!!======================================================================
END MODULE trcice_cfc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90 (revision 7041)
@@ -6,7 +6,4 @@
!! History : 2.0 ! 2007-12 (C. Ethe, G. Madec)
!!----------------------------------------------------------------------
-#if defined key_cfc
- !!----------------------------------------------------------------------
- !! 'key_cfc' CFC tracers
!!----------------------------------------------------------------------
!! trc_ini_cfc : CFC model initialisation
@@ -46,4 +43,5 @@
INTEGER :: iskip = 6 ! number of 1st descriptor lines
REAL(wp) :: zyy, zyd
+ CHARACTER(len = 20) :: cltra
!!----------------------------------------------------------------------
@@ -52,4 +50,30 @@
IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~'
+
+ ! assign an index in trc arrays for each CFC prognostic variables
+ jp_cfc = 1
+ IF( ln_cfc11 .AND. ln_cfc12 ) jp_cfc = 2
+
+ ! assign an index in trc arrays for each prognostic variables
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'CFC11' .OR. cltra == 'cfc11' ) jpc11 = jn
+ IF( cltra == 'CFC12' .OR. cltra == 'cfc12' ) jpc12 = jn
+ ENDDO
+
+ IF( jp_cfc == 1 ) THEN
+ IF( ln_cfc11 ) jp_cfc0 = jpc11
+ IF( ln_cfc12 ) jp_cfc0 = jpc12
+ ELSE
+ jp_cfc0 = MIN( jpc11, jpc12 )
+ ENDIF
+ jp_cfc1 = jp_cfc0 + jp_cfc - 1
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' First index of CFC tracer in the passive tracer array jp_cfc0 = ', jp_cfc0
+ WRITE(numout,*) ' Last index of CFC tracer in the passive tracer array jp_cfc1 = ', jp_cfc1
+ WRITE(numout,*)
+ ENDIF
IF(lwp) WRITE(numout,*) 'read of formatted file cfc1112atm'
@@ -146,13 +170,4 @@
END SUBROUTINE trc_ini_cfc
-#else
- !!----------------------------------------------------------------------
- !! Dummy module No CFC tracers
- !!----------------------------------------------------------------------
-CONTAINS
- SUBROUTINE trc_ini_cfc ! Empty routine
- END SUBROUTINE trc_ini_cfc
-#endif
-
!!======================================================================
END MODULE trcini_cfc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90 (revision 7041)
@@ -6,15 +6,9 @@
!! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.cfc.h90
!!----------------------------------------------------------------------
-#if defined key_cfc
- !!----------------------------------------------------------------------
- !! 'key_cfc' CFC tracers
- !!----------------------------------------------------------------------
!! trc_nam_cfc : CFC model initialisation
!!----------------------------------------------------------------------
USE oce_trc ! Ocean variables
- USE par_trc ! TOP parameters
USE trc ! TOP variables
USE trcsms_cfc ! CFC specific variable
- USE iom ! I/O manager
IMPLICIT NONE
@@ -42,27 +36,18 @@
!! ** input : Namelist namcfc
!!----------------------------------------------------------------------
- INTEGER :: numnatc_ref = -1 ! Logical unit for reference CFC namelist
- INTEGER :: numnatc_cfg = -1 ! Logical unit for configuration CFC namelist
- INTEGER :: numonc = -1 ! Logical unit for output namelist
INTEGER :: ios ! Local integer output status for namelist read
INTEGER :: jl, jn
- TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d
!!
- NAMELIST/namcfcdate/ ndate_beg, nyear_res
- NAMELIST/namcfcdia/ cfcdia2d ! additional diagnostics
+ NAMELIST/namcfc/ ndate_beg, nyear_res
!!----------------------------------------------------------------------
- ! ! Open namelist files
- CALL ctl_opn( numnatc_ref, 'namelist_cfc_ref' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
- CALL ctl_opn( numnatc_cfg, 'namelist_cfc_cfg' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
- IF(lwm) CALL ctl_opn( numonc, 'output.namelist.cfc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
- REWIND( numnatc_ref ) ! Namelist namcfcdate in reference namelist : CFC parameters
- READ ( numnatc_ref, namcfcdate, IOSTAT = ios, ERR = 901)
-901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in reference namelist', lwp )
+ REWIND( numtrc_ref ) ! Namelist namcfcdate in reference namelist : CFC parameters
+ READ ( numtrc_ref, namcfc, IOSTAT = ios, ERR = 901)
+901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist', lwp )
- REWIND( numnatc_cfg ) ! Namelist namcfcdate in configuration namelist : CFC parameters
- READ ( numnatc_cfg, namcfcdate, IOSTAT = ios, ERR = 902 )
-902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdate in configuration namelist', lwp )
- IF(lwm) WRITE ( numonc, namcfcdate )
+ REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist : CFC parameters
+ READ ( numtrc_cfg, namcfc, IOSTAT = ios, ERR = 902 )
+902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonr, namcfc )
IF(lwp) THEN ! control print
@@ -76,51 +61,8 @@
IF(lwp) WRITE(numout,*) ' initial year (aa) nyear_beg = ', nyear_beg
!
-
- IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN
- !
- ! Namelist namcfcdia
- ! -------------------
- REWIND( numnatc_ref ) ! Namelist namcfcdia in reference namelist : CFC diagnostics
- READ ( numnatc_ref, namcfcdia, IOSTAT = ios, ERR = 903)
-903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in reference namelist', lwp )
-
- REWIND( numnatc_cfg ) ! Namelist namcfcdia in configuration namelist : CFC diagnostics
- READ ( numnatc_cfg, namcfcdia, IOSTAT = ios, ERR = 904 )
-904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfcdia in configuration namelist', lwp )
- IF(lwm) WRITE ( numonc, namcfcdia )
-
- DO jl = 1, jp_cfc_2d
- jn = jp_cfc0_2d + jl - 1
- ctrc2d(jn) = TRIM( cfcdia2d(jl)%sname )
- ctrc2l(jn) = TRIM( cfcdia2d(jl)%lname )
- ctrc2u(jn) = TRIM( cfcdia2d(jl)%units )
- END DO
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : natadd'
- DO jl = 1, jp_cfc_2d
- jn = jp_cfc0_2d + jl - 1
- WRITE(numout,*) ' 2d diag nb : ', jn, ' short name : ', ctrc2d(jn), &
- & ' long name : ', ctrc2l(jn), ' unit : ', ctrc2u(jn)
- END DO
- WRITE(numout,*) ' '
- ENDIF
- !
- ENDIF
-
- IF(lwm) CALL FLUSH ( numonc ) ! flush output namelist CFC
+ IF(lwm) CALL FLUSH ( numonr ) ! flush output namelist CFC
END SUBROUTINE trc_nam_cfc
-#else
- !!----------------------------------------------------------------------
- !! Dummy module : No CFC
- !!----------------------------------------------------------------------
-CONTAINS
- SUBROUTINE trc_nam_cfc ! Empty routine
- END SUBROUTINE trc_nam_cfc
-#endif
-
!!======================================================================
END MODULE trcnam_cfc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90 (revision 7041)
@@ -7,8 +7,4 @@
!! NEMO 1.0 ! 2004-03 (C. Ethe) free form + modularity
!! 2.0 ! 2007-12 (C. Ethe, G. Madec) reorganisation
- !!----------------------------------------------------------------------
-#if defined key_cfc
- !!----------------------------------------------------------------------
- !! 'key_cfc' CFC tracers
!!----------------------------------------------------------------------
!! trc_sms_cfc : compute and add CFC suface forcing to CFC trends
@@ -159,7 +155,4 @@
! trn in pico-mol/l idem qtr; ak in en m/a
qtr_cfc(ji,jj,jl) = -zak_cfc * ( trb(ji,jj,1,jn) - zca_cfc ) &
-#if defined key_degrad
- & * facvol(ji,jj,1) &
-#endif
& * tmask(ji,jj,1) * ( 1. - fr_i(ji,jj) )
! Add the surface flux to the trend
@@ -185,11 +178,8 @@
!
IF( lk_iomput ) THEN
- CALL iom_put( "qtrCFC11" , qtr_cfc (:,:,1) )
- CALL iom_put( "qintCFC11" , qint_cfc(:,:,1) )
- ELSE
- IF( ln_diatrc ) THEN
- trc2d(:,:,jp_cfc0_2d ) = qtr_cfc (:,:,1)
- trc2d(:,:,jp_cfc0_2d + 1) = qint_cfc(:,:,1)
- END IF
+ DO jn = jp_cfc0, jp_cfc1
+ CALL iom_put( 'qtr_'//ctrcnm(jn) , qtr_cfc (:,:,jn) )
+ CALL iom_put( 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) )
+ ENDDO
END IF
!
@@ -277,14 +267,4 @@
END FUNCTION trc_sms_cfc_alloc
-#else
- !!----------------------------------------------------------------------
- !! Dummy module No CFC tracers
- !!----------------------------------------------------------------------
-CONTAINS
- SUBROUTINE trc_sms_cfc( kt ) ! Empty routine
- WRITE(*,*) 'trc_sms_cfc: You should not have seen this print! error?', kt
- END SUBROUTINE trc_sms_cfc
-#endif
-
!!======================================================================
END MODULE trcsms_cfc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/CFC/trcwri_cfc.F90 (revision 7041)
@@ -6,7 +6,5 @@
!! History : 1.0 ! 2009-05 (C. Ethe) Original code
!!----------------------------------------------------------------------
-#if defined key_top && defined key_cfc && defined key_iomput
- !!----------------------------------------------------------------------
- !! 'key_cfc' cfc model
+#if defined key_top && defined key_iomput
!!----------------------------------------------------------------------
!! trc_wri_cfc : outputs of concentration fields
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90 (revision 7041)
@@ -10,25 +10,6 @@
!! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
!!----------------------------------------------------------------------
- USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES
- USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES
- USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES
- USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES
-
- USE par_cfc , ONLY : jp_cfc !: number of tracers in CFC
- USE par_cfc , ONLY : jp_cfc_2d !: number of tracers in CFC
- USE par_cfc , ONLY : jp_cfc_3d !: number of tracers in CFC
- USE par_cfc , ONLY : jp_cfc_trd !: number of tracers in CFC
-
- USE par_c14b , ONLY : jp_c14b !: number of tracers in C14
- USE par_c14b , ONLY : jp_c14b_2d !: number of tracers in C14
- USE par_c14b , ONLY : jp_c14b_3d !: number of tracers in C14
- USE par_c14b , ONLY : jp_c14b_trd !: number of tracers in C14
IMPLICIT NONE
-
- INTEGER, PARAMETER :: jp_lm = jp_pisces + jp_cfc + jp_c14b !:
- INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d + jp_cfc_2d + jp_c14b_2d !:
- INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d + jp_cfc_3d + jp_c14b_3d !:
- INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd + jp_cfc_trd + jp_c14b_trd !:
#if defined key_my_trc
@@ -36,12 +17,6 @@
!! 'key_my_trc' user defined tracers (MY_TRC)
!!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_my_trc = .TRUE. !: PTS flag
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc = 1 !: number of PTS tracers
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_2d = 0 !: additional 2d output arrays ('key_trc_diaadd')
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_3d = 0 !: additional 3d output arrays ('key_trc_diaadd')
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_trd = 0 !: number of sms trends for MY_TRC
-
- ! assign an index in trc arrays for each PTS prognostic variables
- INTEGER, PUBLIC, PARAMETER :: jpmyt1 = jp_lm + 1 !: 1st MY_TRC tracer
+ LOGICAL, PUBLIC, PARAMETER :: lk_my_trc = .TRUE. !: PTS flag
+ INTEGER, PUBLIC :: jp_my_trc !: number of PTS tracers
#else
@@ -49,21 +24,13 @@
!! Default No user defined tracers (MY_TRC)
!!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_my_trc = .FALSE. !: MY_TRC flag
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc = 0 !: No MY_TRC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_2d = 0 !: No MY_TRC additional 2d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_3d = 0 !: No MY_TRC additional 3d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_my_trc_trd = 0 !: number of sms trends for MY_TRC
+ LOGICAL, PUBLIC, PARAMETER :: lk_my_trc = .FALSE. !: MY_TRC flag
+ INTEGER, PUBLIC :: jp_my_trc !: No MY_TRC tracers
#endif
! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done)
- INTEGER, PUBLIC, PARAMETER :: jp_myt0 = jp_lm + 1 !: First index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt1 = jp_lm + jp_my_trc !: Last index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt0_2d = jp_lm_2d + 1 !: First index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt1_2d = jp_lm_2d + jp_my_trc_2d !: Last index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt0_3d = jp_lm_3d + 1 !: First index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt1_3d = jp_lm_3d + jp_my_trc_3d !: Last index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt0_trd = jp_lm_trd + 1 !: First index of MY_TRC passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_myt1_trd = jp_lm_trd + jp_my_trc_trd !: Last index of MY_TRC passive tracers
+ INTEGER, PUBLIC :: jp_myt0 !: First index of MY_TRC passive tracers
+ INTEGER, PUBLIC :: jp_myt1 !: Last index of MY_TRC passive tracers
+ INTEGER, PUBLIC :: jpmyt0, jpmty1, jpmyt2 !: Last index of MY_TRC passive tracers
!!======================================================================
END MODULE par_my_trc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90 (revision 7041)
@@ -37,4 +37,32 @@
!! ** Method : - Read the namcfc namelist and check the parameter values
!!----------------------------------------------------------------------
+ INTEGER :: jn
+ CHARACTER(len = 20) :: cltra
+
+
+ jp_my_trc = 1
+ ! assign an index in trc arrays for each prognostic variables
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'MYTRC' .OR. cltra == 'mytrc' ) jpmyt0 = jn
+ IF( cltra == 'MYTRC1' .OR. cltra == 'mytrc1' ) jpmyt1 = jn
+ IF( cltra == 'MYTRC2' .OR. cltra == 'mytrc2' ) jpmyt2 = jn
+ ENDDO
+
+ IF( jp_my_trc == 1 ) THEN
+ jp_myt0 = jpmyt0
+ ELSE
+ jp_myt0 = MIN( jpmyt0, jpmyt1, jpmyt2 )
+ ENDIF
+ jp_myt1 = jp_myt0 + jp_my_trc - 1
+
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' First index of MYTRC model in the passive tracer array jp_myt0 = ', jp_myt0
+ WRITE(numout,*) ' Last index of MYTRC model in the passive tracer array jp_myt1 = ', jp_myt1
+ WRITE(numout,*)
+ ENDIF
+
! ! Allocate MY_TRC arrays
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 (revision 7041)
@@ -9,7 +9,7 @@
!! 2.0 ! 2007-12 (C. Deltel, G. Madec) F90
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
- !! 'key_pisces_reduced' LOBSTER bio-model
+ !! 'key_pisces' LOBSTER bio-model
!!----------------------------------------------------------------------
!! p2z_bio :
@@ -86,6 +86,4 @@
!! source sink
!!
- !! IF 'key_diabio' defined , the biogeochemical trends
- !! for passive tracers are saved for futher diagnostics.
!!---------------------------------------------------------------------
!!
@@ -109,5 +107,5 @@
IF( nn_timing == 1 ) CALL timing_start('p2z_bio')
!
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
CALL wrk_alloc( jpi, jpj, 17, zw2d )
CALL wrk_alloc( jpi, jpj, jpk, 3, zw3d )
@@ -121,5 +119,5 @@
xksi(:,:) = 0.e0 ! zooplakton closure ( fbod)
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
zw2d (:,:,:) = 0.e0
zw3d(:,:,:,:) = 0.e0
@@ -218,25 +216,5 @@
tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
-
- IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN
- trbio(ji,jj,jk,jp_pcs0_trd ) = zno3phy
- trbio(ji,jj,jk,jp_pcs0_trd + 1) = znh4phy
- trbio(ji,jj,jk,jp_pcs0_trd + 2) = zphynh4
- trbio(ji,jj,jk,jp_pcs0_trd + 3) = zphydom
- trbio(ji,jj,jk,jp_pcs0_trd + 4) = zphyzoo
- trbio(ji,jj,jk,jp_pcs0_trd + 5) = zphydet
- trbio(ji,jj,jk,jp_pcs0_trd + 6) = zdetzoo
- ! trend number 8 in p2zsed
- trbio(ji,jj,jk,jp_pcs0_trd + 8) = zzoodet
- trbio(ji,jj,jk,jp_pcs0_trd + 9) = zzoobod
- trbio(ji,jj,jk,jp_pcs0_trd + 10) = zzoonh4
- trbio(ji,jj,jk,jp_pcs0_trd + 11) = zzoodom
- trbio(ji,jj,jk,jp_pcs0_trd + 12) = znh4no3
- trbio(ji,jj,jk,jp_pcs0_trd + 13) = zdomnh4
- trbio(ji,jj,jk,jp_pcs0_trd + 14) = zdetnh4
- trbio(ji,jj,jk,jp_pcs0_trd + 15) = zdetdom
- ! trend number 17 in p2zexp
- ENDIF
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
! convert fluxes in per day
ze3t = e3t_n(ji,jj,jk) * 86400._wp
@@ -340,24 +318,5 @@
tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
!
- IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN
- trbio(ji,jj,jk,jp_pcs0_trd ) = zno3phy
- trbio(ji,jj,jk,jp_pcs0_trd + 1) = znh4phy
- trbio(ji,jj,jk,jp_pcs0_trd + 2) = zphynh4
- trbio(ji,jj,jk,jp_pcs0_trd + 3) = zphydom
- trbio(ji,jj,jk,jp_pcs0_trd + 4) = zphyzoo
- trbio(ji,jj,jk,jp_pcs0_trd + 5) = zphydet
- trbio(ji,jj,jk,jp_pcs0_trd + 6) = zdetzoo
- ! trend number 8 in p2zsed
- trbio(ji,jj,jk,jp_pcs0_trd + 8) = zzoodet
- trbio(ji,jj,jk,jp_pcs0_trd + 9) = zzoobod
- trbio(ji,jj,jk,jp_pcs0_trd + 10) = zzoonh4
- trbio(ji,jj,jk,jp_pcs0_trd + 11) = zzoodom
- trbio(ji,jj,jk,jp_pcs0_trd + 12) = znh4no3
- trbio(ji,jj,jk,jp_pcs0_trd + 13) = zdomnh4
- trbio(ji,jj,jk,jp_pcs0_trd + 14) = zdetnh4
- trbio(ji,jj,jk,jp_pcs0_trd + 15) = zdetdom
- ! trend number 17 in p2zexp
- ENDIF
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
! convert fluxes in per day
ze3t = e3t_n(ji,jj,jk) * 86400._wp
@@ -389,5 +348,5 @@
END DO
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
DO jl = 1, 17
CALL lbc_lnk( zw2d(:,:,jl),'T', 1. )
@@ -420,43 +379,4 @@
CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
!
- ELSE
- IF( ln_diatrc ) THEN
- !
- trc2d(:,:,jp_pcs0_2d ) = zw2d(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 1) = zw2d(:,:,2)
- trc2d(:,:,jp_pcs0_2d + 2) = zw2d(:,:,3)
- trc2d(:,:,jp_pcs0_2d + 3) = zw2d(:,:,4)
- trc2d(:,:,jp_pcs0_2d + 4) = zw2d(:,:,5)
- trc2d(:,:,jp_pcs0_2d + 5) = zw2d(:,:,6)
- trc2d(:,:,jp_pcs0_2d + 6) = zw2d(:,:,7)
- ! trend number 8 is in p2zsed.F
- trc2d(:,:,jp_pcs0_2d + 8) = zw2d(:,:,8)
- trc2d(:,:,jp_pcs0_2d + 9) = zw2d(:,:,9)
- trc2d(:,:,jp_pcs0_2d + 10) = zw2d(:,:,10)
- trc2d(:,:,jp_pcs0_2d + 11) = zw2d(:,:,11)
- trc2d(:,:,jp_pcs0_2d + 12) = zw2d(:,:,12)
- trc2d(:,:,jp_pcs0_2d + 13) = zw2d(:,:,13)
- trc2d(:,:,jp_pcs0_2d + 14) = zw2d(:,:,14)
- trc2d(:,:,jp_pcs0_2d + 15) = zw2d(:,:,15)
- trc2d(:,:,jp_pcs0_2d + 16) = zw2d(:,:,16)
- trc2d(:,:,jp_pcs0_2d + 17) = zw2d(:,:,17)
- ! trend number 19 is in p2zexp.F
- trc3d(:,:,:,jp_pcs0_3d ) = zw3d(:,:,:,1)
- trc3d(:,:,:,jp_pcs0_3d + 1) = zw3d(:,:,:,2)
- trc3d(:,:,:,jp_pcs0_3d + 2) = zw3d(:,:,:,3)
- ENDIF
- !
- ENDIF
-
- IF( ln_diabio .AND. .NOT. lk_iomput ) THEN
- DO jl = jp_pcs0_trd, jp_pcs1_trd
- CALL lbc_lnk( trbio(:,:,1,jl),'T', 1. )
- END DO
- ENDIF
- !
- IF( l_trdtrc ) THEN
- DO jl = jp_pcs0_trd, jp_pcs1_trd
- CALL trd_trc( trbio(:,:,:,jl), jl, kt ) ! handle the trend
- END DO
ENDIF
@@ -467,5 +387,5 @@
ENDIF
!
- IF( ln_diatrc .OR. lk_iomput ) THEN
+ IF( lk_iomput ) THEN
CALL wrk_dealloc( jpi, jpj, 17, zw2d )
CALL wrk_dealloc( jpi, jpj, jpk, 3, zw3d )
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zexp.F90 (revision 7041)
@@ -10,7 +10,7 @@
!! 3.5 ! 2012-03 (C. Ethe) Merge PISCES-LOBSTER
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
- !!----------------------------------------------------------------------
- !! 'key_pisces_reduced' LOBSTER bio-model
+#if defined key_pisces
+ !!----------------------------------------------------------------------
+ !! 'key_pisces' LOBSTER bio-model
!!----------------------------------------------------------------------
!! p2z_exp : Compute loss of organic matter in the sediments
@@ -68,5 +68,4 @@
INTEGER :: ji, jj, jk, jl, ikt
REAL(wp) :: zgeolpoc, zfact, zwork, ze3t, zsedpocd, zmaskt
- REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrbio
REAL(wp), POINTER, DIMENSION(:,:) :: zsedpoca
CHARACTER (len=25) :: charout
@@ -80,8 +79,4 @@
zsedpoca(:,:) = 0.
- IF( l_trdtrc ) THEN
- CALL wrk_alloc( jpi, jpj, jpk, ztrbio ) ! temporary save of trends
- ztrbio(:,:,:) = tra(:,:,:,jpno3)
- ENDIF
! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC
@@ -126,9 +121,5 @@
! Oa & Ek: diagnostics depending on jpdia2d ! left as example
- IF( lk_iomput ) THEN
- CALL iom_put( "SEDPOC" , sedpocn )
- ELSE
- IF( ln_diatrc ) trc2d(:,:,jp_pcs0_2d + 18) = sedpocn(:,:)
- ENDIF
+ IF( lk_iomput ) CALL iom_put( "SEDPOC" , sedpocn )
@@ -160,11 +151,4 @@
ENDIF
!
- IF( l_trdtrc ) THEN
- ztrbio(:,:,:) = tra(:,:,:,jpno3) - ztrbio(:,:,:)
- jl = jp_pcs0_trd + 16
- CALL trd_trc( ztrbio, jl, kt ) ! handle the trend
- CALL wrk_dealloc( jpi, jpj, jpk, ztrbio ) ! temporary save of trends
- ENDIF
- !
CALL wrk_dealloc( jpi, jpj, zsedpoca) ! temporary save of trends
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90 (revision 7041)
@@ -11,7 +11,7 @@
!! 3.2 ! 2009-04 (C. Ethe, G. Madec) minor optimisation + style
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
- !!----------------------------------------------------------------------
- !! 'key_pisces_reduced' LOBSTER bio-model
+#if defined key_pisces
+ !!----------------------------------------------------------------------
+ !! 'key_pisces' LOBSTER bio-model
!!----------------------------------------------------------------------
!! p2z_opt : Compute the light availability in the water column
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsed.F90 (revision 7041)
@@ -8,7 +8,7 @@
!! 2.0 ! 2007-12 (C. Deltel, G. Madec) F90 + simplifications
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
- !! 'key_pisces_reduced' LOBSTER bio-model
+ !! 'key_pisces' LOBSTER bio-model
!!----------------------------------------------------------------------
!! p2z_sed : Compute loss of organic matter in the sediments
@@ -66,5 +66,5 @@
CHARACTER (len=25) :: charout
REAL(wp), POINTER, DIMENSION(:,: ) :: zw2d
- REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork, ztra, ztrbio
+ REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork, ztra
!!---------------------------------------------------------------------
!
@@ -79,8 +79,4 @@
! Allocate temporary workspace
CALL wrk_alloc( jpi, jpj, jpk, zwork, ztra )
- IF( l_trdtrc ) THEN
- CALL wrk_alloc( jpi, jpj, jpk, ztrbio )
- ztrbio(:,:,:) = tra(:,:,:,jpdet)
- ENDIF
! sedimentation of detritus : upstream scheme
@@ -116,25 +112,8 @@
CALL wrk_dealloc( jpi, jpj, zw2d )
ENDIF
- ELSE
- IF( ln_diatrc ) THEN
- CALL wrk_alloc( jpi, jpj, zw2d )
- zw2d(:,:) = ztra(:,:,1) * e3t_n(:,:,1) * 86400._wp
- DO jk = 2, jpkm1
- zw2d(:,:) = zw2d(:,:) + ztra(:,:,jk) * e3t_n(:,:,jk) * 86400._wp
- END DO
- trc2d(:,:,jp_pcs0_2d + 7) = zw2d(:,:)
- CALL wrk_dealloc( jpi, jpj, zw2d )
- ENDIF
ENDIF
!
- IF( ln_diabio .AND. .NOT. lk_iomput ) trbio(:,:,:,jp_pcs0_trd + 7) = ztra(:,:,:)
CALL wrk_dealloc( jpi, jpj, jpk, zwork, ztra )
!
- IF( l_trdtrc ) THEN
- ztrbio(:,:,:) = tra(:,:,:,jpdet) - ztrbio(:,:,:)
- jl = jp_pcs0_trd + 7
- CALL trd_trc( ztrbio, jl, kt ) ! handle the trend
- CALL wrk_dealloc( jpi, jpj, jpk, ztrbio )
- ENDIF
IF(ln_ctl) THEN ! print mean trends (used for debugging)
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsms.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsms.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zsms.F90 (revision 7041)
@@ -7,7 +7,7 @@
!! 2.0 ! 2007-12 (C. Ethe, G. Madec) revised architecture
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
- !! 'key_pisces_reduced' LOBSTER bio-model
+ !! 'key_pisces' LOBSTER bio-model
!!----------------------------------------------------------------------
!! p2zsms : Time loop of passive tracers sms
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 (revision 7041)
@@ -67,7 +67,5 @@
REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag
REAL(wp) :: ztrc, zdust
-#if ! defined key_kriest
REAL(wp) :: zdenom, zdenom2
-#endif
REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig
REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP
@@ -76,5 +74,4 @@
REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2
REAL(wp) :: ztfe, zoxy
- REAL(wp) :: zstep
!!---------------------------------------------------------------------
!
@@ -212,8 +209,4 @@
DO jj = 1, jpj
DO ji = 1, jpi
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.
! This parameterization assumes a simple second order kinetics (k[Particles][Fe]).
@@ -227,12 +220,9 @@
zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9
ENDIF
-#if defined key_kriest
- ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6
-#else
- ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6
-#endif
+
+ ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6
IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s
zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc
- zscave = zfeequi * zlam1b * zstep
+ zscave = zfeequi * zlam1b * xstep
! Compute the different ratios for scavenging of iron
@@ -240,7 +230,5 @@
! ---------------------------------------------------------
zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b
-#if ! defined key_kriest
zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b
-#endif
! Increased scavenging for very high iron concentrations found near the coasts
@@ -252,5 +240,5 @@
zdep = MIN( 1., 1000. / gdept_n(ji,jj,jk) )
zlam1b = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) )
- zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer)
+ zcoag = zfeequi * zlam1b * xstep + 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer)
! Compute the coagulation of colloidal iron. This parameterization
@@ -260,18 +248,11 @@
zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) &
& + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) )
- zaggdfea = zlam1a * zstep * zfecoll
-#if defined key_kriest
- zaggdfeb = 0.
- !
- tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb
-#else
+ zaggdfea = zlam1a * xstep * zfecoll
zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)
- zaggdfeb = zlam1b * zstep * zfecoll
+ zaggdfeb = zlam1b * xstep * zfecoll
!
tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea
tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb
-#endif
END DO
END DO
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90 (revision 7041)
@@ -167,7 +167,4 @@
zkgwan = 0.251 * zws
zkgwan = zkgwan * xconv * ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1)
-# if defined key_degrad
- zkgwan = zkgwan * facvol(ji,jj,1)
-#endif
! compute gas exchange for CO2 and O2
zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 )
@@ -239,11 +236,4 @@
!
CALL wrk_dealloc( jpi, jpj, zw2d )
- ELSE
- IF( ln_diatrc ) THEN
- trc2d(:,:,jp_pcs0_2d ) = oce_co2(:,:) / e1e2t(:,:) * rfact2r
- trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 3) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1)
- ENDIF
ENDIF
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90 (revision 7041)
@@ -129,7 +129,4 @@
! CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION)
zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal)
-# if defined key_degrad
- zdispot = zdispot * facvol(ji,jj,jk)
-# endif
! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3],
! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION
@@ -150,10 +147,4 @@
IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3 * tmask(:,:,:) )
IF( iom_use( "DCAL" ) ) CALL iom_put( "DCAL" , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) )
- ELSE
- IF( ln_diatrc ) THEN
- trc3d(:,:,:,jp_pcs0_3d ) = -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:) * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 2) = zco3sat(:,:,:) * tmask(:,:,:)
- ENDIF
ENDIF
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90 (revision 7041)
@@ -70,11 +70,8 @@
REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam
REAL(wp) :: zgraze2 , zdenom, zdenom2
- REAL(wp) :: zfact , zstep, zfood, zfoodlim, zproport
+ REAL(wp) :: zfact , zfood, zfoodlim, zproport
REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2
REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf
REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn
-#if defined key_kriest
- REAL znumpoc
-#endif
REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof
REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf
@@ -96,10 +93,5 @@
DO ji = 1, jpi
zcompam = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 )
-# if defined key_degrad
- zstep = xstep * facvol(ji,jj,jk)
-# else
- zstep = xstep
-# endif
- zfact = zstep * tgfunc2(ji,jj,jk) * zcompam
+ zfact = xstep * tgfunc2(ji,jj,jk) * zcompam
! Respiration rates of both zooplankton
@@ -126,5 +118,5 @@
zdenom = zfoodlim / ( xkgraz2 + zfoodlim )
zdenom2 = zdenom / ( zfood + rtrn )
- zgraze2 = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)
+ zgraze2 = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)
zgrazd = zgraze2 * xprefc * zcompadi * zdenom2
@@ -140,14 +132,11 @@
! ----------------------------------
! ----------------------------------
-# if ! defined key_kriest
- zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) &
+ zgrazffeg = grazflux * xstep * wsbio4(ji,jj,jk) &
& * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes)
zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn)
-# endif
- zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) &
+ zgrazffep = grazflux * xstep * wsbio3(ji,jj,jk) &
& * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes)
zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn)
!
-# if ! defined key_kriest
zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg
! Compute the proportion of filter feeders
@@ -158,5 +147,5 @@
zratio = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn )
zratio2 = zratio * zratio
- zfrac = zproport * grazflux * zstep * wsbio4(ji,jj,jk) &
+ zfrac = zproport * grazflux * xstep * wsbio4(ji,jj,jk) &
& * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes) &
& * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) )
@@ -171,14 +160,4 @@
& + zgrazpoc + zgrazffep + zgrazffeg
zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg
-# else
- zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep
- ! Compute the proportion of filter feeders
- zproport = zgrazffep / ( zgraztot + rtrn )
- zgrazffep = zproport * zgrazffep
- zgrazfffp = zproport * zgrazfffp
- zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep
- zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep
- zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp
-# endif
! Total grazing ( grazing by microzoo is already computed in p4zmicro )
@@ -228,18 +207,9 @@
tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca
tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca
-#if defined key_kriest
- znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso &
- & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof &
- & + zgraztotf * unass2
-#else
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac
- tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe
- tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg &
- & + zgraztotf * unass2 - zfracfe
-#endif
+ tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac
+ tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac
+ tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe
+ tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg &
+ & + zgraztotf * unass2 - zfracfe
END DO
END DO
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90 (revision 7041)
@@ -71,5 +71,5 @@
REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc
REAL(wp) :: zgraze , zdenom, zdenom2
- REAL(wp) :: zfact , zstep, zfood, zfoodlim
+ REAL(wp) :: zfact , zfood, zfoodlim
REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf
REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz
@@ -89,9 +89,5 @@
DO ji = 1, jpi
zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 )
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
- zfact = zstep * tgfunc2(ji,jj,jk) * zcompaz
+ zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz
! Respiration rates of both zooplankton
@@ -115,5 +111,5 @@
zdenom = zfoodlim / ( xkgraz + zfoodlim )
zdenom2 = zdenom / ( zfood + rtrn )
- zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo)
+ zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo)
zgrazp = zgraze * xpref2p * zcompaph * zdenom2
@@ -130,5 +126,5 @@
! Grazing by microzooplankton
- IF( ln_diatrc .AND. lk_iomput ) zgrazing(ji,jj,jk) = zgraztot
+ IF( lk_iomput ) zgrazing(ji,jj,jk) = zgraztot
! Various remineralization and excretion terms
@@ -154,7 +150,4 @@
tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig
tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig
-#if defined key_kriest
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro
-#endif
! Update the arrays TRA which contain the biological sources and sinks
! --------------------------------------------------------------------
@@ -180,8 +173,4 @@
tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca
tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca
-#if defined key_kriest
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zmortz * xkr_dmicro &
- - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )
-#endif
END DO
END DO
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90 (revision 7041)
@@ -73,5 +73,5 @@
REAL(wp) :: zsizerat, zcompaph
REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal
- REAL(wp) :: ztortp , zrespp , zmortp , zstep
+ REAL(wp) :: ztortp , zrespp , zmortp
CHARACTER (len=25) :: charout
!!---------------------------------------------------------------------
@@ -84,8 +84,4 @@
DO ji = 1, jpi
zcompaph = MAX( ( trb(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 )
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! When highly limited by macronutrients, very small cells
! dominate the community. As a consequence, aggregation
@@ -95,5 +91,5 @@
! Squared mortality of Phyto similar to a sedimentation term during
! blooms (Doney et al. 1996)
- zrespp = wchl * 1.e6 * zstep * xdiss(ji,jj,jk) * zcompaph * zsizerat
+ zrespp = wchl * 1.e6 * xstep * xdiss(ji,jj,jk) * zcompaph * zsizerat
! Phytoplankton mortality. This mortality loss is slightly
@@ -119,14 +115,8 @@
tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca
tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca
-#if defined key_kriest
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp * xkr_dnano + zrespp * xkr_ddiat
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp * zfactfe
-#else
tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfracal * zmortp
tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ( 1. - zfracal ) * zmortp
tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe
tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe
-#endif
END DO
END DO
@@ -153,5 +143,5 @@
INTEGER :: ji, jj, jk
REAL(wp) :: zfactfe,zfactsi,zfactch, zcompadi
- REAL(wp) :: zrespp2, ztortp2, zmortp2, zstep
+ REAL(wp) :: zrespp2, ztortp2, zmortp2
REAL(wp) :: zlim2, zlim1
CHARACTER (len=25) :: charout
@@ -176,17 +166,13 @@
! sticky and coagulate to sink quickly out of the euphotic zone
! ------------------------------------------------------------
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! Phytoplankton respiration
! ------------------------
zlim2 = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk)
zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 )
- zrespp2 = 1.e6 * zstep * ( wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia)
+ zrespp2 = 1.e6 * xstep * ( wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * trb(ji,jj,jk,jpdia)
! Phytoplankton mortality.
! ------------------------
- ztortp2 = mprat2 * zstep * trb(ji,jj,jk,jpdia) / ( xkmort + trb(ji,jj,jk,jpdia) ) * zcompadi
+ ztortp2 = mprat2 * xstep * trb(ji,jj,jk,jpdia) / ( xkmort + trb(ji,jj,jk,jpdia) ) * zcompadi
zmortp2 = zrespp2 + ztortp2
@@ -202,14 +188,8 @@
tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi
tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi
-#if defined key_kriest
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp2 * xkr_ddiat + zrespp2 * xkr_daggr
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp2 * zfactfe
-#else
tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2
tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2
tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe
tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe
-#endif
END DO
END DO
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90 (revision 7041)
@@ -215,9 +215,4 @@
IF( iom_use( "PAR" ) ) CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation
ENDIF
- ELSE
- IF( ln_diatrc ) THEN ! save output diagnostics
- trc2d(:,:, jp_pcs0_2d + 10) = heup(:,: ) * tmask(:,:,1)
- trc3d(:,:,:,jp_pcs0_3d + 3) = etot(:,:,:) * tmask(:,:,:)
- ENDIF
ENDIF
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90 (revision 7041)
@@ -110,5 +110,4 @@
! Computation of the optimal production
prmax(:,:,:) = 0.6_wp * r1_rday * tgfunc(:,:,:)
- IF( lk_degrad ) prmax(:,:,:) = prmax(:,:,:) * facvol(:,:,:)
! compute the day length depending on latitude and the day
@@ -482,17 +481,4 @@
CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
ENDIF
- ELSE
- IF( ln_diatrc ) THEN
- zfact = 1.e+3 * rfact2r
- trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zfact * tmask(:,:,:)
-# if ! defined key_kriest
- trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:)
-# endif
- ENDIF
ENDIF
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90 (revision 7041)
@@ -72,8 +72,6 @@
REAL(wp) :: zbactfer, zorem, zorem2, zofer, zolimit
REAL(wp) :: zosil, ztem
-#if ! defined key_kriest
REAL(wp) :: zofer2
-#endif
- REAL(wp) :: zonitr, zstep, zfact
+ REAL(wp) :: zonitr, zfact
CHARACTER (len=25) :: charout
REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac
@@ -115,12 +113,8 @@
DO jj = 1, jpj
DO ji = 1, jpi
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! DOC ammonification. Depends on depth, phytoplankton biomass
! and a limitation term which is supposed to be a parameterization
! of the bacterial activity.
- zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)
+ zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk)
zremik = MAX( zremik, 2.74e-4 * xstep )
! Ammonification in oxic waters with oxygen consumption
@@ -144,13 +138,9 @@
DO jj = 1, jpj
DO ji = 1, jpi
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! NH4 nitrification to NO3. Ceased for oxygen concentrations
! below 2 umol/L. Inhibited at strong light
! ----------------------------------------------------------
- zonitr =nitrif * zstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) )
- denitnh4(ji,jj,jk) = nitrif * zstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)
+ zonitr =nitrif * xstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) )
+ denitnh4(ji,jj,jk) = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)
! Update of the tracers trends
! ----------------------------
@@ -180,12 +170,7 @@
& * trb(ji,jj,jk,jpfer) / ( 2.5E-10 + trb(ji,jj,jk,jpfer) ) &
& * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk)
-#if defined key_kriest
- tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.05
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05
-#else
tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.16
tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.12
tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.04
-#endif
END DO
END DO
@@ -201,11 +186,7 @@
DO jj = 1, jpj
DO ji = 1, jpi
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! POC disaggregation by turbulence and bacterial activity.
! --------------------------------------------------------
- zremip = xremip * zstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) )
+ zremip = xremip * xstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) )
! POC disaggregation rate is reduced in anoxic zone as shown by
@@ -216,10 +197,6 @@
zorem = zremip * trb(ji,jj,jk,jppoc)
zofer = zremip * trb(ji,jj,jk,jpsfe)
-#if ! defined key_kriest
zorem2 = zremip * trb(ji,jj,jk,jpgoc)
zofer2 = zremip * trb(ji,jj,jk,jpbfe)
-#else
- zorem2 = zremip * trb(ji,jj,jk,jpnum)
-#endif
! Update the appropriate tracers trends
@@ -228,14 +205,8 @@
tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem
tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer
-#if defined key_kriest
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2
- tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer
-#else
tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem
tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2
tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer
tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2
-#endif
END DO
@@ -252,8 +223,4 @@
DO jj = 1, jpj
DO ji = 1, jpi
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
! Remineralization rate of BSi depedant on T and saturation
! ---------------------------------------------------------
@@ -272,5 +239,5 @@
ztem = MAX( tsn(ji,jj,1,jp_tem), 0. )
zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. )
- zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil
+ zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * xstep * znusil
zosil = zsiremin * trb(ji,jj,jk,jpgsi)
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90 (revision 7041)
@@ -145,7 +145,4 @@
& CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface
ENDIF
- ELSE
- IF( ln_diatrc ) &
- & trc2d(:,:,jp_pcs0_2d + 11) = zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1)
ENDIF
CALL wrk_dealloc( jpi, jpj, zpdep, zsidep )
@@ -196,6 +193,5 @@
ENDIF
- ! OA: Warning, the following part is necessary, especially with Kriest
- ! to avoid CFL problems above the sediments
+ ! OA: Warning, the following part is necessary to avoid CFL problems above the sediments
! --------------------------------------------------------------------
DO jj = 1, jpj
@@ -217,10 +213,6 @@
IF( tmask(ji,jj,1) == 1 ) THEN
ikt = mbkt(ji,jj)
-# if defined key_kriest
- zflx = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) * 1E3 * 1E6 / 1E4
-# else
zflx = ( trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) &
& + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) ) * 1E3 * 1E6 / 1E4
-#endif
zflx = LOG10( MAX( 1E-3, zflx ) )
zo2 = LOG10( MAX( 10. , trb(ji,jj,ikt,jpoxy) * 1E6 ) )
@@ -246,11 +238,6 @@
IF( tmask(ji,jj,1) == 1 ) THEN
ikt = mbkt(ji,jj)
-# if defined key_kriest
- zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj)
- zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)
-# else
zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj)
zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)
-# endif
! For calcite, burial efficiency is made a function of saturation
zfactcal = MIN( excess(ji,jj,ikt), 0.2 )
@@ -278,9 +265,5 @@
zws4 = zwsbio4(ji,jj) * zdep
zwsc = zwscal (ji,jj) * zdep
-# if defined key_kriest
- zsiloss = trb(ji,jj,ikt,jpgsi) * zws4
-# else
zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc
-# endif
zcaloss = trb(ji,jj,ikt,jpcal) * zwsc
!
@@ -305,5 +288,4 @@
zws3 = zwsbio3(ji,jj) * zdep
zrivno3 = 1. - zbureff(ji,jj)
-# if ! defined key_kriest
tra(ji,jj,ikt,jpgoc) = tra(ji,jj,ikt,jpgoc) - trb(ji,jj,ikt,jpgoc) * zws4
tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3
@@ -311,10 +293,4 @@
tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3
zwstpoc = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3
-# else
- tra(ji,jj,ikt,jpnum) = tra(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4
- tra(ji,jj,ikt,jppoc) = tra(ji,jj,ikt,jppoc) - trb(ji,jj,ikt,jppoc) * zws3
- tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3
- zwstpoc = trb(ji,jj,ikt,jppoc) * zws3
-# endif
#if ! defined key_sed
@@ -346,9 +322,6 @@
zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) )
IF( zlim <= 0.2 ) zlim = 0.01
-#if defined key_degrad
- zfact = zlim * rfact2 * facvol(ji,jj,jk)
-#else
zfact = zlim * rfact2
-#endif
+
ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) )
ztrpo4 = trb (ji,jj,jk,jppo4) / ( concnnh4 + trb (ji,jj,jk,jppo4) )
@@ -389,7 +362,4 @@
ENDIF
ENDIF
- ELSE
- IF( ln_diatrc ) &
- & trc2d(:,:,jp_pcs0_2d + 12) = nitrpot(:,:,1) * nitrfix * rno3 * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1)
ENDIF
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90 (revision 7041)
@@ -37,31 +37,7 @@
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sinkcal, sinksil !: CaCO3 and BSi sinking fluxes
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sinkfer !: Small BFe sinking fluxes
-#if ! defined key_kriest
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sinkfer2 !: Big iron sinking fluxes
-#endif
INTEGER :: ik100
-
-#if defined key_kriest
- REAL(wp) :: xkr_sfact !: Sinking factor
- REAL(wp) :: xkr_stick !: Stickiness
- REAL(wp) :: xkr_nnano !: Nbr of cell in nano size class
- REAL(wp) :: xkr_ndiat !: Nbr of cell in diatoms size class
- REAL(wp) :: xkr_nmicro !: Nbr of cell in microzoo size class
- REAL(wp) :: xkr_nmeso !: Nbr of cell in mesozoo size class
- REAL(wp) :: xkr_naggr !: Nbr of cell in aggregates size class
-
- REAL(wp) :: xkr_frac
-
- REAL(wp), PUBLIC :: xkr_dnano !: Size of particles in nano pool
- REAL(wp), PUBLIC :: xkr_ddiat !: Size of particles in diatoms pool
- REAL(wp), PUBLIC :: xkr_dmicro !: Size of particles in microzoo pool
- REAL(wp), PUBLIC :: xkr_dmeso !: Size of particles in mesozoo pool
- REAL(wp), PUBLIC :: xkr_daggr !: Size of particles in aggregates pool
- REAL(wp), PUBLIC :: xkr_wsbio_min !: min vertical particle speed
- REAL(wp), PUBLIC :: xkr_wsbio_max !: max vertical particle speed
-
- REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: xnumm !: maximum number of particles in aggregates
-#endif
!!----------------------------------------------------------------------
@@ -72,5 +48,4 @@
CONTAINS
-#if ! defined key_kriest
!!----------------------------------------------------------------------
!! 'standard sinking parameterisation' ???
@@ -91,5 +66,5 @@
REAL(wp) :: zagg1, zagg2, zagg3, zagg4
REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3
- REAL(wp) :: zfact, zwsmax, zmax, zstep
+ REAL(wp) :: zfact, zwsmax, zmax
CHARACTER (len=25) :: charout
REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d
@@ -191,9 +166,5 @@
DO ji = 1, jpi
!
- zstep = xstep
-# if defined key_degrad
- zstep = zstep * facvol(ji,jj,jk)
-# endif
- zfact = zstep * xdiss(ji,jj,jk)
+ zfact = xstep * xdiss(ji,jj,jk)
! Part I : Coagulation dependent on turbulence
zagg1 = 25.9 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)
@@ -203,6 +174,6 @@
! Aggregation of small into large particles
- zagg3 = 47.1 * zstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)
- zagg4 = 3.3 * zstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)
+ zagg3 = 47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)
+ zagg4 = 3.3 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)
zagg = zagg1 + zagg2 + zagg3 + zagg4
@@ -214,11 +185,11 @@
! 3rd term is differential settling of DOC-POC
zaggdoc = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact &
- & + 2.4 * zstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc)
+ & + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc)
! transfer of DOC to GOC :
! 1st term is shear aggregation
! 2nd term is differential settling
- zaggdoc2 = ( 3.53E3 * zfact + 0.1 * zstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc)
+ zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc)
! tranfer of DOC to POC due to brownian motion
- zaggdoc3 = ( 5095. * trb(ji,jj,jk,jppoc) + 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) *zstep * 0.3 * trb(ji,jj,jk,jpdoc)
+ zaggdoc3 = ( 5095. * trb(ji,jj,jk,jppoc) + 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep * 0.3 * trb(ji,jj,jk,jpdoc)
! Update the trends
@@ -281,14 +252,4 @@
CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
ENDIF
- ELSE
- IF( ln_diatrc ) THEN
- zfact = 1.e3 * rfact2r
- trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1)
- ENDIF
ENDIF
!
@@ -320,450 +281,4 @@
!
END SUBROUTINE p4z_sink_init
-
-#else
- !!----------------------------------------------------------------------
- !! 'Kriest sinking parameterisation' key_kriest ???
- !!----------------------------------------------------------------------
-
- SUBROUTINE p4z_sink ( kt, knt )
- !!---------------------------------------------------------------------
- !! *** ROUTINE p4z_sink ***
- !!
- !! ** Purpose : Compute vertical flux of particulate matter due to
- !! gravitational sinking - Kriest parameterization
- !!
- !! ** Method : - ???
- !!---------------------------------------------------------------------
- !
- INTEGER, INTENT(in) :: kt, knt
- !
- INTEGER :: ji, jj, jk, jit, niter1, niter2
- REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zfract, zaggsi, zaggsh
- REAL(wp) :: zagg , zaggdoc, zaggdoc1, znumdoc
- REAL(wp) :: znum , zeps, zfm, zgm, zsm
- REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5
- REAL(wp) :: zval1, zval2, zval3, zval4
- REAL(wp) :: zfact
- INTEGER :: ik1
- CHARACTER (len=25) :: charout
- REAL(wp), POINTER, DIMENSION(:,:,:) :: znum3d
- REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d
- REAL(wp), POINTER, DIMENSION(:,: ) :: zw2d
- !!---------------------------------------------------------------------
- !
- IF( nn_timing == 1 ) CALL timing_start('p4z_sink')
- !
- CALL wrk_alloc( jpi, jpj, jpk, znum3d )
- !
- ! Initialisation of variables used to compute Sinking Speed
- ! ---------------------------------------------------------
-
- znum3d(:,:,:) = 0.e0
- zval1 = 1. + xkr_zeta
- zval2 = 1. + xkr_zeta + xkr_eta
- zval3 = 1. + xkr_eta
-
- ! Computation of the vertical sinking speed : Kriest et Evans, 2000
- ! -----------------------------------------------------------------
-
- DO jk = 1, jpkm1
- DO jj = 1, jpj
- DO ji = 1, jpi
- IF( tmask(ji,jj,jk) /= 0.e0 ) THEN
- znum = trb(ji,jj,jk,jppoc) / ( trb(ji,jj,jk,jpnum) + rtrn ) / xkr_massp
- ! -------------- To avoid sinking speed over 50 m/day -------
- znum = MIN( xnumm(jk), znum )
- znum = MAX( 1.1 , znum )
- znum3d(ji,jj,jk) = znum
- !------------------------------------------------------------
- zeps = ( zval1 * znum - 1. )/ ( znum - 1. )
- zfm = xkr_frac**( 1. - zeps )
- zgm = xkr_frac**( zval1 - zeps )
- zdiv = MAX( 1.e-4, ABS( zeps - zval2 ) ) * SIGN( 1., ( zeps - zval2 ) )
- zdiv1 = zeps - zval3
- wsbio3(ji,jj,jk) = xkr_wsbio_min * ( zeps - zval1 ) / zdiv &
- & - xkr_wsbio_max * zgm * xkr_eta / zdiv
- wsbio4(ji,jj,jk) = xkr_wsbio_min * ( zeps-1. ) / zdiv1 &
- & - xkr_wsbio_max * zfm * xkr_eta / zdiv1
- IF( znum == 1.1) wsbio3(ji,jj,jk) = wsbio4(ji,jj,jk)
- ENDIF
- END DO
- END DO
- END DO
-
- wscal(:,:,:) = MAX( wsbio3(:,:,:), 30._wp )
-
- ! INITIALIZE TO ZERO ALL THE SINKING ARRAYS
- ! -----------------------------------------
-
- sinking (:,:,:) = 0.e0
- sinking2(:,:,:) = 0.e0
- sinkcal (:,:,:) = 0.e0
- sinkfer (:,:,:) = 0.e0
- sinksil (:,:,:) = 0.e0
-
- ! Compute the sedimentation term using p4zsink2 for all the sinking particles
- ! -----------------------------------------------------
-
- niter1 = niter1max
- niter2 = niter2max
-
- DO jit = 1, niter1
- CALL p4z_sink2( wsbio3, sinking , jppoc, niter1 )
- CALL p4z_sink2( wsbio3, sinkfer , jpsfe, niter1 )
- CALL p4z_sink2( wscal , sinksil , jpgsi, niter1 )
- CALL p4z_sink2( wscal , sinkcal , jpcal, niter1 )
- END DO
-
- DO jit = 1, niter2
- CALL p4z_sink2( wsbio4, sinking2, jpnum, niter2 )
- END DO
-
- ! Exchange between organic matter compartments due to coagulation/disaggregation
- ! ---------------------------------------------------
-
- zval1 = 1. + xkr_zeta
- zval2 = 1. + xkr_eta
- zval3 = 3. + xkr_eta
- zval4 = 4. + xkr_eta
-
- DO jk = 1,jpkm1
- DO jj = 1,jpj
- DO ji = 1,jpi
- IF( tmask(ji,jj,jk) /= 0.e0 ) THEN
-
- znum = trb(ji,jj,jk,jppoc)/(trb(ji,jj,jk,jpnum)+rtrn) / xkr_massp
- !-------------- To avoid sinking speed over 50 m/day -------
- znum = min(xnumm(jk),znum)
- znum = MAX( 1.1,znum)
- !------------------------------------------------------------
- zeps = ( zval1 * znum - 1.) / ( znum - 1.)
- zdiv = MAX( 1.e-4, ABS( zeps - zval3) ) * SIGN( 1., zeps - zval3 )
- zdiv1 = MAX( 1.e-4, ABS( zeps - 4. ) ) * SIGN( 1., zeps - 4. )
- zdiv2 = zeps - 2.
- zdiv3 = zeps - 3.
- zdiv4 = zeps - zval2
- zdiv5 = 2.* zeps - zval4
- zfm = xkr_frac**( 1.- zeps )
- zsm = xkr_frac**xkr_eta
-
- ! Part I : Coagulation dependant on turbulence
- ! ----------------------------------------------
-
- zagg1 = 0.163 * trb(ji,jj,jk,jpnum)**2 &
- & * 2.*( (zfm-1.)*(zfm*xkr_mass_max**3-xkr_mass_min**3) &
- & * (zeps-1)/zdiv1 + 3.*(zfm*xkr_mass_max-xkr_mass_min) &
- & * (zfm*xkr_mass_max**2-xkr_mass_min**2) &
- & * (zeps-1.)**2/(zdiv2*zdiv3))
- zagg2 = 2*0.163*trb(ji,jj,jk,jpnum)**2*zfm* &
- & ((xkr_mass_max**3+3.*(xkr_mass_max**2 &
- & *xkr_mass_min*(zeps-1.)/zdiv2 &
- & +xkr_mass_max*xkr_mass_min**2*(zeps-1.)/zdiv3) &
- & +xkr_mass_min**3*(zeps-1)/zdiv1) &
- & -zfm*xkr_mass_max**3*(1.+3.*((zeps-1.)/ &
- & (zeps-2.)+(zeps-1.)/zdiv3)+(zeps-1.)/zdiv1))
-
- zagg3 = 0.163*trb(ji,jj,jk,jpnum)**2*zfm**2*8. * xkr_mass_max**3
-
- ! Aggregation of small into large particles
- ! Part II : Differential settling
- ! ----------------------------------------------
-
- zagg4 = 2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2* &
- & xkr_wsbio_min*(zeps-1.)**2 &
- & *(xkr_mass_min**2*((1.-zsm*zfm)/(zdiv3*zdiv4) &
- & -(1.-zfm)/(zdiv*(zeps-1.)))- &
- & ((zfm*zfm*xkr_mass_max**2*zsm-xkr_mass_min**2) &
- & *xkr_eta)/(zdiv*zdiv3*zdiv5) )
-
- zagg5 = 2.*3.141*0.125*trb(ji,jj,jk,jpnum)**2 &
- & *(zeps-1.)*zfm*xkr_wsbio_min &
- & *(zsm*(xkr_mass_min**2-zfm*xkr_mass_max**2) &
- & /zdiv3-(xkr_mass_min**2-zfm*zsm*xkr_mass_max**2) &
- & /zdiv)
-
- !
- ! Fractionnation by swimming organisms
- ! ------------------------------------
-
- zfract = 2.*3.141*0.125*trb(ji,jj,jk,jpmes)*12./0.12/0.06**3*trb(ji,jj,jk,jpnum) &
- & * (0.01/xkr_mass_min)**(1.-zeps)*0.1**2 &
- & * 10000.*xstep
-
- ! Aggregation of DOC to small particles
- ! --------------------------------------
-
- zaggdoc = 0.83 * trb(ji,jj,jk,jpdoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc) &
- & + 0.005 * 231. * trb(ji,jj,jk,jpdoc) * xstep * trb(ji,jj,jk,jpdoc)
- zaggdoc1 = 271. * trb(ji,jj,jk,jppoc) * xstep * xdiss(ji,jj,jk) * trb(ji,jj,jk,jpdoc) &
- & + 0.02 * 16706. * trb(ji,jj,jk,jppoc) * xstep * trb(ji,jj,jk,jpdoc)
-
-# if defined key_degrad
- zagg1 = zagg1 * facvol(ji,jj,jk)
- zagg2 = zagg2 * facvol(ji,jj,jk)
- zagg3 = zagg3 * facvol(ji,jj,jk)
- zagg4 = zagg4 * facvol(ji,jj,jk)
- zagg5 = zagg5 * facvol(ji,jj,jk)
- zaggdoc = zaggdoc * facvol(ji,jj,jk)
- zaggdoc1 = zaggdoc1 * facvol(ji,jj,jk)
-# endif
- zaggsh = ( zagg1 + zagg2 + zagg3 ) * rfact2 * xdiss(ji,jj,jk) / 1000.
- zaggsi = ( zagg4 + zagg5 ) * xstep / 10.
- zagg = 0.5 * xkr_stick * ( zaggsh + zaggsi )
- !
- znumdoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )
- tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zaggdoc + zaggdoc1
- tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zfract + zaggdoc / xkr_massp - zagg
- tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc1
-
- ENDIF
- END DO
- END DO
- END DO
-
- ! Total primary production per year
- t_oce_co2_exp = t_oce_co2_exp + glob_sum( ( sinking(:,:,ik100) * e1e2t(:,:) * tmask(:,:,1) )
- !
- IF( lk_iomput ) THEN
- IF( knt == nrdttrc ) THEN
- CALL wrk_alloc( jpi, jpj, zw2d )
- CALL wrk_alloc( jpi, jpj, jpk, zw3d )
- zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s
- !
- IF( iom_use( "EPC100" ) ) THEN
- zw2d(:,:) = sinking(:,:,ik100) * zfact * tmask(:,:,1) ! Export of carbon at 100m
- CALL iom_put( "EPC100" , zw2d )
- ENDIF
- IF( iom_use( "EPN100" ) ) THEN
- zw2d(:,:) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) ! Export of number of aggregates ?
- CALL iom_put( "EPN100" , zw2d )
- ENDIF
- IF( iom_use( "EPCAL100" ) ) THEN
- zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m
- CALL iom_put( "EPCAL100" , zw2d )
- ENDIF
- IF( iom_use( "EPSI100" ) ) THEN
- zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m
- CALL iom_put( "EPSI100" , zw2d )
- ENDIF
- IF( iom_use( "EXPC" ) ) THEN
- zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column
- CALL iom_put( "EXPC" , zw3d )
- ENDIF
- IF( iom_use( "EXPN" ) ) THEN
- zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column
- CALL iom_put( "EXPN" , zw3d )
- ENDIF
- IF( iom_use( "EXPCAL" ) ) THEN
- zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite
- CALL iom_put( "EXPCAL" , zw3d )
- ENDIF
- IF( iom_use( "EXPSI" ) ) THEN
- zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica
- CALL iom_put( "EXPSI" , zw3d )
- ENDIF
- IF( iom_use( "XNUM" ) ) THEN
- zw3d(:,:,:) = znum3d(:,:,:) * tmask(:,:,:) ! Number of particles on aggregats
- CALL iom_put( "XNUM" , zw3d )
- ENDIF
- IF( iom_use( "WSC" ) ) THEN
- zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles
- CALL iom_put( "WSC" , zw3d )
- ENDIF
- IF( iom_use( "WSN" ) ) THEN
- zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number
- CALL iom_put( "WSN" , zw3d )
- ENDIF
- !
- CALL wrk_dealloc( jpi, jpj, zw2d )
- CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
- ELSE
- IF( ln_diatrc ) THEN
- zfact = 1.e3 * rfact2r
- trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik100) * zfact * tmask(:,:,1)
- trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1)
- trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zfact * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) * tmask(:,:,:)
- trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:)
- ENDIF
- ENDIF
-
- !
- IF(ln_ctl) THEN ! print mean trends (used for debugging)
- WRITE(charout, FMT="('sink')")
- CALL prt_ctl_trc_info(charout)
- CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
- ENDIF
- !
- CALL wrk_dealloc( jpi, jpj, jpk, znum3d )
- !
- IF( nn_timing == 1 ) CALL timing_stop('p4z_sink')
- !
- END SUBROUTINE p4z_sink
-
-
- SUBROUTINE p4z_sink_init
- !!----------------------------------------------------------------------
- !! *** ROUTINE p4z_sink_init ***
- !!
- !! ** Purpose : Initialization of sinking parameters
- !! Kriest parameterization only
- !!
- !! ** Method : Read the nampiskrs namelist and check the parameters
- !! called at the first timestep
- !!
- !! ** input : Namelist nampiskrs
- !!----------------------------------------------------------------------
- INTEGER :: jk, jn, kiter
- INTEGER :: ios ! Local integer output status for namelist read
- REAL(wp) :: znum, zdiv
- REAL(wp) :: zws, zwr, zwl,wmax, znummax
- REAL(wp) :: zmin, zmax, zl, zr, xacc
- !
- NAMELIST/nampiskrs/ xkr_sfact, xkr_stick , &
- & xkr_nnano, xkr_ndiat, xkr_nmicro, xkr_nmeso, xkr_naggr
- !!----------------------------------------------------------------------
- !
- IF( nn_timing == 1 ) CALL timing_start('p4z_sink_init')
- !
-
- REWIND( numnatp_ref ) ! Namelist nampiskrs in reference namelist : Pisces sinking Kriest
- READ ( numnatp_ref, nampiskrs, IOSTAT = ios, ERR = 901)
-901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in reference namelist', lwp )
-
- REWIND( numnatp_cfg ) ! Namelist nampiskrs in configuration namelist : Pisces sinking Kriest
- READ ( numnatp_cfg, nampiskrs, IOSTAT = ios, ERR = 902 )
-902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrs in configuration namelist', lwp )
- IF(lwm) WRITE ( numonp, nampiskrs )
-
- IF(lwp) THEN
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : nampiskrs'
- WRITE(numout,*) ' Sinking factor xkr_sfact = ', xkr_sfact
- WRITE(numout,*) ' Stickiness xkr_stick = ', xkr_stick
- WRITE(numout,*) ' Nbr of cell in nano size class xkr_nnano = ', xkr_nnano
- WRITE(numout,*) ' Nbr of cell in diatoms size class xkr_ndiat = ', xkr_ndiat
- WRITE(numout,*) ' Nbr of cell in microzoo size class xkr_nmicro = ', xkr_nmicro
- WRITE(numout,*) ' Nbr of cell in mesozoo size class xkr_nmeso = ', xkr_nmeso
- WRITE(numout,*) ' Nbr of cell in aggregates size class xkr_naggr = ', xkr_naggr
- ENDIF
-
-
- ! max and min vertical particle speed
- xkr_wsbio_min = xkr_sfact * xkr_mass_min**xkr_eta
- xkr_wsbio_max = xkr_sfact * xkr_mass_max**xkr_eta
- IF (lwp) WRITE(numout,*) ' max and min vertical particle speed ', xkr_wsbio_min, xkr_wsbio_max
-
- !
- ! effect of the sizes of the different living pools on particle numbers
- ! nano = 2um-20um -> mean size=6.32 um -> ws=2.596 -> xnum=xnnano=2.337
- ! diat and microzoo = 10um-200um -> 44.7 -> 8.732 -> xnum=xndiat=3.718
- ! mesozoo = 200um-2mm -> 632.45 -> 45.14 -> xnum=xnmeso=7.147
- ! aggregates = 200um-10mm -> 1414 -> 74.34 -> xnum=xnaggr=9.877
- ! doc aggregates = 1um
- ! ----------------------------------------------------------
-
- xkr_dnano = 1. / ( xkr_massp * xkr_nnano )
- xkr_ddiat = 1. / ( xkr_massp * xkr_ndiat )
- xkr_dmicro = 1. / ( xkr_massp * xkr_nmicro )
- xkr_dmeso = 1. / ( xkr_massp * xkr_nmeso )
- xkr_daggr = 1. / ( xkr_massp * xkr_naggr )
-
- !!---------------------------------------------------------------------
- !! 'key_kriest' ???
- !!---------------------------------------------------------------------
- ! COMPUTATION OF THE VERTICAL PROFILE OF MAXIMUM SINKING SPEED
- ! Search of the maximum number of particles in aggregates for each k-level.
- ! Bissection Method
- !--------------------------------------------------------------------
- IF (lwp) THEN
- WRITE(numout,*)
- WRITE(numout,*)' kriest : Compute maximum number of particles in aggregates'
- ENDIF
-
- xacc = 0.001_wp
- kiter = 50
- zmin = 1.10_wp
- zmax = xkr_mass_max / xkr_mass_min
- xkr_frac = zmax
-
- DO jk = 1,jpk
- zl = zmin
- zr = zmax
- wmax = 0.5 * e3t_n(1,1,jk) * rday * float(niter1max) / rfact2
- zdiv = xkr_zeta + xkr_eta - xkr_eta * zl
- znum = zl - 1.
- zwl = xkr_wsbio_min * xkr_zeta / zdiv &
- & - ( xkr_wsbio_max * xkr_eta * znum * &
- & xkr_frac**( -xkr_zeta / znum ) / zdiv ) &
- & - wmax
-
- zdiv = xkr_zeta + xkr_eta - xkr_eta * zr
- znum = zr - 1.
- zwr = xkr_wsbio_min * xkr_zeta / zdiv &
- & - ( xkr_wsbio_max * xkr_eta * znum * &
- & xkr_frac**( -xkr_zeta / znum ) / zdiv ) &
- & - wmax
-iflag: DO jn = 1, kiter
- IF ( zwl == 0._wp ) THEN ; znummax = zl
- ELSEIF( zwr == 0._wp ) THEN ; znummax = zr
- ELSE
- znummax = ( zr + zl ) / 2.
- zdiv = xkr_zeta + xkr_eta - xkr_eta * znummax
- znum = znummax - 1.
- zws = xkr_wsbio_min * xkr_zeta / zdiv &
- & - ( xkr_wsbio_max * xkr_eta * znum * &
- & xkr_frac**( -xkr_zeta / znum ) / zdiv ) &
- & - wmax
- IF( zws * zwl < 0. ) THEN ; zr = znummax
- ELSE ; zl = znummax
- ENDIF
- zdiv = xkr_zeta + xkr_eta - xkr_eta * zl
- znum = zl - 1.
- zwl = xkr_wsbio_min * xkr_zeta / zdiv &
- & - ( xkr_wsbio_max * xkr_eta * znum * &
- & xkr_frac**( -xkr_zeta / znum ) / zdiv ) &
- & - wmax
-
- zdiv = xkr_zeta + xkr_eta - xkr_eta * zr
- znum = zr - 1.
- zwr = xkr_wsbio_min * xkr_zeta / zdiv &
- & - ( xkr_wsbio_max * xkr_eta * znum * &
- & xkr_frac**( -xkr_zeta / znum ) / zdiv ) &
- & - wmax
- !
- IF ( ABS ( zws ) <= xacc ) EXIT iflag
- !
- ENDIF
- !
- END DO iflag
-
- xnumm(jk) = znummax
- IF (lwp) WRITE(numout,*) ' jk = ', jk, ' wmax = ', wmax,' xnum max = ', xnumm(jk)
- !
- END DO
- !
- ik100 = 10 ! last level where depth less than 100 m
- DO jk = jpkm1, 1, -1
- IF( gdept_1d(jk) > 100. ) iksed = jk - 1
- END DO
- IF (lwp) WRITE(numout,*)
- IF (lwp) WRITE(numout,*) ' Level corresponding to 100m depth ', ik100 + 1
- IF (lwp) WRITE(numout,*)
- !
- t_oce_co2_exp = 0._wp
- !
- IF( nn_timing == 1 ) CALL timing_stop('p4z_sink_init')
- !
- END SUBROUTINE p4z_sink_init
-
-#endif
SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra, kiter )
@@ -804,7 +319,4 @@
END DO
zwsink2(:,:,1) = 0.e0
- IF( lk_degrad ) THEN
- zwsink2(:,:,:) = zwsink2(:,:,:) * facvol(:,:,:)
- ENDIF
@@ -890,9 +402,5 @@
& sinking(jpi,jpj,jpk) , sinking2(jpi,jpj,jpk) , &
& sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk) , &
-#if defined key_kriest
- & xnumm(jpk) , &
-#else
& sinkfer2(jpi,jpj,jpk) , &
-#endif
& sinkfer(jpi,jpj,jpk) , STAT=p4z_sink_alloc )
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90 (revision 7041)
@@ -69,7 +69,4 @@
INTEGER :: ji, jj, jk, jnt, jn, jl
REAL(wp) :: ztra
-#if defined key_kriest
- REAL(wp) :: zcoef1, zcoef2
-#endif
CHARACTER (len=25) :: charout
!!---------------------------------------------------------------------
@@ -165,15 +162,4 @@
END DO
-#if defined key_kriest
- !
- zcoef1 = 1.e0 / xkr_massp
- zcoef2 = 1.e0 / xkr_massp / 1.1
- DO jk = 1,jpkm1
- trb(:,:,jk,jpnum) = MAX( trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef1 / xnumm(jk) )
- trb(:,:,jk,jpnum) = MIN( trb(:,:,jk,jpnum), trb(:,:,jk,jppoc) * zcoef2 )
- END DO
- !
-#endif
- !
!
IF( l_trdtrc ) THEN
@@ -212,10 +198,6 @@
!! ** input : file 'namelist.trc.s' containing the following
!! namelist: natext, natbio, natsms
- !! natkriest ("key_kriest")
!!----------------------------------------------------------------------
NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, niter1max, niter2max
-#if defined key_kriest
- NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_ncontent, xkr_mass_min, xkr_mass_max
-#endif
NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp
NAMELIST/nampismass/ ln_check_mass
@@ -242,34 +224,4 @@
WRITE(numout,*) ' Maximum number of iterations for GOC niter2max =', niter2max
ENDIF
-
-#if defined key_kriest
-
- ! ! nampiskrp : kriest parameters
- ! ! -----------------------------
- REWIND( numnatp_ref ) ! Namelist nampiskrp in reference namelist : Pisces Kriest
- READ ( numnatp_ref, nampiskrp, IOSTAT = ios, ERR = 903)
-903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in reference namelist', lwp )
-
- REWIND( numnatp_cfg ) ! Namelist nampiskrp in configuration namelist : Pisces Kriest
- READ ( numnatp_cfg, nampiskrp, IOSTAT = ios, ERR = 904 )
-904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiskrp in configuration namelist', lwp )
- IF(lwm) WRITE ( numonp, nampiskrp )
-
- IF(lwp) THEN
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : nampiskrp'
- WRITE(numout,*) ' Sinking exponent xkr_eta = ', xkr_eta
- WRITE(numout,*) ' N content exponent xkr_zeta = ', xkr_zeta
- WRITE(numout,*) ' N content factor xkr_ncontent = ', xkr_ncontent
- WRITE(numout,*) ' Minimum mass for Aggregates xkr_mass_min = ', xkr_mass_min
- WRITE(numout,*) ' Maximum mass for Aggregates xkr_mass_max = ', xkr_mass_max
- WRITE(numout,*)
- ENDIF
-
-
- ! Computation of some variables
- xkr_massp = xkr_ncontent * 7.625 * xkr_mass_min**xkr_zeta
-
-#endif
REWIND( numnatp_ref ) ! Namelist nampisdmp in reference namelist : Pisces damping
@@ -503,7 +455,5 @@
& + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) &
& + trn(:,:,:,jppoc) &
-#if ! defined key_kriest
& + trn(:,:,:,jpgoc) &
-#endif
& + trn(:,:,:,jpdoc) ) * cvol(:,:,:) )
!
@@ -517,7 +467,5 @@
& + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) &
& + trn(:,:,:,jppoc) &
-#if ! defined key_kriest
& + trn(:,:,:,jpgoc) &
-#endif
& + trn(:,:,:,jpdoc) ) * cvol(:,:,:) )
po4budget = po4budget / areatot
@@ -545,7 +493,5 @@
ferbudget = glob_sum( ( trn(:,:,:,jpfer) + trn(:,:,:,jpnfe) &
& + trn(:,:,:,jpdfe) &
-#if ! defined key_kriest
& + trn(:,:,:,jpbfe) &
-#endif
& + trn(:,:,:,jpsfe) &
& + trn(:,:,:,jpzoo) * ferat3 &
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/par_sed.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/par_sed.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/par_sed.F90 (revision 7041)
@@ -24,9 +24,5 @@
#endif
-#if defined key_kriest
- INTEGER, PARAMETER :: jpdta = 11
-#else
INTEGER, PARAMETER :: jpdta = 12
-#endif
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sed.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sed.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sed.F90 (revision 7041)
@@ -40,7 +40,5 @@
USE p4zsink , ONLY : sinking => sinking !: sinking flux for POC
-#if ! defined key_kriest
USE p4zsink , ONLY : sinking2 => sinking2 !: sinking flux for GOC
-#endif
USE p4zsink , ONLY : sinkcal => sinkcal !: sinking flux for calcite
USE p4zsink , ONLY : sinksil => sinksil !: sinking flux for opal ( dsi )
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/seddta.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/seddta.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/seddta.F90 (revision 7041)
@@ -55,7 +55,5 @@
REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zdta
-#if ! defined key_kriest
REAL(wp), DIMENSION(:) , ALLOCATABLE :: zdtap, zdtag
-#endif
@@ -97,11 +95,7 @@
ENDIF
-
-#if ! defined key_kriest
! Initialization of temporaries arrays
ALLOCATE( zdtap(jpoce) ) ; zdtap(:) = 0.
ALLOCATE( zdtag(jpoce) ) ; zdtag(:) = 0.
-#endif
-
IF( MOD( kt - 1, nfreq ) == 0 ) THEN
@@ -122,5 +116,4 @@
trc_data(ji,jj,5) = trn (ji,jj,ikt,jpoxy)
trc_data(ji,jj,6) = trn (ji,jj,ikt,jpsil)
-# if ! defined key_kriest
trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt)
trc_data(ji,jj,8 ) = sinking (ji,jj,ikt)
@@ -129,11 +122,4 @@
trc_data(ji,jj,11) = tsn (ji,jj,ikt,jp_tem)
trc_data(ji,jj,12) = tsn (ji,jj,ikt,jp_sal)
-# else
- trc_data(ji,jj,7 ) = sinksil (ji,jj,ikt)
- trc_data(ji,jj,8 ) = sinking (ji,jj,ikt)
- trc_data(ji,jj,9 ) = sinkcal (ji,jj,ikt)
- trc_data(ji,jj,10) = tsn (ji,jj,ikt,jp_tem)
- trc_data(ji,jj,11) = tsn (ji,jj,ikt,jp_sal)
-# endif
ENDIF
ENDDO
@@ -147,5 +133,4 @@
CALL iom_get( numbio, jpdom_data, 'O2BOT' , trc_data(:,:,5 ) )
CALL iom_get( numbio, jpdom_data, 'SIBOT' , trc_data(:,:,6 ) )
-# if ! defined key_kriest
CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )
CALL iom_get( numbio, jpdom_data, 'POCFLXBOT' , trc_data(:,:,8 ) )
@@ -154,11 +139,4 @@
CALL iom_get( numoce, jpdom_data, 'TBOT' , trc_data(:,:,11) )
CALL iom_get( numoce, jpdom_data, 'SBOT' , trc_data(:,:,12) )
-# else
- CALL iom_get( numbio, jpdom_data, 'OPALFLXBOT' , trc_data(:,:,7 ) )
- CALL iom_get( numbio, jpdom_data, 'POCFLXBOT' , trc_data(:,:,8 ) )
- CALL iom_get( numbio, jpdom_data, 'CACO3FLXBOT', trc_data(:,:,9 ) )
- CALL iom_get( numoce, jpdom_data, 'TBOT' , trc_data(:,:,10) )
- CALL iom_get( numoce, jpdom_data, 'SBOT' , trc_data(:,:,11) )
-# endif
#endif
@@ -186,5 +164,4 @@
! Solid components :
!-----------------------
-#if ! defined key_kriest
! Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1
CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )
@@ -200,19 +177,4 @@
CALL pack_arr ( jpoce, temp(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) )
CALL pack_arr ( jpoce, salt(1:jpoce), trc_data(1:jpi,1:jpj,12), iarroce(1:jpoce) )
-#else
- ! Sinking fluxes for OPAL in mol.m-2.s-1 ; conversion in mol.cm-2.s-1
- CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jsopal), trc_data(1:jpi,1:jpj,7), iarroce(1:jpoce) )
- rainrm_dta(1:jpoce,jsopal) = rainrm_dta(1:jpoce,jsopal) * 1e-4
- ! Sinking fluxes for POC in mol.m-2.s-1 ; conversion in mol.cm-2.s-1
- CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jspoc), trc_data(1:jpi,1:jpj,8) , iarroce(1:jpoce) )
- rainrm_dta(1:jpoce,jspoc) = rainrm_dta(1:jpoce,jspoc) * 1e-4
- ! Sinking fluxes for Calcite in mol.m-2.s-1 ; conversion in mol.cm-2.s-1
- CALL pack_arr ( jpoce, rainrm_dta(1:jpoce,jscal), trc_data(1:jpi,1:jpj,9), iarroce(1:jpoce) )
- rainrm_dta(1:jpoce,jscal) = rainrm_dta(1:jpoce,jscal) * 1e-4
- ! vector temperature [°C] and salinity
- CALL pack_arr ( jpoce, temp(1:jpoce), trc_data(1:jpi,1:jpj,10), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, salt(1:jpoce), trc_data(1:jpi,1:jpj,11), iarroce(1:jpoce) )
-
-#endif
! Clay rain rate in [mol/(cm**2.s)]
@@ -252,7 +214,5 @@
DEALLOCATE( zdta )
-#if ! defined key_kriest
DEALLOCATE( zdtap ) ; DEALLOCATE( zdtag )
-#endif
IF( kt == nitsedend ) THEN
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90 (revision 7041)
@@ -13,128 +13,52 @@
IMPLICIT NONE
-#if defined key_pisces_reduced
+ INTEGER, PUBLIC :: jp_pisces !: number of passive tracers in PISCES
+
+#if defined key_pisces
!!---------------------------------------------------------------------
- !! 'key_pisces_reduced' : LOBSTER bio-model
+ !! 'key_pisces : PISCES bio-model
!!---------------------------------------------------------------------
LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag
- LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE. !: p4z flag
- INTEGER, PUBLIC, PARAMETER :: jp_pisces = 6 !: number of passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 19 !: additional 2d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 3 !: additional 3d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 17 !: number of sms trends for PISCES
-
- ! assign an index in trc arrays for each LOBSTER prognostic variables
- INTEGER, PUBLIC, PARAMETER :: jpdet = 1 !: detritus [mmoleN/m3]
- INTEGER, PUBLIC, PARAMETER :: jpzoo = 2 !: zooplancton concentration [mmoleN/m3]
- INTEGER, PUBLIC, PARAMETER :: jpphy = 3 !: phytoplancton concentration [mmoleN/m3]
- INTEGER, PUBLIC, PARAMETER :: jpno3 = 4 !: nitrate concentration [mmoleN/m3]
- INTEGER, PUBLIC, PARAMETER :: jpnh4 = 5 !: ammonium concentration [mmoleN/m3]
- INTEGER, PUBLIC, PARAMETER :: jpdom = 6 !: dissolved organic matter [mmoleN/m3]
-
! productive layer depth
- INTEGER, PUBLIC, PARAMETER :: jpkb = 12 !: first vertical layers where biology is active
- INTEGER, PUBLIC, PARAMETER :: jpkbm1 = jpkb - 1 !: first vertical layers where biology is active
-
-#elif defined key_pisces && defined key_kriest
- !!---------------------------------------------------------------------
- !! 'key_pisces' & 'key_kriest' PISCES bio-model + ???
- !!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag
- LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE. !: p4z flag
- LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .TRUE. !: Kriest flag
- INTEGER, PUBLIC, PARAMETER :: jp_pisces = 23 !: number of passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 13 !: additional 2d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 18 !: additional 3d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES
-
- ! assign an index in trc arrays for each LOBSTER prognostic variables
- ! WARNING: be carefull about the order when reading the restart
- ! !!gm this warning should be obsolet with IOM
- INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity
- INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration
- INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration
- INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration
- INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration
- INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration
- INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration
- INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: Diatoms Silicate Concentration
- INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnum = 15 !: Big iron particles Concentration
- INTEGER, PUBLIC, PARAMETER :: jpsfe = 16 !: number of particulate organic phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jpdfe = 17 !: Diatoms iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpgsi = 18 !: (big) Silicate Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnfe = 19 !: Nano iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnch = 20 !: Nano Chlorophyll Concentration
- INTEGER, PUBLIC, PARAMETER :: jpdch = 21 !: Diatoms Chlorophyll Concentration
- INTEGER, PUBLIC, PARAMETER :: jpno3 = 22 !: Nitrates Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnh4 = 23 !: Ammonium Concentration
-
-#elif defined key_pisces
- !!---------------------------------------------------------------------
- !! 'key_pisces' : standard PISCES bio-model
- !!---------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag
- LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE. !: p4z flag
- LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .FALSE. !: Kriest flag
- INTEGER, PUBLIC, PARAMETER :: jp_pisces = 24 !: number of PISCES passive tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 13 !: additional 2d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 11 !: additional 3d output
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES
-
- ! assign an index in trc arrays for each LOBSTER prognostic variables
- ! WARNING: be carefull about the order when reading the restart
- ! !!gm this warning should be obsolet with IOM
- INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity
- INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration
- INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration
- INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration
- INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration
- INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration
- INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration
- INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration
- INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: Diatoms Silicate Concentration
- INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpbfe = 15 !: Big iron particles Concentration
- INTEGER, PUBLIC, PARAMETER :: jpgoc = 16 !: big particulate organic phosphate concentration
- INTEGER, PUBLIC, PARAMETER :: jpsfe = 17 !: Small iron particles Concentration
- INTEGER, PUBLIC, PARAMETER :: jpdfe = 18 !: Diatoms iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpgsi = 19 !: (big) Silicate Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnfe = 20 !: Nano iron Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnch = 21 !: Nano Chlorophyll Concentration
- INTEGER, PUBLIC, PARAMETER :: jpdch = 22 !: Diatoms Chlorophyll Concentration
- INTEGER, PUBLIC, PARAMETER :: jpno3 = 23 !: Nitrates Concentration
- INTEGER, PUBLIC, PARAMETER :: jpnh4 = 24 !: Ammonium Concentration
+ INTEGER, PUBLIC :: jpkb !: first vertical layers where biology is active
+ INTEGER, PUBLIC :: jpkbm1 !: first vertical layers where biology is active
#else
!!---------------------------------------------------------------------
- !! Default No CFC geochemical model
- !!---------------------------------------------------------------------
LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .FALSE. !: PISCES flag
- LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE. !: p4z flag
- INTEGER, PUBLIC, PARAMETER :: jp_pisces = 0 !: No CFC tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 0 !: No CFC additional 2d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 0 !: No CFC additional 3d output arrays
- INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 0 !: number of sms trends for PISCES
#endif
+ ! assign an index in trc arrays for each LOBSTER prognostic variables
+ INTEGER, PUBLIC :: jpdet !: detritus
+ INTEGER, PUBLIC :: jpdom !: dissolved organic matter
+ INTEGER, PUBLIC :: jpdic !: dissolved inoganic carbon concentration
+ INTEGER, PUBLIC :: jptal !: total alkalinity
+ INTEGER, PUBLIC :: jpoxy !: oxygen carbon concentration
+ INTEGER, PUBLIC :: jpcal !: calcite concentration
+ INTEGER, PUBLIC :: jppo4 !: phosphate concentration
+ INTEGER, PUBLIC :: jppoc !: small particulate organic phosphate concentration
+ INTEGER, PUBLIC :: jpsil !: silicate concentration
+ INTEGER, PUBLIC :: jpphy !: phytoplancton concentration
+ INTEGER, PUBLIC :: jpzoo !: zooplancton concentration
+ INTEGER, PUBLIC :: jpdoc !: dissolved organic carbon concentration
+ INTEGER, PUBLIC :: jpdia !: Diatoms Concentration
+ INTEGER, PUBLIC :: jpmes !: Mesozooplankton Concentration
+ INTEGER, PUBLIC :: jpdsi !: Diatoms Silicate Concentration
+ INTEGER, PUBLIC :: jpfer !: Iron Concentration
+ INTEGER, PUBLIC :: jpbfe !: Big iron particles Concentration
+ INTEGER, PUBLIC :: jpgoc !: big particulate organic phosphate concentration
+ INTEGER, PUBLIC :: jpsfe !: Small iron particles Concentration
+ INTEGER, PUBLIC :: jpdfe !: Diatoms iron Concentration
+ INTEGER, PUBLIC :: jpgsi !: (big) Silicate Concentration
+ INTEGER, PUBLIC :: jpnfe !: Nano iron Concentration
+ INTEGER, PUBLIC :: jpnch !: Nano Chlorophyll Concentration
+ INTEGER, PUBLIC :: jpdch !: Diatoms Chlorophyll Concentration
+ INTEGER, PUBLIC :: jpno3 !: Nitrates Concentration
+ INTEGER, PUBLIC :: jpnh4 !: Ammonium Concentration
+ !!---------------------------------------------------------------------
+ !! Default No CFC geochemical model
! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done)
- INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = 1 !: First index of PISCES tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_pisces !: Last index of PISCES tracers
- INTEGER, PUBLIC, PARAMETER :: jp_pcs0_2d = 1 !: First index of 2D diag
- INTEGER, PUBLIC, PARAMETER :: jp_pcs1_2d = jp_pisces_2d !: Last index of 2D diag
- INTEGER, PUBLIC, PARAMETER :: jp_pcs0_3d = 1 !: First index of 3D diag
- INTEGER, PUBLIC, PARAMETER :: jp_pcs1_3d = jp_pisces_3d !: Last index of 3d diag
- INTEGER, PUBLIC, PARAMETER :: jp_pcs0_trd = 1 !: First index of bio diag
- INTEGER, PUBLIC, PARAMETER :: jp_pcs1_trd = jp_pisces_trd !: Last index of bio diag
-
+ INTEGER, PUBLIC :: jp_pcs0 !: First index of PISCES tracers
+ INTEGER, PUBLIC :: jp_pcs1 !: Last index of PISCES tracers
!!======================================================================
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90 (revision 7041)
@@ -7,5 +7,5 @@
!! 3.2 ! 2009-04 (C. Ethe & NEMO team) style
!!----------------------------------------------------------------------
-#if defined key_pisces || defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
!! 'key_pisces' PISCES model
@@ -29,5 +29,9 @@
! !: PISCES : silicon dependant half saturation
-#if defined key_pisces
+ !!* Model used
+ LOGICAL :: ln_p2z !: Flag to use LOBSTER model
+ LOGICAL :: ln_p4z !: Flag to use PISCES model
+
+
!!* Time variables
INTEGER :: nrdttrc !: ???
@@ -108,14 +112,5 @@
REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tgfunc2 !: Temp. dependancy of mesozooplankton rates
-#if defined key_kriest
- !!* Kriest parameter for aggregation
- REAL(wp) :: xkr_eta !: Sinking exponent
- REAL(wp) :: xkr_zeta !: N content exponent
- REAL(wp) :: xkr_ncontent !: N content factor
- REAL(wp) :: xkr_massp !:
- REAL(wp) :: xkr_mass_min, xkr_mass_max !: Minimum, Maximum mass for Aggregates
-#endif
-#endif
!!----------------------------------------------------------------------
!! NEMO/TOP 3.3 , NEMO Consortium (2010)
@@ -136,31 +131,31 @@
ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), xksi(jpi,jpj), STAT=ierr(1) )
!
-#if defined key_pisces
- !* Biological fluxes for primary production
- ALLOCATE( xksimax(jpi,jpj) , biron (jpi,jpj,jpk), &
- & xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk), &
- & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), &
- & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), &
- & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), &
- & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), &
- & xlimsi (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), &
- & concnfe (jpi,jpj,jpk), STAT=ierr(2) )
+ IF( ln_p4z ) THEN
+ !* Biological fluxes for primary production
+ ALLOCATE( xksimax(jpi,jpj) , biron (jpi,jpj,jpk), &
+ & xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk), &
+ & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), &
+ & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), &
+ & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), &
+ & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), &
+ & xlimsi (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), &
+ & concnfe (jpi,jpj,jpk), STAT=ierr(2) )
!
- !* SMS for the organic matter
- ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk), &
- & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), &
- & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), STAT=ierr(3) )
+ !* SMS for the organic matter
+ ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk), &
+ & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), &
+ & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), STAT=ierr(3) )
- !* Variable for chemistry of the CO2 cycle
- ALLOCATE( akb3(jpi,jpj,jpk) , ak13 (jpi,jpj,jpk) , &
- & ak23(jpi,jpj,jpk) , aksp (jpi,jpj,jpk) , &
- & akw3(jpi,jpj,jpk) , borat (jpi,jpj,jpk) , &
- & hi (jpi,jpj,jpk) , excess(jpi,jpj,jpk) , &
- & aphscale(jpi,jpj,jpk), STAT=ierr(4) )
+ !* Variable for chemistry of the CO2 cycle
+ ALLOCATE( akb3(jpi,jpj,jpk) , ak13 (jpi,jpj,jpk) , &
+ & ak23(jpi,jpj,jpk) , aksp (jpi,jpj,jpk) , &
+ & akw3(jpi,jpj,jpk) , borat (jpi,jpj,jpk) , &
+ & hi (jpi,jpj,jpk) , excess(jpi,jpj,jpk) , &
+ & aphscale(jpi,jpj,jpk), STAT=ierr(4) )
+ !
+ !* Temperature dependancy of SMS terms
+ ALLOCATE( tgfunc(jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk) , STAT=ierr(5) )
!
- !* Temperature dependancy of SMS terms
- ALLOCATE( tgfunc(jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk) , STAT=ierr(5) )
- !
-#endif
+ ENDIF
!
sms_pisces_alloc = MAXVAL( ierr )
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 (revision 7041)
@@ -5,8 +5,6 @@
!!======================================================================
!! History : 3.5 ! 2013 (M. Vancoppenolle, O. Aumont, G. Madec), original code
- !! Comment ! probably not properly done when the second particle export
- !! scheme (kriest) is used
- !!----------------------------------------------------------------------
-#if defined key_pisces || defined key_pisces_reduced
+ !!----------------------------------------------------------------------
+#if defined key_pisces
!!----------------------------------------------------------------------
!! 'key_pisces' PISCES bio-model
@@ -37,5 +35,5 @@
!!----------------------------------------------------------------------
- IF( lk_p4z ) THEN ; CALL p4z_ice_ini ! PISCES
+ IF( ln_p4z ) THEN ; CALL p4z_ice_ini ! PISCES
ELSE ; CALL p2z_ice_ini ! LOBSTER
ENDIF
@@ -45,6 +43,4 @@
SUBROUTINE p4z_ice_ini
-
-#if defined key_pisces
!!----------------------------------------------------------------------
!! *** ROUTINE p4z_ice_ini ***
@@ -75,6 +71,6 @@
!--- Dummy variables
- REAL(wp), DIMENSION(jp_pisces,2) :: zratio ! effective ice-ocean tracer cc ratio
- REAL(wp), DIMENSION(jp_pisces,4) :: zpisc ! prescribes concentration
+ REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zratio ! effective ice-ocean tracer cc ratio
+ REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zpisc ! prescribes concentration
! ! 1:global, 2:Arctic, 3:Antarctic, 4:Baltic
@@ -99,4 +95,6 @@
! fluxes
+ ALLOCATE( zratio(jp_pisces,2), zpisc(jp_pisces,4) )
+
!--- Global values
zpisc(jpdic,1) = 1.99e-3_wp
@@ -107,10 +105,6 @@
zpisc(jppo4,1) = 5.77e-7_wp / po4r
zpisc(jppoc,1) = 1.27e-6_wp
-# if ! defined key_kriest
zpisc(jpgoc,1) = 5.23e-8_wp
zpisc(jpbfe,1) = 9.84e-13_wp
-# else
- zpisc(jpnum,1) = 0. ! could not get this value since did not use it
-# endif
zpisc(jpsil,1) = 7.36e-6_wp
zpisc(jpdsi,1) = 1.07e-7_wp
@@ -137,10 +131,6 @@
zpisc(jppo4,2) = 4.09e-7_wp / po4r
zpisc(jppoc,2) = 4.05e-7_wp
-# if ! defined key_kriest
zpisc(jpgoc,2) = 2.84e-8_wp
zpisc(jpbfe,2) = 7.03e-13_wp
-# else
- zpisc(jpnum,2) = 0.00e-00_wp
-# endif
zpisc(jpsil,2) = 6.87e-6_wp
zpisc(jpdsi,2) = 1.73e-7_wp
@@ -167,10 +157,6 @@
zpisc(jppo4,3) = 1.88e-6_wp / po4r
zpisc(jppoc,3) = 1.13e-6_wp
-# if ! defined key_kriest
zpisc(jpgoc,3) = 2.89e-8_wp
zpisc(jpbfe,3) = 5.63e-13_wp
-# else
- zpisc(jpnum,3) = 0.00e-00_wp
-# endif
zpisc(jpsil,3) = 4.96e-5_wp
zpisc(jpdsi,3) = 5.63e-7_wp
@@ -197,10 +183,6 @@
zpisc(jppo4,4) = 2.85e-9_wp / po4r
zpisc(jppoc,4) = 4.84e-7_wp
-# if ! defined key_kriest
zpisc(jpgoc,4) = 1.05e-8_wp
zpisc(jpbfe,4) = 4.97e-13_wp
-# else
- zpisc(jpnum,4) = 0. ! could not get this value
-# endif
zpisc(jpsil,4) = 4.91e-5_wp
zpisc(jpdsi,4) = 3.25e-7_wp
@@ -279,10 +261,11 @@
!
END DO ! jn
-#endif
+ !
+ DEALLOCATE( zratio, zpisc )
+ !
END SUBROUTINE p4z_ice_ini
SUBROUTINE p2z_ice_ini
-#if defined key_pisces_reduced
!!----------------------------------------------------------------------
!! *** ROUTINE p2z_ice_ini ***
@@ -290,5 +273,4 @@
!! ** Purpose : Initialisation of the LOBSTER biochemical model
!!----------------------------------------------------------------------
-#endif
END SUBROUTINE p2z_ice_ini
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90 (revision 7041)
@@ -11,5 +11,5 @@
!! 3.5 ! 2012-05 (C. Ethe) Merge PISCES-LOBSTER
!!----------------------------------------------------------------------
-#if defined key_pisces || defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
!! 'key_pisces' PISCES bio-model
@@ -41,5 +41,5 @@
!!----------------------------------------------------------------------
- IF( lk_p4z ) THEN ; CALL p4z_ini ! PISCES
+ IF( ln_p4z ) THEN ; CALL p4z_ini ! PISCES
ELSE ; CALL p2z_ini ! LOBSTER
ENDIF
@@ -53,5 +53,4 @@
!! ** Purpose : Initialisation of the PISCES biochemical model
!!----------------------------------------------------------------------
-#if defined key_pisces
!
USE p4zsms ! Main P4Z routine
@@ -79,7 +78,9 @@
REAL(wp), SAVE :: no3 = 30.9e-6_wp * 7.625_wp
!
- INTEGER :: ji, jj, jk, ierr
+ INTEGER :: ji, jj, jk, jn, ierr
REAL(wp) :: zcaralk, zbicarb, zco3
REAL(wp) :: ztmas, ztmas1
+ CHARACTER(len = 20) :: cltra
+
!!----------------------------------------------------------------------
@@ -105,4 +106,50 @@
!
+ ! assign an index in trc arrays for each prognostic variables
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'DIC' ) jpdic = jn !: dissolved inoganic carbon concentration
+ IF( cltra == 'Alkalini' ) jptal = jn !: total alkalinity
+ IF( cltra == 'O2' ) jpoxy = jn !: oxygen carbon concentration
+ IF( cltra == 'CaCO3' ) jpcal = jn !: calcite concentration
+ IF( cltra == 'PO4' ) jppo4 = jn !: phosphate concentration
+ IF( cltra == 'POC' ) jppoc = jn !: small particulate organic phosphate concentration
+ IF( cltra == 'Si' ) jpsil = jn !: silicate concentration
+ IF( cltra == 'PHY' ) jpphy = jn !: phytoplancton concentration
+ IF( cltra == 'ZOO' ) jpzoo = jn !: zooplancton concentration
+ IF( cltra == 'DOC' ) jpdoc = jn !: dissolved organic carbon concentration
+ IF( cltra == 'PHY2' ) jpdia = jn !: Diatoms Concentration
+ IF( cltra == 'ZOO2' ) jpmes = jn !: Mesozooplankton Concentration
+ IF( cltra == 'DSi' ) jpdsi = jn !: Diatoms Silicate Concentration
+ IF( cltra == 'Fer' ) jpfer = jn !: Iron Concentration
+ IF( cltra == 'BFe' ) jpbfe = jn !: Big iron particles Concentration
+ IF( cltra == 'GOC' ) jpgoc = jn !: Big particulate organic phosphate concentration
+ IF( cltra == 'SFe' ) jpsfe = jn !: Small iron particles Concentration
+ IF( cltra == 'DFe' ) jpdfe = jn !: Diatoms iron Concentration
+ IF( cltra == 'GSi' ) jpgsi = jn !: (big) Silicate Concentration
+ IF( cltra == 'NFe' ) jpnfe = jn !: Nano iron Concentration
+ IF( cltra == 'NCHL' ) jpnch = jn !: Nano Chlorophyll Concentration
+ IF( cltra == 'DCHL' ) jpdch = jn !: Diatoms Chlorophyll Concentration
+ IF( cltra == 'NO3' ) jpno3 = jn !: Nitrates Concentration
+ IF( cltra == 'NH4' ) jpnh4 = jn !: Ammonium Concentration
+ ENDDO
+
+ jp_pisces = 24
+ jp_pcs0 = MIN( jpdic, jptal, jpoxy, jpcal, jppo4, jppoc, jpsil, &
+ & jpphy, jpzoo, jpdoc, jpdia, jpmes, jpdsi, jpfer, &
+ & jpbfe, jpgoc, jpsfe, jpdfe, jpgsi, jpnfe, jpnch, &
+ & jpdch, jpno3, jpnh4 )
+
+ jp_pcs1 = jp_pcs0 + jp_pisces - 1
+
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' First index of PISCES model in the passive tracer array jp_pcs0 = ', jp_pcs0
+ WRITE(numout,*) ' Last index of PISCES model in the passive tracer array jp_pcs1 = ', jp_pcs1
+ WRITE(numout,*)
+ ENDIF
+
+
CALL p4z_sms_init ! Maint routine
! ! Time-step
@@ -120,6 +167,5 @@
! Initialization of tracer concentration in case of no restart
!--------------------------------------------------------------
- IF( .NOT. ln_rsttr ) THEN
-
+ IF( .NOT.ln_rsttr ) THEN
trn(:,:,:,jpdic) = sco2
trn(:,:,:,jpdoc) = bioma0
@@ -129,10 +175,6 @@
trn(:,:,:,jppo4) = po4 / po4r
trn(:,:,:,jppoc) = bioma0
-# if ! defined key_kriest
trn(:,:,:,jpgoc) = bioma0
trn(:,:,:,jpbfe) = bioma0 * 5.e-6
-# else
- trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp )
-# endif
trn(:,:,:,jpsil) = silic1
trn(:,:,:,jpdsi) = bioma0 * 0.15
@@ -176,5 +218,4 @@
IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
IF(lwp) WRITE(numout,*)
-#endif
!
END SUBROUTINE p4z_ini
@@ -186,5 +227,4 @@
!! ** Purpose : Initialisation of the LOBSTER biochemical model
!!----------------------------------------------------------------------
-#if defined key_pisces_reduced
!
USE p2zopt
@@ -193,5 +233,6 @@
USE p2zsed
!
- INTEGER :: ji, jj, jk, ierr
+ INTEGER :: ji, jj, jk, jn, ierr
+ CHARACTER(len = 10) :: cltra
!!----------------------------------------------------------------------
@@ -205,4 +246,38 @@
IF( lk_mpp ) CALL mpp_sum( ierr )
IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'p2z_ini: unable to allocate LOBSTER arrays' )
+
+ DO jn = 1, jptra
+ cltra = ctrcnm(jn)
+ IF( cltra == 'DET' ) jpdet = jn !: detritus [mmoleN/m3]
+ IF( cltra == 'ZOO' ) jpzoo = jn !: zooplancton concentration [mmoleN/m3]
+ IF( cltra == 'PHY' ) jpphy = jn !: phytoplancton concentration [mmoleN/m3]
+ IF( cltra == 'NO3' ) jpno3 = jn !: nitrate concentration [mmoleN/m3]
+ IF( cltra == 'NH4' ) jpnh4 = jn !: ammonium concentration [mmoleN/m3]
+ IF( cltra == 'DOM' ) jpdom = jn !: dissolved organic matter [mmoleN/m3]
+ ENDDO
+
+
+ jp_pcs0 = MIN( jpdet, jpzoo, jpphy, jpno3, jpnh4, jpdom )
+ jp_pcs1 = jp_pcs0 + jp_pisces - 1
+
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ''
+ WRITE(numout,*) ' First index of LOBSTER model in the passive tracer array jp_pcs0 = ', jp_pcs0
+ WRITE(numout,*) ' Last index of LOBSTER model in the passive tracer array jp_pcs1 = ', jp_pcs1
+ WRITE(numout,*)
+ ENDIF
+
+
+ jpkb = 10 ! last level where depth less than 200 m
+ DO jk = jpkm1, 1, -1
+ IF( gdept_1d(jk) > 200. ) jpkb = jk
+ END DO
+ IF (lwp) WRITE(numout,*)
+ IF (lwp) WRITE(numout,*) ' first vertical layers where biology is active (200m depth ) ', jpkb
+ IF (lwp) WRITE(numout,*)
+ jpkbm1 = jpkb - 1
+ !
+
! LOBSTER initialisation for GYRE : init NO3=f(density) by asklod AS Kremeur 2005-07
@@ -214,5 +289,5 @@
trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:)
trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:)
- WHERE( rhd(:,:,:) <= 24.5e-3 ) ; trn(:,:,:,jpno3 ) = 2._wp * tmask(:,:,:)
+ WHERE( rhd(:,:,:) <= 24.5e-3 ) ; trn(:,:,:,jpno3) = 2._wp * tmask(:,:,:)
ELSE WHERE ; trn(:,:,:,jpno3) = ( 15.55 * ( rhd(:,:,:) * 1000. ) - 380.11 ) * tmask(:,:,:)
END WHERE
@@ -227,5 +302,4 @@
IF(lwp) WRITE(numout,*) 'Initialization of LOBSTER tracers done'
IF(lwp) WRITE(numout,*)
-#endif
!
END SUBROUTINE p2z_ini
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90 (revision 7041)
@@ -9,5 +9,5 @@
!! 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.pisces.h90
!!----------------------------------------------------------------------
-#if defined key_pisces || defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
!! 'key_pisces' : PISCES bio-model
@@ -45,28 +45,17 @@
!! ** input : file 'namelist.trc.sms' containing the following
!! namelist: natext, natbio, natsms
- !! natkriest ("key_kriest")
!!----------------------------------------------------------------------
!!
INTEGER :: jl, jn
- INTEGER :: ios ! Local integer output status for namelist read
- TYPE(DIAG), DIMENSION(jp_pisces_2d) :: pisdia2d
- TYPE(DIAG), DIMENSION(jp_pisces_3d) :: pisdia3d
- TYPE(DIAG), DIMENSION(jp_pisces_trd) :: pisdiabio
+ INTEGER :: ios, ioptio ! Local integer output status for namelist read
CHARACTER(LEN=20) :: clname
!!
- NAMELIST/nampisdia/ pisdia3d, pisdia2d ! additional diagnostics
-#if defined key_pisces_reduced
- NAMELIST/nampisdbi/ pisdiabio
-#endif
-
+ NAMELIST/nampismod/ln_p2z, ln_p4z
!!----------------------------------------------------------------------
IF(lwp) WRITE(numout,*)
clname = 'namelist_pisces'
-#if defined key_pisces
+
IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES namelist'
-#else
- IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read LOBSTER namelist'
-#endif
IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
CALL ctl_opn( numnatp_ref, TRIM( clname )//'_ref', 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
@@ -74,88 +63,26 @@
IF(lwm) CALL ctl_opn( numonp , 'output.namelist.pis' , 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
!
- IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN
- !
- ! Namelist nampisdia
- ! -------------------
- REWIND( numnatp_ref ) ! Namelist nampisdia in reference namelist : Pisces diagnostics
- READ ( numnatp_ref, nampisdia, IOSTAT = ios, ERR = 901)
-901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in reference namelist', lwp )
- REWIND( numnatp_cfg ) ! Namelist nampisdia in configuration namelist : Pisces diagnostics
- READ ( numnatp_cfg, nampisdia, IOSTAT = ios, ERR = 902 )
-902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdia in configuration namelist', lwp )
- IF(lwm) WRITE ( numonp, nampisdia )
+ REWIND( numnatp_ref ) ! Namelist nampisbio in reference namelist : Pisces variables
+ READ ( numnatp_ref, nampismod, IOSTAT = ios, ERR = 901)
+901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in reference namelist', lwp )
- DO jl = 1, jp_pisces_2d
- jn = jp_pcs0_2d + jl - 1
- ctrc2d(jn) = pisdia2d(jl)%sname
- ctrc2l(jn) = pisdia2d(jl)%lname
- ctrc2u(jn) = pisdia2d(jl)%units
- END DO
+ REWIND( numnatp_cfg ) ! Namelist nampisbio in configuration namelist : Pisces variables
+ READ ( numnatp_cfg, nampismod, IOSTAT = ios, ERR = 902 )
+902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in configuration namelist', lwp )
+ IF(lwm) WRITE ( numonp, nampismod )
- DO jl = 1, jp_pisces_3d
- jn = jp_pcs0_3d + jl - 1
- ctrc3d(jn) = pisdia3d(jl)%sname
- ctrc3l(jn) = pisdia3d(jl)%lname
- ctrc3u(jn) = pisdia3d(jl)%units
- END DO
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : natadd'
- DO jl = 1, jp_pisces_3d
- jn = jp_pcs0_3d + jl - 1
- WRITE(numout,*) ' 3d diag nb : ', jn, ' short name : ', ctrc3d(jn), &
- & ' long name : ', ctrc3l(jn), ' unit : ', ctrc3u(jn)
- END DO
- WRITE(numout,*) ' '
-
- DO jl = 1, jp_pisces_2d
- jn = jp_pcs0_2d + jl - 1
- WRITE(numout,*) ' 2d diag nb : ', jn, ' short name : ', ctrc2d(jn), &
- & ' long name : ', ctrc2l(jn), ' unit : ', ctrc2u(jn)
- END DO
- WRITE(numout,*) ' '
- ENDIF
- !
+ IF(lwp) THEN ! control print
+ WRITE(numout,*) ' Namelist : nampismod'
+ WRITE(numout,*) ' PISCES model ln_p4z =', ln_p4z
+ WRITE(numout,*) ' LOBSTER model ln_p2z =', ln_p2z
ENDIF
-
-#if defined key_pisces_reduced
-
- IF( ( .NOT.lk_iomput .AND. ln_diabio ) .OR. lk_trdmxl_trc ) THEN
- !
- ! Namelist nampisdbi
- ! -------------------
- REWIND( numnatp_ref ) ! Namelist nampisdbi in reference namelist : Pisces add. diagnostics
- READ ( numnatp_ref, nampisdbi, IOSTAT = ios, ERR = 903)
-903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in reference namelist', lwp )
-
- REWIND( numnatp_cfg ) ! Namelist nampisdbi in configuration namelist : Pisces add. diagnostics
- READ ( numnatp_cfg, nampisdbi, IOSTAT = ios, ERR = 904 )
-904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdbi in configuration namelist', lwp )
- IF(lwm) WRITE ( numonp, nampisdbi )
-
- DO jl = 1, jp_pisces_trd
- jn = jp_pcs0_trd + jl - 1
- ctrbio(jl) = pisdiabio(jl)%sname
- ctrbil(jl) = pisdiabio(jl)%lname
- ctrbiu(jl) = pisdiabio(jl)%units
- END DO
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : nampisdbi'
- DO jl = 1, jp_pisces_trd
- jn = jp_pcs0_trd + jl - 1
- WRITE(numout,*) ' biological trend No : ', jn, ' short name : ', ctrbio(jn), &
- & ' long name : ', ctrbio(jn), ' unit : ', ctrbio(jn)
- END DO
- WRITE(numout,*) ' '
- END IF
- !
- END IF
-
-#endif
-
+
+ ioptio = 0
+ IF( ln_p2z ) ioptio = ioptio + 1
+ IF( ln_p4z ) ioptio = ioptio + 1
+ !
+ IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE PISCES model namelist nampismod' )
+ !
END SUBROUTINE trc_nam_pisces
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90 (revision 7041)
@@ -7,5 +7,5 @@
!! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90
!!----------------------------------------------------------------------
-#if defined key_pisces || defined key_pisces_reduced
+#if defined key_pisces
!!----------------------------------------------------------------------
!! 'key_pisces' PISCES bio-model
@@ -14,4 +14,5 @@
!!----------------------------------------------------------------------
USE par_pisces
+ USE sms_pisces
USE p4zsms
USE p2zsms
@@ -48,5 +49,5 @@
!!---------------------------------------------------------------------
!
- IF( lk_p4z ) THEN ; CALL p4z_sms( kt ) ! PISCES
+ IF( ln_p4z ) THEN ; CALL p4z_sms( kt ) ! PISCES
ELSE ; CALL p2z_sms( kt ) ! LOBSTER
ENDIF
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90 (revision 7041)
@@ -6,7 +6,7 @@
!! History : 1.0 ! 2009-05 (C. Ethe) Original code
!!----------------------------------------------------------------------
-#if defined key_top && defined key_iomput && ( defined key_pisces || defined key_pisces_reduced )
+#if defined key_top && defined key_pisces && defined key_iomput
!!----------------------------------------------------------------------
- !! 'key_pisces or key_pisces_reduced' PISCES model
+ !! 'key_pisces PISCES model
!!----------------------------------------------------------------------
!! trc_wri_pisces : outputs of concentration fields
@@ -42,47 +42,47 @@
! write the tracer concentrations in the file
! ---------------------------------------
-#if defined key_pisces_reduced
- DO jn = jp_pcs0, jp_pcs1
- cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
- CALL iom_put( cltra, trn(:,:,:,jn) )
- END DO
-#else
- DO jn = jp_pcs0, jp_pcs1
- zfact = 1.0e+6
- IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6
- IF( jn == jppo4 ) zfact = po4r * 1.0e+6
- cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
- IF( iom_use( cltra ) ) CALL iom_put( cltra, trn(:,:,:,jn) * zfact )
- END DO
+ IF( ln_p2z ) THEN
+ DO jn = jp_pcs0, jp_pcs1
+ cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
+ CALL iom_put( cltra, trn(:,:,:,jn) )
+ END DO
+ ELSE
+ DO jn = jp_pcs0, jp_pcs1
+ zfact = 1.0e+6
+ IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6
+ IF( jn == jppo4 ) zfact = po4r * 1.0e+6
+ cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
+ IF( iom_use( cltra ) ) CALL iom_put( cltra, trn(:,:,:,jn) * zfact )
+ END DO
- IF( iom_use( "INTDIC" ) ) THEN ! DIC content in kg/m2
- zdic(:,:) = 0.
- DO jk = 1, jpkm1
- zdic(:,:) = zdic(:,:) + trn(:,:,jk,jpdic) * e3t_n(:,:,jk) * tmask(:,:,jk) * 12.
- ENDDO
- CALL iom_put( 'INTDIC', zdic )
- ENDIF
- !
- IF( iom_use( "O2MIN" ) .OR. iom_use ( "ZO2MIN" ) ) THEN ! Oxygen minimum concentration and depth
- zo2min (:,:) = trn(:,:,1,jpoxy) * tmask(:,:,1)
- zdepo2min(:,:) = gdepw_n(:,:,1) * tmask(:,:,1)
- DO jk = 2, jpkm1
- DO jj = 1, jpj
- DO ji = 1, jpi
- IF( tmask(ji,jj,jk) == 1 ) then
- IF( trn(ji,jj,jk,jpoxy) < zo2min(ji,jj) ) then
- zo2min (ji,jj) = trn(ji,jj,jk,jpoxy)
- zdepo2min(ji,jj) = gdepw_n(ji,jj,jk)
+ IF( iom_use( "INTDIC" ) ) THEN ! DIC content in kg/m2
+ zdic(:,:) = 0.
+ DO jk = 1, jpkm1
+ zdic(:,:) = zdic(:,:) + trn(:,:,jk,jpdic) * e3t_n(:,:,jk) * tmask(:,:,jk) * 12.
+ ENDDO
+ CALL iom_put( 'INTDIC', zdic )
+ ENDIF
+ !
+ IF( iom_use( "O2MIN" ) .OR. iom_use ( "ZO2MIN" ) ) THEN ! Oxygen minimum concentration and depth
+ zo2min (:,:) = trn(:,:,1,jpoxy) * tmask(:,:,1)
+ zdepo2min(:,:) = gdepw_n(:,:,1) * tmask(:,:,1)
+ DO jk = 2, jpkm1
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ IF( tmask(ji,jj,jk) == 1 ) then
+ IF( trn(ji,jj,jk,jpoxy) < zo2min(ji,jj) ) then
+ zo2min (ji,jj) = trn(ji,jj,jk,jpoxy)
+ zdepo2min(ji,jj) = gdepw_n(ji,jj,jk)
+ ENDIF
ENDIF
- ENDIF
+ END DO
END DO
END DO
- END DO
- !
- CALL iom_put('O2MIN' , zo2min ) ! oxygen minimum concentration
- CALL iom_put('ZO2MIN', zdepo2min ) ! depth of oxygen minimum concentration
- !
- ENDIF
-#endif
+ !
+ CALL iom_put('O2MIN' , zo2min ) ! oxygen minimum concentration
+ CALL iom_put('ZO2MIN', zdepo2min ) ! depth of oxygen minimum concentration
+ !
+ ENDIF
+ ENDIF
!
END SUBROUTINE trc_wri_pisces
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90 (revision 7041)
@@ -62,8 +62,9 @@
ENDIF
- IF( lk_cfc ) CALL trc_rad_sms( kt, trb, trn, jp_cfc0 , jp_cfc1 ) ! CFC model
- IF( lk_c14b ) CALL trc_rad_sms( kt, trb, trn, jp_c14b0, jp_c14b1 ) ! bomb C14
- IF( lk_pisces ) CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' ) ! PISCES model
- IF( lk_my_trc ) CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1 ) ! MY_TRC model
+ IF( ln_age ) CALL trc_rad_sms( kt, trb, trn, jp_age0, jp_age0 ) ! AGE
+ IF( ll_cfc ) CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1 ) ! CFC model
+ IF( ln_c14 ) CALL trc_rad_sms( kt, trb, trn, jp_c140, jp_c140 ) ! C14
+ IF( lk_pisces ) CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' ) ! PISCES model
+ IF( lk_my_trc ) CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1 ) ! MY_TRC model
!
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc_oce.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc_oce.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc_oce.F90 (revision 7041)
@@ -22,5 +22,5 @@
CHARACTER(len=50) :: cn_trdrst_trc_in !: suffix of pass. tracer restart name (input)
CHARACTER(len=50) :: cn_trdrst_trc_out !: suffix of pass. tracer restart name (output)
- LOGICAL, DIMENSION(jptra) :: ln_trdtrc !: large trends diagnostic to write or not (namelist)
+ LOGICAL, DIMENSION(:), ALLOCATABLE :: ln_trdtrc !: large trends diagnostic to write or not (namelist)
# if defined key_trdtrc && defined key_iomput
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/par_trc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/par_trc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/par_trc.F90 (revision 7041)
@@ -11,31 +11,20 @@
USE par_kind ! kind parameters
!
- USE par_pisces ! PISCES model
- USE par_c14b ! C14 bomb tracer
- USE par_cfc ! CFC 11 and 12 tracers
- USE par_my_trc ! user defined passive tracers
+ !
+ USE par_pisces
+ USE par_c14
+ USE par_cfc
+ USE par_age
+ USE par_my_trc
IMPLICIT NONE
+
+ INTEGER, PUBLIC, PARAMETER :: jptra_max = 100 ! Maximum number of passive tracers
+ INTEGER, PUBLIC :: jptra ! Total number of tracers
+ INTEGER, PUBLIC :: jp_lc ! Total number of tracers
! Passive tracers : Maximum number of tracers. Needed to define data structures
! ---------------
INTEGER, PUBLIC, PARAMETER :: jpmaxtrc = 100
-
- ! Passive tracers : Total size
- ! --------------- ! total number of passive tracers, of 2d and 3d output and trend arrays
- INTEGER, PUBLIC, PARAMETER :: jptra = jp_pisces + jp_cfc + jp_c14b + jp_my_trc
- INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_pisces_2d + jp_cfc_2d + jp_c14b_2d + jp_my_trc_2d
- INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_pisces_3d + jp_cfc_3d + jp_c14b_3d + jp_my_trc_3d
- ! ! total number of sms diagnostic arrays
- INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd
-
- ! 1D configuration ("key_c1d")
- ! -----------------
-# if defined key_c1d
- LOGICAL, PUBLIC, PARAMETER :: lk_trc_c1d = .TRUE. !: 1D pass. tracer configuration flag
-# else
- LOGICAL, PUBLIC, PARAMETER :: lk_trc_c1d = .FALSE. !: 1D pass. tracer configuration flag
-# endif
-
REAL(wp), PUBLIC :: rtrn = 0.5 * EPSILON( 1.e0 ) !: truncation value
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90 (revision 7041)
@@ -70,5 +70,5 @@
INTEGER :: overlap, jn, js, sind, eind, kdir, j_id
REAL(wp) :: zsum, zvctl
- CHARACTER (len=20), DIMENSION(jptra) :: cl
+ CHARACTER (len=20), ALLOCATABLE, DIMENSION(:) :: cl
CHARACTER (len=10) :: cl2
REAL(wp), POINTER, DIMENSION(:,:,:) :: zmask, ztab3d
@@ -76,4 +76,5 @@
CALL wrk_alloc( jpi, jpj, jpk, zmask, ztab3d )
+ ALLOCATE( cl(jptra) )
! ! Arrays, scalars initialization
overlap = 0
@@ -152,4 +153,5 @@
!
CALL wrk_dealloc( jpi, jpj, jpk, zmask, ztab3d )
+ DEALLOCATE( cl )
!
END SUBROUTINE prt_ctl_trc
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trc.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trc.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trc.F90 (revision 7041)
@@ -28,4 +28,7 @@
INTEGER, PUBLIC :: numnat_cfg = -1 !: logical unit for the reference passive tracer namelist_top_cfg
INTEGER, PUBLIC :: numont = -1 !: logical unit for the reference passive tracer namelist output output.namelist.top
+ INTEGER, PUBLIC :: numtrc_ref = -1 !: logical unit for the reference passive tracer namelist_top_ref
+ INTEGER, PUBLIC :: numtrc_cfg = -1 !: logical unit for the reference passive tracer namelist_top_cfg
+ INTEGER, PUBLIC :: numonr = -1 !: logical unit for the reference passive tracer namelist output output.namelist.top
INTEGER, PUBLIC :: numstr !: logical unit for tracer statistics
INTEGER, PUBLIC :: numrtr !: logical unit for trc restart (read )
@@ -83,7 +86,8 @@
END TYPE
- REAL(wp), DIMENSION(jptra), PUBLIC :: trc_ice_ratio, & ! ice-ocean tracer ratio
- trc_ice_prescr ! prescribed ice trc cc
- CHARACTER(len=2), DIMENSION(jptra), PUBLIC :: cn_trc_o ! choice of ocean tracer cc
+ REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: trc_ice_ratio ! ice-ocean tracer ratio
+ REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: trc_ice_prescr ! prescribed ice trc cc
+ CHARACTER(len=2), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: cn_trc_o ! choice of ocean tracer cc
+
!! information for outputs
@@ -99,10 +103,8 @@
LOGICAL :: llobc !: read in a file or not
#endif
- LOGICAL :: llsave !: save the tracer or not
END TYPE PTRACER
CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrcnm !: tracer name
CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrcln !: trccer field long name
CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrcun !: tracer unit
- LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ln_trc_wri !: save the tracer or not
TYPE, PUBLIC :: DIAG !: passive trcacer ddditional diagnostic type
@@ -119,25 +121,4 @@
LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ln_trc_cbc !: Use coastal boundary condition data
- !! additional 2D/3D outputs namelist
- !! --------------------------------------------------
- REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:, :) :: trc2d !: additional 2d outputs array
- REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: trc3d !: additional 3d outputs array
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2d !: 2d field short name
- CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2l !: 2d field long name
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2u !: 2d field unit
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3d !: 3d field short name
- CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3l !: 3d field long name
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3u !: 3d field unit
- LOGICAL , PUBLIC :: ln_diatrc !: boolean term for additional diagnostic
- INTEGER , PUBLIC :: nn_writedia !: frequency of additional outputs
-
- !! Biological trends
- !! -----------------
- LOGICAL , PUBLIC :: ln_diabio !: boolean term for biological diagnostic
- INTEGER , PUBLIC :: nn_writebio !: frequency of biological outputs
- REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: trbio !: biological trends
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrbio !: bio field short name
- CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrbil !: bio field long name
- CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrbiu !: bio field unit
!! variables to average over physics over passive tracer sub-steps.
@@ -217,7 +198,8 @@
& gtrui(jpi,jpj,jptra) , gtrvi(jpi,jpj,jptra) , &
& sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra) , &
- & cvol(jpi,jpj,jpk) , trai(jptra) , &
+ & cvol(jpi,jpj,jpk) , trai(jptra) , qsr_mean(jpi,jpj) , &
& ctrcnm(jptra) , ctrcln(jptra) , ctrcun(jptra) , &
- & ln_trc_ini(jptra) , ln_trc_wri(jptra) , qsr_mean(jpi,jpj) , &
+ & ln_trc_ini(jptra) , &
+ & trc_ice_ratio(jptra) , trc_ice_prescr(jptra) , cn_trc_o(jptra) , &
#if defined key_my_trc
& ln_trc_sbc(jptra) , ln_trc_cbc(jptra) , ln_trc_obc(jptra) , &
Index: anches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcdia.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcdia.F90 (revision 7040)
+++ (revision )
@@ -1,488 +1,0 @@
-MODULE trcdia
- !!======================================================================
- !! *** MODULE trcdia ***
- !! TOP : Output of passive tracers
- !!======================================================================
- !! History : OPA ! 1995-01 (M. Levy) Original code
- !! - ! 1998-01 (C. Levy) NETCDF format using ioipsl interface
- !! - ! 1999-01 (M.A. Foujols) adapted for passive tracer
- !! - ! 1999-09 (M.A. Foujols) split into three parts
- !! NEMO 1.0 ! 2005-03 (O. Aumont, A. El Moussaoui) F90
- !! ! 2008-05 (C. Ethe re-organization)
- !!----------------------------------------------------------------------
-#if defined key_top
- !!----------------------------------------------------------------------
- !! 'key_top' TOP models
- !!----------------------------------------------------------------------
- !! trc_dia : main routine of output passive tracer
- !! trcdit_wr : outputs of concentration fields
- !! trcdii_wr : outputs of additional 2D/3D diagnostics
- !! trcdib_wr : outputs of biological fields
- !!----------------------------------------------------------------------
- USE dom_oce ! ocean space and time domain variables
- USE oce_trc
- USE trc
- USE par_trc
- USE dianam ! build name of file (routine)
- USE ioipsl ! I/O manager
- USE iom ! I/O manager
- USE lib_mpp ! MPP library
-
- IMPLICIT NONE
- PRIVATE
-
- PUBLIC trc_dia ! called by XXX module
-
- INTEGER :: nit5 !: id for tracer output file
- INTEGER :: ndepit5 !: id for depth mesh
- INTEGER :: nhorit5 !: id for horizontal mesh
- INTEGER :: ndimt50 !: number of ocean points in index array
- INTEGER :: ndimt51 !: number of ocean points in index array
- REAL(wp) :: zjulian !: ???? not DOCTOR !
- INTEGER , ALLOCATABLE, SAVE, DIMENSION (:) :: ndext50 !: integer arrays for ocean 3D index
- INTEGER , ALLOCATABLE, SAVE, DIMENSION (:) :: ndext51 !: integer arrays for ocean surface index
-
- INTEGER :: nitd !: id for additional array output file
- INTEGER :: ndepitd !: id for depth mesh
- INTEGER :: nhoritd !: id for horizontal mesh
-
- INTEGER :: nitb !: id. for additional array output file
- INTEGER :: ndepitb !: id for depth mesh
- INTEGER :: nhoritb !: id for horizontal mesh
-
- !!----------------------------------------------------------------------
- !! NEMO/TOP 3.3 , NEMO Consortium (2010)
- !! $Id$
- !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
- !!----------------------------------------------------------------------
-CONTAINS
-
- SUBROUTINE trc_dia( kt )
- !!---------------------------------------------------------------------
- !! *** ROUTINE trc_dia ***
- !!
- !! ** Purpose : output passive tracers fields
- !!---------------------------------------------------------------------
- INTEGER, INTENT(in) :: kt ! ocean time-step
- !
- INTEGER :: ierr ! local integer
- !!---------------------------------------------------------------------
- !
- IF( kt == nittrc000 ) THEN
- ALLOCATE( ndext50(jpij*jpk), ndext51(jpij), STAT=ierr )
- IF( ierr > 0 ) THEN
- CALL ctl_stop( 'STOP', 'trc_diat: unable to allocate arrays' ) ; RETURN
- ENDIF
- ENDIF
- !
- IF( .NOT.lk_iomput ) THEN
- CALL trcdit_wr( kt ) ! outputs for tracer concentration
- IF( ln_diatrc ) CALL trcdii_wr( kt ) ! outputs for additional arrays
- IF( ln_diabio ) CALL trcdib_wr( kt ) ! outputs for biological trends
- ENDIF
- !
- END SUBROUTINE trc_dia
-
-
- SUBROUTINE trcdit_wr( kt )
- !!----------------------------------------------------------------------
- !! *** ROUTINE trcdit_wr ***
- !!
- !! ** Purpose : Standard output of passive tracer : concentration fields
- !!
- !! ** Method : At the beginning of the first time step (nittrc000), define all
- !! the NETCDF files and fields for concentration of passive tracer
- !!
- !! At each time step call histdef to compute the mean if necessary
- !! Each nwritetrc time step, output the instantaneous or mean fields
- !!
- !!----------------------------------------------------------------------
- INTEGER, INTENT(in) :: kt ! ocean time-step
- !
- INTEGER :: jn
- LOGICAL :: ll_print = .FALSE.
- CHARACTER (len=40) :: clhstnam, clop
- INTEGER :: inum = 11 ! temporary logical unit
- CHARACTER (len=20) :: cltra, cltrau
- CHARACTER (len=80) :: cltral
- REAL(wp) :: zsto, zout
- INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter
- !!----------------------------------------------------------------------
-
- ! Initialisation
- ! --------------
-
- ! local variable for debugging
- ll_print = .FALSE. ! change it to true for more control print
- ll_print = ll_print .AND. lwp
-
- ! Define frequency of output and means
- IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!)
- ELSE ; clop = "x" ! no use of the mask value (require less cpu time)
- ENDIF
-# if defined key_diainstant
- zsto = nn_writetrc * rdt
- clop = "inst("//TRIM(clop)//")"
-# else
- zsto = rdt
- clop = "ave("//TRIM(clop)//")"
-# endif
- zout = nn_writetrc * rdt
-
- ! Define indices of the horizontal output zoom and vertical limit storage
- iimi = 1 ; iima = jpi
- ijmi = 1 ; ijma = jpj
- ipk = jpk
-
- ! define time axis
- itmod = kt - nittrc000 + 1
- it = kt
- iiter = ( nittrc000 - 1 ) / nn_dttrc
-
- ! Define NETCDF files and fields at beginning of first time step
- ! --------------------------------------------------------------
-
- IF(ll_print)WRITE(numout,*)'trcdit_wr kt=',kt
-
- IF( kt == nittrc000 ) THEN
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) ' frequency of outputs for passive tracers nn_writetrc = ', nn_writetrc
- DO jn = 1, jptra
- IF( ln_trc_wri(jn) ) WRITE(numout,*) ' ouput tracer nb : ', jn, ' short name : ', ctrcnm(jn)
- END DO
- WRITE(numout,*) ' '
- ENDIF
-
- ! Compute julian date from starting date of the run
- CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian )
- zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment
- IF(lwp)WRITE(numout,*)' '
- IF(lwp)WRITE(numout,*)' Date 0 used :', nittrc000 &
- & ,' YEAR ', nyear, ' MONTH ', nmonth, ' DAY ', nday &
- & ,'Julian day : ', zjulian
-
- IF(lwp) WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma, &
- & ' limit storage in depth = ', ipk
-
- IF( lk_offline .AND. lwp ) THEN
- CALL dia_nam( clhstnam, nn_writetrc,' ' )
- CALL ctl_opn( inum, 'date.file', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, narea )
- WRITE(inum,*) clhstnam
- CLOSE(inum)
- ENDIF
-
- ! Define the NETCDF files for passive tracer concentration
- CALL dia_nam( clhstnam, nn_writetrc, 'ptrc_T' )
- IF(lwp)WRITE(numout,*)" Name of NETCDF file ", clhstnam
-
- ! Horizontal grid : glamt and gphit
- CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, &
- & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, &
- & iiter, zjulian, rdt, nhorit5, nit5 , domain_id=nidom, snc4chunks=snc4set)
-
- ! Vertical grid for tracer : gdept
- CALL histvert( nit5, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepit5)
-
- ! Index of ocean points in 3D and 2D (surface)
- CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndext50, ndimt50 )
- CALL wheneq( jpi*jpj , tmask, 1, 1., ndext51, ndimt51 )
-
- ! Declare all the output fields as NETCDF variables
- DO jn = 1, jptra
- IF( ln_trc_wri(jn) ) THEN
- cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
- cltral = TRIM( ctrcln(jn) ) ! long title for tracer
- cltrau = TRIM( ctrcun(jn) ) ! UNIT for tracer
- CALL histdef( nit5, cltra, cltral, cltrau, jpi, jpj, nhorit5, &
- & ipk, 1, ipk, ndepit5, 32, clop, zsto, zout )
- ENDIF
- END DO
-
- ! end netcdf files header
- CALL histend( nit5, snc4set )
- IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization in trcdit_wr'
- IF( ll_print ) CALL FLUSH(numout )
-
- ENDIF
-
- ! Start writing the tracer concentrations
- ! ---------------------------------------
-
- IF( lwp .AND. MOD( itmod, nn_writetrc ) == 0 ) THEN
- WRITE(numout,*) 'trcdit_wr : write NetCDF passive tracer concentrations at ', kt, 'time-step'
- WRITE(numout,*) '~~~~~~~~~ '
- ENDIF
-
- DO jn = 1, jptra
- cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
- IF( ln_trc_wri(jn) ) CALL histwrite( nit5, cltra, it, trn(:,:,:,jn), ndimt50, ndext50 )
- END DO
-
- ! close the file
- ! --------------
- IF( kt == nitend ) CALL histclo( nit5 )
- !
- END SUBROUTINE trcdit_wr
-
- SUBROUTINE trcdii_wr( kt )
- !!----------------------------------------------------------------------
- !! *** ROUTINE trcdii_wr ***
- !!
- !! ** Purpose : output of passive tracer : additional 2D and 3D arrays
- !!
- !! ** Method : At the beginning of the first time step (nittrc000), define all
- !! the NETCDF files and fields for concentration of passive tracer
- !!
- !! At each time step call histdef to compute the mean if necessary
- !! Each nn_writedia time step, output the instantaneous or mean fields
- !!
- !!----------------------------------------------------------------------
- INTEGER, INTENT(in) :: kt ! ocean time-step
- !!
- LOGICAL :: ll_print = .FALSE.
- CHARACTER (len=40) :: clhstnam, clop
- CHARACTER (len=20) :: cltra, cltrau
- CHARACTER (len=80) :: cltral
- INTEGER :: jl
- INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter
- REAL(wp) :: zsto, zout
- !!----------------------------------------------------------------------
-
- ! Initialisation
- ! --------------
-
- ! local variable for debugging
- ll_print = .FALSE.
- ll_print = ll_print .AND. lwp
- !
- ! Define frequency of output and means
- IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!)
- ELSE ; clop = "x" ! no use of the mask value (require less cpu time)
- ENDIF
-# if defined key_diainstant
- zsto = nn_writedia * rdt
- clop = "inst("//TRIM(clop)//")"
-# else
- zsto = rdt
- clop = "ave("//TRIM(clop)//")"
-# endif
- zout = nn_writedia * rdt
-
- ! Define indices of the horizontal output zoom and vertical limit storage
- iimi = 1 ; iima = jpi
- ijmi = 1 ; ijma = jpj
- ipk = jpk
-
- ! define time axis
- itmod = kt - nittrc000 + 1
- it = kt
- iiter = ( nittrc000 - 1 ) / nn_dttrc
-
- ! 1. Define NETCDF files and fields at beginning of first time step
- ! -----------------------------------------------------------------
-
- IF( ll_print ) WRITE(numout,*) 'trcdii_wr kt=', kt
-
- IF( kt == nittrc000 ) THEN
-
- ! Define the NETCDF files for additional arrays : 2D or 3D
-
- ! Define the T grid file for tracer auxiliary files
-
- CALL dia_nam( clhstnam, nn_writedia, 'diad_T' )
- IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam
-
- ! Define a netcdf FILE for 2d and 3d arrays
-
- CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, &
- & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, &
- & iiter, zjulian, rdt, nhoritd, nitd , domain_id=nidom, snc4chunks=snc4set )
-
- ! Vertical grid for 2d and 3d arrays
-
- CALL histvert( nitd, 'deptht', 'Vertical T levels','m', ipk, gdept_1d, ndepitd)
-
- ! Declare all the output fields as NETCDF variables
-
- ! more 3D horizontal arrays
- DO jl = 1, jpdia3d
- cltra = TRIM( ctrc3d(jl) ) ! short title for 3D diagnostic
- cltral = TRIM( ctrc3l(jl) ) ! long title for 3D diagnostic
- cltrau = TRIM( ctrc3u(jl) ) ! UNIT for 3D diagnostic
- CALL histdef( nitd, cltra, cltral, cltrau, jpi, jpj, nhoritd, &
- & ipk, 1, ipk, ndepitd, 32, clop, zsto, zout )
- END DO
-
- ! more 2D horizontal arrays
- DO jl = 1, jpdia2d
- cltra = TRIM( ctrc2d(jl) ) ! short title for 2D diagnostic
- cltral = TRIM( ctrc2l(jl) ) ! long title for 2D diagnostic
- cltrau = TRIM( ctrc2u(jl) ) ! UNIT for 2D diagnostic
- CALL histdef( nitd, cltra, cltral, cltrau, jpi, jpj, nhoritd, &
- & 1, 1, 1, -99, 32, clop, zsto, zout )
- END DO
-
- ! TODO: more 2D vertical sections arrays : I or J indice fixed
-
- ! CLOSE netcdf Files
- CALL histend( nitd, snc4set )
-
- IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization in trcdii_wr'
- IF( ll_print ) CALL FLUSH(numout )
- !
- ENDIF
-
- ! 2. Start writing data
- ! ---------------------
-
- IF( lwp .AND. MOD( itmod, nn_writedia ) == 0 ) THEN
- WRITE(numout,*) 'trcdii_wr : write NetCDF additional arrays at ', kt, 'time-step'
- WRITE(numout,*) '~~~~~~ '
- ENDIF
-
- ! more 3D horizontal arrays
- DO jl = 1, jpdia3d
- cltra = TRIM( ctrc3d(jl) ) ! short title for 3D diagnostic
- CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jl), ndimt50 ,ndext50)
- END DO
-
- ! more 2D horizontal arrays
- DO jl = 1, jpdia2d
- cltra = TRIM( ctrc2d(jl) ) ! short title for 2D diagnostic
- CALL histwrite(nitd, cltra, it, trc2d(:,:,jl), ndimt51 ,ndext51)
- END DO
-
- ! Closing all files
- ! -----------------
- IF( kt == nitend ) CALL histclo(nitd)
- !
-
- END SUBROUTINE trcdii_wr
-
- SUBROUTINE trcdib_wr( kt )
- !!----------------------------------------------------------------------
- !! *** ROUTINE trcdib_wr ***
- !!
- !! ** Purpose : output of passive tracer : biological fields
- !!
- !! ** Method : At the beginning of the first time step (nittrc000), define all
- !! the NETCDF files and fields for concentration of passive tracer
- !!
- !! At each time step call histdef to compute the mean if necessary
- !! Each nn_writebio time step, output the instantaneous or mean fields
- !!
- !!----------------------------------------------------------------------
- INTEGER, INTENT( in ) :: kt ! ocean time-step
- !!
- LOGICAL :: ll_print = .FALSE.
- CHARACTER (len=40) :: clhstnam, clop
- CHARACTER (len=20) :: cltra, cltrau
- CHARACTER (len=80) :: cltral
- INTEGER :: ji, jj, jk, jl
- INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter
- REAL(wp) :: zsto, zout
- !!----------------------------------------------------------------------
-
- ! Initialisation
- ! --------------
-
- ! local variable for debugging
- ll_print = .FALSE.
- ll_print = ll_print .AND. lwp
-
- ! Define frequency of output and means
- IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!)
- ELSE ; clop = "x" ! no use of the mask value (require less cpu time)
- ENDIF
-# if defined key_diainstant
- zsto = nn_writebio * rdt
- clop = "inst("//TRIM(clop)//")"
-# else
- zsto = rdt
- clop = "ave("//TRIM(clop)//")"
-# endif
- zout = nn_writebio * rdt
-
- ! Define indices of the horizontal output zoom and vertical limit storage
- iimi = 1 ; iima = jpi
- ijmi = 1 ; ijma = jpj
- ipk = jpk
-
- ! define time axis
- itmod = kt - nittrc000 + 1
- it = kt
- iiter = ( nittrc000 - 1 ) / nn_dttrc
-
- ! Define NETCDF files and fields at beginning of first time step
- ! --------------------------------------------------------------
-
- IF(ll_print) WRITE(numout,*)'trcdib_wr kt=',kt
-
- IF( kt == nittrc000 ) THEN
-
- ! Define the NETCDF files for biological trends
-
- CALL dia_nam(clhstnam,nn_writebio,'biolog')
- IF(lwp)WRITE(numout,*) " Name of NETCDF file for biological trends ", clhstnam
- ! Horizontal grid : glamt and gphit
- CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, &
- & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, &
- & iiter, zjulian, rdt, nhoritb, nitb , domain_id=nidom, snc4chunks=snc4set )
- ! Vertical grid for biological trends
- CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepitb)
-
- ! Declare all the output fields as NETCDF variables
- ! biological trends
- DO jl = 1, jpdiabio
- cltra = TRIM( ctrbio(jl) ) ! short title for biological diagnostic
- cltral = TRIM( ctrbil(jl) ) ! long title for biological diagnostic
- cltrau = TRIM( ctrbiu(jl) ) ! UNIT for biological diagnostic
- CALL histdef( nitb, cltra, cltral, cltrau, jpi, jpj, nhoritb, &
- & ipk, 1, ipk, ndepitb, 32, clop, zsto, zout)
- END DO
-
- ! CLOSE netcdf Files
- CALL histend( nitb, snc4set )
-
- IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization in trcdib_wr'
- IF(ll_print) CALL FLUSH(numout )
- !
- ENDIF
-
- ! Start writing data
- ! ------------------
-
- ! biological trends
- IF( lwp .AND. MOD( itmod, nn_writebio ) == 0 ) THEN
- WRITE(numout,*) 'trcdit_wr : write NetCDF biological trends at ', kt, 'time-step'
- WRITE(numout,*) '~~~~~~ '
- ENDIF
-
- DO jl = 1, jpdiabio
- cltra = TRIM( ctrbio(jl) ) ! short title for biological diagnostic
- CALL histwrite(nitb, cltra, it, trbio(:,:,:,jl), ndimt50,ndext50)
- END DO
-
- ! Closing all files
- ! -----------------
- IF( kt == nitend ) CALL histclo( nitb )
- !
- END SUBROUTINE trcdib_wr
-
-#else
- !!----------------------------------------------------------------------
- !! Dummy module : No passive tracer
- !!----------------------------------------------------------------------
-CONTAINS
- SUBROUTINE trc_dia( kt ) ! Empty routine
- INTEGER, INTENT(in) :: kt
- END SUBROUTINE trc_dia
-#endif
-
- !!======================================================================
-END MODULE trcdia
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcice.F90 (revision 7041)
@@ -17,5 +17,6 @@
USE trcice_cfc ! CFC initialisation
USE trcice_pisces ! PISCES initialisation
- USE trcice_c14b ! C14 bomb initialisation
+ USE trcice_c14 ! C14 bomb initialisation
+ USE trcice_age ! aGE initialisation
USE trcice_my_trc ! MY_TRC initialisation
@@ -52,6 +53,7 @@
IF ( nn_ice_tr == 1 ) THEN
IF( lk_pisces ) CALL trc_ice_ini_pisces ! PISCES bio-model
- IF( lk_cfc ) CALL trc_ice_ini_cfc ! CFC tracers
- IF( lk_c14b ) CALL trc_ice_ini_c14b ! C14 bomb tracer
+ IF( ll_cfc ) CALL trc_ice_ini_cfc ! CFC tracers
+ IF( ln_c14 ) CALL trc_ice_ini_c14 ! C14 tracer
+ IF( ln_age ) CALL trc_ice_ini_age ! AGE tracer
IF( lk_my_trc ) CALL trc_ice_ini_my_trc ! MY_TRC tracers
ENDIF
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcini.F90 (revision 7041)
@@ -59,30 +59,25 @@
IF(lwp) WRITE(numout,*) '~~~~~~~'
+ IF( .NOT.lk_offline ) CALL trc_nam_run ! Parameters of the run
!
CALL top_alloc() ! allocate TOP arrays
!
CALL trc_ini_ctl ! control
- !
CALL trc_nam ! read passive tracers namelists
!
+ !
IF(lwp) WRITE(numout,*)
- !
IF( ln_rsttr .AND. .NOT. lk_offline ) CALL trc_rst_cal( nit000, 'READ' ) ! calendar
- !
IF(lwp) WRITE(numout,*)
!
CALL trc_ini_sms ! SMS
- !
CALL trc_ini_trp ! passive tracers transport
- !
CALL trc_ice_ini ! Tracers in sea ice
!
- IF( lwp ) &
- & CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea )
+ IF(lwp) CALL ctl_opn( numstr, 'tracer.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp , narea )
!
CALL trc_ini_state ! passive tracers initialisation : from a restart or from clim
- !
- IF( nn_dttrc /= 1 ) CALL trc_sub_ini ! Initialize variables for substepping passive tracers
- !
+ IF( nn_dttrc /= 1 ) &
+ CALL trc_sub_ini ! Initialize variables for substepping passive tracers
CALL trc_ini_inv ! Inventories
!
@@ -120,5 +115,4 @@
cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk)
END DO
- IF( lk_degrad ) cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) ! degrad option: reduction by facvol
! ! total volume of the ocean
areatot = glob_sum( cvol(:,:,:) )
@@ -158,13 +152,56 @@
!! ** Purpose : SMS initialisation
!!----------------------------------------------------------------------
- USE trcini_cfc ! CFC initialisation
- USE trcini_pisces ! PISCES initialisation
- USE trcini_c14b ! C14 bomb initialisation
- USE trcini_my_trc ! MY_TRC initialisation
- !!----------------------------------------------------------------------
- IF( lk_pisces ) CALL trc_ini_pisces ! PISCES bio-model
- IF( lk_cfc ) CALL trc_ini_cfc ! CFC tracers
- IF( lk_c14b ) CALL trc_ini_c14b ! C14 bomb tracer
- IF( lk_my_trc ) CALL trc_ini_my_trc ! MY_TRC tracers
+ USE par_trc
+ USE trcini_pisces ! PISCES initialisation
+ USE trcini_cfc ! CFC initialisation
+ USE trcini_c14 ! C14 initialisation
+ USE trcini_age ! age initialisation
+ USE trcini_my_trc ! MY_TRC initialisation
+ !!----------------------------------------------------------------------
+ jp_lc = 0
+ IF( lk_pisces ) THEN ! PISCES bio-model
+ CALL trc_ini_pisces
+ jp_lc = jp_pisces
+ ELSE
+ jp_pisces = 0
+ jp_pcs0 = 0
+ jp_pcs1 = 0
+ ENDIF
+ IF( lk_my_trc ) THEN ! MY_TRC
+ CALL trc_ini_my_trc
+ jp_lc = jp_lc + jp_my_trc
+ ELSE
+ jp_my_trc = 0
+ jp_myt0 = 0
+ jp_myt1 = 0
+ ENDIF
+ IF( ll_cfc ) THEN ! CFC
+ CALL trc_ini_cfc
+ jp_lc = jp_lc + jp_cfc
+ ELSE
+ jp_cfc = 0
+ jp_cfc0 = 0
+ jp_cfc1 = 0
+ ENDIF
+ IF( ln_c14 ) THEN ! C14
+ CALL trc_ini_c14
+ jp_lc = jp_lc + jp_c14
+ ELSE
+ jp_c14 = 0
+ jp_c140 = 0
+ ENDIF
+ IF( ln_age ) THEN ! AGE
+ CALL trc_ini_age
+ jp_lc = jp_lc + jp_age
+ ELSE
+ jp_age = 0
+ jp_age0 = 0
+ ENDIF
+ !
+ IF( jp_lc /= jptra ) THEN
+ IF( lwp ) WRITE(numout,*) ' The total number of tracers in namelist_top jptra = ', jptra
+ IF( lwp ) WRITE(numout,*) ' The total number of tracers to be used by the model is jp_lc = ', jp_lc
+ CALL ctl_stop( " Change the value of total number of tracers in namelist " )
+ ENDIF
!
END SUBROUTINE trc_ini_sms
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcnam.F90 (revision 7041)
@@ -22,5 +22,6 @@
USE trcnam_pisces ! PISCES namelist
USE trcnam_cfc ! CFC SMS namelist
- USE trcnam_c14b ! C14 SMS namelist
+ USE trcnam_c14 ! C14 SMS namelist
+ USE trcnam_age ! AGE SMS namelist
USE trcnam_my_trc ! MY_TRC SMS namelist
USE trd_oce
@@ -53,10 +54,7 @@
INTEGER :: jn ! dummy loop indice
!
- IF( .NOT.lk_offline ) CALL trc_nam_run ! Parameters of the run
!
- CALL trc_nam_trc ! passive tracer informations
+ CALL trc_nam_trc ! passive tracer informations
!
- CALL trc_nam_dia ! Parameters of additional diagnostics
- !
!
IF( ln_rsttr ) ln_trcdta = .FALSE. ! restart : no need of clim data
@@ -65,17 +63,4 @@
!
IF( .NOT.ln_trcdta ) ln_trc_ini(:) = .FALSE.
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : namtrc'
- WRITE(numout,*) ' Read inputs data from file (y/n) ln_trcdta = ', ln_trcdta
- WRITE(numout,*) ' Damping of passive tracer (y/n) ln_trcdmp = ', ln_trcdmp
- WRITE(numout,*) ' Restoring of tracer on closed seas ln_trcdmp_clo = ', ln_trcdmp_clo
- WRITE(numout,*) ' '
- DO jn = 1, jptra
- WRITE(numout,*) ' tracer nb : ', jn, ' short name : ', ctrcnm(jn)
- END DO
- WRITE(numout,*) ' '
- ENDIF
IF(lwp) THEN ! control print
@@ -107,49 +92,27 @@
-#if defined key_trdmxl_trc || defined key_trdtrc
-
- REWIND( numnat_ref ) ! Namelist namtrc_trd in reference namelist : Passive tracer trends
- READ ( numnat_ref, namtrc_trd, IOSTAT = ios, ERR = 905)
-905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist', lwp )
-
- REWIND( numnat_cfg ) ! Namelist namtrc_trd in configuration namelist : Passive tracer trends
- READ ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 )
-906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist', lwp )
- IF(lwm) WRITE ( numont, namtrc_trd )
-
- IF(lwp) THEN
- WRITE(numout,*)
- WRITE(numout,*) ' trd_mxl_trc_init : read namelist namtrc_trd '
- WRITE(numout,*) ' ~~~~~~~~~~~~~~~~ '
- WRITE(numout,*) ' * frequency of trends diagnostics nn_trd_trc = ', nn_trd_trc
- WRITE(numout,*) ' * control surface type nn_ctls_trc = ', nn_ctls_trc
- WRITE(numout,*) ' * restart for ML diagnostics ln_trdmxl_trc_restart = ', ln_trdmxl_trc_restart
- WRITE(numout,*) ' * flag to diagnose trends of '
- WRITE(numout,*) ' instantantaneous or mean ML T/S ln_trdmxl_trc_instant = ', ln_trdmxl_trc_instant
- WRITE(numout,*) ' * unit conversion factor rn_ucf_trc = ', rn_ucf_trc
- DO jn = 1, jptra
- IF( ln_trdtrc(jn) ) WRITE(numout,*) ' compute ML trends for tracer number :', jn
- END DO
- ENDIF
-#endif
-
-
- ! Call the ice module for tracers
- ! -------------------------------
- CALL trc_nam_ice
+ IF( l_trdtrc ) CALL trc_nam_trd ! Passive tracer trends
+
+
+ CALL trc_nam_ice ! ice module for tracerd
! namelist of SMS
! ---------------
+ IF( ln_age ) THEN ; CALL trc_nam_age ! AGE tracer
+ ELSE ; IF(lwp) WRITE(numout,*) ' AGE not used'
+ ENDIF
+
+ IF( ll_cfc ) THEN ; CALL trc_nam_cfc ! CFC tracers
+ ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used'
+ ENDIF
+
+ IF( ln_c14 ) THEN ; CALL trc_nam_c14 ! C14 tracers
+ ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used'
+ ENDIF
+
IF( lk_pisces ) THEN ; CALL trc_nam_pisces ! PISCES bio-model
ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used'
ENDIF
- IF( lk_cfc ) THEN ; CALL trc_nam_cfc ! CFC tracers
- ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used'
- ENDIF
-
- IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers
- ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used'
- ENDIF
IF( lk_my_trc ) THEN ; CALL trc_nam_my_trc ! MY_TRC tracers
@@ -167,5 +130,5 @@
!!
!!---------------------------------------------------------------------
- NAMELIST/namtrc_run/ nn_dttrc, nn_writetrc, ln_rsttr, nn_rsttr, ln_top_euler, &
+ NAMELIST/namtrc_run/ jptra, nn_dttrc, ln_rsttr, nn_rsttr, ln_top_euler, &
& cn_trcrst_indir, cn_trcrst_outdir, cn_trcrst_in, cn_trcrst_out
!
@@ -195,9 +158,9 @@
WRITE(numout,*)
WRITE(numout,*) ' Namelist : namtrc_run'
+ WRITE(numout,*) ' Total number of passive tracers jptra = ', jptra
WRITE(numout,*) ' time step freq. for passive tracer nn_dttrc = ', nn_dttrc
WRITE(numout,*) ' restart for passive tracer ln_rsttr = ', ln_rsttr
WRITE(numout,*) ' control of time step for passive tracer nn_rsttr = ', nn_rsttr
WRITE(numout,*) ' first time step for pass. trac. nittrc000 = ', nittrc000
- WRITE(numout,*) ' frequency of outputs for passive tracers nn_writetrc = ', nn_writetrc
WRITE(numout,*) ' Use euler integration for TRC (y/n) ln_top_euler = ', ln_top_euler
WRITE(numout,*) ' '
@@ -206,57 +169,4 @@
END SUBROUTINE trc_nam_run
-
- SUBROUTINE trc_nam_ice
- !!---------------------------------------------------------------------
- !! *** ROUTINE trc_nam_ice ***
- !!
- !! ** Purpose : Read the namelist for the ice effect on tracers
- !!
- !! ** Method : -
- !!
- !!---------------------------------------------------------------------
- INTEGER :: jn ! dummy loop indices
- INTEGER :: ios ! Local integer output status for namelist read
- !
- TYPE(TRC_I_NML), DIMENSION(jptra) :: sn_tri_tracer
- !!
- NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer
- !!---------------------------------------------------------------------
- !
- IF(lwp) THEN
- WRITE(numout,*)
- WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice'
- WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
- ENDIF
-
- IF( nn_timing == 1 ) CALL timing_start('trc_nam_ice')
-
- !
- REWIND( numnat_ref ) ! Namelist namtrc_ice in reference namelist : Passive tracer input data
- READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901)
- 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp )
-
- REWIND( numnat_cfg ) ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients
- READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 )
- 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp )
-
- IF( lwp ) THEN
- WRITE(numout,*) ' '
- WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr
- WRITE(numout,*) ' '
- ENDIF
-
- ! Assign namelist stuff
- DO jn = 1, jptra
- trc_ice_ratio(jn) = sn_tri_tracer(jn)%trc_ratio
- trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr
- cn_trc_o (jn) = sn_tri_tracer(jn)%ctrc_o
- END DO
-
- IF( nn_timing == 1 ) CALL timing_stop('trc_nam_ice')
- !
- END SUBROUTINE trc_nam_ice
-
-
SUBROUTINE trc_nam_trc
!!---------------------------------------------------------------------
@@ -266,14 +176,15 @@
!!
!!---------------------------------------------------------------------
- INTEGER :: ios ! Local integer output status for namelist read
- INTEGER :: jn ! dummy loop indice
- !
- TYPE(PTRACER), DIMENSION(jptra) :: sn_tracer ! type of tracer for saving if not key_iomput
- !!
- NAMELIST/namtrc/ sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo
+ INTEGER :: ios, ierr ! Local integer output status for namelist read
+ INTEGER :: jn ! dummy loop indice
+ !
+ TYPE(PTRACER), DIMENSION(jptra_max) :: sn_tracer ! type of tracer for saving if not key_iomput
+ !!
+ NAMELIST/namtrc/ln_age, ln_cfc11, ln_cfc12, ln_c14, sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo
!!---------------------------------------------------------------------
IF(lwp) WRITE(numout,*)
IF(lwp) WRITE(numout,*) 'trc_nam_trc : read the passive tracer namelists'
IF(lwp) WRITE(numout,*) '~~~~~~~'
+
REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables
@@ -285,4 +196,5 @@
902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist', lwp )
IF(lwm) WRITE ( numont, namtrc )
+
DO jn = 1, jptra
@@ -296,11 +208,91 @@
ln_trc_obc(jn) = sn_tracer(jn)%llobc
#endif
- ln_trc_wri(jn) = sn_tracer(jn)%llsave
END DO
!
+ ll_cfc = ln_cfc11 .OR. ln_cfc12
+ !
+ IF(lwp) THEN ! control print
+ WRITE(numout,*)
+ WRITE(numout,*) ' Namelist : namtrc'
+ WRITE(numout,*) ' Simulating water mass age ln_age = ', ln_age
+ WRITE(numout,*) ' Simulating CFC11 passive tracer ln_cfc11 = ', ln_cfc11
+ WRITE(numout,*) ' Simulating CFC12 passive tracer ln_cfc12 = ', ln_cfc12
+ WRITE(numout,*) ' Simulating C14 passive tracer ln_c14 = ', ln_c14
+ WRITE(numout,*) ' Read inputs data from file (y/n) ln_trcdta = ', ln_trcdta
+ WRITE(numout,*) ' Damping of passive tracer (y/n) ln_trcdmp = ', ln_trcdmp
+ WRITE(numout,*) ' Restoring of tracer on closed seas ln_trcdmp_clo = ', ln_trcdmp_clo
+ WRITE(numout,*) ' '
+ DO jn = 1, jptra
+ WRITE(numout,*) ' tracer nb : ', jn, ' short name : ', ctrcnm(jn)
+ END DO
+ WRITE(numout,*) ' '
+ ENDIF
+ !
+ IF( ln_age .OR. ll_cfc .OR. ln_c14 ) THEN
+ ! ! Open namelist files
+ CALL ctl_opn( numtrc_ref, 'namelist_trc_ref' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
+ CALL ctl_opn( numtrc_cfg, 'namelist_trc_cfg' , 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
+ IF(lwm) CALL ctl_opn( numonr, 'output.namelist.trc', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )
+ !
+ ENDIF
+
END SUBROUTINE trc_nam_trc
- SUBROUTINE trc_nam_dia
+ SUBROUTINE trc_nam_ice
+ !!---------------------------------------------------------------------
+ !! *** ROUTINE trc_nam_ice ***
+ !!
+ !! ** Purpose : Read the namelist for the ice effect on tracers
+ !!
+ !! ** Method : -
+ !!
+ !!---------------------------------------------------------------------
+ INTEGER :: jn ! dummy loop indices
+ INTEGER :: ios, ierr ! Local integer output status for namelist read
+ !
+ TYPE(TRC_I_NML), ALLOCATABLE, DIMENSION(:) :: sn_tri_tracer ! type of tracer for saving if not key_iomput
+ !!
+ NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer
+ !!---------------------------------------------------------------------
+ !
+ IF(lwp) THEN
+ WRITE(numout,*)
+ WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice'
+ WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
+ ENDIF
+
+ IF( nn_timing == 1 ) CALL timing_start('trc_nam_ice')
+
+ ALLOCATE( sn_tri_tracer(jptra), STAT = ierr )
+ !
+ REWIND( numnat_ref ) ! Namelist namtrc_ice in reference namelist : Passive tracer input data
+ READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901)
+ 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ', lwp )
+
+ REWIND( numnat_cfg ) ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients
+ READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 )
+ 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist', lwp )
+
+ IF( lwp ) THEN
+ WRITE(numout,*) ' '
+ WRITE(numout,*) ' Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr
+ WRITE(numout,*) ' '
+ ENDIF
+
+ ! Assign namelist stuff
+ DO jn = 1, jptra
+ trc_ice_ratio(jn) = sn_tri_tracer(jn)%trc_ratio
+ trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr
+ cn_trc_o (jn) = sn_tri_tracer(jn)%ctrc_o
+ END DO
+
+ IF( nn_timing == 1 ) CALL timing_stop('trc_nam_ice')
+ !
+ END SUBROUTINE trc_nam_ice
+
+
+
+ SUBROUTINE trc_nam_trd
!!---------------------------------------------------------------------
!! *** ROUTINE trc_nam_dia ***
@@ -312,60 +304,47 @@
!! ( (PISCES, CFC, MY_TRC )
!!---------------------------------------------------------------------
+
+#if defined key_trdmxl_trc || defined key_trdtrc
INTEGER :: ios ! Local integer output status for namelist read
INTEGER :: ierr
!!
-#if defined key_trdmxl_trc || defined key_trdtrc
NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, &
& ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, &
& cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc
-#endif
- NAMELIST/namtrc_dia/ ln_diatrc, ln_diabio, nn_writedia, nn_writebio
!!---------------------------------------------------------------------
IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options'
+ IF(lwp) WRITE(numout,*) 'trc_nam_trd : read the passive tracer diagnostics options'
IF(lwp) WRITE(numout,*) '~~~~~~~'
- REWIND( numnat_ref ) ! Namelist namtrc_dia in reference namelist : Passive tracer diagnostics
- READ ( numnat_ref, namtrc_dia, IOSTAT = ios, ERR = 903)
-903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in reference namelist', lwp )
-
- REWIND( numnat_cfg ) ! Namelist namtrc_dia in configuration namelist : Passive tracer diagnostics
- READ ( numnat_cfg, namtrc_dia, IOSTAT = ios, ERR = 904 )
-904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dia in configuration namelist', lwp )
- IF(lwm) WRITE ( numont, namtrc_dia )
+ !
+ ALLOCATE( ln_trdtrc(jptra) )
+ !
+ REWIND( numnat_ref ) ! Namelist namtrc_trd in reference namelist : Passive tracer trends
+ READ ( numnat_ref, namtrc_trd, IOSTAT = ios, ERR = 905)
+905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist', lwp )
+
+ REWIND( numnat_cfg ) ! Namelist namtrc_trd in configuration namelist : Passive tracer trends
+ READ ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 )
+906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist', lwp )
+ IF(lwm) WRITE ( numont, namtrc_trd )
IF(lwp) THEN
WRITE(numout,*)
- WRITE(numout,*)
- WRITE(numout,*) ' Namelist : namtrc_dia'
- WRITE(numout,*) ' save additionnal diagnostics arrays ln_diatrc = ', ln_diatrc
- WRITE(numout,*) ' save additionnal biology diagnostics arrays ln_diabio = ', ln_diabio
- WRITE(numout,*) ' frequency of outputs for additional arrays nn_writedia = ', nn_writedia
- WRITE(numout,*) ' frequency of outputs for biological trends nn_writebio = ', nn_writebio
- WRITE(numout,*) ' '
- ENDIF
-
- IF( ln_diatrc .AND. .NOT. lk_iomput ) THEN
- ALLOCATE( trc2d(jpi,jpj,jpdia2d), trc3d(jpi,jpj,jpk,jpdia3d), &
- & ctrc2d(jpdia2d), ctrc2l(jpdia2d), ctrc2u(jpdia2d) , &
- & ctrc3d(jpdia3d), ctrc3l(jpdia3d), ctrc3u(jpdia3d) , STAT = ierr )
- IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate add. diag. array' )
- !
- trc2d(:,:,: ) = 0._wp ; ctrc2d(:) = ' ' ; ctrc2l(:) = ' ' ; ctrc2u(:) = ' '
- trc3d(:,:,:,:) = 0._wp ; ctrc3d(:) = ' ' ; ctrc3l(:) = ' ' ; ctrc3u(:) = ' '
- !
- ENDIF
-
- IF( ( ln_diabio .AND. .NOT. lk_iomput ) .OR. l_trdtrc ) THEN
- ALLOCATE( trbio (jpi,jpj,jpk,jpdiabio) , &
- & ctrbio(jpdiabio), ctrbil(jpdiabio), ctrbiu(jpdiabio), STAT = ierr )
- IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'trcnam: unable to allocate bio. diag. array' )
- !
- trbio(:,:,:,:) = 0._wp ; ctrbio(:) = ' ' ; ctrbil(:) = ' ' ; ctrbiu(:) = ' '
- !
- ENDIF
- !
- END SUBROUTINE trc_nam_dia
+ WRITE(numout,*) ' trd_mxl_trc_init : read namelist namtrc_trd '
+ WRITE(numout,*) ' ~~~~~~~~~~~~~~~~ '
+ WRITE(numout,*) ' * frequency of trends diagnostics nn_trd_trc = ', nn_trd_trc
+ WRITE(numout,*) ' * control surface type nn_ctls_trc = ', nn_ctls_trc
+ WRITE(numout,*) ' * restart for ML diagnostics ln_trdmxl_trc_restart = ', ln_trdmxl_trc_restart
+ WRITE(numout,*) ' * flag to diagnose trends of '
+ WRITE(numout,*) ' instantantaneous or mean ML T/S ln_trdmxl_trc_instant = ', ln_trdmxl_trc_instant
+ WRITE(numout,*) ' * unit conversion factor rn_ucf_trc = ', rn_ucf_trc
+ DO jn = 1, jptra
+ IF( ln_trdtrc(jn) ) WRITE(numout,*) ' compute ML trends for tracer number :', jn
+ END DO
+ ENDIF
+#endif
+ !
+ END SUBROUTINE trc_nam_trd
#else
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcsms.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcsms.F90 (revision 7041)
@@ -16,6 +16,7 @@
USE trc !
USE trcsms_pisces ! PISCES biogeo-model
- USE trcsms_cfc ! CFC 11 & 12
- USE trcsms_c14b ! C14b tracer
+ USE trcsms_cfc ! CFC 11 &/or 12
+ USE trcsms_c14 ! C14
+ USE trcsms_age ! AGE
USE trcsms_my_trc ! MY_TRC tracers
USE prtctl_trc ! Print control for debbuging
@@ -49,6 +50,7 @@
!
IF( lk_pisces ) CALL trc_sms_pisces ( kt ) ! main program of PISCES
- IF( lk_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC
- IF( lk_c14b ) CALL trc_sms_c14b ( kt ) ! surface fluxes of C14
+ IF( ll_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC
+ IF( ln_c14 ) CALL trc_sms_c14 ( kt ) ! surface fluxes of C14
+ IF( ln_age ) CALL trc_sms_age ( kt ) ! Age tracer
IF( lk_my_trc ) CALL trc_sms_my_trc ( kt ) ! MY_TRC tracers
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcstp.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcstp.F90 (revision 7041)
@@ -15,10 +15,9 @@
USE trctrp ! passive tracers transport
USE trcsms ! passive tracers sources and sinks
- USE prtctl_trc ! Print control for debbuging
- USE trcdia
USE trcwri
USE trcrst
USE trdtrc_oce
USE trdmxl_trc
+ USE prtctl_trc ! Print control for debbuging
USE iom
USE in_out_manager
@@ -68,5 +67,4 @@
cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk)
END DO
- IF( lk_degrad ) cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) ! degrad option: reduction by facvol
areatot = glob_sum( cvol(:,:,:) )
ENDIF
@@ -87,7 +85,5 @@
CALL trc_rst_opn ( kt ) ! Open tracer restart file
IF( lrst_trc ) CALL trc_rst_cal ( kt, 'WRITE' ) ! calendar
- IF( lk_iomput ) THEN ; CALL trc_wri ( kt ) ! output of passive tracers with iom I/O manager
- ELSE ; CALL trc_dia ( kt ) ! output of passive tracers with old I/O manager
- ENDIF
+ CALL trc_wri ( kt ) ! output of passive tracers with iom I/O manager
CALL trc_sms ( kt ) ! tracers: sinks and sources
CALL trc_trp ( kt ) ! transport of passive tracers
Index: /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcwri.F90
===================================================================
--- /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcwri.F90 (revision 7040)
+++ /branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/trcwri.F90 (revision 7041)
@@ -19,5 +19,6 @@
USE trcwri_pisces
USE trcwri_cfc
- USE trcwri_c14b
+ USE trcwri_c14
+ USE trcwri_age
USE trcwri_my_trc
@@ -54,6 +55,7 @@
! ---------------------------------------
IF( lk_pisces ) CALL trc_wri_pisces ! PISCES
- IF( lk_cfc ) CALL trc_wri_cfc ! surface fluxes of CFC
- IF( lk_c14b ) CALL trc_wri_c14b ! surface fluxes of C14
+ IF( ll_cfc ) CALL trc_wri_cfc ! surface fluxes of CFC
+ IF( ln_c14 ) CALL trc_wri_c14 ! surface fluxes of C14
+ IF( ln_age ) CALL trc_wri_age ! AGE tracer
IF( lk_my_trc ) CALL trc_wri_my_trc ! MY_TRC tracers
!