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

Martin Losch Martin.Losch at awi.de
Wed Mar 7 04:06:22 EST 2012


Hi Gael,

thanks for the explanations. I have questions/comments below:
On Mar 7, 2012, at 8:26 AM, Gael Forget wrote:

> Hi Martin et al,
> 
> I am moving some of the "ICE workshop - recap and homework!" thread that followed from the MIT ice workshop to devel list.
> 
>> Further, for checking the conservation properties in my configuration it would be helpful if Gael could provide a data.diagnostics.
> Will follow.
> 
>> About the seaice defaults: I am not clear about the turbulent flux formulae. The implementation that I updated to today requires that I set
>> #define MCPHEE_OCEAN_ICE_HEAT_FLUX
>> #define GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR
>> Do we need to set anything else in data.seaice in order to get the agreed parameter set?
> I know it's confusing even for me at this point. It took me a while to figure out a more of less adequate way (see below)
> of unifying the various flavours of this term's specification that had been added over the years. I mostly hope that this 
> merge keeps non-specialists of pkg/seaice from overlooking default changes when they update their copy of MITgcm.
> 
> Below I give explanations  and guidelines (correct ones I hope) for using the new run time parameters.
> I do the same for SEAICE_MULTICATEGORY and SEAICE_VARIABLE_FREEZING_POINT.
> That information is also in SEAICE_PARAMS.h and/or seaice_check.F and/or in the standard output.
> 
> Cheers,
> Gael
> 
> 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
> -----------------------------------------------------------------------------------------
> 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?

> 
> 
> 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?
> ---------------------------------------------------------------------------------------------------------
> 
> 
> old def/undef MCPHEE_OCEAN_ICE_HEAT_FLUX & GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR : 
> now unified way of specifying the turb. ocean-ice flux. So the CPPs should always be defined and the rest is
> done with run time params. Old run time params can still be used. Changed default.
> ----------------------------------------------------------------------------------------------------------------------------
> defaults etc :
> -- old default    : SEAICE_mcPheePiston = drf(1)/SEAICE_deltaTtherm, SEAICE_frazilFrac=1., SEAICE_mcPheeTaper=0.,
> -- new default    : SEAICE_mcPheePiston = 0.000875, SEAICE_frazilFrac=1., SEAICE_mcPheeTaper=0.,
> -- baseline params : SEAICE_mcPheePiston = 0.000875, SEAICE_frazilFrac=1., SEAICE_mcPheeTaper=0.92,
> -- old mcphee cpp : SEAICE_mcPheePiston = 0.000875, SEAICE_frazilFrac=0., SEAICE_mcPheeTaper=0.92,
> -- SEAICE_mcPheeStepFunc always false (old GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR).
> conversions of old to new params :
> -- SEAICE_mcPheePiston = dRf(kSurface)/SEAICE_gamma_t
> -- SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t_frz
> -- SEAICE_mcPheePiston = SEAICE_availHeatFrac * dRf(kSurface)/SEAICE_deltaTtherm
> -- SEAICE_frazilFrac = SEAICE_availHeatFracFrz
> ?? do we have a precise reference for 0.000875 and 0.92 ??
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)
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

Martin




More information about the MITgcm-devel mailing list