﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
704	New QUICKSAVE output NetCDF file	arango	arango	"A new output '''QUICKSAVE''' NetCDF has been added to write instantaneous fields. 

Notice that it is possible to have two types of output NetCDF files in ROMS for instantaneous fields: '''HISTORY''' and '''QUICKSAVE'''. The '''QUICKSAVE''' file can be used for writing fewer fields at shorter time intervals. For example, the '''User''' may just write 2D and surface fields frequently (hourly) to reduce file size and to time resolve fast dynamics. In conjunction, the '''User''' may write full '''history''' fields infrequently (daily, weekly, etc) to avoid creating large output files. This gives a lot of flexibility to manage ROMS output.

Like with the '''HISTORY''' file, there are several parameters that control the '''QUICKSAVE''' file in input script '''ocean.in''':

{{{
! Output history, quicksave, average, diagnostic files parameters.

...
        NHIS == 72
     NDEFHIS == 0
        NQCK == 18
     NDEFQCK == 0
...
}}}

where

 * '''NQCK:''' Number of time-steps between writing fields into '''QUICKSAVE''' file.  Set NQCK=0 to supress writing of '''QUICKSAVE''' file.

 * '''NDEFQCK:''' is the number of time-steps between the creation of new '''QUICKSAVE''' file. If '''NDEFQCK'''=0, the model will only process one '''QUICKSAVE''' file. This feature is useful for long simulations when '''QUICKSAVE''' file get too large; it creates a new file every '''NDEFQCK''' time-steps.

The following new set of '''Qout''' switches in '''ocean.in''' can be used to control the fields written into the '''QUICKSAVE''' file:

 {{{
! Logical switches (TRUE/FALSE) to activate writing of fields into
! QUICKSAVE output file.

Qout(idUvel) == F       ! u                  3D U-velocity
Qout(idVvel) == F       ! v                  3D V-velocity
Qout(idu3dE) == F       ! u_eastward         3D U-eastward  at RHO-points
Qout(idv3dN) == F       ! v_northward        3D V-northward at RHO-points
Qout(idWvel) == F       ! w                  3D W-velocity
Qout(idOvel) == F       ! omega              omega vertical velocity
Qout(idUbar) == T       ! ubar               2D U-velocity
Qout(idVbar) == T       ! vbar               2D V-velocity
Qout(idu2dE) == T       ! ubar_eastward      2D U-eastward  at RHO-points
Qout(idv2dN) == T       ! vbar_northward     2D V-northward at RHO-points
Qout(idFsur) == T       ! zeta               free-surface
Qout(idBath) == T       ! bath               time-dependent bathymetry

Qout(idTvar) == F F     ! temp, salt         temperature and salinity

Qout(idUsur) == T       ! u_sur              surface U-velocity
Qout(idVsur) == T       ! v_sur              surface V-velocity
Qout(idUsuE) == T       ! u_sur_eastward     surface U-eastward  velocity
Qout(idVsuN) == T       ! v_sur_northward    surface V-northward velocity

Qout(idsurT) == T T     ! temp_sur, salt_sur surface temperature and salinity

Qout(idpthR) == F       ! z_rho              time-varying depths of RHO-points
Qout(idpthU) == F       ! z_u                time-varying depths of U-points
Qout(idpthV) == F       ! z_v                time-varying depths of V-points
Qout(idpthW) == F       ! z_w                time-varying depths of W-points

Qout(idUsms) == F       ! sustr              surface U-stress
Qout(idVsms) == F       ! svstr              surface V-stress
Qout(idUbms) == F       ! bustr              bottom U-stress
Qout(idVbms) == F       ! bvstr              bottom V-stress

Qout(idUbrs) == F       ! bustrc             bottom U-current stress
Qout(idVbrs) == F       ! bvstrc             bottom V-current stress
Qout(idUbws) == F       ! bustrw             bottom U-wave stress
Qout(idVbws) == F       ! bvstrw             bottom V-wave stress
Qout(idUbcs) == F       ! bustrcwmax         bottom max wave-current U-stress
Qout(idVbcs) == F       ! bvstrcwmax         bottom max wave-current V-stress

Qout(idUbot) == F       ! Ubot               bed wave orbital U-velocity
Qout(idVbot) == F       ! Vbot               bed wave orbital V-velocity
Qout(idUbur) == F       ! Ur                 bottom U-velocity above bed
Qout(idVbvr) == F       ! Vr                 bottom V-velocity above bed

Qout(idW2xx) == F       ! Sxx_bar            2D radiation stress, Sxx component
Qout(idW2xy) == F       ! Sxy_bar            2D radiation stress, Sxy component
Qout(idW2yy) == F       ! Syy_bar            2D radiation stress, Syy component
Qout(idU2rs) == F       ! Ubar_Rstress       2D radiation U-stress
Qout(idV2rs) == F       ! Vbar_Rstress       2D radiation V-stress
Qout(idU2Sd) == F       ! ubar_stokes        2D U-Stokes velocity
Qout(idV2Sd) == F       ! vbar_stokes        2D V-Stokes velocity

Qout(idW3xx) == F       ! Sxx                3D radiation stress, Sxx component
Qout(idW3xy) == F       ! Sxy                3D radiation stress, Sxy component
Qout(idW3yy) == F       ! Syy                3D radiation stress, Syy component
Qout(idW3zx) == F       ! Szx                3D radiation stress, Szx component
Qout(idW3zy) == F       ! Szy                3D radiation stress, Szy component
Qout(idU3rs) == F       ! u_Rstress          3D U-radiation stress
Qout(idV3rs) == F       ! v_Rstress          3D V-radiation stress
Qout(idU3Sd) == F       ! u_stokes           3D U-Stokes velocity
Qout(idV3Sd) == F       ! v_stokes           3D V-Stokes velocity

Qout(idWamp) == F       ! Hwave              wave height
Qout(idWlen) == F       ! Lwave              wave length
Qout(idWdir) == F       ! Dwave              wave direction
Qout(idWptp) == F       ! Pwave_top          wave surface period
Qout(idWpbt) == F       ! Pwave_bot          wave bottom period
Qout(idWorb) == F       ! Ub_swan            wave bottom orbital velocity
Qout(idWdis) == F       ! Wave_dissip        wave dissipation

Qout(idPair) == F       ! Pair               surface air pressure
Qout(idUair) == F       ! Uair               surface U-wind component
Qout(idVair) == F       ! Vair               surface V-wind component

Qout(idTsur) == F F     ! shflux, ssflux     surface net heat and salt flux
Qout(idLhea) == F       ! latent             latent heat flux
Qout(idShea) == F       ! sensible           sensible heat flux
Qout(idLrad) == F       ! lwrad              longwave radiation flux
Qout(idSrad) == F       ! swrad              shortwave radiation flux
Qout(idEmPf) == F       ! EminusP            E-P flux
Qout(idevap) == F       ! evaporation        evaporation rate
Qout(idrain) == F       ! rain               precipitation rate

Qout(idDano) == F       ! rho                density anomaly
Qout(idVvis) == F       ! AKv                vertical viscosity
Qout(idTdif) == F       ! AKt                vertical T-diffusion
Qout(idSdif) == F       ! AKs                vertical Salinity diffusion
Qout(idHsbl) == F       ! Hsbl               depth of surface boundary layer
Qout(idHbbl) == F       ! Hbbl               depth of bottom boundary layer
Qout(idMtke) == F       ! tke                turbulent kinetic energy
Qout(idMtls) == F       ! gls                turbulent length scale

! Logical switches (TRUE/FALSE) to activate writing of extra inert passive
! tracers other than biological and sediment tracers into the QUICKSAVE
! output file. An inert passive tracer is one that it is only advected and
! diffused. Other processes are ignored. These tracers include, for example,
! dyes, pollutants, oil spills, etc. NPT values are expected. However, these
! switches can be activated using compact parameter specification.

 Qout(inert) == F       ! dye_01, ...        inert passive tracer
}}}

Notice that '''Qout''' and Hout are similar except that''' Qout''' has additional switches for several model surface fields:

 {{{
Qout(idUsur) == T       ! u_sur              surface U-velocity
Qout(idVsur) == T       ! v_sur              surface V-velocity
Qout(idUsuE) == T       ! u_sur_eastward     surface U-eastward  velocity
Qout(idVsuN) == T       ! v_sur_northward    surface V-northward velocity

Qout(idsurT) == T T     ! temp_sur, salt_sur surface temperature and salinity
}}}

The''' QUICKSAVE''' output NetCDF file name is specified in '''ocean.in''' parameter '''QCKNAME''':

 {{{
! Output NetCDF file names, [1:Ngrids].

...
     HISNAME == ocean_his.nc
     QCKNAME == ocean_qck.nc
...
}}}

New metadata has been added to '''varinfo.dat''' to write output model surface fields in the '''QUICKSAVE''' NetCDF file:

 {{{
        double u_sur(ocean_time, eta_u, xi_u) ;
                u_sur:long_name = ""model surface u-momentum component"" ;
                u_sur:units = ""meter second-1"" ;
                u_sur:time = ""ocean_time"" ;
                u_sur:grid = ""grid"" ;
                u_sur:location = ""edge1"" ;
                u_sur:coordinates = ""x_u y_u ocean_time"" ;
                u_sur:field = ""u_sur, scalar, series"" ;

        double v_sur(ocean_time, eta_v, xi_v) ;
                v_sur:long_name = ""model surface v-momentum component"" ;
                v_sur:units = ""meter second-1"" ;
                v_sur:time = ""ocean_time"" ;
                v_sur:grid = ""grid"" ;
                v_sur:location = ""edge2"" ;
                v_sur:coordinates = ""x_v y_v ocean_time"" ;
                v_sur:field = ""v_sur, scalar, series"" ;        

        double u_sur_eastward(ocean_time, eta_rho, xi_rho) ;
                u_sur_eastward:long_name = ""model surface eastward momentum component at RHO-points"" ;
                u_sur_eastward:units = ""meter second-1"" ;
                u_sur_eastward:time = ""ocean_time"" ;
                u_sur_eastward:standard_name = ""surface_eastward_sea_water_velocity"" ;
                u_sur_eastward:grid = ""grid"" ;
                u_sur_eastward:location = ""face"" ;
                u_sur_eastward:coordinates = ""x_rho y_rho ocean_time"" ;
                u_sur_eastward:field = ""u_sur_eastward, scalar, series"" ;

        double v_sur_northward(ocean_time, eta_rho, xi_rho) ;
                v_sur_northward:long_name = ""model surface northward momentum component at RHO-points"" ;
                v_sur_northward:units = ""meter second-1"" ;
                v_sur_northward:time = ""ocean_time"" ;
                v_sur_northward:standard_name = ""surface_northward_sea_water_velocity"" ;
                v_sur_northward:grid = ""grid"" ;
                v_sur_northward:location = ""face"" ;
                v_sur_northward:coordinates = ""x_rho y_rho ocean_time"" ;
                v_sur_northward:field = ""v_sur_northward, scalar, series"" ;

        double temp_sur(ocean_time, eta_rho, xi_rho) ;
                temp_sur:long_name = ""model surface potential temperature"" ;
                temp_sur:units = ""Celsius"" ;
                temp_sur:time = ""ocean_time"" ;
                temp_sur:grid = ""grid"" ;
                temp_sur:location = ""face"" ;
                temp_sur:coordinates = ""x_rho y_rho ocean_time"" ;
                temp_sur:field = ""temp_sur, scalar, series"" ;

        double salt_sur(ocean_time, eta_rho, xi_rho) ;
                salt_sur:long_name = ""model surface salinity"" ;
                salt_sur:time = ""ocean_time"" ;
                salt_sur:grid = ""grid"" ;
                salt_sur:location = ""face"" ;
                salt_sur:coordinates = ""x_rho y_rho ocean_time"" ;
                salt_sur:field = ""salinity, scalar, series"" ;
}}}
Notice that it is possible to write model surface 3D momentum and active/passive tracer in '''QUICKSAVE''' file.

----

== '''__WARNINGS__'''

All the input '''ocean_*.in''', biology, and sediment input scripts were  modified to include the new '''Qout''' switches in the code trunk and test repositories.  The '''varinfo.dat''' was modified to include model surface metadata.
"	request	closed	major	Release ROMS/TOMS 3.7	Nonlinear	3.7	Done		
