MOM5 icon indicating copy to clipboard operation
MOM5 copied to clipboard

Add option to ignore salinity restoring limit

Open aidanheerdegen opened this issue 7 years ago • 10 comments

@russfiedler suggested we add an option to ignore max_delta_salinity_restore in cases where the salinity falls outside some user defined limits.

aidanheerdegen avatar Nov 28 '17 06:11 aidanheerdegen

This would involve changing line 4055 in ocean_sbc.F90 from

              tmp_delta_salinity = sign(1.0,tmp_delta_salinity) &

*min(abs(tmp_delta_salinity),max_delta_salinity_restore)

to

              if (T_prog(index_salt)%field(i,j,1,taum1) > salt_limit_lower .or .  T_prog(index_salt)%field(i,j,1,taum1) < salt_limit_upper ) tmp_delta_salinity = sign(1.0,tmp_delta_salinity) &

*min(abs(tmp_delta_salinity),max_delta_salinity_restore)

salt_limit_lower ans salt_limit_upper would be namelist variable. Defaults would be, say, 0 and 100 in order to have no effect. This would allow strong restoration to kick in automatically when things get very fresh (Amazon, Russian rivers) while allowing weak restoration elsewhere.

russfiedler avatar Nov 28 '17 06:11 russfiedler

Good idea.

StephenGriffies avatar Nov 28 '17 12:11 StephenGriffies

Thanks @russfiedler.

Just so it is documented, @StephenGriffies had this to say:

The max salinity option was based on open ocean regions, largely in the Gulf Stream where we are unhappy about advecting too much fresh water into the deep water formation region. But for regions near boundaries and where salinity is going haywire, then we should over-ride the max salinity restore option.

Is it better to set absolute limits on when to limit the salinity restoring? Another option is to check for the absolute value difference between the restoring value and current value. So something like this:

if (tmp_delta_salinity < salt_restore_limit) &
     tmp_delta_salinity = sign(1.0,tmp_delta_salinity) &
        *min(abs(tmp_delta_salinity),max_delta_salinity_restore)

or would that affect the Gulf Stream too much @StephenGriffies. Can you recall how large the differences were in that region?

aidanheerdegen avatar Nov 28 '17 22:11 aidanheerdegen

@aidanheerdegen I think that should be a check on abs(tmp_delta_salinity) < salt_restore_limit). I think I prefer explicit high and low limits as it allows more control and either one can effectively be ignored if required.

russfiedler avatar Nov 28 '17 23:11 russfiedler

Yes you're right. Forgot the abs().

I have made the code changes you suggested, and checked they compiled. Can others take a look?

https://github.com/mom-ocean/MOM5/pull/204

Do we want to make a similar change when user_waterflux is true?

aidanheerdegen avatar Nov 29 '17 00:11 aidanheerdegen

The section we've added to is .NOT. (use_waterflux .and. .not. restore_as_salt_flux ) which is the same as restore_as_salt_flux .or. (.not. use_waterflux .and. .not. restore_as_salt_flux) The second part of this condition in this form is irrelevant so it's really just restore_as_salt_flux The other section of code is the odd case of adjusting the waterflux to reflect the salinity delta. You could make the change for completeness but I don't think anybody would choose that combination.

russfiedler avatar Nov 29 '17 01:11 russfiedler

Fine.

So, has anyone got a nice fast 1 degree test case for this with salinity issues? @aekiss @nicjhan @AndyHoggANU

aidanheerdegen avatar Nov 29 '17 01:11 aidanheerdegen

Playing catch-up this year. I believe the max_delta_salinity_restore = 0.5 was inspired by experience of Claus Boening (GEOMAR) to stop too much freshwater from the East Greenland Current flooding/inhibiting the convection in the Labrador Sea, and hence reducing AMOC strength.

sjmarsland avatar Feb 28 '18 08:02 sjmarsland

That sounds right https://github.com/mom-ocean/MOM5/blob/d7ba13a3f364ce130b6ad0ba813f01832cada7a2/src/mom5/ocean_core/ocean_sbc.F90#L162-L169

aekiss avatar May 24 '24 05:05 aekiss

Yep, that is correct, though it was Helge Drange who originally proposed the max restoring.

StephenGriffies avatar May 24 '24 10:05 StephenGriffies