Surface heat retention, year-round fake "upwelling"

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
lolhsson
Posts: 23
Joined: Wed Jun 02, 2010 9:07 pm
Location: UC Berkeley

Surface heat retention, year-round fake "upwelling"

#1 Unread post by lolhsson »

Hi everyone!

I feel like I must be doing something fundamentally wrong in my application of ROMS to the northern California current at very high resolution. Since I'm pretty much self-taught from the forums, this does not come as a huge surprise to me, but it's definitely getting to be time to look for help.

I use ROMS/TOMS version 3.6, downloaded from the myroms.org SVN repository.

I generated a reasonable 10 km horizontal resolution run for the US west coast that I'm using to provide (mostly) Rad/Nud boundary conditions for my vastly zoomed in 1 km horizontal resolution run, interpolated with the very nice MATLAB scripts provided with the ROMS package these days. My cppdefs are otherwise very similar to the 10 km run (which was forced with SODA boundary conditions); U3H/C4V TS advection, standard UV_ADV (which I believe currently defaults to 3rd order horizontal upwinding, 4th order centered in the vertical), LMD vertical mixing, Chapman boundary conditions for zeta and Flather for the mixing TKE. Both runs are surface forced with NARR data (temp, pressure, humidity, precip, winds, radiation, clouds) as put through the ROMS BULK_FLUXES formulation. NARR has its share of problems in my region of interest (too hot in the summer, too cold in the winter, winds are often iffy onshore), but nothing so drastic as to make my runs too terrible.

But at 1 km, I have some serious weirdness afoot that didn't appear in the 10 km version. The ocean is getting hot -- offshore, some 4 C warmer in the 1 km version than its 10 km boundaries, in summer -- and, after a year of spinup, I have what are effectively faux upwelling conditions (cold, saline onshore water) all year round, as my salt and temp gradients with depth rapidly lose their sensitivity to the bathymetry. My bottom ROMS layer is quite different than initialization after a year -- onshore is much colder and more saline, leading to surface conditions seemingly independent of the winds/upwelling/downwelling conditions. And while I'd expect some shifting of the ocean floor conditions in spinup, this seems a little excessive (and leads to these unrealistic surface conditions).

My Courant numbers start a bit high, but tend to quickly settle down to e-3 to e-4 horizontally and 0.1-0.2 vertically, and my grid is right on the edge of acceptable bathymetric smoothness and bottom layer depths; lately I've been running at 30s timesteps in the name of robust numerical stability at high resolution.

My surface heat retention issue looks suspiciously similar to some graphics Hernan Arango presented at last year's workshop in Rio (which I proceeded to access online), where BULK_FLUXES and Rad/Nud are combined to have heat retention and odd little zeta vortices floating around. Unfortunately, without the audio for that presentation, I'm not quite sure what the recommendation for BULK_FLUXES+Rad/Nud is. I'm inclined to infer that the recommendation is -- DON'T DO IT!! Assuming that's the case, what are people using instead these days? Should I just impose surface heat fluxes? NARR has a surface heat flux estimate, albiet without an explicit dQ/dSST term (though I could estimate dq/dt from their Q timeseries, and use the 10 km SST, or estimate with NARR's 2m air temp), which seems important from when my ROMS sea surface drifts away from NARR (which it inevitably will, I imagine). I could turn to CORE2, though its one degree horizontal resolution is awfully low for my application.

It's possible that the onshore 'fake upwelling' is connected to my surface/boundaries issue, but I have to wonder if there's something more fundamental going on with my choice and parameterization of my vertical mixing. I just used what I thought were typical, suggested parameters for LMD. I'm putting the interesting parts of the top of a typical logfile below (the full version is attached); if anything jumps out at a more experienced user as desperately wrong, I'd be very grateful for the insight. It would be wonderful if I was just being very foolish in an obvious way, with some combination of parameters or .h selections, and I would gladly accept embarrassment if I could fix the issue. ;) I'm also open to the possibility that I need higher order (eg, 5th) advection/diffusion schemes to do a better job of capturing turbulent motion at 1 km res...

Thanks so much for your time.

Code: Select all

 Model Input Parameters:  ROMS/TOMS version 3.6  
                          Wednesday - May 15, 2013 -  1:54:08 PM
 -----------------------------------------------------------------------------

 expandedroms

 Operating system : Linux
 CPU/hardware     : x86_64
 Compiler system  : ifort
 Compiler command : /global/software/centos-5.x86_64/modules/openmpi/1.2.8-

intel/bin/mpif90
 Compiler flags   : -heap-arrays -fp-model precise -ip -O3 -free -free -free

 Input Script  : expandedroms.in

 SVN Root URL  : https://www.myroms.org/svn/src/trunk
 SVN Revision  : 605:631M

 Local Root    : /global/home/users/lolhsson
 Header Dir    : /global/home/users/lolhsson/Projects/10kmrestest
 Header file   : expandedroms.h
 Analytical Dir: /global/home/users/lolhsson/Projects/10kmrestest

 Resolution, Grid 01: 0548x0498x030,  Parallel Nodes:  64,  Tiling: 008x008


 Physical Parameters, Grid: 01
 =============================

   97822080  ntimes          Number of timesteps for 3-D equations.
     30.000  dt              Timestep size (s) for 3-D equations.
         30  ndtfast         Number of timesteps for 2-D equations between
                               each 3D timestep.
          1  ERstr           Starting ensemble/perturbation run number.
          1  ERend           Ending ensemble/perturbation run number.
          0  nrrec           Number of restart records to read from disk.
          T  LcycleRST       Switch to recycle time-records in restart file.
       2880  nRST            Number of timesteps between the writing of data
                               into restart fields.
          1  ninfo           Number of timesteps between print of information
                               to standard output.
          T  ldefout         Switch to create a new output NetCDF file(s).
   32607400  nHIS            Number of timesteps between the writing fields
                               into history file.
          1  ntsAVG          Starting timestep for the accumulation of output
                               time-averaged data.
       2880  nAVG            Number of timesteps between the writing of
                               time-averaged data into averages file.
     288000  ndefAVG         Number of timesteps between creation of new
                               time-averaged file.
 0.0000E+00  nl_tnu2(01)     NLM Horizontal, harmonic mixing coefficient
                               (m2/s) for tracer 01: temp
 0.0000E+00  nl_tnu2(02)     NLM Horizontal, harmonic mixing coefficient
                               (m2/s) for tracer 02: salt
 5.0000E+00  nl_visc2        NLM Horizontal, harmonic mixing coefficient
                               (m2/s) for momentum.
 1.0000E-06  Akt_bak(01)     Background vertical mixing coefficient (m2/s)
                               for tracer 01: temp
 1.0000E-06  Akt_bak(02)     Background vertical mixing coefficient (m2/s)
                               for tracer 02: salt
 1.0000E-05  Akv_bak         Background vertical mixing coefficient (m2/s)
                               for momentum.
 3.0000E-04  rdrg            Linear bottom drag coefficient (m/s).
 3.0000E-03  rdrg2           Quadratic bottom drag coefficient.
 2.0000E-02  Zob             Bottom roughness (m).
 2.0000E+00  blk_ZQ          Height (m) of surface air humidity measurement.
 2.0000E+00  blk_ZT          Height (m) of surface air temperature measurement.
 1.0000E+01  blk_ZW          Height (m) of surface winds measurement.
          1  lmd_Jwt         Jerlov water type.
          2  Vtransform      S-coordinate transformation equation.
          4  Vstretching     S-coordinate stretching function.
 7.0000E+00  theta_s         S-coordinate surface control parameter.
 1.0000E-01  theta_b         S-coordinate bottom  control parameter.
    250.000  Tcline          S-coordinate surface/bottom layer width (m) used
                               in vertical coordinate stretching.
   1025.000  rho0            Mean density (kg/m3) for Boussinesq approximation.
      0.000  dstart          Time-stamp assigned to model initialization (days).
       0.00  time_ref        Reference time for units attribute (yyyymmdd.dd)
 3.6000E+02  Tnudg(01)       Nudging/relaxation time scale (days)
                               for tracer 01: temp
 3.6000E+02  Tnudg(02)       Nudging/relaxation time scale (days)
                               for tracer 02: salt
 0.0000E+00  Znudg           Nudging/relaxation time scale (days)
                               for free-surface.
 3.6000E+02  M2nudg          Nudging/relaxation time scale (days)
                               for 2D momentum.
 3.6000E+02  M3nudg          Nudging/relaxation time scale (days)
                               for 3D momentum.
 1.2000E+02  obcfac          Factor between passive and active
                               open boundary conditions.
          T  VolCons(1)      NLM western  edge boundary volume conservation.
          T  VolCons(2)      NLM southern edge boundary volume conservation.
          F  VolCons(3)      NLM eastern  edge boundary volume conservation.
          T  VolCons(4)      NLM northern edge boundary volume conservation.
     14.000  T0              Background potential temperature (C) constant.
     35.000  S0              Background salinity (PSU) constant.
   1027.000  R0              Background density (kg/m3) used in linear Equation
                               of State.
 1.7000E-04  Tcoef           Thermal expansion coefficient (1/Celsius).
 0.0000E+00  Scoef           Saline contraction coefficient (1/PSU).
      1.000  gamma2          Slipperiness variable: free-slip (1.0) or 
                                                    no-slip (-1.0).

          T  Aout(idFsur)    Write out averaged free-surface.
          T  Aout(idUbar)    Write out averaged 2D U-momentum component.
          T  Aout(idVbar)    Write out averaged 2D V-momentum component.
          T  Aout(idUvel)    Write out averaged 3D U-momentum component.
          T  Aout(idVvel)    Write out averaged 3D V-momentum component.
          T  Aout(idWvel)    Write out averaged W-momentum component.
          T  Aout(idOvel)    Write out averaged omega vertical velocity.
          T  Aout(idTvar)    Write out averaged tracer 01: temp
          T  Aout(idTvar)    Write out averaged tracer 02: salt
          T  Aout(idPair)    Write out averaged surface air pressure.
          T  Aout(idUair)    Write out averaged surface U-wind component.
          T  Aout(idVair)    Write out averaged surface V-wind component.
          T  Aout(idTsur)    Write out averaged surface net heat flux.
          T  Aout(idTsur)    Write out averaged surface net salt flux.
          T  Aout(idSrad)    Write out averaged shortwave radiation flux.
          T  Aout(idLrad)    Write out averaged longwave radiation flux.
          T  Aout(idLhea)    Write out averaged latent heat flux.
          T  Aout(idShea)    Write out averaged sensible heat flux.
          T  Aout(idevap)    Write out averaged evaporation rate.
          T  Aout(idrain)    Write out averaged rain rate.

 Output/Input Files:

             Output Restart File:  

/global/scratch/lolhsson/newnested10to1/ocean_rst.nc
             Output History File:  

/global/scratch/lolhsson/newnested10to1/ocean_his.nc
       Prefix for Averages Files:  /global/scratch/lolhsson/newnested10to1/ocean_avg
                 Input Grid File:  

/clusterfs/hadley/scratch/lolhsson/supersmoothroms1kmres123pt5to129W3944N.nc
    Input Nonlinear Initial File:  

/clusterfs/hadley/scratch/lolhsson/supersmoothzoomout1kmini.nc
           Input Forcing File 01:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/Pair.OREEG.19852010.nc
           Input Forcing File 02:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/Tair.OREEG.19852010.nc
           Input Forcing File 03:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/Vair.OREEG.19852010.nc
           Input Forcing File 04:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/rain.OREEG.19852010.nc
           Input Forcing File 05:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/Qair.OREEG.19852010.nc
           Input Forcing File 06:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/Uair.OREEG.19852010.nc
           Input Forcing File 07:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/cloud.OREEG.19852010.nc
           Input Forcing File 08:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/swrad.OREEG.19852010.nc
           Input Forcing File 09:  

/clusterfs/hadley/scratch/lolhsson/expandedgridforcing/lwrad_down.OREEG.19852010.nc
             Input Boundary File:  

/clusterfs/hadley/scratch/lolhsson/supersmoothzoomout1kmbry.nc

 Lateral Boundary Conditions: NLM
 ============================

 Variable               Grid    West Edge   South Edge  East Edge   North Edge
 ---------              ----    ----------  ----------  ----------  ----------

 zeta                     1     Chapman     Chapman     Closed      Chapman

 ubar                     1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 vbar                     1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 u                        1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 v                        1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 temp                     1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 salt                     1     Rad + Nud   Rad + Nud   Closed      Rad + Nud

 Activated C-preprocessing Options:

 expandedroms        expandedroms
 ATM_PRESS           Impose atmospheric pressure onto sea surface.
 ANA_BSFLUX          Analytical kinematic bottom salinity flux.
 ANA_BTFLUX          Analytical kinematic bottom temperature flux.
 ANA_FSOBC           Analytical free-surface boundary conditions.
 ANA_M2OBC           Analytical 2D momentum boundary conditions.
 ASSUMED_SHAPE       Using assumed-shape arrays.
 AVERAGES            Writing out time-averaged nonlinear model fields.
 BULK_FLUXES         Surface bulk fluxes parameterization.
 DJ_GRADPS           Parabolic Splines density Jacobian (Shchepetkin, 2002).
 DOUBLE_PRECISION    Double precision arithmetic.
 EMINUSP             Compute Salt Flux using E-P.
 LMD_CONVEC          LMD convective mixing due to shear instability.
 LMD_MIXING          Large/McWilliams/Doney interior mixing.
 LMD_NONLOCAL        LMD convective nonlocal transport.
 LMD_RIMIX           LMD diffusivity due to shear instability.
 LMD_SKPP            KPP surface boundary layer mixing.
 LONGWAVE_OUT        Compute outgoing longwave radiation internally.
 MASKING             Land/Sea masking.
 MIX_GEO_TS          Mixing of tracers along geopotential surfaces.
 MIX_GEO_UV          Mixing of momentum along geopotential surfaces.
 MPI                 MPI distributed-memory configuration.
 NONLINEAR           Nonlinear Model.
 !NONLIN_EOS         Linear Equation of State for seawater.
 OUT_DOUBLE          Double precision output fields in NetCDF files.
 PERFECT_RESTART     Processing perfect restart variables.
 POWER_LAW           Power-law shape time-averaging barotropic filter.
 PROFILE             Time profiling activated .
 !RST_SINGLE         Double precision fields in restart NetCDF file.
 SALINITY            Using salinity.
 SOLAR_SOURCE        Solar Radiation Source Term.
 SOLVE3D             Solving 3D Primitive Equations.
 SPLINES             Conservative parabolic spline reconstruction.
 TS_U3HADVECTION     Third-order upstream horizontal advection of tracers.
 TS_C4VADVECTION     Fourth-order centered vertical advection of tracers.
 TS_DIF2             Harmonic mixing of tracers.
 UV_ADV              Advection of momentum.
 UV_COR              Coriolis term.
 UV_U3HADVECTION     Third-order upstream horizontal advection of 3D momentum.
 UV_C4VADVECTION     Fourth-order centered vertical advection of momentum.
 UV_LDRAG            Linear bottom stress.
 UV_VIS2             Harmonic mixing of momentum.
 VAR_RHO_2D          Variable density barotropic mode.


 ndtfast, nfast =   30  42   nfast/ndtfast =  1.40000

 Centers of gravity and integrals (values must be 1, 1, approx 1/2, 1, 1):

    1.000000000000 1.047601458608 0.523800729304 1.000000000000 1.000000000000

 Power filter parameters, Fgamma, gamma =  0.28400   0.18933

 Minimum X-grid spacing, DXmin =  7.99934148E-01 km
 Maximum X-grid spacing, DXmax =  8.64083464E-01 km
 Minimum Y-grid spacing, DYmin =  1.06893682E+00 km
 Maximum Y-grid spacing, DYmax =  1.15465833E+00 km
 Minimum Z-grid spacing, DZmin =  3.20533014E-01 m
 Maximum Z-grid spacing, DZmax =  8.84996407E+02 m

 Minimum barotropic Courant Number =  1.54598336E-02
 Maximum barotropic Courant Number =  3.12695104E-01
 Maximum Coriolis   Courant Number =  3.03817176E-03

 Maximum grid stiffness ratios:  rx0 =   2.807708E-01 (Beckmann and Haidvogel)
                                 rx1 =   1.282151E+01 (Haney)


 Initial basin volumes: TotVolume =  6.2618283263E+14 m3
                        MinVolume =  2.7416988319E+05 m3
                        MaxVolume =  8.6299629887E+08 m3
                          Max/Min =  3.1476699367E+03


Attachments
logfile_lolhsson_1kmroms.txt
(36.3 KiB) Downloaded 521 times

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#2 Unread post by arango »

The recommendation is to not use BULK_FLUXES in these cases. The explanation is kind of complicated. The bulk flux formulation in ROMS uses the Monin-Obukhov similarity parameters of Liu et al. (1979) to compute stability functions that compute the turbulent fluxes for wind (Wstar), heat (Tstar), and moisture (Qstar). There are stable and unstable regimes for these functions. This computation can be highly nonlinear. Any bias or errors in the open boundary conditions for temperature, due to radiation conditions, may result in a loss or gain of heat at the boundary. This may create bogus upwelling/downwelling at the open boundary edges. The model becomes unstable quite rapidly and it blows up.

Therefore, I avoid to use BULK_FLUXES in some applications. I get instead the total heat flux and wind stress from a dataset or interpolate them from the coarse model. I usually use the fluxes from :arrow: ECMWF's ERA-Iterim Dataset. This is one of my favorite datasets. I think that the net incoming shortwave radiation at the ocean surface that we get from other datasets is too high resulting in excessive heat flux in the ocean.

I usually get the following variables from the ERA dataset: The @ denotes accumulated quantity that must be divided by the time interval into the cycle 3, 6, 9 or 12 hours:

Code: Select all

 Select time:   00:00:00     12:00:00
 Select step:   0  3  6  9  12

 @  sshf    W m-2 s        surface sensible heat flux
 @  slhf    W m-2 s        surface latent heat flux
 @  ssr     W m-2 s        surface net solar radiation (shortwave)
 @  str     W m-2 s        surface net thermal radiation (longwave)
 @  strd    W m-2 s        surface thermal radiation downwards
 @  ewss    N m-2 s        east-west surface stress
 @  nsss    N m-2 s        north-south surface stress
 @  e       m              evaporation (downward flux is positive)
 @  ro      m              runoff
 @  tcc     nondimensional total cloud cover [0:1]
 @  tp      m              total precipitation
 @  par     W m-2 s        photosynthetically active radiation at surface
    msl     Pa             mean sea level pressure
    v10v    m s-1          10 metre U wind component
    vl0u    m s-1          10 metre V wind component
    v2t     K              2 metre temperature
    v2d     K              2 metre dewpoint temperature
 
  This dataset is written in compact way (short numbers). We need to convert to floating-point data and scale to ROMS units:

    Uwind       (m s-1)         v10u
    Vwind       (m s-1)         v10v
    sustr       (N m-2)         ewss / (3*3600);   3-hour step
    svstr       (N m-2)         nsss / (3*3600);   3-hour step 
    shflux      (W m-2)         (ssr+str+sshf+slhf) / (3*3000);   3-hour step
    swrad       (W m-2)         ssr  / (3*3600);   3-hour step
    lwrad_down  (W m-2)         strd / (3*3600);   3-hour step
    latent      (W m-2)         slhf / (3*3600);   3-hour step
    sensible    (W m-2)         sshf / (3*3600):   3-hour step
    rain        (kg m-2 s-1)    tp * Rho_w / (3*3600)
    evaporation (kg m-2 s-1)    e  * Rho_w / (3*3600)
    swflux      (cm day-1)      (-e - tp) * 100 / (3/24);  0.125 day step
    cloud       (nondimesional) tcc
    Pair        (mb)            msl / 100;   (1 mb = 100 Pa)
    Tair        (Celsius)       t2m - 273.15;   (1 C = 273.15 K)
    Qair        (percentage)    100 * (E/Es)
 
  where

    Rho_w = 1000 kg m-3  (water density)

    E  = 6.11 * 10.0 ^ (7.5 * v2d / (237.7 + v2d))    vapor pressure (mb)
                                                      v2d in Celsius
 
    Es = 6.11 * 10.0 ^ (7.5 * v2t / (237.7 + v2t))    saturation vapor
                                                      pressure (mb)
                                                      v2t in Celsius
If we denote V3, V6, V9, and V12 as the 3, 6, 9, and 12 accumulated values, respectively, the forcing fields averages (A3, A6, A9, and A12) for the three-hour interval are:

Code: Select all

   A3  = V3 / (3*3600)
   A6  = (V6 - V3) / (3*3600)
   A9  = (V9 - V6) / (3*3600)
   A12 = (V12 - V9) / (3*3600)
You can check out this by comparing the processed instantaneous and accumulated fields for surface momentum stress (iews vs ewss; inss vs nsss).



:idea: Notice that I also get the variables for BULK_FLUXES in case that I want to compare solutions with or without it. If we are not using BULK_FLUXES, ROMS just needs shflux, swflux, swrad (with some CPP options), sustr, and svstr.

lolhsson
Posts: 23
Joined: Wed Jun 02, 2010 9:07 pm
Location: UC Berkeley

Re: Surface heat retention, year-round fake "upwelling"

#3 Unread post by lolhsson »

This is extremely helpful, thank you!

As a note, it looks like the server for your recommended dataset is moving to :arrow: http://apps.ecmwf.int/datasets/data/interim_full_daily/ , so you may want to update your bookmark. :)

ymamoutos
Posts: 71
Joined: Fri Nov 19, 2010 2:33 pm
Location: University of Aegean

Re: Surface heat retention, year-round fake "upwelling"

#4 Unread post by ymamoutos »

Hi,

I am currently using BULK_FLUXES for my application and i have a kind of silly/stupid
question because i am bit confused. Which atmospheric fields are necessary, if bulk_fluxes
isn't defined, except from uv surface stresses, solar shortwave radiation, surface freshwater flux,
surface net heat flux. If i understand correct SST,SSS and dQdSST are needed when QCORRECTION,
SCORRECTION and SRELAXATION are defined. Thanks in advance.

Giannis

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#5 Unread post by arango »

Yes, that's correct. I revised my post above.

ymamoutos
Posts: 71
Joined: Fri Nov 19, 2010 2:33 pm
Location: University of Aegean

Re: Surface heat retention, year-round fake "upwelling"

#6 Unread post by ymamoutos »

Greetings from Greece and many thanks again Hernan.

Giannis

lolhsson
Posts: 23
Joined: Wed Jun 02, 2010 9:07 pm
Location: UC Berkeley

Re: Surface heat retention, year-round fake "upwelling"

#7 Unread post by lolhsson »

Hi Hernan,

If you have the time, I have a clarification question. It's pretty trivial, so apologies in advance.

I am curious what cpp options you recommend for the shortwave radiation in an application that forces with ERA-interim. I like SOLAR_SOURCE in general, to estimate heat penetration w/exponential decay into the water column, so continuing to use it seems reasonable. Since the data is taken in snapshots shorter than 24 hours, DIURNAL_SRFLUX is unnecessary.

It's the clouds that have me a little puzzled. (In the past, using BULK_FLUXES, I just provided them directly.)

The ERA-interim ssrd product that you recommend for use in ROMS' swrad is incident solar radiation (as opposed to ssr, which is net and includes the effects of clouds and surface albedo) -- do you turn on the ALBEDO cpp option to get these effects? Do you provide albedo directly from the ERA-interim dataset? Do you actually use ssr, not ssrd, for your swrad forcing, and that's just a typo in your post? Or do you do something else entirely that I haven't thought of?

Thanks,
Liz

jpm
Posts: 21
Joined: Thu Aug 27, 2009 4:37 pm
Location: UCSC

Re: Surface heat retention, year-round fake "upwelling"

#8 Unread post by jpm »

I noticed that here is an issue with the way swflux is computed above:
arango wrote:...

Code: Select all

    swflux      (cm day-1)      (e - tp) * 100 / (3/24);  0.125 day step
According to the ECMWF website all downward fluxes are positive (http://www.ecmwf.int/publications/manua ... s/pid=182/) and indeed by looking into the ECMWF data set, values for e are negative (it is an upward flux), while values for tp are positive (downward flux). So what should actually be calculated is -(e+tp) = -e-tp, or we will always get negative values.

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#9 Unread post by arango »

The freshwater flux at the ocean surface is: E-P-R where E is evaporation, P is precipitation, and R is river runoff. By definition, all these fields are positive quantities :!: If E-P>0, we get net evaporation. Contrarily, if E-P<0 we get net precipitation.

Notice that no salt is removed from the ocean by this flux. Therefore, E-P-R is vertical freshwater transport.

jpm
Posts: 21
Joined: Thu Aug 27, 2009 4:37 pm
Location: UCSC

Re: Surface heat retention, year-round fake "upwelling"

#10 Unread post by jpm »

In the data set I downloaded from the ECMWF website the values for e (evaporation) are negative while those for tp (total precipitation) are positive. This makes sense since the description mentions that all downward fluxes are positive. In this case e+tp is the net downward flux. The values for e-tp are always negative and never become positive.
Jann Paul Mattern, Ocean Sciences Department, UCSC

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#11 Unread post by arango »

Hmmm, I cannot understand this one. How the rate of evaporation from liquid to gas is negative? The liquid is loosing heat. It gets colder. This must be a convention to differentiate other processes like land and sea. Is the evaporation over land positive?

I can see why the rate of precipitation is always positive. It does not make physical sense to have a negative value for this flux.

The vertical coordinate is such that atmosphere is positive, interface is zero, and ocean depth is negative.

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#12 Unread post by arango »

Ok. The evaporation, e, in the ECMWF ERA dataset has a convention that the vertical downward flux is positive. Therefore, to compute ROMS freshwater flux we need to have:

Code: Select all

swflux = -e - tp
Thank you for bringing this to our attention.

uranoscopus
Posts: 26
Joined: Sat Mar 17, 2012 4:54 pm
Location: CNR - IAMC
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#13 Unread post by uranoscopus »

First of all, sorry for resurrecting such an old 3d
:roll:
I'm interested to this issue about combined use of RadNud and Bulk fluxes.
I understood that there could be a (complex) problem about heat gain or loss at boundaries by using such a combination.
I have some question about that, hoping that someone have time/attitude to reply :mrgreen: :

-Is this problem ONLY related with radiation conditions, or it could also arise by using, let's say, clamped conditions for 3d variables?

-How do this problem at boundaries can be related to "little zeta vortices" floating around in the domain interior, to whom refers lolhsson in his post?
I was not able to evince this from Arango's Rio presentation I have just downloaded.

Thanks in advance for your time,
Cheers,
Antonio

linhaozhong
Posts: 2
Joined: Tue Oct 15, 2013 2:45 pm
Location: Institute of Atmospheric Physics, Chinese Academy

Re: Surface heat retention, year-round fake "upwelling"

#14 Unread post by linhaozhong »

I have downloaded surface data from ERA-interim, but I found in that data the variables 'ewss' and 'nsss' are named as 'Eastward turbulent surface stress' and 'Northward turbulent surface stress', which are different from those listed in 'd_ecmwf2roms.m', i.e. east-west surface stress and north-south surface stress. Are those two variables extracted from my data the same as those used in 'd_ecmwf2roms.m'?

simion1232006
Posts: 60
Joined: Tue Sep 29, 2009 3:50 pm
Location: School of Environment System Engineering,UWA

Re: Surface heat retention, year-round fake "upwelling"

#15 Unread post by simion1232006 »

That is just the description, the actual name are 'eewss' and 'nsss'.

simion1232006
Posts: 60
Joined: Tue Sep 29, 2009 3:50 pm
Location: School of Environment System Engineering,UWA

Re: Surface heat retention, year-round fake "upwelling"

#16 Unread post by simion1232006 »

I noticed that the ERA-interim data set has a little cooling problem near the coast. It appears that the land side gets less heat than the ocean, while the land-ocean boundary is too coarse for some coastal circulation model. Thus some areas of ocean are gridded as land area receiving less heat.

linhaozhong
Posts: 2
Joined: Tue Oct 15, 2013 2:45 pm
Location: Institute of Atmospheric Physics, Chinese Academy

Re: Surface heat retention, year-round fake "upwelling"

#17 Unread post by linhaozhong »

simion1232006 wrote:That is just the description, the actual name are 'eewss' and 'nsss'.
Do you mean that the 'Eastward turbulent surface stress' in ERA-interim is just the ’east-west surface stress‘ extracted by d_ecmwf2roms.m ?

simion1232006
Posts: 60
Joined: Tue Sep 29, 2009 3:50 pm
Location: School of Environment System Engineering,UWA

Re: Surface heat retention, year-round fake "upwelling"

#18 Unread post by simion1232006 »

yes.

prakash22
Posts: 24
Joined: Thu Jan 08, 2015 11:16 pm
Location: iit delhi

Re: Surface heat retention, year-round fake "upwelling"

#19 Unread post by prakash22 »

Hello ROMS Community,
Is there anyone who can suggest me how to give direct surface fluxes like (Uwind, Vwind,Pair,Qair,Tair,lwrad,swrad, Cloudfraction,rain) to the model. I am running one experiment with multiple surface forcing files without activating BULK_FLUXES in header(.h) file.

/*==========Grid Configuration========*/
# define CURVGRID
# define MASKING


/*===========Model Physics=========*/
# define SOLVE3D
# define UV_COR
# define UV_VIS2
# define TS_DIF2
# define UV_ADV
# define LMD_MIXING
# define AVERAGES


/* Equation of State */
# define SALINITY
# define NONLIN_EOS

/*Numerical Scheme options */

# define TS_U3HADVECTION
# define TS_SVADVECTION
# define DJ_GRADPS
# define MIX_S_UV
# define MIX_S_TS
# define SPLINES


/*Vertical Mixing*/
# ifdef LMD_MIXING
# define DIURNAL_SRFLUX
# define SOLAR_SOURCE
# define LMD_RIMIX
# define LMD_CONVEC
# define LMD_NONLOCAL
# define LMD_SKPP
# define LMD_BKPP
# endif


/* Surface Boundary Condition or Forcing */
/*# define QCORRECTION
# define SCORRECTION
#define ANA_SMFLUX /* use if analytical surface momentum stress */
#define ANA_STFLUX /* use if analytical surface temperature flux */
#define ANA_SSFLUX /* use if analytical surface salinity flux */
#define ANA_BTFLUX /* use if analytical bottom temperature flux */
#define MASKING /* use if analytical masking is enabled */
#define EAST_FSCHAPMAN /* use if free-surface Chapman condition*/
#define EAST_M2FLATHER /* use if 2D momentum Flather condition*/
#define EAST_M3RADIATION /* use if 3D momentum radiation condition*/
#define EAST_TRADIATION /* use if tracers radiation condition*/


/*Lateral Forcing*/
# define CLIMATOLOGY
# ifdef CLIMATOLOGY
# define ZCLIMATOLOGY
# define M3CLIMATOLOGY
# define TCLIMATOLOGY
# endif
/* Bottom Boundary Condition */
# define ANA_BSFLUX
# define ANA_BTFLUX
# define UV_LDRAG
/* Open Boundary Conditions */

# define M3CLM_NUDGING
# define TCLM_NUDGING

/* Input/Output & Diagnostics */
# define UV_LDRAG
# define ANA_FSOBC
# define ANA_M2OBC

/* Lateral Boundary Conditions */
# define WESTERN_WALL
# define NORTHERN_WALL
# undef SOUTHERN_WALL
# undef EASTERN_WALL

# undef NO_LBC_ATT




and *****************************************************

in the include (.in) file, I am providing



NFFILES == 14 ! number of unique forcing files

FRCNAME == ./observed_forcing_2013/gom_shflux_era.nc \
./observed_forcing_2013/gom_sms_era.nc \
./observed_forcing_2013/gom_swflux_era.nc \
./observed_forcing_2013/roms_cloud.nc \
./observed_forcing_2013/roms_lwrad.nc \
./observed_forcing_2013/gom_PAR_era.nc \
./observed_forcing_2013/roms_rain.nc \
./observed_forcing_2013/roms_Tair.nc \
./observed_forcing_2013/gom_latent_era.nc \
./observed_forcing_2013/roms_Pair.nc \
./observed_forcing_2013/roms_Qair.nc \
./observed_forcing_2013/gom_sensible_era.nc \
./observed_forcing_2013/roms_wind3.nc \ !
./observed_forcing_2013/roms_swrad.nc




Here with I am enclosing my log file also, by that it appears that model is only taking three forcings from two files those are

GET_2DFLD - surface u-momentum stress, t = 0 00:00:00
(Rec=0000001, Index=1, File: gom_sms_era.nc)
(Tmin= 0.0000 Tmax= 4.8750)
(Min = -3.05809990E-04 Max = 3.77014584E-04)
GET_2DFLD - surface v-momentum stress, t = 0 00:00:00
(Rec=0000001, Index=1, File: gom_sms_era.nc)
(Tmin= 0.0000 Tmax= 4.8750)
(Min = -2.69185409E-04 Max = 2.14005589E-04)
GET_2DFLD - solar shortwave radiation flux, t = 0 00:00:00
(Rec=0000001, Index=1, File: roms_swrad.nc)
(Tmin= 0.0000 Tmax= 4.8750)
(Min = 2.23097122E-06 Max = 8.94695064E-05)
GET_NGFLD - 3D u-momentum western boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)
(Tmin= 283.0000 Tmax= 286.0000)
(Min = -3.89171600E-01 Max = 3.74198481E-02)
GET_NGFLD - 3D v-momentum western boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)
(Tmin= 283.0000 Tmax= 286.0000)
(Min = -5.87784290E-01 Max = 1.12017803E-01)
GET_NGFLD - 3D u-momentum eastern boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)
(Tmin= 283.0000 Tmax= 286.0000)
(Min = -1.33536994E-01 Max = 2.91102707E-01)
GET_NGFLD - 3D v-momentum eastern boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)
(Tmin= 283.0000 Tmax= 286.0000)
(Min = -1.00098896E+00 Max = 3.34956497E-01)
GET_NGFLD - 3D u-momentum southern boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)
(Tmin= 283.0000 Tmax= 286.0000)
(Min = -3.44327301E-01 Max = 1.62116396E+00)
GET_NGFLD - 3D v-momentum southern boundary condition, t = 286 00:00:00
(Rec=0000004, Index=2, File: gom_bry_a_WRF1_Roms.nc)



my question is whether I need to define some cpp option in .h file to give direct multiple forcing files without activating bulkfluxes??
Attachments
roms.log
(419.46 KiB) Downloaded 363 times

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Surface heat retention, year-round fake "upwelling"

#20 Unread post by kate »

Code: Select all

#define ANA_SMFLUX /* use if analytical surface momentum stress */
#define ANA_STFLUX /* use if analytical surface temperature flux */
#define ANA_SSFLUX /* use if analytical surface salinity flux */
With these, I'm surprised ROMS wanted to read surface momentum fluxes. It says you will be providing analytic functions for surface fluxes of momentum, T and S so that you don't need to read the forcing files.

You haven't said why you don't want to activate BULK_FLUXES. The BULK_FLUXES code computes all these surface fluxes from atmospheric fields. If you want to compute these using an alternate scheme, it's still easier to do it with BULK_FLUXES on, then just turn off the call to bulk_flux. That's how I did the CCSM_FLUXES option.

User avatar
wilkin
Posts: 922
Joined: Mon Apr 28, 2003 5:44 pm
Location: Rutgers University
Contact:

Re: Surface heat retention, year-round fake "upwelling"

#21 Unread post by wilkin »

You have been a bit careless with the use of C-language style comments. A comment is opened with /* and closed with */. So the /*#define QCORRECTION is not closed until the end of the line for ANA_SMFLUX. Entering a second opening /* is simply treated as literal comment text.

Code: Select all

/* Surface Boundary Condition or Forcing */
/*# define QCORRECTION
# define SCORRECTION
#define ANA_SMFLUX /* use if analytical surface momentum stress */
#define ANA_STFLUX /* use if analytical surface temperature flux */
#define ANA_SSFLUX /* use if analytical surface salinity flux */
If you use a language sensitive editor like Aquamacs or Emacs it becomes obvious.

/* Surface Boundary Condition or Forcing */
/*# define QCORRECTION
# define SCORRECTION
#define ANA_SMFLUX /* use if analytical surface momentum stress */

#define ANA_STFLUX /* use if analytical surface temperature flux */
#define ANA_SSFLUX /* use if analytical surface salinity flux */

So you have not defined ANA_SMFLUX or BULK_FLUXES so ROMS reads stress from netcdf files.

If you review the CPP options printed to stdout (the logfile) you will find ANA_SMFLUX is not there. You should always review this list to check that what you got was what you asked for.
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu

lalvarez
Posts: 106
Joined: Wed Feb 03, 2010 6:59 pm
Location: Universidad Autonoma de Baja California Sur

Re: Surface heat retention, year-round fake "upwelling"

#22 Unread post by lalvarez »

Hello

I´m not quite wise at all. Are you calculating for the 2-D eq´s each second, right?

97822080 ntimes Number of timesteps for 3-D equations.
30.000 dt Timestep size (s) for 3-D equations.
30 ndtfast Number of timesteps for 2-D equations between
each 3D timestep.


Could be that a problem?

Post Reply