Opened 4 years ago
Last modified 4 years ago
#870 closed upgrade
CLARIFICATION: Surface net freshwater flux — at Initial Version
Reported by: | arango | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.9 |
Component: | Nonlinear | Version: | 3.9 |
Keywords: | Cc: |
Description
Several changes were introduced src:ticket:869 about how to process the surface tracer fluxes that are used as boundary conditions to the vertical diffusion term. A couple of additional changes are made here to remove any ambiguity about the surface freshwater flux needed for ROMS.
Notice that ROMS has the following vertical surface/bottom boundary condition for temperature and salinity:
In particular, the blue square shows what ROMS needs as a freshwater flux. Usually, E-P is units of kilogram meter-2 second-1. Then, the flux is divided by freshwater density, which converts to meter second-1. In routine set_vbc.F such flux is multiplied by the surface salinity. Since the salinity does not have physical units, the vertical boundary condition is still in meter second-1.
I cleaned the metadata in varinfo.dat, now we have:
'ssflux' ! Output 'kinematic surface net salt flux, SALT*(E-P)/rhow' 'meter second-1' ! [PSS m/s] 'surface net salt flux, scalar, series' 'ssf_time' 'idTsur(isalt)' 'r2dvar' 1.0d0 'swflux' ! Input 'data surface net freshwater flux, (E-P)/rhow' 'meter second-1' ! Input: [m/s] 'surface net freshwater flux, scalar, series' ! [PSS m/s] 'swf_time' 'idsfwf' 'r2dvar' 1.0d0 'EminusP' ! Input/Output 'modeled surface net freshwater flux, (E-P)/rhow' 'meter second-1' ! computed by NLM ROMS 'EminusP, scalar, series' ! bulk_flux.F or coupling 'ocean_time' ! needed in adjoint-based 'idEmPf' ! applications 'r2dvar' 1.0d0
As it is specified in the preamble of varinfo.dat, the PSS is added on purpose to indicate that the Practical Salinity Scale was use to determine condutivity but it not a physical unit. We are using the latest UNESCO equation of state.
We have two different variables for input freshwater flux: swflux and EminusP. Historically, swflux has been used for available datasets while EminusP has been used when derived from parameterizations (BULK_FLUXES and atmospheric coupling). To avoid any confusion, the units and scale for swflux were changed to meter second-1 and 1.0d0 respectively. It is the standard units. If such field is in centimeter day-1, I recomend to add the scale_factor attribute to the NetCDF, so the conversion is done during reading in ROMS:
float swflux(swf_time, eta_rho, xi_rho) ; swflux:long_name = "surface freshwater flux, (E-P)/rhow" ; swflux:units = "meter second-1" ; swflux:negative = "net evaporation" ; swflux:positive = "net precipitation" ; swflux:time = "swf_time" ; swflux:coordinates = "lon_rho lat_rho swf_time" ; swflux:scale_factor = 1.157407e-07f ;
- Corrected get_data.F and set_data.F processing of the freshwater flux when the SCORRECTION is activated.
- Corrected issue in regrid.F. It was missing the MASKING conditional.