Dear Zong-Liang Yang,
Below is my response to your email requesting information on the
snow model used in our (GFDL Climate group's) model. We have many
versions of the model in use although most will use the snow
model descibed below. I could believe that a few people have
tested various changes to the snow code and that I do not know
about the tests.
The "snow model" used by our climate model is very simple and
it is mainly diagnostic. That is to say, snow is not a predicted
variable. We just keep track of snow depth from various budget
computations (snow melt + snow fall etc). Snow depth also effects
the surface albedo. We use a square root function for this
computation. The presence of snow also effects the surface fluxes
which are computed using bulk drag formula.
The GCM is coded in Fortran 77.
I did not find it very easy to "fit" the above model to your
questions and am not sure I should continue. Is what is above
enough?
-Ron Stouffer GFDL Climate Group
--------------------------------------------------------------------
Ronald Stouffer
Room 244 GFDL Princeton, NJ USA 08542
Internet : rjs@gfdl.gov
FAX : 609 987 5063
PHONE 609 452 6576
--------------------------------------------------------------------
Hi Zong-Liang Yang,
Below are my responses to your questions:
>
> Your answer is OK, except I have a few more questions:
>
> 1) Is the model the same as that in Manabe (1969):
> Climate and the ocean circulation I. The atmospheric circulation and
> the hydrology of the Earth's surface, Mon. Wea. Rev., 97, 739-774
Yes on the hydrology/heat budget side. The surface albedo calculation
was changed in the 1980's to be what is described below.
>
> 2) How snowmelt is computed?
To solve for the sfc temp (TSTAR), we do a sfc heat budget. If TSTAR
is greater than freezing (0 C) and there is snow on the ground, TSTAR
is set to freezing and the heat is used to melt snow...snowmelt.
The water then runs into the soil moisture bucket.
>
> 3) How is snowfall differentiated from rainfall?
By the temperature just above the surface. Above freezing => rain
below => snowfall.
>
> 4) When you say snow depth, do you mean snow water equivalent?
> Otherwise, what is the snow density assumed?
Yes we mean water equivalent.
>
> 5) How surface albedo is affected by snow? ( a formulation)
We prescribe a bare soil albedo. For thick snow (> 2.0 cm of
water equil.), the albedo is set to 60%. For thin snow, we use the
following formula:
albedo = bare soil alb + sqrt(snwdpt/2)*(deep snow alb - bare soil alb)
The above albedos are also a function of the sfc temp. Below -10 C,
they are the above. Warmer than that, the albedo is lower. I have
included our code below...
>
> 6) Any future plans for changing the snow code?
Not that I know of...there are a number of people working on the code,
although I do not know of any which are working with the snow code.
Also, there is a major effort to make a single source for all GFDL codes.
When this is successful, I will have many nore options available to
me...I assume some would include various snow codes.
>
> I would appreciate if you could elaborate a bit.
How is the above?
-Ron
Our sfc albedo code:
INPUTS:
cc zin=1 for land pts
cc we set the bare soil albs negative to indicate glacier pts.
cc lousy code....ralb=abs(alb)
cc ts =TSTAR
cc tcrit=-10 C
cc tfra =0 C
cc snwdpt units are water equil.
OUTPUTS:
ca(nc) the sfc albedo
c
c determine surface albedo for land grid points (including glaciers)
c =================================================
c
if (zin(ipt) .eq. 1.0) then
c
c albedo determination for unglaciated points (albedo > 0.0)
if (alb(ipt,jrow) .ge. 0.0) then
abase = ralb(ipt)
c
c compute albedo for thick snow based on surface temperature
if (abs(ts(ipt,jrow)) .le. tcrit) then
asnow = 0.60
elseif (abs(ts(ipt,jrow)) .eq. tfra) then
asnow = 0.45
else
asnow = ((tfra-abs(ts(ipt,jrow)))*0.60 +
$ (abs(ts(ipt,jrow))-tcrit)*0.45) / (tfra-tcrit)
endif
c
c albedo determination for glaciated points (albedo < 0.0)
elseif (alb(ipt,jrow) .lt. 0.0) then
c
c compute base albedo of glacier based on surface temperature
if (abs(ts(ipt,jrow)) .le. tcrit) then
abase = 0.65
elseif (abs(ts(ipt,jrow)) .eq. tfra) then
abase = 0.55
else
abase = ((tfra-abs(ts(ipt,jrow)))*0.65 +
$ (abs(ts(ipt,jrow))-tcrit)*0.55) / (tfra-tcrit)
endif
c
c compute albedo for thick snow based on surface temperature
if (abs(ts(ipt,jrow)) .le. tcrit) then
asnow = 0.80
elseif (abs(ts(ipt,jrow)) .eq. tfra) then
asnow = 0.65
else
asnow = ((tfra-abs(ts(ipt,jrow)))*0.80 +
$ (abs(ts(ipt,jrow))-tcrit)*0.65) / (tfra-tcrit)
endif
c
endif
c
c assign final albedo based on snow depth
if (snwdpt(ipt,jrow) .le. 0.0) then
ca(nc) = abase
elseif (snwdpt(ipt,jrow) .ge. 2.0) then
ca(nc) = asnow
else
ca(nc) = abase + sqrt(snwdpt(ipt,jrow)/2.0)*(asnow-abase)
endif
c
endif
c
--------------------------------------------------------------------
Ronald Stouffer
Room 244 GFDL Princeton, NJ USA 08542
Internet : rjs@gfdl.gov
FAX : 609 987 5063
PHONE 609 452 6576
--------------------------------------------------------------------