doubt about SRelaxation
-
- Posts: 135
- Joined: Mon Jun 22, 2009 3:46 pm
- Location: Indian Institute of Tropical Meteorology, Pune, INDIA
doubt about SRelaxation
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
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
Re: doubt about SRelaxation
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:
What threshold, you ask?
These snippets are from set_vbc.F.
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
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
-
- Posts: 135
- Joined: Mon Jun 22, 2009 3:46 pm
- Location: Indian Institute of Tropical Meteorology, Pune, INDIA
Re: doubt about SRelaxation
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
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
Re: doubt about SRelaxation
Yes, a file containing SSS.mashinde wrote:(1) So to imply SRelaxation and SCorrection, ROMS needs salinity forcings files irrespective of bulk forcings.
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.(2) If I am using 6 hourly atmospheric forcing then what will be Tnudg in days ? how to determine this.
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.(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?
-
- Posts: 135
- Joined: Mon Jun 22, 2009 3:46 pm
- Location: Indian Institute of Tropical Meteorology, Pune, INDIA
Re: doubt about SRelaxation
(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
(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
Re: doubt about SRelaxation
All you have to do is turn on SRELAXATION and set TNUDG in your ocean.in file:
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.
Code: Select all
! Nudging/relaxation time scales, inverse scales will be computed
! internally, [1:Ngrids].
TNUDG == 2*360.0d0 ! 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.
Re: doubt about SRelaxation
Does the SCORRECTION conflict with the SRELAXATION in the .h file?kate wrote:All you have to do is turn on SRELAXATION and set TNUDG in your ocean.in file: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.Code: Select all
! Nudging/relaxation time scales, inverse scales will be computed ! internally, [1:Ngrids]. TNUDG == 2*360.0d0 ! 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.
Re: doubt about SRelaxation
Yes, it doesn't make sense to have both. The best way to check is look at the code:
If you have both, it only applies SCORRECTION.
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