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    

--------------------------------------------------------------------


-- Last updated Fri Oct 8 12:47:54 MST 1999 by Zong-Liang Yang.
For questions and comments, please contact Zong-Liang Yang