/[MITgcm]/MITgcm/pkg/thsice/thsice_albedo.F
ViewVC logotype

Contents of /MITgcm/pkg/thsice/thsice_albedo.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (show annotations) (download)
Mon Jul 24 20:30:54 2006 UTC (17 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: mitgcm_mapl_00, checkpoint58u_post, checkpoint58w_post, checkpoint60, checkpoint61, checkpoint58r_post, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58q_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58o_post, checkpoint58y_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q
Changes since 1.4: +8 -4 lines
add parameter "tempSnowAlb" for temperature transition from cold-snow
    albedo to warm-snow albedo; default = -10.oC is unchanged.

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_albedo.F,v 1.4 2006/05/25 18:03:24 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: THSICE_ALBEDO
8 C !INTERFACE:
9 SUBROUTINE THSICE_ALBEDO(
10 I bi, bj, siLo, siHi, sjLo, sjHi,
11 I iMin,iMax, jMin,jMax,
12 I iceMask, hIce, hSnow, tSrf, ageSnw,
13 O sAlb,
14 I myTime, myIter, myThid )
15 C !DESCRIPTION: \bv
16 C *==========================================================*
17 C | S/R THSICE_ALBEDO
18 C *==========================================================*
19 C | Compute surface albedo over sea-ice
20 C *==========================================================*
21 C \ev
22
23 C !USES:
24 IMPLICIT NONE
25
26 C == Global data ==
27 #include "EEPARAMS.h"
28 #include "THSICE_PARAMS.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine Arguments ==
32 C siLo,siHi :: size of input/output array: 1rst dim. lower,higher bounds
33 C sjLo,sjHi :: size of input/output array: 2nd dim. lower,higher bounds
34 C bi,bj :: tile indices
35 C iMin,iMax :: computation domain: 1rst index range
36 C jMin,jMax :: computation domain: 2nd index range
37 C--- Input:
38 C iceMask :: sea-ice fractional mask [0-1]
39 C hIce (hi) :: ice height [m]
40 C hSnow (hs) :: snow height [m]
41 C tSrf (Tsf) :: surface (ice or snow) temperature [oC]
42 C ageSnw (age) :: snow age [s]
43 C--- Output
44 C sAlb (albedo) :: surface albedo [0-1]
45 C--- Input:
46 C myTime :: current Time of simulation [s]
47 C myIter :: current Iteration number in simulation
48 C myThid :: my Thread Id number
49 INTEGER siLo, siHi, sjLo, sjHi
50 INTEGER bi,bj
51 INTEGER iMin, iMax
52 INTEGER jMin, jMax
53 _RL iceMask(siLo:siHi,sjLo:sjHi)
54 _RL hIce (siLo:siHi,sjLo:sjHi)
55 _RL hSnow (siLo:siHi,sjLo:sjHi)
56 _RL tSrf (siLo:siHi,sjLo:sjHi)
57 _RL ageSnw (siLo:siHi,sjLo:sjHi)
58 _RL sAlb (siLo:siHi,sjLo:sjHi)
59 _RL myTime
60 INTEGER myIter
61 INTEGER myThid
62 CEOP
63
64 #ifdef ALLOW_THSICE
65 C !LOCAL VARIABLES:
66 C--- local copy of input/output argument list variables (see description above)
67 _RL hi ! ice height
68 _RL hs ! snow height
69 _RL Tsf ! surface temperature
70 _RL age ! snow age
71 _RL albedo ! surface albedo
72 C == Local variables ==
73 C frsnow :: fractional snow cover
74 C albsno :: albedo of snow
75 C albice :: albedo of ice
76 C albNewSnow :: albedo of new (fresh) snow
77 C albNewSnow :: albedo of new (fresh) snow
78 C msgBuf :: Informational/error meesage buffer
79 c _RL frsnow
80 _RL albsno, albice
81 _RL albNewSnow
82 INTEGER i,j
83 CHARACTER*(MAX_LEN_MBUF) msgBuf
84
85 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
86
87 DO j = jMin, jMax
88 DO i = iMin, iMax
89 IF ( iceMask(i,j).GT.0. _d 0 ) THEN
90 hi = hIce(i,j)
91 hs = hSnow(i,j)
92 Tsf = tSrf(i,j)
93 age = ageSnw(i,j)
94
95 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
96 C-- Albedo of Bare Sea-Ice
97 albice = albIceMax + (albIceMin-albIceMax)*EXP(-hi/hAlbIce)
98
99 C-- LANL albedo calculation
100 c frsnow = 0.
101 c if (hs .gt. 0.) frsnow = 1.
102 c if (Tsf .lt. 0.) then
103 c albedo = frsnow*albColdSnow + (1.-frsnow)*albice
104 c else
105 c albedo = frsnow*albWarmSnow + (1.-frsnow)*albice
106 c endif
107 C-end LANL albedo calculation
108
109 C-- GISS model albedo calculation
110 c albice = 0.7 _d 0
111
112 C- New snow: (linear) transition between tempSnowAlb (oC) and 0.oC
113 C from cold/dry snow albedo to warm/wet snow albedo
114 IF ( tempSnowAlb.LT.0. _d 0 ) THEN
115 albNewSnow = albColdSnow
116 & + (albWarmSnow - albColdSnow)
117 & *MAX( 0. _d 0, MIN(1. _d 0 - Tsf/tempSnowAlb, 1. _d 0) )
118 ELSE
119 albNewSnow = albColdSnow
120 ENDIF
121 C- albedo of snow is function of snow-age (make age units into days):
122 albsno = albOldSnow
123 & +(albNewSnow-albOldSnow)*EXP(-0.2 _d 0*age/86400. _d 0)
124 C- layer of snow over the ice:
125 albedo = albsno + (albice-albsno)*EXP(-hs/hAlbSnow)
126
127 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
128 IF (albedo.GT.1. _d 0 .OR. albedo.LT. .2 _d 0) THEN
129 c print*,'QQ - albedo problem', albedo, age, hs, albsno
130 WRITE(msgBuf,'(A,I10,4I6)')
131 & 'THSICE_ALBEDO: Problem at:', myIter,i,j,bi,bj
132 CALL PRINT_ERROR( msgBuf , myThid)
133 WRITE(msgBuf,'(A,1P4E17.9)')
134 & 'THSICE_ALBEDO: albedo=', albedo, age, hs, albsno
135 CALL PRINT_ERROR( msgBuf , myThid)
136 STOP 'THSICE_ALBEDO: albedo out of range'
137 ENDIF
138 sAlb(i,j) = albedo
139 ELSE
140 sAlb(i,j) = 0. _d 0
141 ENDIF
142 ENDDO
143 ENDDO
144
145 #endif /* ALLOW_THSICE */
146
147 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
148
149 RETURN
150 END

  ViewVC Help
Powered by ViewVC 1.1.22