Opened 4 years ago

Closed 4 years ago

#674 closed upgrade (Done)

New option AGE_MEAN for inert passive tracers

Reported by: arango Owned by: arango
Priority: major Milestone: Release ROMS/TOMS 3.7
Component: Nonlinear Version: 3.7
Keywords: Cc:


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.

Change History (1)

comment:1 Changed 4 years ago by arango

  • Resolution set to Done
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.