[MITgcm-devel] status

Gael Forget gforget at MIT.EDU
Fri Feb 25 08:09:54 EST 2011


Hi Pierre and Dimitris,

sorry for the terminology confusion. In the first place, I should have specified that 
I was focusing on the "#define SEAICE_AGE_VOL" case. Below I shall try to be more 
precise and expend my earlier comment. Hopefully I am not going to add confusion…

Cheers, Gael

==== #define SEAICE_AGE_VOL case ====

Let me denote the age of the ice material as 'a' (the intensive property, in seconds) 
and the total age of the ice in a grid cell as 'aExt' (the extensive property, in s*kg),
so that aExt =a*HACTUAL*(AREA*RAC)*RHOICE=a*HEFF*RAC*RHOICE.
The model iceAge variable is the 'effective' age iceAge=a*AREA. 

In this case, unless I am mistaken, seaice_advection expects 
to receive a*HEFF (omitting the RHOICE constant)  whereas it 
receives a*AREA. This is the problem that we overlooked when 
I started coding the '#define SEAICE_AGE_VOL' case with Pierre.

==== #undef SEAICE_AGE_VOL case ====

Now 'a' (still in seconds) is a tracer of ice cover, as opposed to a tracer of ice material.
The extensive property then is aExt=a*AREA*RAC (in s.m^2). iceAge is still a*AREA.

In this case, seaice_advection expects to receive a*AREA, which 
it does in the form of iceAge (no problem here, you are right).

==== #define SEAICE_SALINITY ===

HSALT is s*HEFF (in g/m2) where s would be a 'salinity expressed in g/m3'. 
It is referred to as 'effective' in SEAICE.h but I am loosing track of what 'effective' 
means at this point. Anyway seaice_advection receiving HSALT is correct I believe.

====  short term fix for #define SEAICE_AGE_VOL case ====

define iceAge as iceAge=a*HEFF when'#define SEAICE_AGE_VOL'
in analogy with what is done for HSALT when '#define SEAICE_SALINITY'

===== ice tracers more generally ====

I agree with Chris and Manfredi that the integration with ptracers 
should be regarded as the broader issue of most importance.

In addition to what they said, let me stress that the '#undef SEAICE_AGE_VOL case'
seems of no interest in this broader context. My understanding is that the only reason 
we are talking about an ice cover tracer is that there is an observational proxy to that.
As soon as we consider ocean-ice exchanges (as for HSALT e.g.), tracers need to be 
tied to a mass of material (as opposed to ice cover), right? This is why I was focusing on 
the '#define SEAICE_AGE_VOL case', and why Pierre and I started coding it in the first place.

==== seaice_advection and ice tracers ====

So, let me focus on advection for  tracers of ice material (as in 
'#define SEAICE_SALINITY' and '#define SEAICE_AGE_VOL').

The two options consist in having the main prognostic variable, 
which seaice_advection receives, be like 
	(1) a*HEFF and s*HEFF (i.e. extensive, modulo some constants)
or 	(2) a and s (i.e. intensive). 
Both options have been coded in seaice_advection.F so you can look up 
what the differences are in details, and we could choose either approach. 
(you will note that 'extensiveFld' is presently hard-coded to true though)
But in summary, advection of intensive ice tracers is more complicated
and involves a multiplication by r_hfld factor (i.e. a division by HEFF).

I guess my previous email comment should have been phrased more precisely as: 
may be it is a good time to adopt iceAge=a*HEFF when'#define SEAICE_AGE_VOL',
assuming that the long term strategy to advect generic ice tracers is along this line.






More information about the MITgcm-devel mailing list