[MITgcm-devel] ICE workshop - recap and homework!

Gael Forget gforget at MIT.EDU
Wed Mar 7 17:38:13 EST 2012


Martin et al,

>> old def/undef SEAICE_VARIABLE_FREEZING_POINT : now unified way of specifying sea water freezing point. So it should always be defined and the rest is done with run time params. Changed default.
> This CPP-flag should be retired and removed in the near future

(the following should answer the similar question in Jean-Michel's and Michael's emails).

I want to give it say 3 months (more if you want). Early June I would remove : 
SEAICE_MULTICATEGORY							(now merged)
MCPHEE_OCEAN_ICE_HEAT_FLUX					(now merged)
GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR 	(now merged)
SEAICE_VARIABLE_FREEZING_POINT				(now merged)
SEAICE_VARIABLE_SALINITY code					(-> SItracer soon)
SEAICE_GROWTH_LEGACY	code					(-> default change soon)
(And may be it would be a good time to remove old stuff from the dynamics part?)

SEAICE_VARIABLE_FREEZING_POINT etc. are only kept as a tool to try and avoid tricking lesser informed users.
I am talking about users that were NOT in the room last week, and that we are not necessarily aware of. Ideally they should 
not have to dig deep in the cvs or devel history to find the reason why their result change significantly next time they update 
and defaults change. The one time stop strategy aims to make users aware of defaults changes, and provide guidance.  
I am not saying the following is fullproof or even that it is the best strategy, but it is safer than keeping default
changes under the radar I believe. The basic scenario for e.g. SEAICE_VARIABLE_FREEZING_POINT is
	- user was already using it. That is now the new default. Nothing to worry about.
	- user was running the old default (cst freezing point), and may be never worried about the CPP switch.
	  Now user updates MITgcm and leaves code/SEAICE_OPTIONS.h untouched. Model stops and prints
		"SEAICE_CHECK: SEAICE_VARIABLE_FREEZING_POINT option "
		"is now the unified way of specifying sea water freezing point."
		"To recover old constant freezing : set SEAICE_tempFrz0 = -1.96 and"
		"SEAICE_dTempFrz_dS = 0. and define SEAICE_VARIABLE_FREEZING_POINT"
I followed the same logic for the other CPPs you list below.


>> -----------------------------------------------------------------------------------------
>> old default : SEAICE_tempFrz0 = -1.96, SEAICE_dTempFrz_dS = 0.
>> new default : SEAICE_tempFrz0 = 0.0901, SEAICE_dTempFrz_dS = -0.0575
>> ?? do we have a precise reference for 0.0901 + S * SEAICE_dTempFrz_dS ??
> Good question. The unesco eos (Fofonoff and Millard 1983) says this:
> a0 = -0.0575;
> a1 = 1.710523e-3;
> a2 = -2.154996e-4;
> b  = -7.53e-4;
> fp = (a0.*S + a1.*S.*sqrt(S) + a2.*S.^2 + b.*P) / 1.00024;
> 
> Holland and Jenkins (1999) cite
> Millero, F. J. (1978): Annex 6: Freezing point of seawater. Eighth Report of the Joints Panel of Oceanographic Tables and Standards, UNESCO Technical Papers in Marie Science, 31 pp.
> for a linear formula (their eq (1)): Tf=a*S+b+c*p, with a=-5.73e-2degC/psu, b=9.39e-2degC, c=7.53e-8 degC/Pa.
> 
> So that's slightly different (and I actually use a=-5.75e2, b=9.01e-2, c=7.61e-8 in shelfice_thermodynamics.F), what does that tell us?
Thanks for looking this up. My guess is that we got a linear version 
of Fofonoff and Millard 1983 then (SEAICE_dTempFrz_dS= -0.0575).
Shall we add this ref next to defaults in readparams ?

>> def/undef SEAICE_MULTICATEGORY : no change to default. So use CPP as before. ...
>> But added run time switch : set SEAICE_multDim to 1 or 7, regardless of CPP. It is assumed 
>> that user provide pickup accordingly, as before. Pickup code will likely need consolidation.
> After the pickup code is sorted out this CPP-flag should also be retired, right?
If somebody else wants to take care of the pickups that's great ;)
As far as the CPP, again, I vote for retiring the bunch of old stuff late May/early June.

>> old def/undef MCPHEE_OCEAN_ICE_HEAT_FLUX & GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR .... 
> Just to make sure: If I want to reproduce the old configuration of
> #define MCPHEE_OCEAN_ICE_HEAT_FLUX
> #define GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR
> I have to set
> SEAICE_mcPheePiston = 0.000875, (this is default and need not be set)
> SEAICE_frazilFrac=0., (this is not default)
> SEAICE_mcPheeTaper=0.92, (this is not default)
> SEAICE_mcPheeStepFunc=.false., (this is default and implies the linear function only if mcPheeTaper .ne. 0)
Perfectly correct.

>> ?? do we have a precise reference for 0.000875 and 0.92 ??

Ian can you help us with that one?

> For the baseline experiments we agreed on frazilFrac = 1., so that means for the baseline data.seaice we now have:
>>> cat data.seaice
> &SEAICE_PARM01
> # SEAICEheatConsFix  = .TRUE.,
>  SEAICE_no_slip     = .TRUE.,
>  SEAICEadvScheme    = 7,
> # for adjoint simulations you will need
> # SEAICEadvScheme    = 30,
>  SEAICE_drag        = 0.001,
>  SEAICE_wetAlbTemp  = 0.0,
>  SIsal0             = 4.0,
> # this is a temporary set of parameters to allow super-cooled water
> # to turn into sea-ice until the interior freezing/frazil capabilities have
> # matured
>  SEAICE_mcPheeTaper=0.92,
> # Depending on vertical resolution this angle should have a value
> # > 0 (e.g., 25deg for drF(1)=10m,)
> # SEAICE_waterTurnAngle = 0.0,
> &
> Please confirm, and once confirmed, we can make another packaged set of SEAICE_OPTIONS.h, data.seaice, and data.diagnostics
I confirm. 

Thanks a lot for following through with this. 

Cheers,
Gael





More information about the MITgcm-devel mailing list