/[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.8 - (hide annotations) (download)
Thu Jun 10 20:53:19 2004 UTC (20 years ago) by molod
Branch: MAIN
Changes since 1.7: +32 -22 lines
Developing

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

  ViewVC Help
Powered by ViewVC 1.1.22