[MITgcm-devel] seaice_growth_if.F

Ian G. Fenty ifenty at MIT.EDU
Tue Sep 21 22:56:40 EDT 2010


Jean-Michel,

Thanks for looking at the code more closely.  I cleaned up the ice 
salinity section so as to 1) avoid a divide by zero in case 
SEAICE_salinity_fixed = 0 and 2) remove the discontinuity you correctly 
identified.  By the way, I never encountered the cases which triggered 
these NaNs in your run as I always used 0 < SEAICE_salinity_fixed < salt.

Here is the updated section with clarified comments/reasoning:

    1268 c                 If the seawater salinity is less than 
SEAICE_salinity_fixed
    1269 c                 or zero, assume that ice is as saline as the 
seawater.
    1270 c                 salinity
    1271                   IF  ((salt(I,J,kSurface,bi,bj) .EQ. ZERO) .OR.
    1272 &                 (salt(I,J,kSurface,bi,bj) .LE.
    1273 &                   SEAICE_salinity_fixed)) THEN
    1274
    1275                      FreshwaterContribFromIce(I,J) = ZERO
    1276
    1277 c                 If seawater salinity is greater than the 
specified
    1278 c                 ice salinity, the freshwater contribution 
from ice is
    1279 c                 the volume of freshwater required to mix with
    1280 c                 seawater to yield sea ice having salinity
    1281 c                 SEAICE_salinity_fixed.  Another way of 
looking at this
    1282 c                 formulation is to assume that the sea ice is 
a mixture
    1283 c                 of a volume of freshwater and volume of water 
with
    1284 c                 salinity "salt".  When ice grows (or melts), 
only the
    1285 c                 extraction (release) of the freshwater volume
    1286 c                 alters the seawater salinity.
    1287                   ELSEIF ( salt(I,J,kSurface,bi,bj) .GT.
    1288 &                     SEAICE_salinity_fixed   )  THEN
    1289
    1290                        FreshwaterContribFromIce(I,J) =
    1291 &                   - ActualIceVolumeChange(I,J)*
    1292 &                   SEAICE_rhoICE/ RHOFW* (ONE -
    1293 &                   SEAICE_salinity_fixed/salt(I,J,kSurface,bi,bj))
    1294
    1295                   ENDIF

 > I  have a 3rd remark: did not see any contribution to saltFlux,
 > which seems strange for the case where SEAICE_salinity(_fixed) is > 0

There is no contribution to salt flux because I am using EmPmR alone to 
make seawater salinity adjustments.  Is using EmPmR alone is no longer 
considered good form.  If I understand it correctly, the default current 
seaice_growth.F gives the volume of ice grown or melted to EmPmR (which 
I read as saying that the ice is fresh)  and separately determines the 
ice's salt and gives that to saltFlux so that seawater salinity is 
adjusted properly.  Is there some reason to prefer that method?

-Ian





More information about the MITgcm-devel mailing list