/[MITgcm]/MITgcm_contrib/jscott/igsm/src/radia_chem.F
ViewVC logotype

Contents of /MITgcm_contrib/jscott/igsm/src/radia_chem.F

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


Revision 1.2 - (show annotations) (download)
Tue Aug 22 20:25:52 2006 UTC (18 years, 11 months ago) by jscott
Branch: MAIN
Changes since 1.1: +1 -1 lines
changed AGRID.COM -> AGRID.h

1
2 #include "ctrparam.h"
3
4 ! ==========================================================
5 !
6 ! RADIA.F: THIS SUBROUTINES ADDS THE RADIATION HEATING TO
7 ! THE TEMPERATURES
8 !
9 ! ----------------------------------------------------------
10 !
11 ! Author of Chemistry Modules: Chien Wang
12 !
13 ! ----------------------------------------------------------
14 !
15 ! Revision History:
16 !
17 ! When Who What
18 ! ---- ---------- -------
19 ! 073100 Chien Wang repack based on CliChem3 & M24x11,
20 ! and add cpp.
21 ! 081100 Chien/Andrei add missing sulfr call.
22 !
23 ! ==========================================================
24
25 SUBROUTINE RADIA_CHEM
26 C**** 5002.
27 C**** THIS SUBROUTINES ADDS THE RADIATION HEATING TO THE TEMPERATURES 5003.
28 C**** 5004.
29
30 #include "BD2G04.COM" 5005.
31 #include "chem_para"
32 #include "chem_com"
33
34 parameter (nghg=5)
35
36 COMMON U,V,T,P,Q 5006.
37 COMMON/WORK1/CONV(IM0,JM0,LM0),PK(IM0,JM0,LM0),PREC(IM0,JM0),
38 & TPREC(IM0,JM0), 5007.
39 * COSZ1(IO0,JM0),COSZ2(IO0,JM0),COSZA(IO0,JM0), 5008.
40 * TRINCG(IO0,JM0),BTMPW(IO0,JM0),SNFS(IO0,JM0,4),TNFS(IO0,JM0,4), 5009.
41 * TRHRS(IO0,JM0,3),SRHRS(IO0,JM0,3),ALB(IO0,JM0,9) 5010.
42 COMMON/WORK2/CLDSS(IM0,JM0,LM0),CLDMC(IM0,JM0,LM0), 5011.
43 * TOTCLD(36) 5012.
44 DIMENSION TRNFP0(JM0),TRNFP1(JM0),ALBJ(JM0,9)
45 real ODATA2(JM0,2),GDATA2(JM0,14),BDATA2(JM0,2),FDATA2(JM0,2),
46 * RQT2(JM0,3)
47 common/SURRAD/TRSURF(JM0,4),SRSURF(JM0,4)
48 common/FORAERSOL/FORSULF,FORBC,FORVOL
49 logical FORSULF,FORBC,FORVOL
50 C COMMON/WORK4/ IS BEING USED BY THE RADIATION ROUTINES 5013.
51 C 5014.
52 C RADCOM: CONTROL/INPUT PARAMETERS 5015.
53 C 5016.
54 COMMON/RADCOM/VADATA(11,4,3),DGLAT(46),DGLON(72),TMINSR,FULGAS(18)5017.
55 A ,FRACSL,RATQSL,FOGTSL,PTLISO,TLGRAD,TKCICE,FGOLDU(18)5018.
56 B ,FLONO3,FRAYLE,FCLDTR,FCLDSR,FALGAE,FMARCL,FEMTRA(6) 5019.
57 C ,WETTRA,WETSRA,DMOICE,DMLICE,LICETK,NTRCE,FZASRA(6) 5020.
58 D ,ID5(5),ITR(4),IMG(2),ILG(2),LAPGAS,KWVCON,NORMS0,NV 5021.
59 E ,KEEPRH,KEEPAL,ISOSCT,IHGSCT,KFRACC,KGASSR,KAERSR 5022.
60 F ,MARCLD,LAYTOP,LMR,LMRP,JMLAT,IMLON,KFORCE,LASTVC 5023.
61 C 5024.
62 C BASIC RADCOM INPUT DATA 5025.
63 C 5026.
64 G ,PLE(40),HLB(40),TLB(40),TLT(40),TL(40),U0GAS(40,9) 5027.
65 H ,ULGAS(40,9),TRACER(40,4),RTAU(40),QL(40),RHL(40) 5028.
66 I ,POCEAN,PEARTH,POICE,PLICE,AGESN,SNOWE,SNOWOI,SNOWLI 5029.
67 J ,TGO,TGE,TGOI,TGLI,TS,WS,WEARTH,ZOICE,FSPARE(200) 5030.
68 K ,S0,COSZ,PVT(11),BXA(153),SRBXAL(15,2),FRC(5),LUXGAS 5031.
69 L ,JYEARR,JDAYR,JLAT,ILON,MEANAL,KALVIS,ISPARE(25),SGPS5032.
70 C 5033.
71 C BASIC RADCOM OUTPUT DATA 5034.
72 C 5035.
73 M ,TRDFLB(40),TRUFLB(40),TRNFLB(40),TRFCRL(40),TRSLCR 5036.
74 N ,SRDFLB(40),SRUFLB(40),SRNFLB(40),SRFHRL(40),SRSLHR 5037.
75 O ,SRIVIS,SROVIS,PLAVIS,SRINIR,SRONIR,PLANIR,SRXATM(4) 5038.
76 P ,SRDVIS,SRUVIS,ALBVIS,SRDNIR,SRUNIR,ALBNIR,FSRNFG(4) 5039.
77 Q ,SRTVIS,SRRVIS,SRAVIS,SRTNIR,SRRNIR,SRANIR,FTRUFG(4) 5040.
78 R ,TRDFGW,TRUFGW,TRUFTW,BTEMPW,TRDFSL,TRUFSL,DTRUFG(4) 5041.
79 S ,TRSLTS,TRSLTG,TRSLWV,TRSLBS,TTRUFG,LBOTCL,LTOPCL 5042.
80 DIMENSION COE(39) 5043.
81 LOGICAL POLE,DC25,HPRNT,WRCLD,CLDFEED 5044.
82 #if ( defined OCEAN_3D )
83 #include "AGRID.h"
84 #endif
85
86 #if ( defined CLM )
87 #include "CLM.COM"
88 #endif
89 c
90 common/conprn/HPRNT
91 common/COMCLD/READGHG,PCLOUD,WRCLD,NWRCLD,NWRCL,INYEAR,JNDAY
92 &,CFAEROSOL,ALFA,CFBC,cfvolaer
93 COMMON/ADDALB/BVSURFA,XVSURFA,BNSURFA,XNSURFA
94 dimension STAERMN(JM0,12,2000),JDY(12)
95 DATA JDY/31,59,90,120,151,181,212,243,278,304,334,365/
96 common/cldfdb/coefcl(3),CLDFEED
97 common/aexpc/AEXP,ISTRT1
98 common/ SNOWALB/FRSNALB
99 dimension CLDSSF(JM0,LM0),CLDMCF(JM0,LM0)
100 &,BSO4LAND(JM0),BSO4OCEAN(JM0),BSO4TOTAL(JM0)
101 dimension DSWSRF(jm0),DLWSRF(jm0),DSWVIS(jm0),DSWNIR(jm0)
102 integer PCLOUD
103 common/TSUR/TSURFC(JM0,0:13),TSURFT(JM0),TSURFD(JM0),DTSURF(JM0)
104 *,cfcld(JM0,3)
105 CHARACTER*4 JMNTHF,JMLAST
106 DATA JMLAST /'LAST'/
107 DATA TF/273.16/,TCIR/258.16/,STBO/.567257E-7/,IFIRST/1/,JDLAST/-9/5045.
108 DATA IRFIRST /1/
109 C **** CLEAR SKY
110 dimension SRHRCL(JM0),TRHRCL(JM0),ALBCL(JM0),SNP1CL(JM0),
111 *SNP0CL(JM0),TRINCL(JM0),TRP0CL(JM0),TRP1CL(JM0)
112 common/clrsk/CLEAR(JM0),NCLR(JM0),AJCLR(JM0,12),BJCLR(JM0,12),
113 * CJCLR(JM0,12)
114 integer CLEAR
115 C AJCLR
116 C 1 SW INC AT P0 RD (AJ(1))
117 C 2 SW ABS BELOW P0 RD (AJ(2))
118 C 3 SW ABS BELOW P1 RD (AJ(3))
119 C 4 SW ABS AT Z0 RD (AJ(6))
120 C 5 SW INC AT Z0 RD (AJ(5))
121 C 6 LW INC AT Z0 RD (AJ(67))
122 C 7 NET LW AT Z0 SF (AJ(9))
123 C 8 NET LW AT P0 RD (AJ(7))
124 C 9 NET LW AT P1 RD (AJ(8))
125 C 10 NET RAD AT P0 DG (AJ(10))
126 C 11 NET RAD AT P1 DG (AJ(11))
127 C 12 NET RAD AT Z0 DG (AJ(12))
128 C **** CLEAR SKY
129 C**** 5046.
130 C**** FDATA 2 LAND COVERAGE (1) 5047.
131 C**** 3 RATIO OF LAND ICE COVERAGE TO LAND COVERAGE (1) 5048.
132 C**** 5049.
133 C**** ODATA 1 OCEAN TEMPERATURE (C) 5050.
134 C**** 2 RATIO OF OCEAN ICE COVERAGE TO WATER COVERAGE (1) 5051.
135 C**** 5052.
136 C**** GDATA 1 OCEAN ICE SNOW AMOUNT (KG/M**2) 5053.
137 C**** 2 EARTH SNOW AMOUNT (KG/M**2) 5054.
138 C**** 3 OCEAN ICE TEMPERATURE OF FIRST LAYER (C) 5055.
139 C**** 4 EARTH TEMPERATURE OF FIRST LAYER (C) 5056.
140 C**** 5 EARTH WATER OF FIRST LAYER (KG/M**2) 5057.
141 C**** 6 EARTH ICE OF FIRST LAYER (KG/M**2) 5058.
142 C**** 11 AGE OF SNOW (DAYS) 5059.
143 C**** 12 LAND ICE SNOW AMOUNT (KG/M**2) 5060.
144 C**** 13 LAND ICE TEMPERATURE OF FIRST LAYER (C) 5061.
145 C**** 5062.
146 C**** BLDATA 1 COMPOSITE SURFACE WIND MAGNITUDE (M/S) 5063.
147 C**** 2 COMPOSITE SURFACE AIR TEMPERATURE (K) 5064.
148 C**** 5 FREE 5065.
149 C**** 5066.
150 C**** VDATA 1-8 EARTH RATIOS FOR THE 8 VEGETATION TYPES (1) 5067.
151 C**** 9 WATER FIELD CAPACITY OF FIRST LAYER (KG/M**2) 5068.
152 C**** 5069.
153 IF(MODRD.EQ.0) IDACC(2)=IDACC(2)+1 5070.
154 IF (IFIRST.NE.1) GO TO 50 5071.
155 BETA=0.29
156 JDAYR=JNDAY
157 JYEARR=INYEAR
158 nreadcld=0
159 nrbyyr=24*365/5
160 nrcldmax=20*nrbyyr
161 c print *,' CLOUDS for ',nrcldmax/nrbyyr,' years'
162 KTREND=-CO2
163 JDAY00=-1
164 print *,' Radiation for Climate-chemistry model'
165 print *,' READGHG=',READGHG
166 print *,' CFAEROSOL=',CFAEROSOL
167 print *,' Aerosol land/ocean distribution from HC data'
168 print *,' separate caclulations for land and ocean'
169 if(CFBC.gt.0.0)then
170 print *,'With black carbon forcing CFBC=',CFBC
171 else
172 print *,'Without black carbon forcing CFBC=',CFBC
173 endif
174 RVOL=0.012
175 #if ( defined VOL_AER )
176 print *,'With volcanic forcing cfvolaer=',cfvolaer
177 #endif
178 if(FORSULF) then
179 print *,'SULFATE AEROSOL FORCING IS CALCULATED'
180 endif
181 if(FORBC) then
182 print *,'BC AEROSOL FORCING IS CALCULATED'
183 endif
184 if(FORVOL) then
185 print *,'VOL AEROSOL FORCING IS CALCULATED'
186 endif
187 if(CLDFEED)then
188 print *,' for low and middle clouds',coefcl(1)
189 print *,' for top clouds',coefcl(2)
190 print *,' for MC clouds',coefcl(3)
191 endif
192 DC25=.TRUE.
193 c DC25=.FALSE.
194 if(DC25)then
195 print *,' with DC'
196 else
197 print *,' without DC'
198 print *,' subroutine COSZR'
199 end if
200 if(abs(PCLOUD-3.).gt.1.5.and..NOT.WRCLD)IFIRST=0 5072.
201 LMP1=LM+1 5072.1
202 DTCNDS=NCNDS*DT 5073.
203 C**** SET THE CONTROL PARAMETERS FOR THE RADIATION 5074.
204 JMLAT=JM 5074.1
205 ! if(JM.ne.24) then
206 DO J=1,JMLAT
207 DGLAT(J)=acos(COSP(J))*360./TWOPI
208 if(J.le.JMLAT/2)DGLAT(J)=-DGLAT(J)
209 END DO
210 ! endif
211 c print *,' DGLAT'
212 c print '(13f7.3)',DGLAT
213 IMLON=IO 5074.2
214 LMR=LM+3 5075.
215 COEX=.01*GRAV*KAPA/RGAS 5076.
216 PSFMPT=PSF-PTOP 5077.
217 DO 30 L=1,LM 5078.
218 COE(L)=DTCNDS*COEX/DSIG(L) 5079.
219 30 PLE(L)=SIGE(L)*(PSF-PTOP)+PTOP 5080.
220 PLE(LMP1)=PTOP 5081.
221 PLE(LM+2)=.5*PTOP 5082.
222 PLE(LMR)=.2*PTOP 5083.
223 PLE(LMR+1)=1.E-5 5084.
224 DO 40 LR=LMP1,LMR 5085.
225 COE(LR)=DT*NRAD*COEX/(PLE(LR)-PLE(LR+1)) 5086.
226 QL(LR)=.3E-5 5087.
227 40 RTAU(LR)=0. 5088.
228 DPMICE=10. 5089.
229 C S0X=1. 5089.1
230 #if ( defined VOL_AER )
231 call read_staer (NYVADAT,STAERMN)
232 #else
233 FVOL=0.0
234 #endif
235 CALL RADIA0 (IO,JM,CO2,READGHG) 5090.
236 INCHM=NRAD/NDYN 5091.
237 C**** CLOUD LAYER INDICES USED FOR DIAGNOSTICS 5092.
238 DO 43 L=1,LM 5093.
239 LLOW=L 5094.
240 IF (.5*(PLE(L+1)+PLE(L+2)).LT.786.) GO TO 44 5095.
241 43 CONTINUE 5096.
242 44 LMID1=LLOW+1 5097.
243 DO 45 L=LMID1,LM 5098.
244 LMID=L 5099.
245 IF (.5*(PLE(L+1)+PLE(L+2)).LT.430.) GO TO 46 5100.
246 45 CONTINUE 5101.
247 46 LHI1=LMID+1 5102.
248 LHI=LM 5103.
249 IF (LHI1.GT.LHI) LHI=LHI1 5104.
250 WRITE (6,47) LLOW,LMID1,LMID,LHI1,LHI 5105.
251 47 FORMAT (' LOW CLOUDS IN LAYERS 1-',I2,' MID LEVEL CLOUDS IN',5106.
252 * ' LAYERS',I3,'-',I2,' HIGH CLOUDS IN LAYERS',I3,'-',I2) 5107.
253 C**** NO RADIATION AVERAGING IJRA=1 JRA=1 IRA=1 5108.
254 C**** RADIATION AVERAGING IN I 2 1 2 5109.
255 C**** RADIATION AVERAGING IN I AND J 4 2 2 5110.
256 JRA=(IJRA+2)/3 5111.
257 IRA=IJRA/JRA 5112.
258 50 JALTER=MOD(NSTEP,NRAD*JRA)/NRAD 5113.
259 JDAYR=JDAY
260 JYEARR=JYEAR
261 IALTER=MOD(NSTEP,NRAD*IJRA)/(NRAD*JRA) 5114.
262 S0=S0X*1367./RSDIST 5115.
263 C**** CALCULATE AVERAGE COSINE OF ZENITH ANGLE FOR CURRENT COMP3 STEP 5116.
264 C**** AND RADIATION PERIOD 5117.
265 ROT1=TWOPI*TOFDAY/24. 5118.
266 if(DC25)then
267 ROT2=ROT1+TWOPI*DTCNDS/SDAY 5119.
268 CALL COSZT (IO,JM,SIND,COSD,ROT1,ROT2,COSZ1) 5120.
269 else
270 ROT2=ROT1+TWOPI
271 CALL COSZR (IO,JM,SIND,COSD,ROT1,ROT2,COSZ1)
272 end if
273 if(HPRNT)then
274 print *,' radia TAU=',TAU
275 print *,' CLDSS'
276 print *,(CLDSS(1,7,L),L=1,LM)
277 print *,' CLDMC'
278 print *,(CLDMC(1,7,L),L=1,LM)
279 endif
280 cprint *,' form radia TAU=',TAU,'MODRD=',MODRD
281 C
282 IF(MODRD.NE.0) GO TO 840 5121.
283 C
284 ROT2=ROT1+TWOPI*NRAD*DT/SDAY 5122.
285 CALL COSZS (IO,JM,SIND,COSD,ROT1,ROT2,COSZ2,COSZA) 5123.
286 C**** 5124.
287 C**** COMPUTE EARTH ALBEDOS AND OTHER PARAMETERS FOR BEGINNING OF DAY 5125.
288
289 TNOW=JYEAR+(JDAY-.5)/365. 5127.1
290 if(READGHG.eq.1) TNOW=INYEAR+(JDAY-.5)/365.
291 KWRITE=0
292 if(JMONTH.ne.JMLAST) then
293 KWRITE=1
294 if(READGHG.eq.2) call tgases(CO2,JMONTH)
295 if(READGHG.eq.1) call rtgases(CO2,JMONTH)
296 #if ( defined VOL_AER )
297 do MNAER=1,12
298 if (JDAY.le.JDY(MNAER)) go to 458
299 enddo
300 458 continue
301 c print *,' MNAER=', MNAER,' MONTH=',JMONTH
302 #endif
303 endif
304 JMLAST=JMONTH
305 c print *,'FROM radia, JDAY=',JDAY,' JDLAST=',JDLAST
306 c print *,' KTREND=',KTREND
307 IF (JDAY.NE.JDLAST.AND.KTREND.GT.0)
308 & CALL FORGET(TNOW,KTREND,KWRITE)
309 IF (JDAY.NE.JDLAST)then
310
311 #ifdef PREDICTED_GASES
312 call chemglobal(P)
313 #endif
314
315 call sulfr(BSO4LAND,BSO4OCEAN,TNOW)
316 c call sulfr_2050(BSO4LAND,BSO4OCEAN,TNOW)
317 do j=1,jm
318 FLAND=FDATA(1,J,2)
319 BSO4TOTAL(j)=BSO4LAND(j)*FLAND+BSO4OCEAN(j)*(1.-FLAND)
320 !
321 c for sulfate.4x5.1986.new.dat
322 c BSO4TOTAL(j)=BSO4LAND(j)+BSO4OCEAN(j)
323 c if(FLAND.gt.0.0)BSO4LAND(j)=BSO4LAND(j)/FLAND
324 c if(FLAND.lt.1.0)BSO4OCEAN(j)=BSO4OCEAN(j)/(1.-FLAND)
325 c for sulfate.4x5.1986.new.dat
326 !
327 enddo
328
329 CALL RCOMPT
330 if(CLDFEED)then
331 c 112796:
332 c do 925 j=1,JM
333 c do 925 k=1,3
334 c cfcld(j,k)=1.+coefcl(k)*DTSURF(J)
335 c 925 continue
336 DTSURFAV=0.
337 do j=1,jm
338 DTSURFAV=DTSURFAV+DTSURF(J)*DXYP(j)
339 end do !j
340 DTSURFAV=DTSURFAV/AREAG
341 do j=1,jm
342 do k=1,3
343 cfcld(j,k)=1.+coefcl(k)*DTSURFAV
344 end do ! k
345 end do ! j
346 endif
347 ENDIF
348 JDLAST=JDAY 5129.
349 IHOUR=1.5+TOFDAY 5130.
350 CB READING OF CLOUD
351 if(abs(PCLOUD-3.).lt.1.5)then
352 910 continue
353 if(nreadcld.eq.nrcldmax)go to 900
354 read(585,END=900)TFDAYF,JDATEF,JMNTHF,CLDSSF,CLDMCF,IRAND
355 nreadcld=nreadcld+1
356 if(IFIRST.eq.1)then
357 print *,' radia.f PCLOUD=',PCLOUD
358 if(PCLOUD.eq.2)print *,' FIXED MC and SS CLOUDS'
359 if(PCLOUD.eq.4)print *,' FIXED MC CLOUDS ONLY'
360 if(PCLOUD.eq.3)print *,' FIXED SS CLOUDS ONLY'
361 print *,TOFDAY,JDATE,JMONTH
362 print *,TFDAYF,JDATEF,JMNTHF
363 print *,' DTCNDS=',DTCNDS/3600.
364 print *,' DT*NRAD=',DT*NRAD/3600.
365 if(.not.WRCLD)IFIRST=0
366 endif
367 if(abs(TOFDAY-TFDAYF).gt.1.e-3.or.JDATE.ne.JDATEF.or.
368 * JMONTH.ne.JMNTHF)then
369 print *,' RADIA, disagrement in clouds'
370 print *,TOFDAY,JDATE,JMONTH
371 print *,TFDAYF,JDATEF,JMNTHF
372 stop
373 endif
374 go to 920
375 900 rewind 585
376 nreadcld=0
377 print *,' END OF file 585'
378 print *,JYEAR
379 print *,TOFDAY,JDATE,JMONTH
380 print *,' REWIND 585'
381 go to 910
382 920 continue
383 CALL RINIT (IRAND)
384 do 930 k=1,LM
385 do 930 j=1,JM
386 if(PCLOUD.ne.4)CLDSS(1,j,k)=CLDSSF(j,k)
387 if(PCLOUD.ne.3)CLDMC(1,j,k)=CLDMCF(j,k)
388 930 continue
389 endif
390 CE END OF READING OF CLOUD
391 if(WRCLD)then
392 if(NWRCLD.eq.1)then
393 CALL RFINAL(IRAND)
394 if(IFIRST.eq.1)print *,' SHORT CLOUDS RECORD'
395 write(81)TOFDAY,JDATE,JMONTH,CLDSS,CLDMC,IRAND
396 elseif(NWRCLD.eq.2)then
397 if(IFIRST.eq.1)print *,' LONG CLOUDS RECORD'
398 do 1150 k=1,14
399 do 1150 j=1,JM0
400 if(k.le.2)then
401 ODATA2(j,k)=ODATA(1,j,k)
402 BDATA2(j,k)=BLDATA(1,j,k)
403 FDATA2(j,k)=FDATA(1,j,k+1)
404 endif
405 if(k.le.3)RQT2(j,k)=RQT(1,j,k)
406 GDATA2(j,k)=GDATA(1,j,k)
407 1150 continue
408 CALL RFINAL(IRAND)
409 write(81)TOFDAY,JDATE,JMONTH,CLDSS,CLDMC,IRAND,
410 * JDAY,JYEAR,T,Q,P,
411 * ODATA2,BDATA2,FDATA2,GDATA2,RQT2
412 else
413 print *,' NWRCLD=',NWRCLD
414 stop
415 endif
416 IFIRST=0
417 endif
418 if(CLDFEED)then
419 if (KWRITE.eq.1)then
420 print *,'cfcld'
421 print 9456,cfcld
422 print *,' DTSURF'
423 print 9456,DTSURF
424 print *,' DTSURFAV=',DTSURFAV
425 9456 format(12f6.2)
426 endif
427 do k=1,LM
428 if(k.le.5)then
429 k1=1
430 else
431 k1=2
432 endif
433 do j=1,JM
434 CLDSS(1,j,k)=cfcld(j,k1)*CLDSS(1,j,k)
435 CLDMC(1,j,k)=cfcld(j,3)*CLDMC(1,j,k)
436 enddo
437 enddo
438 endif
439
440 #if ( defined CPL_CHEM )
441 !
442 ! --- Chemistry Model Patch 021199
443 ! retrive cloud coverages
444 ! for meta model and others
445 !
446 do kchem=1,nlev
447 do jchem=1,nlat
448 do ichem=1,nlon
449 chem_cldss(ichem,jchem,kchem)
450 & = cldss(ichem,jchem,kchem)
451 chem_cldmc(ichem,jchem,kchem)
452 & = cldmc(ichem,jchem,kchem)
453 end do
454 end do
455 end do
456 !
457 #endif
458
459 C**** 5131.
460 C**** MAIN J LOOP 5132.
461 C**** 5133.
462 DO 600 J=1,JM 5134.
463 IF ((J-1)*(JM-J).NE.0) GO TO 140 5135.
464 C**** CONDITIONS AT THE POLES 5136.
465 POLE=.TRUE. 5137.
466 MODRJ=0 5138.
467 IMAX=1 5139.
468 GO TO 160 5140.
469 C**** CONDITIONS AT NON-POLAR POINTS 5141.
470 140 POLE=.FALSE. 5142.
471 MODRJ=MOD(J+JALTER,JRA) 5143.
472 IMAX=IM 5144.
473 160 XFRADJ=.2+1.2*COSP(J)*COSP(J) 5145.
474 #if ( defined VOL_AER )
475 c RVOL=0.012
476 JYEARAER=min(JYEAR-1849,NYVADAT)
477 FVOL=cfvolaer*STAERMN(J,MNAER,JYEARAER)
478 FGOLDU(1)=(RVOL+FVOL)/RVOL
479 if (j.eq.124)then
480 print *,'From radia'
481 print *,MNAER,JYEAR,JYEAR-1849
482 print *,'RVOL=',RVOL,' FVOL=',FVOL
483 endif
484 #else
485 FGOLDU(1)=(RVOL+FVOL)/RVOL
486 #endif
487
488 JLAT=J 5145.1
489 IF(MODRJ.EQ.0) CALL RCOMPJ 5146.
490 C**** 5147.
491 C**** MAIN I LOOP 5148.
492 C**** 5149.
493 IM1=IM 5150.
494 DO 500 I=1,IMAX 5151.
495 MODRIJ=MODRJ+MOD(I+IALTER,IRA) 5152.
496 IF(POLE) MODRIJ=0 5153.
497 JR=J
498 C**** DETERMINE FRACTIONS FOR SURFACE TYPES AND COLUMN PRESSURE 5155.
499 PLAND=FDATA(I,J,2) 5156.
500 PWATER=1.-PLAND
501 POICE=ODATA(I,J,2)*(1.-PLAND) 5157.
502 POCEAN=(1.-PLAND)-POICE 5158.
503 if(POCEAN.LE.1.E-5)then
504 POCEAN=0.
505 POICE=PWATER
506 endif
507 PLICE=FDATA(I,J,3)*PLAND 5159.
508 PEARTH=PLAND-PLICE 5160.
509 SP=P(I,J) 5161.
510 C**** 5162.
511 C**** DETERMINE CLOUDS (AND THEIR OPTICAL DEPTHS) SEEN BY RADIATION 5163.
512 C**** 5164.
513 X=999999. 5164.1
514 c RANDSS=RANDU(X) 5165.
515 c RANDMC=RANDU(X) 5166.
516 CALL RANDUU(RANDSS,X)
517 CALL RANDUU(RANDMC,X)
518 C
519 CSS=0. 5167.
520 CMC=0. 5168.
521 DEPTH=0. 5169.
522 LTOP=0 5169.1
523 DO 210 L=1,LM 5170.
524 RTAU(L)=0. 5171.
525 210 TOTCLD(L)=0. 5172.
526 DO 240 L=1,LM 5173.
527 IF(CLDSS(I,J,L).LT.RANDSS) GO TO 220 5174.
528 RTAUSS=.013333*(PTOP-100.+SIG(L)*SP) 5175.
529 IF(RTAUSS.LT.0.) RTAUSS=0. 5176.
530 IF (T(I,J,L)*PK(I,J,L).LT.TCIR) RTAUSS=.3333333 5177.
531 RTAU(L)=RTAUSS 5178.
532 CSS=1. 5179.
533 AJL(J,L,28)=AJL(J,L,28)+CSS 5180.
534 TOTCLD(L)=1. 5181.
535 LTOP=L 5181.1
536 220 IF(CLDMC(I,J,L).LE.RANDMC) GO TO 240 5182.
537 RTAUMC=DSIG(L)*SP*.08 5183.
538 IF(RTAUMC.GT.RTAU(L)) RTAU(L)=RTAUMC 5184.
539 CMC=1. 5185.
540 AJL(J,L,29)=AJL(J,L,29)+CMC 5186.
541 TOTCLD(L)=1. 5187.
542 LTOP=L 5187.1
543 DEPTH=DEPTH+SP*DSIG(L) 5188.
544 240 AJL(J,L,19)=AJL(J,L,19)+TOTCLD(L) 5189.
545 AJ(J,57)=AJ(J,57)+CSS*POCEAN 5190.
546 BJ(J,57)=BJ(J,57)+CSS*PLAND 5191.
547 CJ(J,57)=CJ(J,57)+CSS*POICE 5192.
548 DJ(JR,57)=DJ(JR,57)+CSS*DXYP(J) 5193.
549 AJ(J,58)=AJ(J,58)+CMC*POCEAN 5194.
550 BJ(J,58)=BJ(J,58)+CMC*PLAND 5195.
551 CJ(J,58)=CJ(J,58)+CMC*POICE 5196.
552 DJ(JR,58)=DJ(JR,58)+CMC*DXYP(J) 5197.
553 AIJ(I,J,17)=AIJ(I,J,17)+CMC 5198.
554 AJ(J,80)=AJ(J,80)+DEPTH*POCEAN 5199.
555 BJ(J,80)=BJ(J,80)+DEPTH*PLAND 5200.
556 CJ(J,80)=CJ(J,80)+DEPTH*POICE 5201.
557 DJ(JR,80)=DJ(JR,80)+DEPTH*DXYP(J) 5202.
558 CLDCV=CMC+CSS-CMC*CSS 5203.
559 AJ(J,59)=AJ(J,59)+CLDCV*POCEAN 5204.
560 BJ(J,59)=BJ(J,59)+CLDCV*PLAND 5205.
561 CJ(J,59)=CJ(J,59)+CLDCV*POICE 5206.
562 DJ(JR,59)=DJ(JR,59)+CLDCV*DXYP(J) 5207.
563 AIJ(I,J,19)=AIJ(I,J,19)+CLDCV 5208.
564 DO 250 L=1,LLOW 5209.
565 IF (TOTCLD(L).NE.1.) GO TO 250 5210.
566 AIJ(I,J,41)=AIJ(I,J,41)+1. 5211.
567 GO TO 255 5212.
568 250 CONTINUE 5213.
569 255 DO 260 L=LMID1,LMID 5214.
570 IF (TOTCLD(L).NE.1.) GO TO 260 5215.
571 AIJ(I,J,42)=AIJ(I,J,42)+1. 5216.
572 GO TO 265 5217.
573 260 CONTINUE 5218.
574 265 DO 270 L=LHI1,LHI 5219.
575 IF (TOTCLD(L).NE.1.) GO TO 270 5220.
576 AIJ(I,J,43)=AIJ(I,J,43)+1. 5221.
577 GO TO 275 5222.
578 270 CONTINUE 5223.
579 275 DO 280 LX=1,LM 5224.
580 L=1+LM-LX 5225.
581 IF (TOTCLD(L).NE.1.) GO TO 280 5226.
582 AIJ(I,J,18)=AIJ(I,J,18)+SIGE(L+1)*SP+PTOP 5227.
583 GO TO 285 5228.
584 280 CONTINUE 5229.
585 285 DO 290 KR=1,4 5230.
586 IF(I.EQ.IJD6(1,KR).AND.J.EQ.IJD6(2,KR)) GO TO 292 5231.
587 290 CONTINUE 5232.
588 GO TO 300 5233.
589 292 IH=IHOUR 5234.
590 DO 294 INCH=1,INCHM 5235.
591 IF(IH.GT.24) IH=IH-24 5236.
592 ADAILY(IH,21,KR)=ADAILY(IH,21,KR)+TOTCLD(6) 5237.
593 ADAILY(IH,22,KR)=ADAILY(IH,22,KR)+TOTCLD(5) 5238.
594 ADAILY(IH,23,KR)=ADAILY(IH,23,KR)+TOTCLD(4) 5239.
595 ADAILY(IH,24,KR)=ADAILY(IH,24,KR)+TOTCLD(3) 5240.
596 ADAILY(IH,25,KR)=ADAILY(IH,25,KR)+TOTCLD(2) 5241.
597 ADAILY(IH,26,KR)=ADAILY(IH,26,KR)+TOTCLD(1) 5242.
598 ADAILY(IH,27,KR)=ADAILY(IH,27,KR)+CLDCV 5243.
599 294 IH=IH+1 5244.
600 C**** 5245.
601 300 IF(MODRIJ.NE.0) GO TO 500 5246.
602 BVSURFA=0.0
603 XVSURFA=0.0
604 BNSURFA=0.0
605 XNSURFA=0.0
606 C**** clear sky condinion
607 if(CMC.le.0.and.CSS.le.0)then
608 CLEAR(J)=1
609 else
610 CLEAR(J)=0
611 endif
612 ! if(STRARFOR.or.CO2FOR.or.S0FOR.or.FORBC)then
613 ! CLEAR(J)=0
614 ! endif
615 C**** 5247.
616 C**** SET UP VERTICAL ARRAYS OMITTING THE I AND J INDICES 5248.
617 C**** 5249.
618 C**** EVEN PRESSURES 5250.
619 DO 340 L=1,LM 5251.
620 PLE(L)=SIGE(L)*SP+PTOP 5252.
621 C**** TEMPERATURES 5253.
622 TL(L)=T(I,J,L)*PK(I,J,L) 5254.
623 C**** MOISTURE VARIABLES 5255.
624 QL(L)=Q(I,J,L) 5256.
625 340 CONTINUE 5257.
626 C**** 5258.
627 C**** RADIATION, SOLAR AND THERMAL 5259.
628 C**** 5260.
629 DO 420 K=1,3 5261.
630 420 TL(LM+K)=RQT(I,J,K) 5262.
631 COSZ=COSZA(I,J) 5263.
632 TGO=ODATA(I,J,1)+TF 5264.
633 TGOI=GDATA(I,J,3)+TF 5265.
634 TGLI=GDATA(I,J,13)+TF 5266.
635 TGE=GDATA(I,J,4)+TF 5267.
636 TS=BLDATA(I,J,2) 5268.
637 SNOWOI=GDATA(I,J,1) 5269.
638 SNOWLI=GDATA(I,J,12) 5270.
639 SNOWE=GDATA(I,J,2) 5271.
640 AGESN=GDATA(I,J,11) 5272.
641 WEARTH=(GDATA(I,J,5)+GDATA(I,J,6))/(VDATA(I,J,9)+1.E-20) 5273.
642 DO 430 K=1,8 5274.
643 430 PVT(K)=VDATA(I,J,K) 5275.
644 WS=BLDATA(I,J,1) 5276.
645 do 439 L=1,LM+1
646 SRHR(I,J,L)=0.
647 TRHR(I,J,L)=0.
648 if(L.le.4)then
649 SNFS(I,J,L)=0.
650 TNFS(I,J,L)=0.
651 if(L.le.3)then
652 SRHRS(I,J,L)=0.
653 TRHRS(I,J,L)=0.
654 endif
655 endif
656 439 continue
657
658 #if ( defined CPL_CHEM )
659 !
660 ! --- Chemistry Model Patch 020996
661 !
662 do L=1,LM
663 solarflux(i,j,L) = 0.0
664 enddo
665 !
666 #endif
667
668 TRNFP0(J)=0.
669 TRNFP1(J)=0.
670 TRINCG(I,J)=0.
671 BTMPW(I,J)=0.
672 SRDAN=0.
673 SRNAN=0.
674 do 449 K=1,9
675 ALB(I,J,K)=0.
676 ALBJ(J,K)=0.
677 449 continue
678 do 499 ii=1,3
679 COSZ=COSZA(I,J)
680 PLAND=FDATA(I,J,2)
681 PWATER=1.-PLAND
682 POICE=ODATA(I,J,2)*(1.-PLAND)
683 POCEAN=(1.-PLAND)-POICE
684 if(POCEAN.LE.1.E-5)then
685 POCEAN=0.
686 POICE=PWATER
687 endif
688 PLICE=FDATA(I,J,3)*PLAND
689 PEARTH=PLAND-PLICE
690 if(ii.eq.1)then
691 BSO4=BSO4OCEAN(J)/BSO4TOTAL(J)
692 PTYPE=POCEAN
693 POICE=0.
694 POCEAN=1.
695 PLAND=0.
696 PEARTH=0.
697 PLICE=0.
698 TGAL=0.
699 else if(ii.eq.3)then
700 BSO4=BSO4OCEAN(J)/BSO4TOTAL(J)
701 PTYPE=POICE
702 POICE=1.
703 POCEAN=0.
704 PLAND=0.
705 PEARTH=0.
706 PLICE=0.
707 TGAL=TGOI
708 else
709 BSO4=BSO4LAND(J)/BSO4TOTAL(J)
710 PTYPE=PLAND
711 POCEAN=0.
712 POICE=0.
713 PWATER=0.
714 PLICE=FDATA(I,J,3)
715 PEARTH=1.-PLICE
716 TGAL=TGE*PEARTH+TGLI*PLICE
717 PLAND=1.
718 endif
719 if(PTYPE.lt.1.e-10)go to 499
720 if(ii.gt.1)then
721 if(TGAL.lt.263.)then
722 FRSNALB=0.30
723 elseif(TGAL.lt.273.)then
724 FRSNALB=0.30-0.015*(TGAL-263.)
725 else
726 FRSNALB=0.15
727 endif
728 endif !ii
729 FGOLDU(2)=XFRADJ*(1.-PLAND)
730 FGOLDU(3)=XFRADJ*PLAND
731
732 #if ( defined PREDICTED_AEROSOL )
733 !
734 ! --- Chemstry Model Patch 092295
735 !
736 FAERSOL=BSO4
737 & *3.0*CFAEROSOL !111600
738 FBC=BSO4*CFBC
739
740 !
741 #endif
742
743 ILON=I 5278.1
744 JLAT=J 5278.2
745 if(J.le.-2)then
746 print *,' From Radia J=',J,' ii=',ii
747 print *,' BSO4=',BSO4
748 print *,' CLEAR(J)=',CLEAR(J)
749 endif
750 if(J.eq.-22.or.J.eq.-33)then
751 print *,' tau=',TAU,' J=',J
752 print *,'ii=',ii,PTYPE
753 print *,BSO4LAND(J),BSO4OCEAN(J),BSO4TOTAL(J)
754 print *,'BSO4=',BSO4,' FAERSOL=',FAERSOL
755 endif
756 CALL RCOMPX 5279.
757 if(J.eq.-22.or.J.eq.-33)then
758 print *,' USW TOA=',SRUFLB(LM+4),' DSW TOA=',SRDFLB(LM+4)
759 print *,' USW SRF=',SRUFLB(1),' DSW SRF=',SRDFLB(1)
760 print *,' NSW TOA=',SRNFLB(LM+4),' NSW SRF=',SRNFLB(1)
761 endif
762 ! if (IRFIRST.eq.1.and.READGHG.eq.1)then
763 ! CALL WRITER(12)
764 ! if(ii.ge.2)IRFIRST=0
765 ! endif
766 ! IF(DMOD(TAU,365.*24.).EQ.0..and.J.eq.JM/2) then
767 IF(DMOD(TAU,30.*24.).EQ.0..and.J.eq.JM/2) then
768 print *,' tau=',TAU,' J=',J
769 CALL WRITER (1,0)
770 endif
771 SRHR(I,J,1)=SRHR(I,J,1)+SRNFLB(1)*PTYPE
772 TRHR(I,J,1)=TRHR(I,J,1)+(STBO*(POCEAN*TGO**4+POICE*TGOI**4
773 * +PLICE*TGLI**4+PEARTH*TGE**4)-TRNFLB(1))*PTYPE
774 C *****
775 TRSURF(J,ii)=STBO*(POCEAN*TGO**4+POICE*TGOI**4
776 * +PLICE*TGLI**4+PEARTH*TGE**4)-TRNFLB(1)
777 SRSURF(J,ii)=SRNFLB(1)
778 DO 440 L=1,LM 5284.
779
780 #if ( defined CPL_CHEM )
781 !
782 ! --- Chemistry Model Patch 120497
783 ! get solar flux in w/m^2
784 !
785 solarflux(i,j,l) = solarflux(i,j,l)
786 & + srdflb(l+1)*ptype
787
788 c solarflux(i,j,l) = solarflux(i,j,l)
789 c & + srnflb(l+1)*ptype
790 !
791 #endif
792
793 SRHR(I,J,L+1)=SRHR(I,J,L+1)+SRFHRL(L)*PTYPE
794 440 TRHR(I,J,L+1)=TRHR(I,J,L+1)-TRFCRL(L)*PTYPE
795 DO 450 LR=1,3 5287.
796 SRHRS(I,J,LR)=SRHRS(I,J,LR)+SRFHRL(LM+LR)*PTYPE
797 450 TRHRS(I,J,LR)=TRHRS(I,J,LR)-TRFCRL(LM+LR)*PTYPE
798 DO 460 K=1,4 5290.
799 SNFS(I,J,K)=SNFS(I,J,K)+SRNFLB(K+LM)*PTYPE
800 460 TNFS(I,J,K)=TNFS(I,J,K)+(TRNFLB(K+LM)-TRNFLB(1))*PTYPE
801 TRNFP0(J)=TRNFP0(J)+TRNFLB(4+LM)*PTYPE
802 TRNFP1(J)=TRNFP1(J)+TRNFLB(1+LM)*PTYPE
803 TRINCG(I,J)=TRINCG(I,J)+TRDFLB(1)*PTYPE
804 BTMPW(I,J)=BTMPW(I,J)+(BTEMPW-TF)*PTYPE
805 SRDAN=SRDAN+SRDFLB(1)*PTYPE
806 SRNAN=SRNAN+SRNFLB(1)*PTYPE
807 ALB(I,J,2)=ALB(I,J,2)+PLAVIS*PTYPE
808 ALB(I,J,3)=ALB(I,J,3)+PLANIR*PTYPE
809 ALB(I,J,4)=ALB(I,J,4)+ALBVIS*PTYPE
810 ALB(I,J,5)=ALB(I,J,5)+ALBNIR*PTYPE
811 ALB(I,J,6)=ALB(I,J,6)+SRRVIS*PTYPE
812 ALB(I,J,7)=ALB(I,J,7)+SRRNIR*PTYPE
813 ALB(I,J,8)=ALB(I,J,8)+SRAVIS*PTYPE
814 ALB(I,J,9)=ALB(I,J,9)+SRANIR*PTYPE
815 ALB1=SRNFLB(1)/(SRDFLB(1)+1.E-20)
816 C **********
817 ALBJ(J,2)=PLAVIS
818 ALBJ(J,3)=PLANIR
819 ALBJ(J,4)=ALBVIS
820 ALBJ(J,5)=ALBNIR
821 ALBJ(J,6)=SRRVIS
822 ALBJ(J,7)=SRRNIR
823 ALBJ(J,8)=SRAVIS
824 ALBJ(J,9)=SRANIR
825 ALBJ(J,1)=SRNFLB(1)/(SRDFLB(1)+1.E-20)
826 C *********
827 COSZ=COSZ2(I,J)
828 if(ii.eq.2)then
829 #if ( defined CLM )
830 C for TEM CLM
831 DSWSRF(j)=SRDFLB(1)
832 DLWSRF(j)=TRDFLB(1)
833 DSWVIS(j)=SRDVIS
834 DSWNIR(j)=SRDNIR
835 C for TEM CLM
836 #endif
837 PLAND=PTYPE
838 BJ(J,1)=BJ(J,1)+(S0*COSZ)*PLAND
839 BJ(J,2)=BJ(J,2)+(SRNFLB(4+LM)*COSZ)*PLAND
840 BJ(J,5)=BJ(J,5)+(SRDFLB(1)*COSZ)*PLAND
841 BJ(J,6)=BJ(J,6)+(SRNFLB(1)*COSZ)*PLAND
842 BJ(J,55)=BJ(J,55)+(BTEMPW-TF)*PLAND
843 BJ(J,67)=BJ(J,67)+TRDFLB(1)*PLAND
844 BJ(J,70)=BJ(J,70)-(TRNFLB(4+LM)-TRNFLB(1))*PLAND
845 BJ(J,7)=BJ(J,7)-TRNFLB(4+LM)*PLAND
846 BJ(J,8)=BJ(J,8)-TRNFLB(1+LM)*PLAND
847 BJ(J,3)=BJ(J,3)+(SRNFLB(1+LM)*COSZ)*PLAND
848 BJ(J,71)=BJ(J,71)-(TRNFLB(1+LM)-TRNFLB(1))*PLAND
849 DO 761 K=2,9
850 BJ(J,K+70)=BJ(J,K+70)+(S0*COSZ)*ALBJ(J,K)*PLAND
851 761 CONTINUE
852 else if(ii.eq.1)then
853 POCEAN=PTYPE
854 AJ(J,1)=AJ(J,1)+(S0*COSZ)*POCEAN
855 AJ(J,2)=AJ(J,2)+(SRNFLB(4+LM)*COSZ)*POCEAN
856 AJ(J,5)=AJ(J,5)+(SRDFLB(1)*COSZ)*POCEAN
857 AJ(J,6)=AJ(J,6)+(SRNFLB(1)*COSZ)*POCEAN
858 AJ(J,55)=AJ(J,55)+(BTEMPW-TF)*POCEAN
859 AJ(J,67)=AJ(J,67)+TRDFLB(1)*POCEAN
860 AJ(J,70)=AJ(J,70)-(TRNFLB(4+LM)-TRNFLB(1))*POCEAN
861 AJ(J,7)=AJ(J,7)-TRNFLB(4+LM)*POCEAN
862 AJ(J,8)=AJ(J,8)-TRNFLB(1+LM)*POCEAN
863 AJ(J,3)=AJ(J,3)+(SRNFLB(1+LM)*COSZ)*POCEAN
864 AJ(J,71)=AJ(J,71)-(TRNFLB(1+LM)-TRNFLB(1))*POCEAN
865 #if ( defined OCEAN_3D )
866 solarinc_ocean(J)=solarinc_ocean(J)+SRDFLB(1)*COSZ
867 solarnet_ocean(J)=solarnet_ocean(J)+SRNFLB(1)*COSZ
868 navrado(j)=navrado(j)+1
869 #endif
870 C
871 DO K=2,9
872 AJ(J,K+70)=AJ(J,K+70)+(S0*COSZ)*ALBJ(J,K)*POCEAN
873 END DO
874 else
875 POICE=PTYPE
876 CJ(J,1)=CJ(J,1)+(S0*COSZ)*POICE
877 CJ(J,2)=CJ(J,2)+(SRNFLB(4+LM)*COSZ)*POICE
878 CJ(J,5)=CJ(J,5)+(SRDFLB(1)*COSZ)*POICE
879 CJ(J,6)=CJ(J,6)+(SRNFLB(1)*COSZ)*POICE
880 CJ(J,55)=CJ(J,55)+(BTEMPW-TF)*POICE
881 CJ(J,67)=CJ(J,67)+TRDFLB(1)*POICE
882 CJ(J,70)=CJ(J,70)-(TRNFLB(4+LM)-TRNFLB(1))*POICE
883 CJ(J,7)=CJ(J,7)-TRNFLB(4+LM)*POICE
884 CJ(J,8)=CJ(J,8)-TRNFLB(1+LM)*POICE
885 CJ(J,3)=CJ(J,3)+(SRNFLB(1+LM)*COSZ)*POICE
886 CJ(J,71)=CJ(J,71)-(TRNFLB(1+LM)-TRNFLB(1))*POICE
887 #if ( defined OCEAN_3D )
888 solarinc_ice(J)=solarinc_ice(J)+SRDFLB(1)*COSZ
889 solarnet_ice(J)=solarnet_ice(J)+SRNFLB(1)*COSZ
890 navrad(j)=navrad(j)+1
891 #endif
892 C
893 DO K=2,9
894 CJ(J,K+70)=CJ(J,K+70)+(S0*COSZ)*ALBJ(J,K)*POICE
895 END DO
896 endif
897 499 continue
898 ALB(I,J,1)=SRNAN/(SRDAN+1.E-20)
899 500 IM1=I 5304.
900
901 !
902 ! --- Radiation calculation without aerosol
903 ! NOTE: this section is for diagnostic
904 ! purpose only. It basically repeats
905 ! the radiation calculation without
906 ! aerosol in order to derive the pure
907 ! aerosol forcing.
908 !
909 ! Chien Wang
910 ! 080100
911 !
912 !
913 I=1
914 do 599 ii=1,3
915 COSZ=COSZA(I,J)
916 PLAND=FDATA(I,J,2)
917 PWATER=1.-PLAND
918 POICE=ODATA(I,J,2)*(1.-PLAND)
919 POCEAN=(1.-PLAND)-POICE
920 if(POCEAN.LE.1.E-5)then
921 POCEAN=0.
922 POICE=PWATER
923 endif
924 PLICE=FDATA(I,J,3)*PLAND
925 PEARTH=PLAND-PLICE
926 if(ii.eq.1)then
927 BSO4=BSO4OCEAN(J)/BSO4TOTAL(J)
928 PTYPE=POCEAN
929 POICE=0.
930 POCEAN=1.
931 PLAND=0.
932 PEARTH=0.
933 PLICE=0.
934 TGAL=0.
935 else if(ii.eq.3)then
936 BSO4=BSO4OCEAN(J)/BSO4TOTAL(J)
937 PTYPE=POICE
938 POICE=1.
939 POCEAN=0.
940 PLAND=0.
941 PEARTH=0.
942 PLICE=0.
943 TGAL=TGOI
944 else
945 BSO4=BSO4LAND(J)/BSO4TOTAL(J)
946 PTYPE=PLAND
947 POCEAN=0.
948 POICE=0.
949 PWATER=0.
950 PLICE=FDATA(I,J,3)
951 PEARTH=1.-PLICE
952 TGAL=TGE*PEARTH+TGLI*PLICE
953 PLAND=1.
954 endif
955 if(PTYPE.lt.1.e-10)go to 599
956 if(ii.gt.1)then
957 if(TGAL.lt.263.)then
958 FRSNALB=0.30
959 elseif(TGAL.lt.273.)then
960 FRSNALB=0.30-0.015*(TGAL-263.)
961 else
962 FRSNALB=0.15
963 endif
964 endif !ii
965 FGOLDU(2)=XFRADJ*(1.-PLAND)
966 FGOLDU(3)=XFRADJ*PLAND
967 #if ( defined PREDICTED_AEROSOL )
968 if(FORSULF) then
969 FAERSOL = 0.0
970 else
971 FAERSOL=BSO4
972 & *3.0*CFAEROSOL
973 endif
974 if(FORBC) then
975 FBC = 0.0
976 else
977 FBC=BSO4*CFBC
978 endif
979 if(FORVOL) then
980 FGOLDU(1)=1.0
981 endif
982 #endif
983
984 if(J.eq.-22.or.J.eq.-33)then
985 print *,'BSO4=',BSO4,' FAERSOL=',FAERSOL
986 print *,'ii=',ii
987 endif
988 CALL RCOMPX
989 if(J.eq.-22.or.J.eq.-33)then
990 print *,' USW TOA=',SRUFLB(LM+4),' DSW SRF=',SRDFLB(1)
991 print *,' NSW TOA=',SRNFLB(LM+4),' NSW SRF=',SRNFLB(1)
992 endif
993 SRHRCL(J)=SRNFLB(1)
994 TRHRCL(J)=-TRNFLB(1)
995 ALBCL(J)=SRNFLB(1)/(SRDFLB(1)+1.e-20)
996 SNP1CL(J)=SRNFLB(LM+1)
997 SNP0CL(J)=SRNFLB(LM+4)
998 TRINCL(J)=TRDFLB(1)
999 TRP0CL(J)=TRNFLB(LM+4)
1000 TRP1CL(J)=TRNFLB(LM+1)
1001 C *********
1002 COSZ=COSZ2(I,J)
1003 if(ii.eq.2)then
1004 PLAND=PTYPE
1005 BJCLR(J,1)=BJCLR(J,1)+(S0*COSZ)*PLAND
1006 BJCLR(J,2)=BJCLR(J,2)+(SNP0CL(J)*COSZ)*PLAND
1007 BJCLR(J,4)=BJCLR(J,4)+(SRHRCL(J)*COSZ)*PLAND
1008 BJCLR(J,5)=BJCLR(J,5)+(SRDFLB(1)*COSZ)*PLAND
1009 BJCLR(J,6)=BJCLR(J,6)+TRINCL(J)*PLAND
1010 BJCLR(J,8)=BJCLR(J,8)-TRP0CL(J)*PLAND
1011 BJCLR(J,9)=BJCLR(J,9)-TRP1CL(J)*PLAND
1012 BJCLR(J,3)=BJCLR(J,3)+(SNP1CL(J)*COSZ)*PLAND
1013 BJCLR(J,7)=BJCLR(J,7)+TRHRCL(J)*PLAND
1014 else if(ii.eq.1)then
1015 POCEAN=PTYPE
1016 AJCLR(J,1)=AJCLR(J,1)+(S0*COSZ)*POCEAN
1017 AJCLR(J,2)=AJCLR(J,2)+(SNP0CL(J)*COSZ)*POCEAN
1018 AJCLR(J,4)=AJCLR(J,4)+(SRHRCL(J)*COSZ)*POCEAN
1019 AJCLR(J,5)=AJCLR(J,5)+(SRDFLB(1)*COSZ)*POCEAN
1020 AJCLR(J,6)=AJCLR(J,6)+TRINCL(J)*POCEAN
1021 AJCLR(J,8)=AJCLR(J,8)-TRP0CL(J)*POCEAN
1022 AJCLR(J,9)=AJCLR(J,9)-TRP1CL(J)*POCEAN
1023 AJCLR(J,3)=AJCLR(J,3)+(SNP1CL(J)*COSZ)*POCEAN
1024 AJCLR(J,7)=AJCLR(J,7)+TRHRCL(J)*POCEAN
1025 else
1026 POICE=PTYPE
1027 CJCLR(J,1)=CJCLR(J,1)+(S0*COSZ)*POICE
1028 CJCLR(J,2)=CJCLR(J,2)+(SNP0CL(J)*COSZ)*POICE
1029 CJCLR(J,4)=CJCLR(J,4)+(SRHRCL(J)*COSZ)*POICE
1030 CJCLR(J,5)=CJCLR(J,5)+(SRDFLB(1)*COSZ)*POICE
1031 CJCLR(J,6)=CJCLR(J,6)+TRINCL(J)*POICE
1032 CJCLR(J,8)=CJCLR(J,8)-TRP0CL(J)*POICE
1033 CJCLR(J,9)=CJCLR(J,9)-TRP1CL(J)*POICE
1034 CJCLR(J,3)=CJCLR(J,3)+(SNP1CL(J)*COSZ)*POICE
1035 CJCLR(J,7)=CJCLR(J,7)+TRHRCL(J)*POICE
1036 endif
1037 599 continue ! ii
1038 !
1039 ! --- End calculation of radiative fluxes with out aerosol
1040 !
1041 if(J.eq.-22.or.J.eq.-33)then
1042 AACLR=AJCLR(J,2)+CJCLR(J,2)+BJCLR(J,2)
1043 AA=AJ(J,2)+CJ(J,2)+BJ(J,2)
1044 BBCLR=AJCLR(J,4)+CJCLR(J,4)+BJCLR(J,4)
1045 BB=AJ(J,6)+CJ(J,6)+BJ(J,6)
1046 print *,' Del SW TOA=',AA-AACLR
1047 print *,' Del SW SRF=',BB-BBCLR
1048 c print *,' Del Srf alb=',ALBCL(J)-ALB(I,J,1)
1049 endif
1050 C**** 5305.
1051 C**** END OF MAIN LOOP FOR I INDEX 5306.
1052 C**** 5307.
1053 600 CONTINUE 5345.
1054 C**** 5346.
1055 C**** END OF MAIN LOOP FOR J INDEX 5347.
1056 C**** 5348.
1057 C**** ACCUMULATE THE RADIATION DIAGNOSTICS 5394.
1058 C**** 5395.
1059 700 DO 780 J=1,JM 5396.
1060 DXYPJ=DXYP(J) 5397.
1061 IMAX=IM 5398.
1062 IF(J.EQ.1.OR.J.EQ.JM) IMAX=1 5399.
1063 DO 720 L=1,LM 5400.
1064 ASRHR=0. 5401.
1065 ATRHR=0. 5402.
1066 DO 710 I=1,IMAX 5403.
1067 ASRHR=ASRHR+SRHR(I,J,L+1)*COSZ2(I,J) 5404.
1068 710 ATRHR=ATRHR+TRHR(I,J,L+1) 5405.
1069 AJL(J,L,9)=AJL(J,L,9)+ASRHR 5406.
1070 720 AJL(J,L,10)=AJL(J,L,10)+ATRHR 5407.
1071 ASNFS1=0. 5408.
1072 BSNFS1=0. 5409.
1073 CSNFS1=0. 5410.
1074 ATNFS1=0. 5411.
1075 BTNFS1=0. 5412.
1076 CTNFS1=0. 5413.
1077 DO 770 I=1,IMAX 5414.
1078 SP=P(I,J) 5415.
1079 COSZ=COSZ2(I,J) 5416.
1080 PLAND=FDATA(I,J,2) 5417.
1081 PWATER=1.-PLAND
1082 POICE=ODATA(I,J,2)*(1.-PLAND) 5418.
1083 POCEAN=(1.-PLAND)-POICE 5419.
1084 if(POCEAN.LE.1.E-5)then
1085 POCEAN=0.
1086 POICE=PWATER
1087 endif
1088 JR=J
1089 DO 740 LR=1,3 5421.
1090 ASJL(J,LR,3)=ASJL(J,LR,3)+SRHRS(I,J,LR)*COSZ 5422.
1091 740 ASJL(J,LR,4)=ASJL(J,LR,4)+TRHRS(I,J,LR) 5423.
1092 DO 742 KR=1,4 5424.
1093 IF(I.EQ.IJD6(1,KR).AND.J.EQ.IJD6(2,KR)) GO TO 744 5425.
1094 742 CONTINUE 5426.
1095 GO TO 750 5427.
1096 744 IH=IHOUR 5428.
1097 DO 746 INCH=1,INCHM 5429.
1098 IF(IH.GT.24) IH=IH-24 5430.
1099 ADAILY(IH,2,KR)=ADAILY(IH,2,KR)+(1.-SNFS(I,J,4)/S0) 5431.
1100 ADAILY(IH,3,KR)=ADAILY(IH,3,KR)+(1.-ALB(I,J,1)) 5432.
1101 ADAILY(IH,4,KR)=ADAILY(IH,4,KR) 5433.
1102 * +((SNFS(I,J,4)-SNFS(I,J,1))*COSZ-TNFS(I,J,4)+TNFS(I,J,1)) 5434.
1103 746 IH=IH+1 5435.
1104 750 CONTINUE 5436.
1105 DJ(JR,1)=DJ(JR,1)+(S0*COSZ)*DXYPJ 5440.
1106 DJ(JR,2)=DJ(JR,2)+(SNFS(I,J,4)*COSZ)*DXYPJ 5444.
1107 DJ(JR,3)=DJ(JR,3)+(SNFS(I,J,1)*COSZ)*DXYPJ 5448.
1108 DJ(JR,5)=DJ(JR,5)+(SRHR(I,J,1)*COSZ/(ALB(I,J,1)+1.E-20))*DXYPJ 5452.
1109 DJ(JR,6)=DJ(JR,6)+(SRHR(I,J,1)*COSZ)*DXYPJ 5456.
1110 DJ(JR,55)=DJ(JR,55)+BTMPW(I,J)*DXYPJ 5460.
1111 DJ(JR,67)=DJ(JR,67)+TRINCG(I,J)*DXYPJ 5464.
1112 DJ(JR,70)=DJ(JR,70)-TNFS(I,J,4)*DXYPJ 5468.
1113 C *******
1114 NCLR(J)=NCLR(J)+1
1115 C *********
1116 DJ(JR,71)=DJ(JR,71)-TNFS(I,J,1)*DXYPJ 5472.
1117 AIJ(I,J,21)=AIJ(I,J,21)-TNFS(I,J,4) 5478.
1118 AIJ(I,J,24)=AIJ(I,J,24)+(SNFS(I,J,4)*COSZ) 5479.
1119 AIJ(I,J,25)=AIJ(I,J,25)+(S0*COSZ) 5480.
1120 AIJ(I,J,26)=AIJ(I,J,26)+(SRHR(I,J,1)*COSZ) 5481.
1121 AIJ(I,J,27)=AIJ(I,J,27)+(SRHR(I,J,1)*COSZ/(ALB(I,J,1)+1.E-20)) 5482.
1122 AIJ(I,J,44)=AIJ(I,J,44)+BTMPW(I,J) 5483.
1123 AIJ(I,J,45)=AIJ(I,J,45)+S0*COSZ*ALB(I,J,2) 5484.
1124 770 CONTINUE 5485.
1125 780 CONTINUE 5492.
1126 IF(JM.NE.24) GO TO 800 5493.
1127 DO 790 L=1,LM 5494.
1128 DO 790 I=1,IM 5495.
1129 AIL(I,L,7)=AIL(I,L,7)+((SRHR(I,11,L+1)*COSZ2(I,11)+ 5496.
1130 * TRHR(I,11,L+1))*DXYP(11)+(SRHR(I,12,L+1)*COSZ2(I,12)+ 5497.
1131 * TRHR(I,12,L+1))*DXYP(12)+(SRHR(I,13,L+1)*COSZ2(I,13)+ 5498.
1132 * TRHR(I,13,L+1))*DXYP(13)) 5499.
1133 AIL(I,L,11)=AIL(I,L,11)+(SRHR(I,19,L+1)*COSZ2(I,19)+ 5500.
1134 * TRHR(I,19,L+1))*DXYP(19) 5501.
1135 790 AIL(I,L,15)=AIL(I,L,15)+(SRHR(I,21,L+1)*COSZ2(I,21)+ 5502.
1136 * TRHR(I,21,L+1))*DXYP(21) 5503.
1137 C**** 5504.
1138 C**** UPDATE THE TEMPERATURES BY RADIATION 5505.
1139 C**** 5506.
1140 800 DO 820 J=1,JM 5507.
1141 IMAX=IM 5508.
1142 IF(J.EQ.1.OR.J.EQ.JM) IMAX=1 5509.
1143 DO 820 LR=1,3 5510.
1144 DO 820 I=1,IMAX 5511.
1145 820 RQT(I,J,LR)=RQT(I,J,LR)+(SRHRS(I,J,LR)*COSZ2(I,J) 5512.
1146 * +TRHRS(I,J,LR))*COE(LR+LM) 5513.
1147 840 DO 860 J=1,JM 5514.
1148 #if ( defined CLM )
1149 dsw4clm(j)=DSWSRF(j)*COSZ1(1,j)
1150 dlw4clm(j)=DLWSRF(j)
1151 swinr4clm(j)=DSWNIR(j)*COSZ1(1,j)
1152 swvis4clm(j)=DSWVIS(j)*COSZ1(1,j)
1153 c For TEM
1154 swtd4tem(j)=swtd4tem(j)+S0*COSZ1(1,j)
1155 swsd4tem(j)=swsd4tem(j)+DSWSRF(j)*COSZ1(1,j)
1156 nradd4tem(j)=nradd4tem(j)+1
1157 #endif
1158 IMAX=IM 5515.
1159 IF(J.EQ.1.OR.J.EQ.JM) IMAX=1 5516.
1160 DO 860 L=1,LM 5517.
1161 DO 860 I=1,IMAX 5518.
1162
1163 #if ( defined CPL_CHEM )
1164 !
1165 coszangle(i,j) = cosz1(i,j)
1166 !
1167 #endif
1168
1169 860 T(I,J,L)=T(I,J,L)+(SRHR(I,J,L+1)*COSZ1(I,J)+TRHR(I,J,L+1)) 5519.
1170 * *COE(L)/(P(I,J)*PK(I,J,L)) 5520.
1171 RETURN 5521.
1172 END 5522.

  ViewVC Help
Powered by ViewVC 1.1.22