[MITgcm-devel] Unrealistic low SST with SEAICE_GROWTH_LEGACY undef
Martin Losch
Martin.Losch at awi.de
Wed Feb 1 06:07:35 EST 2012
Hi Ian,
thanks for your input. I have "observed" (after 4 years of integration) that with your set of flags
# define SEAICE_DO_OPEN_WATER_GROWTH
# define SEAICE_DO_OPEN_WATER_MELT
# define FENTY_AREA_EXPANSION_CONTRACTION
# define SEAICE_ADD_SUBLIMATION_TO_FWBUDGET
and
# define MCPHEE_OCEAN_ICE_HEAT_FLUX
# define GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR
I get these very low SSTs (-20deg and less). This starts in the beginning of the "melting season" (month 6-7 of integration. I start the integration on Jan01 with no ice), when SIarea reduces from 1 to values <1 then recovers in the freezing season (months 9-10), In the next year the process starts earlier (ice cover reduces to values below <1).
Wenn I do not use MCPHEE_OCEAN_ICE_HEAT_FLUX, the surface temperatures are all near or above freezing (-1.9, actually this happens only with the non-legacy code. The legacy code has always temperature well below freezing, order -5deg in mycase). So my first idea is similar to Gael's: the ocean surface looses heat through openings (AREA<1), and then for some reason cannot use this negative heat to grow ice again.
You guesses:
1. pathological treatment:
case 1: negative ice: if heff<0, this contributes to d_HEFFbyNEG>0 and d_HEFFbyNeg is substracted from QNET, making the heat loss smaller, not larger, so it tends to increase, not decrease theta. It also makes sense physically: removing ice (melting) extracts temperature (enthalpy), creating ice (freezing) should increase water temperature. Did I get this right?
case 2: This could indeed create lower temperatures and I will try setting siEps=0. and/or seaice_area_reg=0. (didn't realize it was non-zero as default).
2. Why should shortwave radiation change it's sign and nobody noticed? (needs to be checked)
3. I think that advection is very unlikely the culprit for such large deviations (but I have not proven that, just my "feeling").
Now what's different between the MCPHEE and not MCPHEE (summarizing the code):
#ifdef MCPHEE_OCEAN_ICE_HEAT_FLUX
a_QbyOCN(I,J) = -STANTON_NUMBER * USTAR_BASE * rhoConst *
& HeatCapacity_Cp *(surf_theta - TBC)*
& MixedLayerTurbulenceFactor*maskC(i,j,kSurface,bi,bj) * convertQ2HI
#else
a_QbyOCN(i,j) = - SEAICE_availHeatFract * dRf(kSurface)
& * maskC(i,j,kSurface,bi,bj) * (HeatCapacity_Cp*rhoConst/QI)
& * (theta(I,J,kSurface,bi,bj)-TBC)
#endif
Sticking in numbers:
STANTON_NUMBER = 0.0056, USTAR_BASE = 0.0125
convertQ2HI=SEAICE_deltaTtherm/QI=1200/(900*3.34E+05)
MixedLayerTurbulenceFactor = 1 (for AREA=1, otherwise it is larger but smaller than 12.5)
SEAICE_availHeatFract=deltaTtherm/SEAICE_gamma_t=1200s/3days, dRf=10m, (HeatCapacity_Cp*rhoConst/QI)=3994.*1025/(900*3.34E+05) = 0.0136 gives
#ifdef MCPHEE_OCEAN_ICE_HEAT_FLUX
a_QbyOCN(i,j) = -1.144e-03*(surf_theta-TBC)* MixedLayerTurbulenceFactor
#else
a_QbyOCN(i,j) = -6.3051e-04*(theta(i,j,ksurface,bi,bj)-TBC)
#endif
This gives me a larger coefficient for MCPHEE (nearly 2times or much larger when AREA<1), but surf_theta = max(theta(I,J,kSurface,bi,bj), TBC)
so that, as a comment suggests, a_QbyOCN < 0, i.e. this term never contributes to freezing (and thus increasing theta). while when MCPHEE_OCEAN_ICE_HEAT_FLUX is undefined, it does.
If I understand your description, then you are saying that this mechanism (that a_QbyOCN contributes to freezing) is not physical (or not correct). Physically, when water is cooled below freezing temperatures, it should freeze. Can you explain, where in the non-legacy code, this is happening? Or how/where does the non-legacy code make sure that the computed heat fluxes (by the seaice-package/seaice_growth) do not lead to temperatures below freezing?
Martin
On Feb 1, 2012, at 2:13 AM, Ian Fenty wrote:
> Martin and whomever else is following,
>
> My formulation of seaice growth (i.e. seaice_growth with the flags I suggested) shouldn't generate SSTs below the freezing point from any non-pathological thermodynamic process. By design, all heat fluxes out of the ocean surface to the atmosphere are used to grow ice, not reduce seawater temperature.
>
> The normal way that seawater temperatures fall when ice is present with my flags occurs with the McPhee heat flux patermeterization [MHFP] in which a fraction (read: less than 100%) of the seawater enthalpy available to melt -- that is, (T_ocean - T_freezing)*cp*rho_ice -- is removed from the seawater to melt ice. When everything is working correctly, T_ocean quickly approaches, but never falls below, T_freezing when ice is present.
>
> Using the MHFP, the existence of SSTs below the freezing point (which again are never supposed to happen) are a warning sign that something else is going wrong that needs to be addressed, not an indication of a failure of seaice_growth.
>
> Therefore, I can make the following guesses about where your strange SSTs come from:
> 1) treatment of pathological HEFF/AREA/SNOW values when we enter the subroutine
> 2) error in shortwave radiation fields which somehow changes their sign
> 3) errors from non-minima preserving theta advection
>
> Point 1: pathological treatment
> ---------------------------------------------------
> Problem: When seaice_growth begins, we handle some pathological cases in a way which can generate SSTs below T_freeze.
>
> case 1: negative heffs or negative hsnow
> how we treat: extract seawater enthalpy to spontaneously create an equal and opposite quantity of ice such that the sum of old + new ice is zero regardless of whether there is any available enthalpy to do it.
>
> case 2: "very thin ice"
> how we treat: extract seawater enthalpy to melt all of the "very thin ice" and also any snow that happens to be around, regardless of whether there is any available enthalpy to do it.
>
> Thus, if somehow negative or "very thin" ice keeps appearing in a grid cell, seawater temperatures can be driven far below T_freeze.
>
> Diagnosis: Make a diagnostic for d_HEFFbyNEG and d_HSNWbyNEG (they don't exist now) and see if they are nonzero near where you have the problem.
>
> Solution 1: fix sea ice advection so that negative values don't come out.
> Solution 2: change pathological treatment such that you don't remove energy that isn't there!
> Solution 3: stop caring about "very thin" ice (change siEps to zero) if that is the culprit
>
>
> Point 2: QSW
> ---------------------------------------------------
> If somehow, a_QSWbyATM_cover or a_QSWbyATM_open are positive (i.e. indicate a shortwave radiative flux out of the ocean), heat will be removed from those grid cells "penetrated" by the erroneous QSW. This cooling will drive seawater temps far below the freezing point.
>
> Diagnosis: Since QSW should only ever be positive, it would be easy to diagnose this problem by checking a_QSWbyATM_cover and a_QSWbyATM_open and making sure they always have the right sign. Again, there don't seem to be built-in diagnostics for those terms so you'll have to add them.
>
> Solution: fix QSW sign.
>
> Point 3: Errors from non-minima preserving theta advection.
> ---------------------------------------------------
> I don't convert negative SSTs to ice so if the advection scheme doesn't preserve minima, SSTs below T_freeze could result. If there is a place where advection errors keep driving theta down, you could end up with places with very very negative SSTs.
>
> Diagnosis: Check theta pre and post advection to make sure T >= T_freeze going in and out.
>
> Solution: Put in special pathological case handling advection errors only.
>
>
>
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel
More information about the MITgcm-devel
mailing list