﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
482	Spatially varying bottom friction parameters	arango	arango	"The model was updated to include:

 * Spatially varying bottom roughness length ('''!ZoBot(i,j)'''; m), linear bottom drag coefficients ('''rdrag(i,j)'''; m/s), or quadratic bottom drag coefficients ('''rdrag2(i,j)'''; non-dimensional). This can be activated with new C-preprocessing option '''UV_DRAG_GRID'''.

 * These spatially varying bottom friction parameters can be specified with either analytical expressions using new C-preprocessing option '''ANA_DRAG''' in new routine '''ana_drag.h''' or read from application GRID NetCDF file. These parameters are defined at '''RHO'''-points and processed according to the momentum bottom friction options '''UV_LOGDRAG''' ('''!ZoBot'''), '''UV_LDRAG''' ('''rdrag'''), or '''UV_QDRAG''' ('''rdrag2''').

 * If reading these variables from the GRID NetCDF, you need to have the following metadata:
{{{
        double ZoBot(eta_psi, xi_psi) ;
                ZoBot:long_name = ""time invariant, bottom roughness length"" ;
                ZoBot:units = ""meter ;
                ZoBot:coordinates = ""lon_rho lat_rho"" ;

        double rdrag(eta_psi, xi_psi) ;
                rdrag:long_name = ""linear bottom drag coefficient"" ;
                rdrag:units = ""meter second-1 ;
                rdrag:coordinates = ""lon_rho lat_rho"" ;

        double rdrag2(eta_psi, xi_psi) ;
                rdrag2:long_name = ""quadratic bottom drag coefficient"" ;
                rdrag2:coordinates = ""lon_rho lat_rho"" ;
}}}
 Notice that only one of these variables is needed according to the C-preprocessing option '''UV_LOGDRAG''', '''UV_LDRAG''', or '''UV_QDRAG''', respectively. It is also possible to use spatially varying '''!ZoBot''' when '''SEDIMENT''' and/or internal '''BBL_MODEL''' options are/is activated.  The user is allowed to have different NetCDF variables names for these bottom friction parameters.  This can be done in the metadata file '''varinfo.dat'''.

 * Any of these time-independent variables are written to the header of output NetCDF files when '''UV_DRAG_GRID''' is activated.

 * Notice that the sediment variable '''bottom(i,j,izdef)''' is initialized to '''!ZoBot'''.  However, '''bottom(i,j,izdef)''' change in time due to sediment processes. There is a difference in these variables due to the time dependency which affect the adjoint model.

 * Several routines in ROMS were changed to allow the use of '''!ZoBot''', '''rdrag''', and '''rdrag2''' arrays instead of the scalar values.  These variables are initialized to standard input parameters '''Zob(ng)''', '''rdrg(ng)''', and '''rdrg2(ng)''' values, respectively. Their values are over-written if the spatially varying option '''UV_DRAG_GRID''' is activated.

 * The routine '''ana_bmflux.h''' is obsolete and removed. Its functionality is replaced with new routine '''ana_drag.h'''.

 * All these new variables are assumed to be '''time independent''' and not '''adjointable'''.  The time dependency of '''!ZoBot''' is only possible when any of the bottom boundary models and/or sediment are/is activated. Notice that the spatial dependency of these bottom friction parameters is an approximation and lacks of the physics included in bottom boundary layer (BBL) models. '''!ZoBot''' depends on sediment density and size, wave and current interactions, and other BBL processes. These bottom friction variables can be used to fine tune solutions that are forced by tides.  There is a lot of papers in the literature to estimate these variables using adjoint techniques. We may considered that type of parameter estimation in the future.

 * Added the capability for writing surface pressure ('''Pair''') and surface wind components ('''Uair''', '''Vair''') to history, averages, and station output NetCDF files.  This is done for convenience during post-processing of the model output. For example, it can be used to plot the dependency between surface elevation, pressure , and winds at a particular station location.  The winds are written as provided at input, ROMS curvilinear coordinates ('''XI''', '''ETA''') and rotated angles, if applicable. This was requested by NOAA and it is needed in their forecasting operations.  This can be activated in standard input file '''ocean.in''' by turning on the following new switches:
{{{
Hout(idPair) == T                          ! surface air pressure
Hout(idUair) == T                          ! surface U-wind component
Hout(idVair) == T                          ! surface V-wind component

...

Aout(idPair) == T                          ! surface air pressure
Aout(idUair) == T                          ! surface U-wind component
Aout(idVair) == T                          ! surface V-wind component
}}}
 and '''station.in''' input script:
{{{
Sout(idPair) == T                          ! surface air pressure
Sout(idUair) == T                          ! surface U-wind component
Sout(idVair) == T                          ! surface V-wind component
}}}

----

'''WARNING:'''

 * All the ROMS standard input files '''ocean_*.in''' where updated to include the new output switches '''Hout''' and '''Aout''' shown above.

 * All the '''station_*.in''' files where updated to include the new output switches '''Sout''' shown above.

 * The file '''varinfo.dat''' was updated to include the metadata definitions for spatially varying bottom friction parameters.  The users need to update their version of this file for this to work correctly!

----

Good luck using this new option for spatially varying bottom friction.  This has been requested by several users for awhile.  Sorry that it took that long... My priority list is very long..."	upgrade	new	major	Release ROMS/TOMS 3.4	Nonlinear	3.4			
