Opened 4 years ago

Closed 4 years ago

#704 closed request (Done)

New QUICKSAVE output NetCDF file

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

Description (last modified by 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.

Change History (1)

comment:1 Changed 4 years ago by arango

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