Marchesiello's RSUP3 in ROMS?

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

Marchesiello's RSUP3 in ROMS?

#1 Unread post by lolhsson »

Hi everyone,

Has Patrick Marchesiello (et al 2009)'s RSUP3 advection scheme to address spurious diapycnal mixing in sigma coordinate models been implemented in ROMS-Rutgers by anyone?

The 2009 paper suggests it was going to be, but I don't see it in the latest release's cppdefs options or on the myroms.org wiki. (If it's there and I missed it, gosh, that would be both an embarrassing revelation and a happy one in its ultimate outcome.) But I figured it couldn't hurt to ask if someone has a version lying around.

I am currently using 4th order Akima to address my problems but it seems exceedingly sensitive to bathymetry, requiring a degree of smoothing in places that I fear is losing too much physicality. I may stick with it anyway, but at the very least I'd be interested in comparing Akima/RSUP3 directly and analyzing their differences, ideally without porting my entire operation over to another version of ROMS...

Best,
Liz

User avatar
patrickm
Posts: 26
Joined: Fri Apr 30, 2004 6:41 pm
Location: IRD, FRANCE
Contact:

Re: Marchesiello's RSUP3 in ROMS?

#2 Unread post by patrickm »

Since the response is slow to come, I will give my understanding of the status of RSUP3. The RSUP3 scheme presented in Marchesiello et al. (2009) was first implemented in the ROMS_AGRIF version and we had some success with it on various applications. Then, a form of it was implemented in the Rutgers code but I was told of stability problems with this implementation (bug or different time-stepping setting different stability range, I don't know).

Stability was always a problem with the first RSUP3 scheme because of large vertical fluxes associated with the rotation of hyperdiffusion and we originally used a tappering method (limitation of hyperdiffusivity) to prevent CFL problems. A better fix of this problem came with the solution proposed by Florian Lemarié and Laurent Debreu (Lemarié et al., 2012) who implemented a stabilizing correction to RSUP3, now a semi-implicit scheme (Florian also improved the spatial discretization of biharmonic diffusion with a complete analysis of its performances). This scheme is in ROMS-AGRIF and i think in ROMS-UCLA, but not in ROMS-RUTGERS yet.

Note that there is no available alternative to RSUP3 for preserving water masses in sigma models when steep bathymetric slopes are involved. We tried higher order advection-diffusion schemes (5th order) but they insufficiently reduce spurious diapycnal diffusion. Non-oscillatory schemes are even worse as spurious oscillations are removed at the expense of increased numerical diffusion. So this is a major concern for regional models at the level or worse than pressure gradient errors ...

Patrick

xiaozhu557
Posts: 62
Joined: Fri Sep 11, 2009 1:48 pm
Location: nmefc

Re: Marchesiello's RSUP3 in ROMS?

#3 Unread post by xiaozhu557 »

Hello all,
I would like to follow this very old topic. Since I have faced the spurious diapycnal diffusion problem in the South China Sea. I have run my model with define

Code: Select all

#define TS_U3HADVECTION
#define TS_C4VADVECTION
It can run but with the spurious diapycnal diffusion problem that the temperature will increase 1-2℃ within 1 year in 1000m layer for the climatology run. Than I try to use the options
#define UV_U3ADV_SPLIT
#define TS_U3ADV_SPLIT
And set

Code: Select all

TNU4 == 2*1.0D9
VISC4== 1.0D9
Then the model goes blowing-up with running 3 steps only

Code: Select all

0 0001-01-01 00:00:00.00  1.317395E-16  2.162950E+04  2.162950E+04  3.634390E+16
                     (468,001,34)  0.000000E+00  4.216769E-08  0.000000E+00  2.970132E-06
      DEF_AVG     - creating  average      file, Grid 01: output_splitera5/scs50_avg_0001.nc
         1 0001-01-01 00:03:00.00  7.124040E-06  2.162953E+04  2.162953E+04  3.634400E+16
                     (477,686,50)  3.285266E-03  5.117837E-03  0.000000E+00  3.730852E-01
         2 0001-01-01 00:06:00.00  1.380456E-05  2.162956E+04  2.162956E+04  3.634408E+16
                     (107,001,50)  4.947250E-04  4.873252E-03  5.190724E-01  4.959849E-01
         3 0001-01-01 00:09:00.00  1.425817E-04  2.162959E+04  2.162959E+04  3.634415E+16
                     (605,001,02)  8.576908E+00  2.260596E-03  1.050816E-01  1.828724E+02
 Found Error: 01   Line: 302      Source: ROMS/Nonlinear/main3d.F
 Found Error: 01   Line: 274      Source: ROMS/Drivers/nl_ocean.h

 Blowing-up: Saving latest model state into  RESTART file

      WRT_RST     - wrote re-start    fields (Index=1,2) in record = 0000001
Any suggestions? Thanks.

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

Re: Marchesiello's RSUP3 in ROMS?

#4 Unread post by kate »

The easiest thing to try is a shorter timestep. Have you tried that?

xiaozhu557
Posts: 62
Joined: Fri Sep 11, 2009 1:48 pm
Location: nmefc

Re: Marchesiello's RSUP3 in ROMS?

#5 Unread post by xiaozhu557 »

kate wrote:The easiest thing to try is a shorter timestep. Have you tried that?
Yes, I have tried. The original

Code: Select all

DT=180.0 
NDTFAST=30
It can work. But for the new scheme, I have tried it with

Code: Select all

dt=30.0
It still can not work. It just can run 3 steps.

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

Re: Marchesiello's RSUP3 in ROMS?

#6 Unread post by kate »

Have you looked to see where and how it is blowing up? Is it going for three steps no matter what the timestep?

xiaozhu557
Posts: 62
Joined: Fri Sep 11, 2009 1:48 pm
Location: nmefc

Re: Marchesiello's RSUP3 in ROMS?

#7 Unread post by xiaozhu557 »

When the time step is 120s, it just run three steps, while the time step is 10s, it run five steps.

It always looks like occur around the open boundary with the maximum velocity over 20m/s, sometime the maximum velocity is over 160 m/s. The places with the maximum anormaly always occur near the land boundary along the open boundary (please see figure 2-6), especially for a small bay, river or strait. I would like to know, how many grids should I set to be ocean mask at least across a bay or river channel in a row or colloum, two, three or four? (please see figure 1 for the area a, b, c) Or it may depend on the scheme which I have selected for advection or diffusion? And what is the difference between TS_C4VADVECTION/TS_U3HADVECTION and TS_C4HADVECTION/TS_C4VADVECTION for land/sea grid mask settings? Since my model can work well for TS_C4VADVECTION/TS_U3HADVECTION but not TS_C4HADVECTION/TS_C4VADVECTION/TS_U3ADV_SPLIT.

I have also uploaded my running screen output file scs50.out.

Thanks for your help Kate.
Attachments
rho mask
rho mask
The u speed distribution in the whole domain
The u speed distribution in the whole domain
For the fouth area with u speed over 5.0 m/s in th southwest corner
For the fouth area with u speed over 5.0 m/s in th southwest corner
For the third area with u speed over 10.0 m/s in the north open boundary
For the third area with u speed over 10.0 m/s in the north open boundary
For the second area with u speed over 5.0 m/s in the southeast corner
For the second area with u speed over 5.0 m/s in the southeast corner
For the first area with u speed over 20m/s in the south open boundary
For the first area with u speed over 20m/s in the south open boundary

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

Re: Marchesiello's RSUP3 in ROMS?

#8 Unread post by kate »

Have you tried the split advection scheme on TS only?

For your ellipse a, you may have boundary water too close to the land mask. Terms in the OBC schemes can include the first and second points in from the boundary and if the latter is land, it is not well-behaved.

Your ellipses b and d have one-grid-wide bays, which Hernan has told us to never use. In my experience, you can often get away with them, but I haven't tried the split advection scheme. There could be residual bugs next to land for all I know.

xiaozhu557
Posts: 62
Joined: Fri Sep 11, 2009 1:48 pm
Location: nmefc

Re: Marchesiello's RSUP3 in ROMS?

#9 Unread post by xiaozhu557 »

Yes, I have tried the split advection scheme on TS only at first, but got the same blow-up problem.

Do you have any other suggestion to figure out the spurious diapycnal mixing problem with ROMS?

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

Re: Marchesiello's RSUP3 in ROMS?

#10 Unread post by kate »

You might try it first in the UPWELLING problem to see if it works when there is no land mask. If so, then try one of the simpler, smaller domains with a land mask. Build your own small tests, with and without land. If it is some trouble with the land mask, go through the equations in the paper and in the code. How should things be when you approach land? What is the footprint of the algorithm and what needs to get fixed next to land?

Post Reply