/[MITgcm]/MITgcm/pkg/fizhi/update_earth_exports.F
ViewVC logotype

Annotation of /MITgcm/pkg/fizhi/update_earth_exports.F

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


Revision 1.16 - (hide annotations) (download)
Mon Jul 26 18:45:17 2004 UTC (19 years, 10 months ago) by molod
Branch: MAIN
Changes since 1.15: +35 -42 lines
Went to use of FIZHI_OPTIONS and _RL in all routines

1 molod 1.16 C $Header: /u/gcmpack/MITgcm/pkg/fizhi/update_earth_exports.F,v 1.15 2004/07/23 22:32:28 molod Exp $
2 molod 1.1 C $Name: $
3    
4 molod 1.16 #include "FIZHI_OPTIONS.h"
5 molod 1.1 subroutine update_earth_exports (myTime, myIter, myThid)
6     c----------------------------------------------------------------------
7     c Subroutine update_earth_exports - 'Wrapper' routine to update
8     c the fields related to the earth's surface that are needed
9     c by fizhi.
10     c
11 molod 1.5 c Call: getlgr (Set the leaf area index and surface greenness,
12     c based on veg type and month)
13     c getalb (Set the 4 albedos based on veg type, snow and time)
14 molod 1.1 c getemiss (Set the surface emissivity based on the veg type
15     c and the snow depth)
16     c-----------------------------------------------------------------------
17     implicit none
18     #include "SIZE.h"
19 molod 1.13 #include "GRID.h"
20 molod 1.2 #include "fizhi_land_SIZE.h"
21 molod 1.1 #include "fizhi_SIZE.h"
22     #include "fizhi_coms.h"
23 molod 1.13 #include "chronos.h"
24 molod 1.1 #include "gridalt_mapping.h"
25 molod 1.2 #include "fizhi_land_coms.h"
26 molod 1.5 #include "fizhi_earth_coms.h"
27 molod 1.6 #include "fizhi_ocean_coms.h"
28 molod 1.1 #include "EEPARAMS.h"
29    
30 molod 1.3 integer myTime, myIter, myThid
31 molod 1.1
32 molod 1.11 logical alarm
33     external alarm
34 molod 1.16 _RL lats(sNx,sNy), lons(sNx,sNy), cosz(sNx,sNy)
35     _RL fraci(sNx,sNy), fracl(sNx,sNy)
36     _RL ficetile(nchp)
37     _RL radius
38     _RL tmpij(sNx,sNy)
39     _RL tmpchp(nchp)
40 molod 1.13 integer i, j, n, bi, bj
41 molod 1.3 integer im1, im2, jm1, jm2, idim1, idim2, jdim1, jdim2
42 molod 1.5 integer sec, day, month
43 molod 1.13 integer nmonf,ndayf,nsecf
44     nsecf(n) = n/10000*3600 + mod(n,10000)/100* 60 + mod(n,100)
45 molod 1.5 nmonf(n) = mod(n,10000)/100
46     ndayf(n) = mod(n,100)
47 molod 1.1
48 molod 1.3 idim1 = 1-OLx
49     idim2 = sNx+OLx
50     jdim1 = 1-OLy
51     jdim2 = sNy+OLy
52     im1 = 1
53     im2 = sNx
54     jm1 = 1
55     jm2 = sNy
56 molod 1.5 month = nmonf(nymd)
57     day = ndayf(nymd)
58     sec = nsecf(nhms)
59 molod 1.1
60 molod 1.3 do bj = myByLo(myThid), myByHi(myThid)
61     do bi = myBxLo(myThid), myBxHi(myThid)
62 molod 1.5 do j = jm1,jm2
63     do i = im1,im2
64 molod 1.13 lons(i,j) = xC(i,j,bi,bj)
65     lats(i,j) = yC(i,j,bi,bj)
66 molod 1.5 enddo
67     enddo
68 molod 1.1
69 molod 1.6 call get_landfrac(im2,jm2,nSx,nSy,bi,bj,maxtyp,surftype,tilefrac,
70     . fracl)
71 molod 1.15
72 molod 1.6 do j = jm1,jm2
73     do i = im1,im2
74 molod 1.13 if(sice(i,j,bi,bj).gt.0.) then
75 molod 1.6 fraci(i,j) = 1.
76     else
77     fraci(i,j) = 0.
78     endif
79     enddo
80     enddo
81    
82 molod 1.3 C***********************************************************************
83     C* Get Leaf-Area-Index and Greenness Index *
84     C***********************************************************************
85    
86 molod 1.10 if( alarm('turb') .or. alarm('radsw') ) then
87 molod 1.15 call getlgr (sec,month,day,chlt,ityp,nchpland,nchp,nSx,nSy,bi,bj,
88 molod 1.7 . alai,agrn )
89 molod 1.10 endif
90 molod 1.3
91     C **********************************************************************
92     C Compute Surface Albedo
93     C **********************************************************************
94    
95 molod 1.10 if( alarm('radsw') ) then
96 molod 1.13 call astro(nymd,nhms,lats,lons,im2*jm2,cosz,radius)
97 molod 1.10 call getalb(sec,month,day,cosz,snodep,fraci,fracl,im2,jm2,nchp,
98 molod 1.15 . nchptot,nchpland,nSx,nSy,bi,bj,igrd,ityp,chfr,chlt,alai,agrn,
99     . albvisdr,albvisdf,albnirdr,albnirdf )
100 molod 1.10 endif
101 molod 1.3
102    
103     C **********************************************************************
104     C Compute Surface Emissivity
105     C **********************************************************************
106    
107 molod 1.10 if( alarm('radlw') ) then
108     call grd2msc(fraci,im2,jm2,igrd,ficetile,nchp,nchp)
109     call getemiss(fracl,im2,jm2,nchp,nSx,nSy,bi,bj,igrd,ityp,chfr,
110 molod 1.6 . snodep,ficetile,emiss)
111 molod 1.10 endif
112 molod 1.3
113    
114     C*********************************************************************
115     C Ground Temperature Over Ocean is from SST array,
116 molod 1.10 C Over land is from tcanopy
117 molod 1.3 C*********************************************************************
118    
119 molod 1.10 do j = jm1,jm2
120     do i = im1,im2
121 molod 1.13 tmpij(i,j) = 0.
122 molod 1.10 enddo
123     enddo
124 molod 1.13 do i = 1,nchp
125     tmpchp(i) = tcanopy(i,bi,bj)
126     enddo
127     call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),tmpchp,
128 molod 1.15 . nchp,nchptot,fracl,tmpij,im2,jm2)
129 molod 1.10 do j = jm1,jm2
130     do i = im1,im2
131 molod 1.13 tgz(i,j,bi,bj) = tmpij(i,j)
132     if(fracl(i,j).lt.0.3.and.sice(i,j,bi,bj).eq.0.0)
133 molod 1.10 . tgz(i,j,bi,bj) = sst(i,j,bi,bj)
134     enddo
135     enddo
136 molod 1.3
137     enddo
138     enddo
139    
140     return
141     end
142    
143     SUBROUTINE SIBALB ( AVISDR, ANIRDR, AVISDF, ANIRDF,
144     . VLAI, VGRN, ZTH, SNW, ITYP, IRUN )
145    
146     C*********************************************************************
147     C The input list is as follows:
148     C VLAI: the leaf area index.
149     C VGRN: the greenness index.
150     C ZTH: The cosine of the solar zenith angle.
151     C SNW: Snow cover in meters water equivalent.
152     C ITYP: The surface type (grass, bare soil, etc.)
153     C IRUN: Number of tiles (same as used for SUBROUTINE TILE).
154     C
155     C The output list is as follows:
156     C
157     C AVISDR: visible, direct albedo.
158     C ANIRDR: near infra-red, direct albedo.
159     C AVISDF: visible, diffuse albedo.
160     C ANIRDF: near infra-red, diffuse albedo.
161     C*******************************************************************
162    
163     IMPLICIT NONE
164    
165     INTEGER IRUN
166 molod 1.16 _RL AVISDR (IRUN), ANIRDR (IRUN), AVISDF (IRUN), ANIRDF (IRUN)
167 molod 1.13 _RL VLAI(IRUN),VGRN (IRUN), SNW(IRUN)
168 molod 1.16 _RL ZTH(IRUN)
169 molod 1.3 INTEGER ITYP (IRUN)
170    
171 molod 1.7 _RL ALVDRS, ALIDRS
172     _RL ALVDRDL, ALIDRDL
173     _RL ALVDRDD, ALIDRDD
174     _RL ALVDRI, ALIDRI
175     _RL minval
176 molod 1.3 external minval
177    
178 molod 1.9 C Albedo of soil for visible direct solar radiation.
179     PARAMETER ( ALVDRS = 0.100 )
180     C Albedo of soil for infra-red direct solar radiation.
181     PARAMETER ( ALIDRS = 0.200 )
182     C Albedo of light desert for visible direct solar radiation.
183     PARAMETER ( ALVDRDL = 0.300 )
184     C Albedo of light desert for infra-red direct solar radiation.
185     PARAMETER ( ALIDRDL = 0.350 )
186     C Albedo of dark desert for visible direct solar radiation.
187     PARAMETER ( ALVDRDD = 0.250 )
188     C Albedo of dark desert for infra-red direct solar radiation.
189     PARAMETER ( ALIDRDD = 0.300 )
190     C Albedo of ice for visible direct solar radiation.
191     PARAMETER ( ALVDRI = 0.800 )
192     C Albedo of ice for infra-red direct solar radiation.
193     PARAMETER ( ALIDRI = 0.800 )
194 molod 1.3
195     * --------------------------------------------------------------------------------------------
196    
197     INTEGER NTYPS
198     INTEGER NLAI
199 molod 1.7 _RL ZERO, ONE
200     _RL EPSLN, BLAI, DLAI
201     _RL ALATRM
202 molod 1.3 PARAMETER (NLAI = 14 )
203     PARAMETER (EPSLN = 1.E-6)
204     PARAMETER (BLAI = 0.5)
205     PARAMETER (DLAI = 0.5)
206     PARAMETER (ZERO=0., ONE=1.0)
207     PARAMETER (ALATRM = BLAI + (NLAI - 1) * DLAI - EPSLN)
208     PARAMETER (NTYPS=10)
209    
210    
211     C ITYP: Vegetation type as follows:
212     C 1: BROADLEAF EVERGREEN TREES
213     C 2: BROADLEAF DECIDUOUS TREES
214     C 3: NEEDLELEAF TREES
215     C 4: GROUND COVER
216     C 5: BROADLEAF SHRUBS
217     C 6: DWARF TREES (TUNDRA)
218     C 7: BARE SOIL
219     C 8: LIGHT DESERT
220     C 9: GLACIER
221     C 10: DARK DESERT
222     C
223    
224 molod 1.13 INTEGER I, LAI
225 molod 1.16 _RL FAC,GAMMA,BETA,ALPHA,DX,DY,ALA,GRN (2),SNWALB(4,NTYPS)
226     _RL COEFF
227 molod 1.13
228 molod 1.16 _RL ALVDR (NLAI, 2, NTYPS)
229     _RL BTVDR (NLAI, 2, NTYPS)
230     _RL GMVDR (NLAI, 2, NTYPS)
231     _RL ALIDR (NLAI, 2, NTYPS)
232     _RL BTIDR (NLAI, 2, NTYPS)
233     _RL GMIDR (NLAI, 2, NTYPS)
234 molod 1.3
235     C (Data statements for ALVDR described in full; data statements for
236     C other constants follow same framework.)
237    
238     C BROADLEAF EVERGREEN (ITYP=4); GREEN=0.33; LAI: .5-7
239     DATA (ALVDR (I, 1, 1), I = 1, 14)
240     ` /0.0808, 0.0796, 0.0792, 0.0790, 10*0.0789/
241    
242     C BROADLEAF EVERGREEN (ITYP=4); GREEN=0.67; LAI: .5-7
243     DATA (ALVDR (I, 2, 1), I = 1, 14)
244     ` /0.0788, 0.0775, 0.0771, 0.0769, 10*0.0768/
245    
246     C BROADLEAF DECIDUOUS (ITYP=1); GREEN=0.33; LAI: .5-7
247     DATA (ALVDR (I, 1, 2), I = 1, 14)
248     ` /0.0803, 0.0790, 0.0785, 0.0784, 3*0.0783, 7*0.0782/
249    
250     C BROADLEAF DECIDUOUS (ITYP=1); GREEN=0.67; LAI: .5-7
251     DATA (ALVDR (I, 2, 2), I = 1, 14)
252     ` /0.0782, 0.0770, 0.0765, 0.0763, 10*0.0762/
253    
254     C NEEDLELEAF (ITYP=3); GREEN=0.33; LAI=.5-7
255     DATA (ALVDR (I, 1, 3), I = 1, 14)
256     ` /0.0758, 0.0746, 0.0742, 0.0740, 10*0.0739/
257    
258     C NEEDLELEAF (ITYP=3); GREEN=0.67; LAI=.5-7
259     DATA (ALVDR (I, 2, 3), I = 1, 14)
260     ` /0.0683, 0.0672, 0.0667, 2*0.0665, 9*0.0664/
261    
262     C GROUNDCOVER (ITYP=2); GREEN=0.33; LAI=.5-7
263     DATA (ALVDR (I, 1, 4), I = 1, 14)
264     ` /0.2436, 0.2470, 0.2486, 0.2494, 0.2498, 0.2500, 2*0.2501,
265     ` 6*0.2502
266     ` /
267     C GROUNDCOVER (ITYP=2); GREEN=0.67; LAI=.5-7
268     DATA (ALVDR (I, 2, 4), I = 1, 14) /14*0.1637/
269    
270     C BROADLEAF SHRUBS (ITYP=5); GREEN=0.33,LAI=.5-7
271     DATA (ALVDR (I, 1, 5), I = 1, 14)
272     & /0.0807, 0.0798, 0.0794, 0.0792, 0.0792, 9*0.0791/
273    
274     C BROADLEAF SHRUBS (ITYP=5); GREEN=0.67,LAI=.5-7
275     DATA (ALVDR (I, 2, 5), I = 1, 14)
276     & /0.0787, 0.0777, 0.0772, 0.0771, 10*0.0770/
277    
278     C DWARF TREES, OR TUNDRA (ITYP=6); GREEN=0.33,LAI=.5-7
279     DATA (ALVDR (I, 1, 6), I = 1, 14)
280     & /0.0802, 0.0791, 0.0787, 0.0786, 10*0.0785/
281    
282     C DWARF TREES, OR TUNDRA (ITYP=6); GREEN=0.67,LAI=.5-7
283     DATA (ALVDR (I, 2, 6), I = 1, 14)
284     & /0.0781, 0.0771, 0.0767, 0.0765, 0.0765, 9*0.0764/
285    
286    
287     C BARE SOIL
288     DATA (ALVDR (I, 1, 7), I = 1, 14) /14*ALVDRS/
289     DATA (ALVDR (I, 2, 7), I = 1, 14) /14*ALVDRS/
290    
291     C LIGHT DESERT (SAHARA, EG)
292     DATA (ALVDR (I, 1, 8), I = 1, 14) /14*ALVDRDL/
293     DATA (ALVDR (I, 2, 8), I = 1, 14) /14*ALVDRDL/
294    
295     C ICE
296     DATA (ALVDR (I, 1, 9), I = 1, 14) /14*ALVDRI/
297     DATA (ALVDR (I, 2, 9), I = 1, 14) /14*ALVDRI/
298    
299     C DARK DESERT (AUSTRALIA, EG)
300     DATA (ALVDR (I, 1, 10), I = 1, 14) /14*ALVDRDD/
301     DATA (ALVDR (I, 2, 10), I = 1, 14) /14*ALVDRDD/
302     C****
303     C**** -------------------------------------------------
304     DATA (BTVDR (I, 1, 1), I = 1, 14)
305     ` /0.0153, 0.0372, 0.0506, 0.0587, 0.0630, 0.0652, 0.0663,
306     ` 0.0668, 0.0671, 0.0672, 4*0.0673
307     ` /
308     DATA (BTVDR (I, 2, 1), I = 1, 14)
309     * /0.0135, 0.0354, 0.0487, 0.0568, 0.0611, 0.0633, 0.0644,
310     ` 0.0650, 0.0652, 0.0654, 0.0654, 3*0.0655
311     ` /
312     DATA (BTVDR (I, 1, 2), I = 1, 14)
313     * /0.0148, 0.0357, 0.0462, 0.0524, 0.0554, 0.0569, 0.0576,
314     ` 0.0579, 0.0580, 0.0581, 0.0581, 3*0.0582
315     ` /
316     DATA (BTVDR (I, 2, 2), I = 1, 14)
317     * /0.0131, 0.0342, 0.0446, 0.0508, 0.0539, 0.0554, 0.0560,
318     ` 0.0564, 0.0565, 5*0.0566
319     ` /
320     DATA (BTVDR (I, 1, 3), I = 1, 14)
321     * /0.0108, 0.0334, 0.0478, 0.0571, 0.0624, 0.0652, 0.0666,
322     ` 0.0673, 0.0677, 0.0679, 4*0.0680
323     ` /
324     DATA (BTVDR (I, 2, 3), I = 1, 14)
325     * /0.0034, 0.0272, 0.0408, 0.0501, 0.0554, 0.0582, 0.0597,
326     * 0.0604, 0.0608, 0.0610, 4*0.0611
327     ` /
328     DATA (BTVDR (I, 1, 4), I = 1, 14)
329     * /0.2050, 0.2524, 0.2799, 0.2947, 0.3022, 0.3059, 0.3076,
330     * 0.3085, 0.3088, 0.3090, 4*0.3091
331     ` /
332     DATA (BTVDR (I, 2, 4), I = 1, 14)
333     * /0.1084, 0.1404, 0.1617, 0.1754, 0.1837, 0.1887, 0.1915,
334     * 0.1931, 0.1940, 0.1946, 0.1948, 0.1950, 2*0.1951
335     ` /
336     DATA (BTVDR (I, 1, 5), I = 1, 14)
337     & /0.0203, 0.0406, 0.0548, 0.0632, 0.0679, 0.0703, 0.0716,
338     & 0.0722, 0.0726, 0.0727, 0.0728, 0.0728, 0.0728, 0.0729
339     ` /
340    
341     DATA (BTVDR (I, 2, 5), I = 1, 14)
342     & /0.0184, 0.0385, 0.0526, 0.0611, 0.0658, 0.0683, 0.0696,
343     & 0.0702, 0.0705, 0.0707, 4*0.0708
344     ` /
345    
346     DATA (BTVDR (I, 1, 6), I = 1, 14)
347     & /0.0199, 0.0388, 0.0494, 0.0554, 0.0584, 0.0599, 0.0606,
348     & 0.0609, 0.0611, 5*0.0612
349     ` /
350    
351     DATA (BTVDR (I, 2, 6), I = 1, 14)
352     & /0.0181, 0.0371, 0.0476, 0.0537, 0.0568, 0.0583, 0.0590,
353     & 0.0593, 0.0595, 0.0595, 4*0.0596
354     ` /
355    
356     DATA (BTVDR (I, 1, 7), I = 1, 14) /14*0./
357     DATA (BTVDR (I, 2, 7), I = 1, 14) /14*0./
358    
359     DATA (BTVDR (I, 1, 8), I = 1, 14) /14*0./
360     DATA (BTVDR (I, 2, 8), I = 1, 14) /14*0./
361    
362     DATA (BTVDR (I, 1, 9), I = 1, 14) /14*0./
363     DATA (BTVDR (I, 2, 9), I = 1, 14) /14*0./
364    
365     DATA (BTVDR (I, 1, 10), I = 1, 14) /14*0./
366     DATA (BTVDR (I, 2, 10), I = 1, 14) /14*0./
367    
368     C****
369     C**** -----------------------------------------------------------
370     DATA (GMVDR (I, 1, 1), I = 1, 14)
371     ` /0.0814, 0.1361, 0.2078, 0.2650, 0.2986, 0.3169, 0.3265,
372     * 0.3313, 0.3337, 0.3348, 0.3354, 0.3357, 2*0.3358
373     ` /
374     DATA (GMVDR (I, 2, 1), I = 1, 14)
375     * /0.0760, 0.1336, 0.2034, 0.2622, 0.2969, 0.3159, 0.3259,
376     * 0.3309, 0.3333, 0.3346, 0.3352, 0.3354, 2*0.3356
377     ` /
378     DATA (GMVDR (I, 1, 2), I = 1, 14)
379     * /0.0834, 0.1252, 0.1558, 0.1927, 0.2131, 0.2237, 0.2290,
380     * 0.2315, 0.2327, 0.2332, 0.2335, 2*0.2336, 0.2337
381     ` /
382     DATA (GMVDR (I, 2, 2), I = 1, 14)
383     * /0.0789, 0.1235, 0.1531, 0.1912, 0.2122, 0.2232, 0.2286,
384     * 0.2312, 0.2324, 0.2330, 0.2333, 0.2334, 2*0.2335
385     ` /
386     DATA (GMVDR (I, 1, 3), I = 1, 14)
387     * /0.0647, 0.1342, 0.2215, 0.2968, 0.3432, 0.3696, 0.3838,
388     * 0.3912, 0.3950, 0.3968, 0.3978, 0.3982, 0.3984, 0.3985
389     ` /
390     DATA (GMVDR (I, 2, 3), I = 1, 14)
391     * /0.0258, 0.1227, 0.1999, 0.2825, 0.3339, 0.3634, 0.3794,
392     * 0.3877, 0.3919, 0.3940, 0.3950, 0.3956, 0.3958, 0.3959
393     ` /
394     DATA (GMVDR (I, 1, 4), I = 1, 14)
395     * /0.3371, 0.5762, 0.7159, 0.7927, 0.8324, 0.8526, 0.8624,
396     * 0.8671, 0.8693, 0.8704, 0.8709, 0.8710, 2*0.8712
397     ` /
398     DATA (GMVDR (I, 2, 4), I = 1, 14)
399     * /0.2634, 0.4375, 0.5532, 0.6291, 0.6763, 0.7048, 0.7213,
400     * 0.7310, 0.7363, 0.7395, 0.7411, 0.7420, 0.7426, 0.7428
401     ` /
402     DATA (GMVDR (I, 1, 5), I = 1, 14)
403     & /0.0971, 0.1544, 0.2511, 0.3157, 0.3548, 0.3768, 0.3886,
404     & 0.3948, 0.3978, 0.3994, 0.4001, 0.4006, 0.4007, 0.4008
405     ` /
406    
407     DATA (GMVDR (I, 2, 5), I = 1, 14)
408     & /0.0924, 0.1470, 0.2458, 0.3123, 0.3527, 0.3756, 0.3877,
409     & 0.3942, 0.3974, 0.3990, 0.3998, 0.4002, 0.4004, 0.4005
410     ` /
411    
412     DATA (GMVDR (I, 1, 6), I = 1, 14)
413     & /0.0970, 0.1355, 0.1841, 0.2230, 0.2447, 0.2561, 0.2617,
414     & 0.2645, 0.2658, 0.2664, 0.2667, 3*0.2669
415     ` /
416    
417     DATA (GMVDR (I, 2, 6), I = 1, 14)
418     & /0.0934, 0.1337, 0.1812, 0.2213, 0.2437, 0.2554, 0.2613,
419     & 0.2642, 0.2656, 0.2662, 0.2665, 0.2667, 0.2667, 0.2668
420     ` /
421    
422     DATA (GMVDR (I, 1, 7), I = 1, 14) /14*1./
423     DATA (GMVDR (I, 2, 7), I = 1, 14) /14*1./
424    
425     DATA (GMVDR (I, 1, 8), I = 1, 14) /14*1./
426     DATA (GMVDR (I, 2, 8), I = 1, 14) /14*1./
427    
428     DATA (GMVDR (I, 1, 9), I = 1, 14) /14*1./
429     DATA (GMVDR (I, 2, 9), I = 1, 14) /14*1./
430    
431     DATA (GMVDR (I, 1, 10), I = 1, 14) /14*1./
432     DATA (GMVDR (I, 2, 10), I = 1, 14) /14*1./
433    
434     C****
435     C**** -----------------------------------------------------------
436    
437     DATA (ALIDR (I, 1, 1), I = 1, 14)
438     * /0.2867, 0.2840, 0.2828, 0.2822, 0.2819, 0.2818, 2*0.2817,
439     * 6*0.2816
440     ` /
441     DATA (ALIDR (I, 2, 1), I = 1, 14)
442     * /0.3564, 0.3573, 0.3577, 0.3580, 2*0.3581, 8*0.3582/
443     DATA (ALIDR (I, 1, 2), I = 1, 14)
444     * /0.2848, 0.2819, 0.2804, 0.2798, 0.2795, 2*0.2793, 7*0.2792/
445     DATA (ALIDR (I, 2, 2), I = 1, 14)
446     * /0.3544, 0.3550, 0.3553, 2*0.3555, 9*0.3556/
447     DATA (ALIDR (I, 1, 3), I = 1, 14)
448     * /0.2350, 0.2311, 0.2293, 0.2285, 0.2281, 0.2280, 8*0.2279/
449     DATA (ALIDR (I, 2, 3), I = 1, 14)
450     * /0.2474, 0.2436, 0.2418, 0.2410, 0.2406, 0.2405, 3*0.2404,
451     * 5*0.2403
452     ` /
453     DATA (ALIDR (I, 1, 4), I = 1, 14)
454     * /0.5816, 0.6157, 0.6391, 0.6556, 0.6673, 0.6758, 0.6820,
455     * 0.6866, 0.6899, 0.6924, 0.6943, 0.6956, 0.6966, 0.6974
456     ` /
457     DATA (ALIDR (I, 2, 4), I = 1, 14)
458     * /0.5489, 0.5770, 0.5955, 0.6079, 0.6163, 0.6221, 0.6261,
459     * 0.6288, 0.6308, 0.6321, 0.6330, 0.6337, 0.6341, 0.6344
460     ` /
461     DATA (ALIDR (I, 1, 5), I = 1, 14)
462     & /0.2845, 0.2837, 0.2832, 0.2831, 0.2830, 9*0.2829/
463     DATA (ALIDR (I, 2, 5), I = 1, 14)
464     & /0.3532, 0.3562, 0.3578, 0.3586, 0.3590, 0.3592, 0.3594,
465     & 0.3594, 0.3594, 5*0.3595
466     ` /
467     DATA (ALIDR (I, 1, 6), I = 1, 14)
468     & /0.2825, 0.2812, 0.2806, 0.2803, 0.2802, 9*0.2801/
469     DATA (ALIDR (I, 2, 6), I = 1, 14)
470     & /0.3512, 0.3538, 0.3552, 0.3559, 0.3562, 0.3564, 0.3565,
471     & 0.3565, 6*0.3566
472     ` /
473    
474     DATA (ALIDR (I, 1, 7), I = 1, 14) /14*ALIDRS/
475     DATA (ALIDR (I, 2, 7), I = 1, 14) /14*ALIDRS/
476    
477     DATA (ALIDR (I, 1, 8), I = 1, 14) /14*ALIDRDL/
478     DATA (ALIDR (I, 2, 8), I = 1, 14) /14*ALIDRDL/
479    
480     DATA (ALIDR (I, 1, 9), I = 1, 14) /14*ALIDRI/
481     DATA (ALIDR (I, 2, 9), I = 1, 14) /14*ALIDRI/
482    
483     DATA (ALIDR (I, 1, 10), I = 1, 14) /14*ALIDRDD/
484     DATA (ALIDR (I, 2, 10), I = 1, 14) /14*ALIDRDD/
485    
486     C****
487     C**** -----------------------------------------------------------
488     DATA (BTIDR (I, 1, 1), I = 1, 14)
489     * /0.1291, 0.1707, 0.1969, 0.2125, 0.2216, 0.2267, 0.2295,
490     * 0.2311, 0.2319, 0.2323, 0.2326, 2*0.2327, 0.2328
491     ` /
492     DATA (BTIDR (I, 2, 1), I = 1, 14)
493     * /0.1939, 0.2357, 0.2598, 0.2735, 0.2810, 0.2851, 0.2874,
494     * 0.2885, 0.2892, 0.2895, 0.2897, 3*0.2898
495     ` /
496     DATA (BTIDR (I, 1, 2), I = 1, 14)
497     * /0.1217, 0.1522, 0.1713, 0.1820, 0.1879, 0.1910, 0.1926,
498     * 0.1935, 0.1939, 0.1942, 2*0.1943, 2*0.1944
499     ` /
500     DATA (BTIDR (I, 2, 2), I = 1, 14)
501     * /0.1781, 0.2067, 0.2221, 0.2301, 0.2342, 0.2363, 0.2374,
502     * 0.2379, 0.2382, 0.2383, 2*0.2384, 2*0.2385
503     ` /
504     DATA (BTIDR (I, 1, 3), I = 1, 14)
505     * /0.0846, 0.1299, 0.1614, 0.1814, 0.1935, 0.2004, 0.2043,
506     * 0.2064, 0.2076, 0.2082, 0.2085, 2*0.2087, 0.2088
507     ` /
508     DATA (BTIDR (I, 2, 3), I = 1, 14)
509     * /0.0950, 0.1410, 0.1722, 0.1921, 0.2042, 0.2111, 0.2151,
510     * 0.2172, 0.2184, 0.2191, 0.2194, 0.2196, 2*0.2197
511     ` /
512     DATA (BTIDR (I, 1, 4), I = 1, 14)
513     * /0.5256, 0.7444, 0.9908, 1.2700, 1.5680, 1.8505, 2.0767,
514     * 2.2211, 2.2808, 2.2774, 2.2362, 2.1779, 2.1160, 2.0564
515     ` /
516     DATA (BTIDR (I, 2, 4), I = 1, 14)
517     * /0.4843, 0.6714, 0.8577, 1.0335, 1.1812, 1.2858, 1.3458,
518     * 1.3688, 1.3685, 1.3546, 1.3360, 1.3168, 1.2989, 1.2838
519     ` /
520     DATA (BTIDR (I, 1, 5), I = 1, 14)
521     & /0.1498, 0.1930, 0.2201, 0.2364, 0.2460, 0.2514, 0.2544,
522     & 0.2560, 0.2569, 0.2574, 0.2577, 0.2578, 0.2579, 0.2579
523     ` /
524    
525     DATA (BTIDR (I, 2, 5), I = 1, 14)
526     & /0.2184, 0.2656, 0.2927, 0.3078, 0.3159, 0.3202, 0.3224,
527     & 0.3235, 0.3241, 0.3244, 0.3245, 3*0.3246
528     ` /
529    
530     DATA (BTIDR (I, 1, 6), I = 1, 14)
531     & /0.1369, 0.1681, 0.1860, 0.1958, 0.2010, 0.2038, 0.2053,
532     & 0.2060, 0.2064, 0.2066, 0.2067, 3*0.2068
533     ` /
534    
535     DATA (BTIDR (I, 2, 6), I = 1, 14)
536     & /0.1969, 0.2268, 0.2416, 0.2488, 0.2521, 0.2537, 0.2544,
537     & 0.2547, 0.2548, 5*0.2549
538     ` /
539    
540    
541     DATA (BTIDR (I, 1, 7), I = 1, 14) /14*0./
542     DATA (BTIDR (I, 2, 7), I = 1, 14) /14*0./
543    
544     DATA (BTIDR (I, 1, 8), I = 1, 14) /14*0./
545     DATA (BTIDR (I, 2, 8), I = 1, 14) /14*0./
546    
547     DATA (BTIDR (I, 1, 9), I = 1, 14) /14*0./
548     DATA (BTIDR (I, 2, 9), I = 1, 14) /14*0./
549    
550     DATA (BTIDR (I, 1, 10), I = 1, 14) /14*0./
551     DATA (BTIDR (I, 2, 10), I = 1, 14) /14*0./
552    
553     C****
554     C**** --------------------------------------------------------------
555     DATA (GMIDR (I, 1, 1), I = 1, 14)
556     * /0.1582, 0.2581, 0.3227, 0.3635, 0.3882, 0.4026, 0.4108,
557     * 0.4154, 0.4179, 0.4193, 0.4200, 0.4204, 0.4206, 0.4207
558     ` /
559     DATA (GMIDR (I, 2, 1), I = 1, 14)
560     * /0.1934, 0.3141, 0.3818, 0.4200, 0.4415, 0.4533, 0.4598,
561     * 0.4633, 0.4651, 0.4662, 0.4667, 0.4671, 2*0.4672
562     ` /
563     DATA (GMIDR (I, 1, 2), I = 1, 14)
564     * /0.1347, 0.1871, 0.2277, 0.2515, 0.2651, 0.2727, 0.2768,
565     * 0.2790, 0.2801, 0.2808, 0.2811, 0.2812, 0.2813, 0.2814
566     ` /
567     DATA (GMIDR (I, 2, 2), I = 1, 14)
568     * /0.1440, 0.2217, 0.2629, 0.2839, 0.2947, 0.3003, 0.3031,
569     * 0.3046, 0.3054, 0.3058, 0.3060, 2*0.3061, 0.3062
570     ` /
571     DATA (GMIDR (I, 1, 3), I = 1, 14)
572     * /0.1372, 0.2368, 0.3235, 0.3839, 0.4229, 0.4465, 0.4602,
573     * 0.4679, 0.4722, 0.4745, 0.4758, 0.4764, 0.4768, 0.4770
574     ` /
575     DATA (GMIDR (I, 2, 3), I = 1, 14)
576     * /0.1435, 0.2524, 0.3370, 0.3955, 0.4332, 0.4563, 0.4697,
577     * 0.4773, 0.4815, 0.4839, 0.4851, 0.4858, 0.4861, 0.4863
578     ` /
579     DATA (GMIDR (I, 1, 4), I = 1, 14)
580     * /0.4298, 0.9651, 1.6189, 2.4084, 3.2992, 4.1928, 4.9611,
581     * 5.5095, 5.8085, 5.9069, 5.8726, 5.7674, 5.6346, 5.4944
582     ` /
583     DATA (GMIDR (I, 2, 4), I = 1, 14)
584     * /0.4167, 0.8974, 1.4160, 1.9414, 2.4147, 2.7803, 3.0202,
585     * 3.1468, 3.1954, 3.1932, 3.1676, 3.1328, 3.0958, 3.0625
586     ` /
587     DATA (GMIDR (I, 1, 5), I = 1, 14)
588     & /0.1959, 0.3203, 0.3985, 0.4472, 0.4766, 0.4937, 0.5034,
589     & 0.5088, 0.5117, 0.5134, 0.5143, 0.5147, 0.5150, 0.5152
590     ` /
591    
592     DATA (GMIDR (I, 2, 5), I = 1, 14)
593     & /0.2328, 0.3859, 0.4734, 0.5227, 0.5498, 0.5644, 0.5720,
594     & 0.5761, 0.5781, 0.5792, 0.5797, 0.5800, 0.5802, 0.5802
595     ` /
596    
597     DATA (GMIDR (I, 1, 6), I = 1, 14)
598     & /0.1447, 0.2244, 0.2698, 0.2953, 0.3094, 0.3170, 0.3211,
599     & 0.3233, 0.3244, 0.3250, 0.3253, 0.3255, 0.3256, 0.3256
600     ` /
601    
602     DATA (GMIDR (I, 2, 6), I = 1, 14)
603     & /0.1643, 0.2624, 0.3110, 0.3347, 0.3461, 0.3517, 0.3543,
604     & 0.3556, 0.3562, 0.3564, 0.3565, 0.3566, 0.3566, 0.3566
605     ` /
606    
607     DATA (GMIDR (I, 1, 7), I = 1, 14) /14*1./
608     DATA (GMIDR (I, 2, 7), I = 1, 14) /14*1./
609    
610     DATA (GMIDR (I, 1, 8), I = 1, 14) /14*1./
611     DATA (GMIDR (I, 2, 8), I = 1, 14) /14*1./
612    
613     DATA (GMIDR (I, 1, 9), I = 1, 14) /14*1./
614     DATA (GMIDR (I, 2, 9), I = 1, 14) /14*1./
615    
616     DATA (GMIDR (I, 1, 10), I = 1, 14) /14*1./
617     DATA (GMIDR (I, 2, 10), I = 1, 14) /14*1./
618    
619    
620     C**** -----------------------------------------------------------
621    
622     DATA GRN /0.33, 0.67/
623    
624 molod 1.12 #include "snwmid.h"
625 molod 1.3 DATA SNWALB /.65, .38, .65, .38,
626     * .65, .38, .65, .38,
627     * .65, .38, .65, .38,
628     * .65, .38, .65, .38,
629     * .65, .38, .65, .38,
630     & .65, .38, .65, .38,
631     & .65, .38, .65, .38,
632     & .65, .38, .65, .38,
633     & .80, .60, .80, .60,
634     & .65, .38, .65, .38
635     ` /
636    
637 molod 1.14 #ifdef CRAY
638     #ifdef f77
639 molod 1.3 cfpp$ expand (coeff)
640     #endif
641     #endif
642    
643     DO 100 I=1,IRUN
644     ALA = MIN (MAX (ZERO, VLAI(I)), ALATRM)
645     LAI = 1 + MAX(0, INT((ALA-BLAI)/DLAI) )
646     DX = (ALA - (BLAI+(LAI-1)*DLAI)) * (ONE/DLAI)
647     DY = (VGRN(I)- GRN(1)) * (ONE/(GRN(2) - GRN(1)))
648    
649     ALPHA = COEFF (ALVDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
650     BETA = COEFF (BTVDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
651     GAMMA = COEFF (GMVDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
652    
653     AVISDR(I) = ALPHA - ZTH(I)*BETA / (GAMMA+ZTH(I))
654     AVISDF(I) = ALPHA-BETA
655     * + 2.*BETA*GAMMA*(1.-GAMMA*LOG((1.+GAMMA)/GAMMA))
656    
657     ALPHA = COEFF (ALIDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
658     BETA = COEFF (BTIDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
659     GAMMA = COEFF (GMIDR (1, 1, ITYP (I)), NLAI, LAI ,DX, DY)
660    
661     ANIRDR(I) = ALPHA - ZTH(I)*BETA / (GAMMA+ZTH(I))
662     ANIRDF(I) = ALPHA-BETA
663     * + 2.*BETA*GAMMA*(1.-GAMMA*LOG((1.+GAMMA)/GAMMA))
664    
665     IF (SNW (I) .GT. ZERO) THEN
666     FAC = SNW(I) / (SNW(I) + SNWMID(ITYP(I)))
667    
668     AVISDR(I) = AVISDR(I) + (SNWALB(1,ITYP(I)) - AVISDR(I)) * FAC
669     ANIRDR(I) = ANIRDR(I) + (SNWALB(2,ITYP(I)) - ANIRDR(I)) * FAC
670     AVISDF(I) = AVISDF(I) + (SNWALB(3,ITYP(I)) - AVISDF(I)) * FAC
671     ANIRDF(I) = ANIRDF(I) + (SNWALB(4,ITYP(I)) - ANIRDF(I)) * FAC
672     ENDIF
673    
674     100 CONTINUE
675    
676     RETURN
677     END
678     FUNCTION COEFF(TABLE, NTABL, LAI ,DX, DY)
679    
680     INTEGER NTABL, LAI
681 molod 1.16 _RL coeff
682     _RL TABLE (NTABL, 2), DX, DY
683 molod 1.3
684     COEFF = (TABLE(LAI, 1)
685     * + (TABLE(LAI ,2) - TABLE(LAI ,1)) * DY ) * (1.0-DX)
686     * + (TABLE(LAI+1,1)
687     * + (TABLE(LAI+1,2) - TABLE(LAI+1,1)) * DY ) * DX
688    
689     RETURN
690     END
691    
692 molod 1.15 SUBROUTINE GETLGR(sec,IMON,IDAY,ALAT,ITYP,NCHPS,nchpdim,
693     . nSx,nSy,bi,bj,ALAI,AGRN)
694 molod 1.3 C*********************************************************************
695     implicit none
696    
697     integer ntyps
698 molod 1.7 _RL one,daylen
699 molod 1.3 PARAMETER (NTYPS=10)
700     parameter (one = 1.)
701     parameter (daylen = 86400.)
702    
703 molod 1.15 integer sec, imon, iday, nchps, nchpdim, nSx, nSy, bi, bj
704     _RL ALAI(nchpdim,nSx,nSy), AGRN(nchpdim,nSx,nSy)
705     _RL ALAT(nchpdim)
706     integer ITYP(nchpdim,nSx,nSy)
707 molod 1.3
708     integer i,midmon,midm,midp,id,k1,k2,kk1,kk2
709 molod 1.7 _RL fac
710 molod 1.3
711     INTEGER DAYS(12)
712     DATA DAYS/31,28,31,30,31,30,31,31,30,31,30,31/
713    
714 molod 1.7 _RL VGLA(12,NTYPS), VGGR(12,NTYPS)
715 molod 1.3
716     DATA VGLA /
717     1 5.117, 5.117, 5.117, 5.117, 5.117, 5.117, 5.117, 5.117,
718     1 5.117, 5.117, 5.117, 5.117,
719     2 0.520, 0.520, 0.867, 2.107, 4.507, 6.773, 7.173, 6.507,
720     2 5.040, 2.173, 0.867, 0.520,
721     3 8.760, 9.160, 9.827,10.093,10.360,10.760,10.493,10.227,
722     3 10.093, 9.827, 9.160, 8.760,
723     4 0.782, 0.893, 1.004, 1.116, 1.782, 3.671, 4.782, 4.227,
724     4 2.004, 1.227, 1.004, 0.893,
725     5 3.760, 3.760, 2.760, 1.760, 1.760, 1.760, 1.760, 5.760,
726     5 10.760, 7.760, 4.760, 3.760,
727     6 0.739, 0.739, 0.739, 0.739, 0.739, 1.072, 5.072, 5.739,
728     6 4.405, 0.739, 0.739, 0.739,
729     7 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
730     7 0.001, 0.001, 0.001, 0.001,
731     8 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
732     8 0.001, 0.001, 0.001, 0.001,
733     9 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
734     9 0.001, 0.001, 0.001, 0.001,
735     1 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
736     1 0.001, 0.001, 0.001, 0.001
737     & /
738    
739    
740     DATA VGGR
741     1 /0.905, 0.905, 0.905, 0.905, 0.905, 0.905, 0.905, 0.905,
742     1 0.905, 0.905, 0.905, 0.905,
743     2 0.026, 0.026, 0.415, 0.759, 0.888, 0.925, 0.836, 0.697,
744     2 0.331, 0.166, 0.015, 0.026,
745     3 0.913, 0.917, 0.923, 0.925, 0.927, 0.905, 0.902, 0.913,
746     3 0.898, 0.855, 0.873, 0.913,
747     4 0.568, 0.622, 0.664, 0.697, 0.810, 0.908, 0.813, 0.394,
748     4 0.443, 0.543, 0.553, 0.498,
749     5 0.798, 0.532, 0.362, 0.568, 0.568, 0.568, 0.568, 0.868,
750     5 0.651, 0.515, 0.630, 0.798,
751     6 0.451, 0.451, 0.451, 0.451, 0.451, 0.622, 0.920, 0.697,
752     6 0.076, 0.451, 0.451, 0.451,
753     7 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
754     7 0.001, 0.001, 0.001, 0.001,
755     8 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
756     8 0.001, 0.001, 0.001, 0.001,
757     9 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
758     9 0.001, 0.001, 0.001, 0.001,
759     1 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
760     1 0.001, 0.001, 0.001, 0.001
761     & /
762    
763    
764     MIDMON = DAYS(IMON)/2 + 1
765    
766    
767     IF (IDAY .LT. MIDMON) THEN
768     K2 = IMON
769     K1 = MOD(IMON+10,12) + 1
770     ELSE
771     K1 = IMON
772     K2 = MOD(IMON,12) + 1
773     ENDIF
774    
775     IF (IDAY .LT. MIDMON) THEN
776     MIDM = DAYS(K1)/2 + 1
777     MIDP = DAYS(K1) + MIDMON
778     ID = IDAY + DAYS(K1)
779     ELSE
780     MIDM = MIDMON
781     MIDP = DAYS(K2)/2 + 1 + DAYS(K1)
782     ID = IDAY
783     ENDIF
784    
785 molod 1.8 FAC = (float(ID -MIDM)*DAYLEN + SEC) /
786     * (float(MIDP-MIDM)*DAYLEN )
787 molod 1.3
788     DO 220 I=1,NCHPS
789    
790     IF(ALAT(I).GT.0.) THEN
791     KK1 = K1
792     KK2 = K2
793     ELSE
794     KK1 = MOD(K1+5,12) + 1
795     KK2 = MOD(K2+5,12) + 1
796     ENDIF
797    
798 molod 1.7 ALAI(I,bi,bj) = VGLA(KK2,ITYP(I,bi,bj))*FAC+
799     . VGLA(KK1,ITYP(I,bi,bj))*(ONE-FAC)
800     AGRN(I,bi,bj) = VGGR(KK2,ITYP(I,bi,bj))*FAC+
801     . VGGR(KK1,ITYP(I,bi,bj))*(ONE-FAC)
802 molod 1.3
803     220 CONTINUE
804    
805     RETURN
806     END
807    
808 molod 1.7 subroutine getalb(sec,month,day,cosz,snodep,fraci,fracg,im,jm,
809 molod 1.15 . nchp,nchptot,nchpland,nSx,nSy,bi,bj,igrd,ityp,chfr,chlt,
810     . alai,agrn,albvr,albvf,albnr,albnf)
811 molod 1.3 C***********************************************************************
812     C PURPOSE
813     C To act as an interface to routine sibalb, which calculates
814     C the four albedos for use by the shortwave radiation routine
815     C
816     C INPUT:
817     C sec - number of seconds into the day of current time
818     C month - month of the year of current time
819     C day - day of the month of current time
820     C cosz - local cosine of the zenith angle [im,jm]
821 molod 1.7 C snodep - snow cover in meters [nchp,nSx,nSy]
822 molod 1.3 C fraci - real array in grid space of total sea ice fraction [im,jm]
823     C fracg - real array in grid space of total land fraction [im,jm]
824     C im - model grid longitude dimension
825     C jm - model grid latitude dimension (number of lat. points)
826     C nchp - integer actual number of tiles in tile space
827     C nchpland - integer number of land tiles
828 molod 1.7 C nSx - number of processors in x-direction
829     C nSy - number of processors in y-direction
830     C bi - processors index in x-direction
831     C bj - processors index in y-direction
832 molod 1.3 C igrd - integer array in tile space of grid point number for each
833 molod 1.7 C tile [nchp,nSx,nSy]
834 molod 1.3 C ityp - integer array in tile space of land surface type for each
835 molod 1.7 C tile [nchp,nSx,nSy]
836 molod 1.3 C chfr - real array in tile space of land surface type fraction for
837 molod 1.7 C each tile [nchp,nSx,nSy]
838 molod 1.3 C chlt - real array in tile space of latitude value for each tile
839 molod 1.7 C [nchp,nSx,nSy]
840 molod 1.3 C
841     C OUTPUT:
842     C albvr - real array [im,jm] of visible direct beam albedo
843     C albvf - real array [im,jm] of visible diffuse beam albedo
844     C albnr - real array [im,jm] of near-ir direct beam albedo
845     C albnf - real array [im,jm] of near-ir diffuse beam albedo
846     C
847     C***********************************************************************
848     implicit none
849 molod 1.7
850 molod 1.15 integer sec,month,day,im,jm,nchp,nchptot,nchpland,nSx,nSy,bi,bj
851 molod 1.16 _RL cosz(im,jm),fraci(im,jm),fracg(im,jm)
852 molod 1.7 _RL snodep(nchp,nSx,nSy),chfr(nchp,nSx,nSy),chlt(nchp,nSx,nSy)
853     integer igrd(nchp,nSx,nSy),ityp(nchp,nSx,nSy)
854     _RL alai(nchp,nSx,nSy),agrn(nchp,nSx,nSy)
855     _RL albvr(im,jm,nSx,nSy),albvf(im,jm,nSx,nSy)
856     _RL albnr(im,jm,nSx,nSy),albnf(im,jm,nSx,nSy)
857    
858     _RL one,a0,a1,a2,a3,ocnalb,albsi
859 molod 1.3 PARAMETER (one = 1.)
860     PARAMETER (A0= 0.40670980)
861     PARAMETER (A1=-1.2523634 )
862     PARAMETER (A2= 1.4224051 )
863     PARAMETER (A3=-0.55573341)
864     PARAMETER (OCNALB=0.08)
865 molod 1.7 PARAMETER (ALBSI=0.7)
866 molod 1.3
867 molod 1.16 _RL alboc(im,jm)
868     _RL AVISDR(nchp),ANIRDR(nchp),AVISDF(nchp)
869     _RL ANIRDF(nchp)
870     _RL zenith(nchp)
871     _RL tmpij(im,jm)
872 molod 1.3 integer i,j
873    
874     DO I=1,IM
875     DO J=1,JM
876     ALBOC(I,J) = A0 + (A1 + (A2 + A3*cosz(I,J))*cosz(I,J))*cosz(I,J)
877 molod 1.13 ALBVR(I,J,bi,bj) = ALBSI*FRACI(I,J) + ALBOC(I,J)*(ONE-FRACI(I,J))
878     ALBNR(I,J,bi,bj) = ALBVR(I,J,bi,bj)
879     ALBVF(I,J,bi,bj) = ALBSI * FRACI(I,J) + OCNALB * (ONE-FRACI(I,J))
880     ALBNF(I,J,bi,bj) = ALBVF(I,J,bi,bj)
881 molod 1.3 ENDDO
882     ENDDO
883    
884     C and now some conversions from grid space to tile space before sibalb
885    
886     call grd2msc(cosz,im,jm,igrd,zenith,nchp,nchpland)
887    
888     C and now call sibalb
889    
890 molod 1.7 call sibalb(avisdr,anirdr,avisdf,anirdf,alai(1,bi,bj),
891     . agrn(1,bi,bj),zenith,snodep(1,bi,bj),ityp(1,bi,bj),nchpland)
892 molod 1.15
893 molod 1.3 C finally some transformations back to grid space for albedos
894    
895 molod 1.15 print *,' In getalb, chfr: '
896     print *,(chfr(i,1,1),i=1,nchptot)
897    
898 molod 1.13 DO I=1,IM
899     DO J=1,JM
900 molod 1.15 tmpij(i,j) = albvr(i,j,bi,bj)
901 molod 1.13 ENDDO
902     ENDDO
903 molod 1.7 call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),avisdr,nchp,nchpland,
904 molod 1.13 . fracg,tmpij,im,jm)
905 molod 1.15
906     print *,' back from first msc2grd call '
907     stop
908    
909 molod 1.13 DO I=1,IM
910     DO J=1,JM
911     albvr(i,j,bi,bj) = tmpij(i,j)
912     ENDDO
913     ENDDO
914     DO I=1,IM
915     DO J=1,JM
916 molod 1.15 tmpij(i,j) = albvf(i,j,bi,bj)
917 molod 1.13 ENDDO
918     ENDDO
919 molod 1.7 call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),avisdf,nchp,nchpland,
920 molod 1.13 . fracg,tmpij,im,jm)
921     DO I=1,IM
922     DO J=1,JM
923     albvf(i,j,bi,bj) = tmpij(i,j)
924     ENDDO
925     ENDDO
926     DO I=1,IM
927     DO J=1,JM
928 molod 1.15 tmpij(i,j) = albnr(i,j,bi,bj)
929 molod 1.13 ENDDO
930     ENDDO
931 molod 1.7 call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),anirdr,nchp,nchpland,
932 molod 1.13 . fracg,tmpij,im,jm)
933     DO I=1,IM
934     DO J=1,JM
935     albnr(i,j,bi,bj) = tmpij(i,j)
936     ENDDO
937     ENDDO
938     DO I=1,IM
939     DO J=1,JM
940 molod 1.15 tmpij(i,j) = albnf(i,j,bi,bj)
941 molod 1.13 ENDDO
942     ENDDO
943 molod 1.7 call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),anirdf,nchp,nchpland,
944 molod 1.13 . fracg,tmpij,im,jm)
945     DO I=1,IM
946     DO J=1,JM
947     albnf(i,j,bi,bj) = tmpij(i,j)
948     ENDDO
949     ENDDO
950 molod 1.3
951     return
952     end
953    
954 molod 1.8 subroutine getemiss(fracg,im,jm,nchp,nSx,nSy,bi,bj,igrd,ityp,
955     . chfr,snowdep,fraci,emiss)
956 molod 1.3 C***********************************************************************
957     C PURPOSE
958     C To act as an interface to routine to emissivity, which calculates
959     C ten bands of surface emissivities for use by the longwave radiation
960     C
961     C INPUT:
962     C fracg - real array in grid space of total land fraction [im,jm]
963     C im - model grid longitude dimension
964     C jm - model grid latitude dimension (number of lat. points)
965     C nchp - integer actual number of tiles in tile space
966 molod 1.8 C nSx - number of processors in x-direction
967     C nSy - number of processors in y-direction
968     C bi - processors index in x-direction
969     C bj - processors index in y-direction
970 molod 1.3 C igrd - integer array in tile space of grid point number for each
971     C tile [nchp]
972     C ityp - integer array in tile space of land surface type for each
973     C tile [nchp]
974     C chfr - real array in tile space of land surface type fraction for
975     C each tile [nchp]
976     C snowdep - real array in tile space of snow depth (liquid water equiv)
977     C in mm [nchp]
978     C fraci - real array in tile space of sea ice fraction [nchp]
979     C
980     C OUTPUT:
981 molod 1.8 C emiss - real array [im,jm,10,nSx,nSy] - surface emissivity (frac)
982 molod 1.3 C
983     C***********************************************************************
984     implicit none
985 molod 1.8 integer im,jm,nchp,nSx,nSy,bi,bj
986 molod 1.16 _RL fracg(im,jm)
987 molod 1.8 _RL chfr(nchp,nSx,nSy)
988     integer igrd(nchp,nSx,nSy), ityp(nchp,nSx,nSy)
989 molod 1.13 _RL snowdep(nchp,nSx,nSy)
990 molod 1.16 _RL fraci(nchp)
991 molod 1.8 _RL emiss(im,jm,10,nSx,nSy)
992 molod 1.3
993 molod 1.16 _RL emisstile(nchp,10)
994     _RL tmpij(im,jm)
995 molod 1.8 integer i,j,k,n
996 molod 1.3
997     do i = 1,10
998     do n = 1,nchp
999     emisstile(n,i) = 1.
1000     enddo
1001     enddo
1002    
1003     c call emissivity to get values in tile space
1004     c -------------------------------------------
1005 molod 1.8 call emissivity(snowdep(1,bi,bj),fraci,nchp,ityp(1,bi,bj),
1006     . emisstile)
1007 molod 1.3
1008     c transform back to grid space for emissivities
1009     c ---------------------------------------------
1010 molod 1.8 do k = 1,10
1011     do j = 1,jm
1012     do i = 1,im
1013 molod 1.13 tmpij(i,j) = 0.0
1014 molod 1.8 enddo
1015     enddo
1016     call msc2grd(igrd(1,bi,bj),chfr(1,bi,bj),emisstile(1,k),nchp,nchp,
1017 molod 1.13 . fracg,tmpij,im,jm)
1018     do j = 1,jm
1019     do i = 1,im
1020     emiss(i,j,k,bi,bj) = tmpij(i,j)
1021     enddo
1022     enddo
1023 molod 1.3 enddo
1024    
1025     return
1026     end
1027    
1028     subroutine emissivity (snowdepth,fraci,numpts,ityp,newemis)
1029     implicit none
1030     integer numpts
1031     integer ityp(numpts)
1032 molod 1.13 _RL snowdepth(numpts)
1033 molod 1.16 _RL fraci(numpts)
1034     _RL newemis(numpts,10)
1035 molod 1.3
1036 molod 1.16 _RL emis(12,11)
1037     _RL fac
1038 molod 1.3 integer i,j
1039    
1040     c-----------------------------------------------------------------------
1041     c NOTE: Emissivities were obtained for the following surface types:
1042     c ( 1) evergreen needleleaf = conifer
1043     c ( 2) evergreen broadleaf = conifer
1044     c ( 3) deciduous needleleaf = deciduous
1045     c ( 4) deciduous broadleaf = deciduous
1046     c ( 5) mixed forests = 1/2 conifer + 1/2 deciduous = tree
1047     c ( 6) closed shrublands = 3/4 tree + 1/4 quartz
1048     c ( 7) open shrubland = 1/4 tree + 3/4 quartz
1049     c ( 8) woody savannas = grass
1050     c ( 9) savannas = grass
1051     c (10) grasslands = grass
1052     c (11) permanent wetlands = 1/2 grass + 1/2 water
1053     c (12) croplands = grass
1054     c (13) urban = black body
1055     c (14) mosaic = 1/2 grass + 1/2 mixed forest
1056     c (15) snow/ice
1057     c (16) barren/sparsely vegetated = desert(quartz)
1058     c (17) water
1059     c (18) tundra = frost
1060     c
1061     c NOTE: Translation to Koster-Suarez surface types was as follows:
1062     c ( 1) broadleaf evergreen FROM above type 1 (conifer)
1063     c ( 2) broadleaf deciduous FROM above type 2 (deciduous)
1064     c ( 3) needleleaf evergreen FROM above type 1 (conifer)
1065     c ( 4) groundcover FROM above type 10 (grass)
1066     c ( 5) broadleaf shrubs FROM above type 6 (closed shrublands)
1067     c ( 6) dwarf trees (tundra) FROM above type 18 (tundra)
1068     c ( 7) bare soil FROM above type 16 (desert)
1069     c ( 8) light desert FROM above type 16 (desert)
1070     c ( 9) glacier FROM above type 15 (snow/ice)
1071     c ( 10) dark desert FROM above type 16 (desert)
1072     c (100) ocean FROM above type 17 (water)
1073     c
1074     c NOTE: snow-covered ground uses interpolated emissivities based on snow depth
1075     c =============================================================================
1076     c -----------------------------------------------------------------------------
1077     c Emmissivities for 12 bands in Fu/Liou
1078     c band 1: 4.5 - 5.3 um
1079     c band 2: 5.3 - 5.9 um
1080     c band 3: 5.9 - 7.1 um
1081     c band 4: 7.1 - 8.0 um
1082     c band 5: 8.0 - 9.1 um
1083     c band 6: 9.1 - 10.2 um
1084     c band 7: 10.2 - 12.5 um
1085     c band 8: 12.5 - 14.9 um
1086     c band 9: 14.9 - 18.5 um
1087     c band 10: 18.5 - 25.0 um
1088     c band 11: 25.0 - 35.7 um
1089     c band 12: 35.7 - oo um
1090     c
1091     c-------------------------------------------------------------------------
1092     data ((emis(i,j),i=1,12),j=1,11) /
1093 molod 1.9 C evergreen needleleaf
1094     & 0.9891, 0.9892, 0.9900, 0.9914, 0.9908, 0.9903,
1095 molod 1.3 & 0.9898, 0.9948, 1.0000, 1.0000, 1.0000, 1.0000,
1096 molod 1.9 C deciduous needleleaf
1097     & 0.9849, 0.9856, 0.9841, 0.9831, 0.9789, 0.9805,
1098 molod 1.3 & 0.9733, 0.9869, 1.0000, 1.0000, 1.0000, 1.0000,
1099 molod 1.9 C evergreen needleleaf
1100     & 0.9891, 0.9892, 0.9900, 0.9914, 0.9908, 0.9903,
1101 molod 1.3 & 0.9898, 0.9948, 1.0000, 1.0000, 1.0000, 1.0000,
1102 molod 1.9 C grasslands
1103     & 0.9867, 0.9897, 0.9920, 0.9933, 0.9830, 0.9752,
1104 molod 1.3 & 0.9853, 0.9928, 1.0000, 1.0000, 1.0000, 1.0000,
1105 molod 1.9 C closed shrublands
1106     & 0.9490, 0.9697, 0.9738, 0.9712, 0.9474, 0.9582,
1107 molod 1.3 & 0.9663, 0.9747, 0.9836, 0.9836, 0.9836, 0.9836,
1108 molod 1.9 C tundra
1109     & 0.9469, 0.9670, 0.9883, 0.9795, 0.9751, 0.9767,
1110 molod 1.3 & 0.9920, 0.9888, 0.9888, 0.9888, 0.9888, 0.9888,
1111 molod 1.9 C barren
1112     & 0.8353, 0.9163, 0.9342, 0.9229, 0.8354, 0.8766,
1113 molod 1.3 & 0.9210, 0.9262, 0.9345, 0.9345, 0.9345, 0.9345,
1114 molod 1.9 C barren
1115     & 0.8353, 0.9163, 0.9342, 0.9229, 0.8354, 0.8766,
1116 molod 1.3 & 0.9210, 0.9262, 0.9345, 0.9345, 0.9345, 0.9345,
1117 molod 1.9 C snow/ice
1118     & 0.9998, 0.9998, 0.9998, 0.9998, 0.9998, 0.9999,
1119 molod 1.3 & 0.9997, 0.9994, 0.9995, 0.9995, 0.9995, 0.9995,
1120 molod 1.9 C barren
1121     & 0.8353, 0.9163, 0.9342, 0.9229, 0.8354, 0.8766,
1122 molod 1.3 & 0.9210, 0.9262, 0.9345, 0.9345, 0.9345, 0.9345,
1123 molod 1.9 C water
1124     & 0.9788, 0.9833, 0.9819, 0.9820, 0.9835, 0.9865,
1125 molod 1.3 & 0.9886, 0.9719, 0.9719, 0.9719, 0.9719, 0.9719/
1126    
1127 molod 1.12 #include "snwmid.h"
1128 molod 1.3
1129     c Convert to the 10 bands needed by Chou Radiation
1130     c ------------------------------------------------
1131     do i=1,numpts
1132    
1133     c land points
1134     c------------
1135     if(ityp(i).le.10)then
1136     newemis(i, 1) = (emis( 1,ityp(i))+emis(2,ityp(i)))/2.
1137     newemis(i, 2) = (emis( 2,ityp(i))+emis(3,ityp(i)))/2.
1138     newemis(i, 3) = (emis( 4,ityp(i))+emis(5,ityp(i)))/2.
1139     newemis(i, 4) = emis( 6,ityp(i))
1140     newemis(i, 5) = emis( 7,ityp(i))
1141     newemis(i, 6) = emis( 8,ityp(i))
1142     newemis(i, 7) = emis( 9,ityp(i))
1143     newemis(i, 8) = (emis(10,ityp(i))+emis(11,ityp(i)))/2.
1144     newemis(i, 9) = emis(12,ityp(i))
1145     newemis(i,10) = emis( 4,ityp(i))
1146    
1147     c modify emissivity for snow based on snow depth (like albedo)
1148     c-------------------------------------------------------------
1149     if(snowdepth (i).gt.0.) then
1150     fac = snowdepth(i) / (snowdepth(i) + snwmid(ityp(i)))
1151 molod 1.9 newemis(i, 1) = newemis(i, 1) + (((emis( 1,9)+emis( 2,9))/2.)
1152     . - newemis(i, 1)) * fac
1153     newemis(i, 2) = newemis(i, 2) + (((emis( 2,9)+emis( 3,9))/2.)
1154     . - newemis(i, 2)) * fac
1155     newemis(i, 3) = newemis(i, 3) + (((emis( 4,9)+emis( 5,9))/2.)
1156     . - newemis(i, 3)) * fac
1157     newemis(i, 4) = newemis(i, 4) + (emis( 6,9)
1158     . - newemis(i, 4)) * fac
1159     newemis(i, 5) = newemis(i, 5) + (emis( 7,9)
1160     . - newemis(i, 5)) * fac
1161     newemis(i, 6) = newemis(i, 6) + (emis( 8,9)
1162     . - newemis(i, 6)) * fac
1163     newemis(i, 7) = newemis(i, 7) + (emis( 9,9)
1164     . - newemis(i, 7)) * fac
1165     newemis(i, 8) = newemis(i, 8) + (((emis(10,9)+emis(11,9))/2.)
1166     . - newemis(i, 8)) * fac
1167     newemis(i, 9) = newemis(i, 9) + (emis(12,9)
1168     . - newemis(i, 9)) * fac
1169     newemis(i,10) = newemis(i,10) + (emis( 4,9)
1170     . - newemis(i,10)) * fac
1171 molod 1.3 endif
1172    
1173     c open water
1174     c-----------
1175     else
1176     if(fraci(i).eq.0.)then
1177     newemis(i, 1) = (emis( 1,11)+emis(2,11))/2.
1178     newemis(i, 2) = (emis( 2,11)+emis(3,11))/2.
1179     newemis(i, 3) = (emis( 4,11)+emis(5,11))/2.
1180     newemis(i, 4) = emis( 6,11)
1181     newemis(i, 5) = emis( 7,11)
1182     newemis(i, 6) = emis( 8,11)
1183     newemis(i, 7) = emis( 9,11)
1184     newemis(i, 8) = (emis(10,11)+emis(11,11))/2.
1185     newemis(i, 9) = emis(12,11)
1186     newemis(i,10) = emis( 4,11)
1187    
1188     c sea ice (like glacier and snow)
1189     c--------------------------------
1190     else
1191     newemis(i, 1) = (emis( 1,9)+emis(2,9))/2.
1192     newemis(i, 2) = (emis( 2,9)+emis(3,9))/2.
1193     newemis(i, 3) = (emis( 4,9)+emis(5,9))/2.
1194     newemis(i, 4) = emis( 6,9)
1195     newemis(i, 5) = emis( 7,9)
1196     newemis(i, 6) = emis( 8,9)
1197     newemis(i, 7) = emis( 9,9)
1198     newemis(i, 8) = (emis(10,9)+emis(11,9))/2.
1199     newemis(i, 9) = emis(12,9)
1200     newemis(i,10) = emis( 4,9)
1201     endif
1202     endif
1203 molod 1.6 enddo
1204    
1205     return
1206     end
1207     subroutine get_landfrac(im,jm,nSx,nSy,bi,bj,maxtyp,surftype,
1208     . tilefrac,frac)
1209     C***********************************************************************
1210     C Purpose
1211     C To compute the total fraction of land within a model grid-box
1212     C
1213     C***********************************************************************
1214     implicit none
1215    
1216 molod 1.13 integer im,jm,nSx,nSy,bi,bj,maxtyp
1217     integer surftype(im,jm,maxtyp,nSx,nSy)
1218     _RL tilefrac(im,jm,maxtyp,nSx,nSy)
1219 molod 1.16 _RL frac(im,jm)
1220 molod 1.6
1221     integer i,j,k
1222    
1223     do j=1,jm
1224     do i=1,im
1225     frac(i,j) = 0.0
1226     enddo
1227     enddo
1228    
1229     do k=1,maxtyp
1230     do j=1,jm
1231     do i=1,im
1232 molod 1.13 if( (surftype(i,j,k,bi,bj).lt.100.).and.
1233     . (tilefrac(i,j,k,bi,bj).gt.0.0))then
1234 molod 1.6 frac(i,j) = frac(i,j) + tilefrac(i,j,k,bi,bj)
1235     endif
1236     enddo
1237     enddo
1238 molod 1.3 enddo
1239    
1240     return
1241     end

  ViewVC Help
Powered by ViewVC 1.1.22