﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
674	New option AGE_MEAN for inert passive tracers	arango	arango	"A new option '''AGE_MEAN''' was added to compute the '''Mean Age''' of a inert passive tracer when '''T_PASSIVE''' is activated. This can be used to compute, for example, the age and residence time of particular water parcels (like river runoff, dyes, contaminants, etc).   An inert passive tracer in ROMS is one that does not contain a source/sink term in the right-hand-side like bio-geochemical and sediment tracers.

We need to have an even number of inert passive tracers ('''NPT''').  The code is implemented in pairs where '''odd''' index (say '''inert(1)'''...) corresponds to the inert tracer concentration to simulate and the '''even''' index is the respective Mean Age concentration (say '''inert(2)'''...).  For example for '''NPT=4''', we get the following output fields:

{{{
        double dye_01(ocean_time, s_rho, eta_rho, xi_rho) ;
                dye_01:long_name = ""dye concentration, type 01"" ;
                dye_01:units = ""kilogram meter-3"" ;
                dye_01:time = ""ocean_time"" ;
                dye_01:coordinates = ""x_rho y_rho s_rho ocean_time"" ;
                dye_01:field = ""dye_01, scalar, series"" ;
                dye_01:_FillValue = 1.e+37 ;

        double dye_01_age(ocean_time, s_rho, eta_rho, xi_rho) ;
                dye_01_age:long_name = ""dye concentration mean age, type 01"" ;
                dye_01_age:units = ""second"" ;
                dye_01_age:time = ""ocean_time"" ;
                dye_01_age:coordinates = ""x_rho y_rho s_rho ocean_time"" ;
                dye_01_age:field = ""dye_01_age, scalar, series"" ;
                dye_01_age:_FillValue = 1.e+37 ;

        double dye_02(ocean_time, s_rho, eta_rho, xi_rho) ;
                dye_02:long_name = ""dye concentration, type 02"" ;
                dye_02:units = ""kilogram meter-3"" ;
                dye_02:time = ""ocean_time"" ;
                dye_02:coordinates = ""x_rho y_rho s_rho ocean_time"" ;
                dye_02:field = ""dye_02, scalar, series"" ;
                dye_02:_FillValue = 1.e+37 ;

        double dye_02_age(ocean_time, s_rho, eta_rho, xi_rho) ;
                dye_02_age:long_name = ""dye concentration mean age, type 02"" ;
                dye_02_age:units = ""second"" ;
                dye_02_age:time = ""ocean_time"" ;
                dye_02_age:coordinates = ""x_rho y_rho s_rho ocean_time"" ;
                dye_02_age:field = ""dye_02_age, scalar, series"" ;
                dye_02_age:_FillValue = 1.e+37 ;
}}}

This option is implemented in '''pre_step3d.F''' and '''step3d_t.F''' and associated adjoint and tangent linear versions.

Many thanks to Gordon Zhang and John Wilkin for their help in coding and testing this option.  For more information how this option can be used please check the following reference:

 Zhang, W.G.,  J.L. Wilkin, and O.M.E. Schofield, 2010: Simulation of Water Age and Residence Time in New York Bight,'' J. Phys. Oceang.'', '''40''' (5), 965-982, doi:10.1175/2009JPO4249.1.

----

I also modified '''inp_par.F''', '''read_asspar.F''' and '''read_physpar.F''' to pass an additional parameter to '''load_s1d''' and '''load_s2d''' corresponding to the dimension ('''Fdim''') of the '''Fname''' string array in the calling program:

{{{
      FUNCTION load_s1d (Nval, Fname, Fdim, line, label, igrid, Nfiles, &
     &                   S)

      FUNCTION load_s2d (Nval, Fname, Fdim, line, label, ifile, igrid,  &
     &                   Nfiles, Ncount, idim, S)
}}}

This is to facilitate changes in the dimension of '''Fname''' in the calling program.  "	upgrade	closed	major	Release ROMS/TOMS 3.7	Nonlinear	3.7	Done		
