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

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

  ViewVC Help
Powered by ViewVC 1.1.22