Opened 8 years ago

Closed 8 years ago

Last modified 3 years ago

#1053 closed Bug (fixed)

Bug in UBS for tracers

Reported by: gm Owned by: gm
Priority: normal Milestone:
Component: OCE Version: release-3.5
Severity: Keywords: UBS release-3.4
Cc:

Description

There is a bug in the UBS scheme applied on tracers (traadv_ubs.F90) which has been introduced in Changeset 2528

the following lines in Revision 1528:

#if defined key_zco
   zfui = 0.5 * e2u(ji,jj) * pun(ji,jj,jk)
   zfvj = 0.5 * e1v(ji,jj) * pvn(ji,jj,jk)
#else
   zfui = 0.5 * e2u(ji,jj) * fse3u(ji,jj,jk) * pun(ji,jj,jk)
   zfvj = 0.5 * e1v(ji,jj) * fse3v(ji,jj,jk) * pvn(ji,jj,jk)
#endif
   ! upstream scheme
   zfp_ui = zfui + ABS( zfui )
   zfp_vj = zfvj + ABS( zfvj )
   zfm_ui = zfui - ABS( zfui )
   zfm_vj = zfvj - ABS( zfvj )
   ! centered scheme
   zcenut = zfui * ( tn(ji,jj,jk) + tn(ji+1,jj  ,jk) )
   zcenvt = zfvj * ( tn(ji,jj,jk) + tn(ji  ,jj+1,jk) )
   zcenus = zfui * ( sn(ji,jj,jk) + sn(ji+1,jj  ,jk) )
   zcenvs = zfvj * ( sn(ji,jj,jk) + sn(ji  ,jj+1,jk) )
   ! mixed centered / upstream scheme
   zwx(ji,jj,jk) = zcenut - zfp_ui * zltu(ji,jj,jk) -zfm_ui * zltu(ji+1,jj,jk)
   zwy(ji,jj,jk) = zcenvt - zfp_vj * zltv(ji,jj,jk) -zfm_vj * zltv(ji,jj+1,jk)
   zww(ji,jj,jk) = zcenus - zfp_ui * zlsu(ji,jj,jk) -zfm_ui * zlsu(ji+1,jj,jk)
   zwz(ji,jj,jk) = zcenvs - zfp_vj * zlsv(ji,jj,jk) -zfm_vj * zlsv(ji,jj+1,jk)

have been replace in Revision 2528 by

! upstream transport
zfp_ui = pun(ji,jj,jk) + ABS( pun(ji,jj,jk) )
zfm_ui = pun(ji,jj,jk) - ABS( pun(ji,jj,jk) )
zfp_vj = pvn(ji,jj,jk) + ABS( pvn(ji,jj,jk) )
zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) )
! centered scheme
zcenut = 0.5 * pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) )
zcenvt = 0.5 * pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) )
! UBS scheme
zwx(ji,jj,jk) = zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk) 
zwy(ji,jj,jk) = zcenvt - zfp_vj * zltv(ji,jj,jk) - zfm_vj * zltv(ji,jj+1,jk) 

where pun, pvn, pwn are now the 3 ocean transport components passed in dummy argument

by doing so, a factor 0.5 is missing in the computation of the upstream transports (zfp_… and zfm_…), so the diffusive part of the UBS scheme is overestimated by a factor of 2.

Solution (to be done both in v3.4.1 and v3.5 alpha) :

! upstream transport (x2)
zfp_ui = pun(ji,jj,jk) + ABS( pun(ji,jj,jk) )
zfm_ui = pun(ji,jj,jk) - ABS( pun(ji,jj,jk) )
zfp_vj = pvn(ji,jj,jk) + ABS( pvn(ji,jj,jk) )
zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) )
! 2nd order centered advective fluxes (x2)
zcenut = pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) )
zcenvt = pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) )
! UBS advective fluxes
zwx(ji,jj,jk) = 0.5 * ( zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk) )
zwy(ji,jj,jk) = 0.5 * ( zcenvt - zfp_vj * zltv(ji,jj,jk) - zfm_vj * zltv(ji,jj+1,jk) )

Commit History (2)

ChangesetAuthorTimeChangeLog
3788gm2013-02-10T13:14:59+01:00

dev_v3_4_STABLE_2012: #1049 & #1053 : bug corrections in traadv_eiv.F90 (AR5 diag) and in traadv_ubs.F90 (UBS scheme), resp.

3787gm2013-02-10T13:06:34+01:00

dev_MERGE_2012: #1049 & #1053 : bug corrections in traadv_eiv.F90 (AR5 diag) and in traadv_ubs.F90 (UBS scheme), resp.

Change History (6)

comment:1 Changed 8 years ago by gm

  • Resolution set to fixed
  • Status changed from new to closed

The bug has been corrected (together with issues described in Ticket #1049)

see Changeset 3788 for branches/2012/dev_v3_4_STABLE_2012 (v3.4.1 stable)

see Changeset 3787 for branches/2012/dev_MERGE_2012 (v3.5 alpha)

Note that the later two change set also contain a bug fix on UBS scheme (see ticket #1053)

Gurvan

comment:2 Changed 4 years ago by nicolasmartin

  • Keywords and removed

comment:3 Changed 4 years ago by nicolasmartin

  • Keywords nemo_v3_4* added; v3.4.1 removed

comment:4 Changed 4 years ago by nicolasmartin

  • Keywords nemo_v3_5* added; v3.5 removed

comment:5 Changed 3 years ago by nemo

  • Keywords release-3.4* added; nemo_v3_4* removed

comment:6 Changed 3 years ago by nemo

  • Keywords release-3.4 added; nemo_v3_5* release-3.4* removed
Note: See TracTickets for help on using tickets.