[MITgcm-devel] Re: empmr
Dimitris Menemenlis
menemenlis at sbcglobal.net
Thu May 24 17:23:52 EDT 2007
Alan, for pkg/seaice, the routine to understand is seaice_growth.F
What is dumped into the ocean is:
> C NOW GET FRESH WATER FLUX
> #ifdef ALLOW_ATM_TEMP
> EmPmR(I,J,bi,bj) = maskC(I,J,kSurface,bi,bj)*(
> & ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) )
> & * ( ONE - AREA(I,J,2,bi,bj) )
> #ifdef ALLOW_RUNOFF
> & - RUNOFF(I,J,bi,bj)
> #endif
> & + frWtrIce(I,J)*ICE2WATR/SEAICE_deltaTtherm
> & )
that is, the fraction of "open-water" evaporation minus precipitation, plus 100%
of runoff, plus a term due to sea ice melting or freezing.
As far as I can see there is "no" evaporation over sea ice.
precipitation is dealt in the following way:
> IF(FICE(I,J).GT.ZERO) THEN
> C freezing, add precip as snow
> HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)+SEAICE_deltaTtherm*
> & PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*SDF
> ELSE
> C add precip as rain, water converted into equivalent m of
> C ice by 1/ICE2WATR.
> C Do not get confused by the sign:
> C precip > 0 for downward flux of fresh water
> C frWtrIce > 0 for more ice (corresponds to an upward "fresh water flux"),
> C so that here the rain is added *as if* it is melted ice (which is not
> C true, but just a trick; physically the rain just runs as water
> C through the ice into the ocean)
> frWtrIce(I,J) = frWtrIce(I,J)
> & -PRECIP(I,J,bi,bj)*AREA(I,J,2,bi,bj)*
> & SEAICE_deltaTtherm/ICE2WATR
> ENDIF
that is, if ice is growing add all precip as snow, else dump it as freshwater in
the ocean; this is done via the frWtrIce term above. But also note that "if"
all the ice is melted via heat from mixed layer "and" there is residual snow and
residual heat in mixed layer, this residual eat is used to melt some or all of
the remaining snow:
> C Now melt snow if there is residual heat left in surface level
> C Note that units of YNEG and frWtrIce are m of ice
> cph( very sensitive bit here by JZ
> IF( RESID_HEAT(I,J) .GT. ZERO .AND.
> & HSNOW(I,J,bi,bj) .GT. ZERO ) THEN
> GHEFF(I,J) = MIN( HSNOW(I,J,bi,bj)/SDF/ICE2WATR,
> & RESID_HEAT(I,J) )
> YNEG(I,J,bi,bj) = YNEG(I,J,bi,bj) +GHEFF(I,J)
> HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)-GHEFF(I,J)*SDF*ICE2WATR
> frWtrIce(I,J) = frWtrIce(I,J) -GHEFF(I,J)
> ENDIF
> cph)
if you use SEAICEuseFlooding, which you should, there is one more step during
which snow that is submerged is converted into sea ice:
> #ifdef ALLOW_SEAICE_FLOODING
> IF ( SEAICEuseFlooding ) THEN
> C convert snow to ice if submerged
> DO J=1,sNy
> DO I=1,sNx
> hDraft = (HSNOW(I,J,bi,bj)*330. _d 0
> & +HEFF(I,J,1,bi,bj)*SEAICE_rhoIce)/1000. _d 0
> hFlood = hDraft - MIN(hDraft,HEFF(I,J,1,bi,bj))
> HEFF(I,J,1,bi,bj) = HEFF(I,J,1,bi,bj) + hFlood
> HSNOW(I,J,bi,bj) = MAX(0. _d 0,
> & HSNOW(I,J,bi,bj)-hFlood*ICE2SNOW)
> ENDDO
> ENDDO
> ENDIF
> #endif /* ALLOW_SEAICE_FLOODING */
More information about the MITgcm-devel
mailing list