doubt about SRelaxation

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
mashinde
Posts: 135
Joined: Mon Jun 22, 2009 3:46 pm
Location: Indian Institute of Tropical Meteorology, Pune, INDIA

doubt about SRelaxation

#1 Unread post by mashinde »

Hi All,

I am using SRELAXATION ON in cppdefs.h for salinity relaxation and defining in ocean.in file as ..

! Nudging/relaxation time scales, inverse scales will be computed
! internally, [1:Ngrids].

TNUDG == 2*30.0d0 ! days.

(1) Will it relax model salinity towards climatology in entire domain or at open boundaries or both ?
(2) What is the best number to use for relaxing say for 10 years with bulk formula ?
(3) Will this also relax model Temperature ?

If I am wrong , then please tell me how can do it ?

Thanks

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

Re: doubt about SRelaxation

#2 Unread post by kate »

For this sort of question, it is always best to just look at the source code. There is a similar option called SCORRECTION and that's what we have opted to use. SRELAXATION sets the surface salt flux to a nudging to sss climatology while SCORRECTION adds that term to the existing salt flux.

It only nudges salt, not temperature. It needs a sea surface salinity field to nudge to and it nudges over the full domain.

In my branch, we have added some stuff to make the nudging stronger, since we're setting Tnudg to be what we want for the boundary conditions. Also, there's a threshold so that the nudging never gets too strong:

Code: Select all

#   elif defined SRELAXATION
          stflx(i,j,isalt)=-Tnudg(isalt,ng)*Hz(i,j,N(ng))*              &
#     if defined NEP5 || defined BERING || defined CHUKCHI
! 60 days from Tnudg of 360 days
     &                     6.0_r8*                                      &
#     elif defined CORAL || defined NEP6 || defined NWA
! 90 days from Tnudg of 360 days
     &                     4.0_r8*                                      &
#     endif
#     if defined CORAL || defined NEP6 || defined NWA
! limit mismatch to avoid too strong relaxation fluxes
     &                     MIN(sss_mismatch_threshold,                  &
     &                         (t(i,j,N(ng),nrhs,isalt)-sss(i,j)))
#     else
     &                     (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
#     endif
What threshold, you ask?

Code: Select all

#  if defined SCORRECTION || defined SRELAXATION
#   if defined CORAL
      real(r8), parameter :: sss_mismatch_threshold = 0.2_r8
#   elif defined NEP6 || defined NWA
      real(r8), parameter :: sss_mismatch_threshold = 0.1_r8
#   endif
#  endif
These snippets are from set_vbc.F.

mashinde
Posts: 135
Joined: Mon Jun 22, 2009 3:46 pm
Location: Indian Institute of Tropical Meteorology, Pune, INDIA

Re: doubt about SRelaxation

#3 Unread post by mashinde »

Thanks for reply.

I have another doubts
(1) So to imply SRelaxation and SCorrection, ROMS needs salinity forcings files irrespective of bulk forcings.
(2) If I am using 6 hourly atmospheric forcing then what will be Tnudg in days ? how to determine this.
(3) What will happen if I don't apply SRelaxation and SCorrection, I have seen many papers on ocean modeling and they apply salinity relaxation and also sst SRelaxation. What is the best and reliable method to follow?

Thanking you

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

Re: doubt about SRelaxation

#4 Unread post by kate »

mashinde wrote:(1) So to imply SRelaxation and SCorrection, ROMS needs salinity forcings files irrespective of bulk forcings.
Yes, a file containing SSS.
(2) If I am using 6 hourly atmospheric forcing then what will be Tnudg in days ? how to determine this.
Tnudg in days comes in via the ocean.in file. It is the same Tnudg for open boundaries and for this SSS nudging. Once Tnudg is read, it is converted to 1/time units.
(3) What will happen if I don't apply SRelaxation and SCorrection, I have seen many papers on ocean modeling and they apply salinity relaxation and also sst SRelaxation. What is the best and reliable method to follow?
In an ideal world, we will have accurate fields of rainfall and evaporation and will therefore not need to do any salinity nudging. Meanwhile, since our largest salinity errors are coming from surface forcing, we only nudge at the surface. You can certainly have no nudging if your model runs are shorter than your salinity drift timescales. Are you running for two weeks or for twenty years? It can affect the choices you make.

mashinde
Posts: 135
Joined: Mon Jun 22, 2009 3:46 pm
Location: Indian Institute of Tropical Meteorology, Pune, INDIA

Re: doubt about SRelaxation

#5 Unread post by mashinde »

(1) Yes, I have the SSS monthly climatology file from WOA.

(2) I still did not understand clearly the physical role of Tnudge and Relaxation and timescale and how to do it in ROMS code, only enabling SRelaxation in cppdef.h is not sufficient, I think. Suppose I want to do SRelax SSS for 10 days for 6 hourly atmospheric forcings, then how can I set this. Is there any thumb rule to determine Srelaxation time in association with frequency of bulk forcing.

(3) I am running the model for 10 years with 6 hourly forcings.


regards

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

Re: doubt about SRelaxation

#6 Unread post by kate »

All you have to do is turn on SRELAXATION and set TNUDG in your ocean.in file:

Code: Select all

! Nudging/relaxation time scales, inverse scales will be computed
! internally, [1:Ngrids].

       TNUDG == 2*360.0d0                    ! days 
So here, I'm setting my relaxation for both temperature and salt to be 360 days (the two here is once for each field). You can set yours to ten days.

The problem I have is that TNUDG is also being used for boundary conditions. I want it to be 360 days for the boundary, but 90 days for SCORRECTION. If you aren't using TNUDG in your boundary condition, then just pick what you want for SRELAXATION in ocean.in.

Li.Ang

Re: doubt about SRelaxation

#7 Unread post by Li.Ang »

kate wrote:All you have to do is turn on SRELAXATION and set TNUDG in your ocean.in file:

Code: Select all

! Nudging/relaxation time scales, inverse scales will be computed
! internally, [1:Ngrids].

       TNUDG == 2*360.0d0                    ! days 
So here, I'm setting my relaxation for both temperature and salt to be 360 days (the two here is once for each field). You can set yours to ten days.

The problem I have is that TNUDG is also being used for boundary conditions. I want it to be 360 days for the boundary, but 90 days for SCORRECTION. If you aren't using TNUDG in your boundary condition, then just pick what you want for SRELAXATION in ocean.in.
Does the SCORRECTION conflict with the SRELAXATION in the .h file?

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

Re: doubt about SRelaxation

#8 Unread post by kate »

Yes, it doesn't make sense to have both. The best way to check is look at the code:

Code: Select all

#   if defined SCORRECTION
          stflx(i,j,isalt)=stflx(i,j,isalt)*t(i,j,N(ng),nrhs,isalt)-    &   
     &                     Tnudg(isalt,ng)*Hz(i,j,N(ng))*               &   
     &                     (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
#   elif defined SRELAXATION
          stflx(i,j,isalt)=-Tnudg(isalt,ng)*Hz(i,j,N(ng))*              &   
     &                     (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
#   else
          stflx(i,j,isalt)=stflx(i,j,isalt)*t(i,j,N(ng),nrhs,isalt)
#   endif
If you have both, it only applies SCORRECTION.

Post Reply