File indexing completed on 2024-12-17 18:32:21 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d676f916b2 Jean*0001 #include "AIM_OPTIONS.h"
0002
670d1925ca Jean*0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
d676f916b2 Jean*0014 SUBROUTINE SOL_OZ (SOLC, TYEAR, SLAT, CLAT,
0015 O FSOL, OZONE, OZUPP, ZENIT, STRATZ,
0016 I bi, bj, myThid)
670d1925ca Jean*0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
d676f916b2 Jean*0034 IMPLICIT NONE
0035
0036
0037
0038 #include "AIM_SIZE.h"
0039
0040 #include "EEPARAMS.h"
670d1925ca Jean*0041 #include "PARAMS.h"
7f98c35e47 Davi*0042 #include "AIM_PARAMS.h"
d676f916b2 Jean*0043
0044
0045 #include "com_physcon.h"
0046
0047 #include "com_radcon.h"
0048
670d1925ca Jean*0049
d676f916b2 Jean*0050 INTEGER bi, bj, myThid
0051 _RL SOLC, TYEAR
0052 _RL SLAT(NGP), CLAT(NGP)
0053 _RL FSOL(NGP), OZONE(NGP), OZUPP(NGP), ZENIT(NGP), STRATZ(NGP)
670d1925ca Jean*0054
d676f916b2 Jean*0055
0056 #ifdef ALLOW_AIM
670d1925ca Jean*0057
d676f916b2 Jean*0058 INTEGER J, NZEN
0059 _RL ALPHA, CSR1, CSR2, COZ1, COZ2
0060 _RL AZEN, RZEN, CZEN, SZEN, AST, FS0, FLAT2
7f98c35e47 Davi*0061 #ifdef ALLOW_INSOLATION
670d1925ca Jean*0062 _RL TanDelcl, cosH, HourAng, TanLat
0063 _RL largeTan
0064 largeTan = 1. _d 16
7f98c35e47 Davi*0065 #endif
670d1925ca Jean*0066
d676f916b2 Jean*0067
0068
0069
0070 ALPHA = 4. _d 0*ASIN(1. _d 0)*(TYEAR+10. _d 0/365. _d 0)
0071
0072 CSR1=-0.796 _d 0*COS(ALPHA)
0073 CSR2= 0.147 _d 0*COS(2. _d 0*ALPHA)-0.477 _d 0
0074 COZ1= 1.0 _d 0 * COS(ALPHA)
0075 COZ2= 1.8 _d 0
0076
0077 AZEN=1.0
0078 NZEN=2
0079
7f98c35e47 Davi*0080 #ifdef ALLOW_INSOLATION
0081 SZEN = - SIN( OBLIQ * PI/180. _d 0) * COS(ALPHA)
0082 RZEN = ASIN( SZEN )
0083 CZEN = COS( RZEN )
0084 IF ( SZEN .EQ. 1. _d 0 ) THEN
670d1925ca Jean*0085 TanDelcl = largeTan
7f98c35e47 Davi*0086 ELSEIF ( SZEN .EQ. -1. _d 0 ) THEN
670d1925ca Jean*0087 TanDelcl =-largeTan
7f98c35e47 Davi*0088 ELSE
0089 TanDelcl = SZEN / CZEN
0090 ENDIF
0091 #else
d676f916b2 Jean*0092 RZEN=-COS(ALPHA)*23.45 _d 0*ASIN(1. _d 0)/90. _d 0
0093 CZEN=COS(RZEN)
0094 SZEN=SIN(RZEN)
7f98c35e47 Davi*0095 #endif
d676f916b2 Jean*0096
0097 AST=0.025 _d 0
0098 FS0=10. _d 0
0099
0100
0101 DO J=1,NGP
0102
0103 FLAT2 = 1.5 _d 0*SLAT(J)**2 - 0.5 _d 0
0104
7f98c35e47 Davi*0105 #ifndef ALLOW_INSOLATION
d676f916b2 Jean*0106
0107 FSOL(J) = SOLC*
0108 & MAX( 0. _d 0, 1. _d 0+CSR1*SLAT(J)+CSR2*FLAT2 )
7f98c35e47 Davi*0109 #else
0110 IF ( CLAT(J) .EQ. 0. _d 0 ) THEN
670d1925ca Jean*0111 TanLat = SIGN(1. _d 0, SLAT(J) ) * largeTan
7f98c35e47 Davi*0112 ELSE
670d1925ca Jean*0113 TanLat = SLAT(J)/CLAT(J)
7f98c35e47 Davi*0114 ENDIF
0115 cosH = - TanLat * TanDelcl
0116 cosH = MAX(MIN(cosH,1. _d 0), -1. _d 0)
0117 HourAng = ACOS( cosH )
0118 FSOL(J) = 4. _d 0 / PI * SOLC *
0119 & (SLAT(J)*SZEN*HourAng+CLAT(J)*CZEN*SIN(HourAng))
0120 #endif
d676f916b2 Jean*0121
0122
0123 OZUPP(J) = EPSSW*(1.-FLAT2)
0124 OZONE(J) = EPSSW*(1.+COZ1*SLAT(J)+COZ2*FLAT2)
0125
0126
0127 ZENIT(J) = 1. + AZEN*
0128 & (1. _d 0-(CLAT(J)*CZEN+SLAT(J)*SZEN))**NZEN
0129
0130
0131 OZUPP(J)=FSOL(J)*OZUPP(J)*ZENIT(J)
0132 OZONE(J)=FSOL(J)*OZONE(J)*ZENIT(J)
0133 STRATZ(J)=AST*FSOL(J)*CLAT(J)**3
0134 & +MAX( FS0-FSOL(J), 0. _d 0 )
0135
0136 ENDDO
0137
7f98c35e47 Davi*0138 #ifdef ALLOW_DIAGNOSTICS
670d1925ca Jean*0139 IF ( useDiagnostics ) THEN
7f98c35e47 Davi*0140 CALL DIAGNOSTICS_FILL( FSOL,
0141 & 'FSOL ', 1, 1, 3,bi,bj, myThid )
670d1925ca Jean*0142 ENDIF
7f98c35e47 Davi*0143 #endif
0144
d676f916b2 Jean*0145 #endif /* ALLOW_AIM */
0146 RETURN
0147 END
0148
670d1925ca Jean*0149
d676f916b2 Jean*0150
670d1925ca Jean*0151
0152
0153
0154
d676f916b2 Jean*0155 SUBROUTINE RADSW (PSA,dpFac,QA,RH,ALB,
0156 I FSOL, OZONE, OZUPP, ZENIT, STRATZ,
0157 O TAU2, STRATC,
7f98c35e47 Davi*0158 O ICLTOP,CLOUDC,FTOP,FSFC,UPSWG,DFABS,
0d5086b5bf Jean*0159 I absCO2, kGrd,bi,bj,myThid)
670d1925ca Jean*0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0d5086b5bf Jean*0174
0175
670d1925ca Jean*0176
0177
0178
0179
d676f916b2 Jean*0180 IMPLICIT NONE
0181
0182
0183
0184
0185 #include "AIM_SIZE.h"
0186
0187 #include "EEPARAMS.h"
670d1925ca Jean*0188 #include "PARAMS.h"
d676f916b2 Jean*0189
0190
0191 #include "com_physcon.h"
0192
0193 #include "com_radcon.h"
0194
670d1925ca Jean*0195
b3097ed02d Jean*0196 _RL PSA(NGP),dpFac(NGP,NLEV),QA(NGP,NLEV),RH(NGP,NLEV)
0197 _RL ALB(NGP,0:3)
d676f916b2 Jean*0198 INTEGER ICLTOP(NGP)
b3097ed02d Jean*0199 _RL CLOUDC(NGP), FTOP(NGP), FSFC(NGP,0:3), DFABS(NGP,NLEV)
7f98c35e47 Davi*0200 _RL UPSWG(NGP)
d676f916b2 Jean*0201
0202 _RL FSOL(NGP), OZONE(NGP), OZUPP(NGP), ZENIT(NGP), STRATZ(NGP)
0203 _RL TAU2(NGP,NLEV,NBAND),STRATC(NGP)
0204
0205
0d5086b5bf Jean*0206 _RL absCO2
d676f916b2 Jean*0207 INTEGER kGrd(NGP)
0208 INTEGER bi, bj, myThid
670d1925ca Jean*0209
d676f916b2 Jean*0210
0211
0212
0213 #ifdef ALLOW_AIM
670d1925ca Jean*0214
d676f916b2 Jean*0215
0216 _RL QCLOUD(NGP), ACLOUD(NGP),
0217 & ALBTOP(NGP,NLEV), FREFL(NGP,NLEV), FLUX(NGP,2)
bd70561229 Davi*0218 #ifdef ALLOW_CLOUD_3D
670d1925ca Jean*0219
bd70561229 Davi*0220 _RL CLDCLW(NGP,NLEV), ACLDLW(NGP,NLEV)
0221 #endif
d676f916b2 Jean*0222
670d1925ca Jean*0223
d676f916b2 Jean*0224
0225
0226 INTEGER NL1(NGP)
0227 INTEGER K, J
e749d70ece Jean*0228 LOGICAL makeClouds
d676f916b2 Jean*0229 _RL FBAND1, FBAND2, RRCL, RQCL, DQACL, QACL3
0230 _RL ABS1, DELTAP
670d1925ca Jean*0231
d676f916b2 Jean*0232
0233
0234 FBAND2=0.05 _d 0
0235 FBAND1=1.-FBAND2
0236
0237 DO J=1,NGP
0238 NL1(J)=kGrd(J)-1
0239 ENDDO
0240
0241
0242
0243
0244
0245
0246
0247
e749d70ece Jean*0248 makeClouds = ICLTOP(1) .GE. 0
d676f916b2 Jean*0249 RRCL=1./(RHCL2-RHCL1)
0250 RQCL=1./QACL2
0251
0252 DO J=1,NGP
0253 CLOUDC(J)=0.
0254 QCLOUD(J)=0.
e749d70ece Jean*0255 ICLTOP(J)=NLEV+1
d676f916b2 Jean*0256 FREFL(J,1)=0.
0257 ENDDO
0258
0259 DO K=1,NLEV
0260 DO J=1,NGP
0261 ALBTOP(J,K)=0.
bd70561229 Davi*0262 #ifdef ALLOW_CLOUD_3D
0263 CLDCLW(J,K)=0.
0264 #endif
d676f916b2 Jean*0265 ENDDO
0266 ENDDO
0267
e749d70ece Jean*0268 IF ( makeClouds ) THEN
0269
0270
0271 DQACL=(QACL2-QACL1)/(0.5 _d 0 - SIG(2))
0272 DO J=1,NGP
0273 ICLTOP(J)= kGrd(J)
0274 DO K=NL1(J),2,-1
d676f916b2 Jean*0275 QACL3=MIN(QACL2,QACL1+DQACL*(SIG(K)-SIG(2)))
0276 IF (RH(J,K).GT.RHCL1.AND.QA(J,K).GT.QACL1) THEN
0277 CLOUDC(J)=MAX(CLOUDC(J),RH(J,K)-RHCL1)
0278 IF (QA(J,K).GT.QACL3) ICLTOP(J)=K
bd70561229 Davi*0279 #ifdef ALLOW_CLOUD_3D
0280 CLDCLW(J,K)=MAX(0. _d 0,RH(J,K)-RHCL1)
0281 CLDCLW(J,K)=MIN(1. _d 0,CLDCLW(J,K)*RRCL)
0282 #endif
d676f916b2 Jean*0283 ENDIF
e749d70ece Jean*0284 ENDDO
d676f916b2 Jean*0285 ENDDO
0286
e749d70ece Jean*0287 DO J=1,NGP
0288 IF (kGrd(J).NE.0)
0289 & QCLOUD(J)= MAX( QA(J,kGrd(J)), QA(J,NL1(J)) )
d676f916b2 Jean*0290 CLOUDC(J)=MIN(1. _d 0,CLOUDC(J)*RRCL)
0291 IF (CLOUDC(J).GT.0.0) THEN
0292 CLOUDC(J)=CLOUDC(J)*MIN(1. _d 0,QCLOUD(J)*RQCL)
bd70561229 Davi*0293 #ifdef ALLOW_CLOUD_3D
0294 DO K=NL1(J),2,-1
0295 CLDCLW(J,K)=CLDCLW(J,K)*MIN(1. _d 0,QCLOUD(J)*RQCL)
0296 ENDDO
0297 #endif
d676f916b2 Jean*0298 ALBTOP(J,ICLTOP(J))=ALBCL*CLOUDC(J)
0299 ELSE
0300 ICLTOP(J)=NLEV+1
0301 ENDIF
e749d70ece Jean*0302 ENDDO
0303
0304
0305 ENDIF
d676f916b2 Jean*0306
0307
0308
0309
0310
0311
0312 DO J=1,NGP
0313
0314 ACLOUD(J)=CLOUDC(J)*(ABSCL1+ABSCL2*QCLOUD(J))
0315 ENDDO
0316
0317 DO J=1,NGP
0318
0319 DELTAP=ZENIT(J)*DSIG(1)*dpFac(J,1)
0320 TAU2(J,1,1)=EXP(-DELTAP*ABSDRY)
0321 ENDDO
0322
0323 DO J=1,NGP
0324 DO K=2,NL1(J)
0325
0326
0327 ABS1=ABSDRY+ABSAER*(SIG(K)/PSA(J))**2
0328 DELTAP=ZENIT(J)*DSIG(K)*dpFac(J,K)
0329 IF (K.EQ.ICLTOP(J)) THEN
0330 TAU2(J,K,1)=EXP(-DELTAP*
0331 & (ABS1+ABSWV1*QA(J,K)+2.*ACLOUD(J)))
0332 ELSE IF (K.GT.ICLTOP(J)) THEN
0333 TAU2(J,K,1)=EXP(-DELTAP*
0334 & (ABS1+ABSWV1*QA(J,K)+ACLOUD(J)))
0335 ELSE
0336 TAU2(J,K,1)=EXP(-DELTAP*(ABS1+ABSWV1*QA(J,K)))
0337 ENDIF
0338 ENDDO
0339 ENDDO
0340
0341
0342 DO J=1,NGP
0343 K = kGrd(J)
0344 ABS1=ABSDRY+ABSAER*(SIG(K)/PSA(J))**2
0345
0346 DELTAP=ZENIT(J)*DSIG(K)*dpFac(J,K)
0347 TAU2(J,K,1)=EXP(-DELTAP*(ABS1+ABSWV1*QA(J,K)))
0348 ENDDO
0349
0350 DO J=1,NGP
0351 DO K=2,kGrd(J)
0352 DELTAP=ZENIT(J)*DSIG(K)*dpFac(J,K)
0353 TAU2(J,K,2)=EXP(-DELTAP*ABSWV2*QA(J,K))
0354 ENDDO
0355 ENDDO
0356
0357
0358
0359
0360
0361
0362
0363
0364 DO J=1,NGP
0365 FTOP(J) =FSOL(J)
0366 FLUX(J,1)=FSOL(J)*FBAND1-OZUPP(J)
0367 FLUX(J,2)=FSOL(J)*FBAND2
0368 STRATC(J)=STRATZ(J)*PSA(J)
0369 ENDDO
0370
0371
0372
0373
0374 DO J=1,NGP
0375 DFABS(J,1)=FLUX(J,1)
0376 FLUX (J,1)=TAU2(J,1,1)*(FLUX(J,1)-OZONE(J)*PSA(J))
0377 DFABS(J,1)=DFABS(J,1)-FLUX(J,1)
0378 ENDDO
0379
0380
0381
0382 DO J=1,NGP
0383 DO K=2,kGrd(J)
0384 FREFL(J,K)=FLUX(J,1)*ALBTOP(J,K)
0385 FLUX (J,1)=FLUX(J,1)-FREFL(J,K)
0386 DFABS(J,K)=FLUX(J,1)
0387 FLUX (J,1)=TAU2(J,K,1)*FLUX(J,1)
0388 DFABS(J,K)=DFABS(J,K)-FLUX(J,1)
0389 ENDDO
0390 ENDDO
0391
0392 DO J=1,NGP
0393 DO K=2,kGrd(J)
0394 DFABS(J,K)=DFABS(J,K)+FLUX(J,2)
0395 FLUX (J,2)=TAU2(J,K,2)*FLUX(J,2)
0396 DFABS(J,K)=DFABS(J,K)-FLUX(J,2)
0397 ENDDO
0398 ENDDO
0399
0400
0401
0402
0403
0404
0405 DO J=1,NGP
b3097ed02d Jean*0406
0407 FSFC(J,1)=FLUX(J,1)*(1.-ALB(J,1))+FLUX(J,2)
0408 FSFC(J,2)=FLUX(J,1)*(1.-ALB(J,2))+FLUX(J,2)
0409 FSFC(J,3)=FLUX(J,1)*(1.-ALB(J,3))+FLUX(J,2)
0410
0411 FSFC(J,0)=FLUX(J,1)+FLUX(J,2)
0412 FLUX(J,1)=FLUX(J,1)*ALB(J,0)
0413 FSFC(J,0)=FSFC(J,0)-FLUX(J,1)
d676f916b2 Jean*0414 ENDDO
7f98c35e47 Davi*0415
0416
0417 DO J=1,NGP
0418 UPSWG(J)=FLUX(J,1)
0419 ENDDO
d676f916b2 Jean*0420
0421
0422
78542777fd Davi*0423 DO K=NLEV,1,-1
0424 DO J=1,NGP
0425 IF ( K .LE. kGrd(J) ) THEN
d676f916b2 Jean*0426 DFABS(J,K)=DFABS(J,K)+FLUX(J,1)
0427 FLUX (J,1)=TAU2(J,K,1)*FLUX(J,1)
0428 DFABS(J,K)=DFABS(J,K)-FLUX(J,1)
0429 FLUX (J,1)=FLUX(J,1)+FREFL(J,K)
78542777fd Davi*0430 ELSE
0431 DFABS(J,K)= 0. _d 0
0432 ENDIF
d676f916b2 Jean*0433 ENDDO
0434 ENDDO
0435
0436
0437
0438 DO J=1,NGP
0439 FTOP(J)=FTOP(J)-FLUX(J,1)
0440 ENDDO
0441
0442
0443
0444
0445
0446
0447
bd70561229 Davi*0448 #ifdef ALLOW_CLOUD_3D
0449 DO K=2,NLEV
0450 DO J=1,NGP
0451 ACLDLW(J,K)=CLDCLW(J,K)*(ABLCL1+ABLCL2*QCLOUD(J))
0452 ENDDO
0453 ENDDO
0454 #else
d676f916b2 Jean*0455 DO J=1,NGP
0456 ACLOUD(J)=CLOUDC(J)*(ABLCL1+ABLCL2*QCLOUD(J))
0457 ENDDO
bd70561229 Davi*0458 #endif
d676f916b2 Jean*0459
0460 DO J=1,NGP
0461
0462 DELTAP=DSIG(1)*dpFac(J,1)
0463 TAU2(J,1,1)=EXP(-DELTAP*ABLWIN)
0d5086b5bf Jean*0464 TAU2(J,1,2)=EXP(-DELTAP*absCO2)
d676f916b2 Jean*0465 TAU2(J,1,3)=1.
0466 TAU2(J,1,4)=1.
0467 ENDDO
0468
0469 DO K=2,NLEV
0470 DO J=1,NGP
0471
0472 DELTAP=DSIG(K)*dpFac(J,K)
0473 IF ( K.GE.ICLTOP(J).AND.K.NE.kGrd(J) ) THEN
bd70561229 Davi*0474 #ifdef ALLOW_CLOUD_3D
0475 TAU2(J,K,1)=EXP(-DELTAP*(ABLWIN+ACLDLW(J,K)))
0476 #else
d676f916b2 Jean*0477 TAU2(J,K,1)=EXP(-DELTAP*(ABLWIN+ACLOUD(J)))
bd70561229 Davi*0478 #endif
d676f916b2 Jean*0479 ELSE
0480 TAU2(J,K,1)=EXP(-DELTAP*ABLWIN)
0481 ENDIF
0d5086b5bf Jean*0482 TAU2(J,K,2)=EXP(-DELTAP*absCO2)
d676f916b2 Jean*0483 TAU2(J,K,3)=EXP(-DELTAP*ABLWV1*QA(J,K))
0484 TAU2(J,K,4)=EXP(-DELTAP*ABLWV2*QA(J,K))
0485 ENDDO
0486 ENDDO
bd70561229 Davi*0487
0488 #if (defined ALLOW_CLOUD_3D && defined ALLOW_DIAGNOSTICS)
670d1925ca Jean*0489 IF ( useDiagnostics ) THEN
bd70561229 Davi*0490 CALL DIAGNOSTICS_FILL( CLDCLW,
0491 & 'CLDCLW ',-1, Nr, 3,bi,bj, myThid )
670d1925ca Jean*0492 ENDIF
bd70561229 Davi*0493 #endif
0494
d676f916b2 Jean*0495 #endif /* ALLOW_AIM */
0496
0497 RETURN
0498 END
0499
670d1925ca Jean*0500
d676f916b2 Jean*0501
670d1925ca Jean*0502
0503
0504
0505
d676f916b2 Jean*0506 SUBROUTINE RADLW (IMODE,TA,TS,ST4S,
0507 I OZUPP, STRATC, TAU2,
0508 & FLUX, ST4A,
0509 & FTOP,FSFC,DFABS,
0510 I kGrd,bi,bj,myThid)
0511
670d1925ca Jean*0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524
0525
0526
0527
0528
0529
0530
0531
0532
d676f916b2 Jean*0533 IMPLICIT NONE
0534
0535
0536
0537 #include "AIM_SIZE.h"
0538 #include "EEPARAMS.h"
0539
0540
0541
0542
0543
0544 #include "com_physcon.h"
0545
0546 #include "com_radcon.h"
0547
670d1925ca Jean*0548
d676f916b2 Jean*0549 INTEGER IMODE
0550 _RL TA(NGP,NLEV), TS(NGP), ST4S(NGP)
0551 _RL FTOP(NGP), FSFC(NGP), DFABS(NGP,NLEV)
0552 _RL OZUPP(NGP), STRATC(NGP)
0553 _RL TAU2(NGP,NLEV,NBAND), FLUX(NGP,NBAND), ST4A(NGP,NLEV,2)
0554
0555 INTEGER kGrd(NGP)
0556 INTEGER bi,bj,myThid
670d1925ca Jean*0557
d676f916b2 Jean*0558
0559 #ifdef ALLOW_AIM
670d1925ca Jean*0560
d676f916b2 Jean*0561 INTEGER K, J, JB
0562
0563 INTEGER NL1(NGP)
0564 _RL REFSFC, BRAD, EMIS
670d1925ca Jean*0565
d676f916b2 Jean*0566
0567
0568 DO J=1,NGP
0569 NL1(J)=kGrd(J)-1
0570 ENDDO
0571
0572 REFSFC=1.-EMISFC
0573
0574 IF (IMODE.EQ.1) GO TO 410
0575
0576
0577
0578
0579
0580
0581 DO K=1,NLEV
0582 DO J=1,NGP
0583 ST4A(J,K,1)=TA(J,K)*TA(J,K)
0584 ST4A(J,K,1)=SBC*ST4A(J,K,1)*ST4A(J,K,1)
0585 ENDDO
0586 ENDDO
0587
0588 DO K=1,NLEV-1
0589 DO J=1,NGP
0590 ST4A(J,K,2)=TA(J,K)+WVI(K,2)*(TA(J,K+1)-TA(J,K))
0591 ST4A(J,K,2)=ST4A(J,K,2)*ST4A(J,K,2)
0592 ST4A(J,K,2)=SBC*ST4A(J,K,2)*ST4A(J,K,2)
0593 ENDDO
0594 ENDDO
0595
0596 DO J=1,NGP
0597
0598 K=kGrd(J)
0599 ST4A(J,K,2)=2.*ST4A(J,K,1)-ST4A(J,NL1(J),2)
0600 ENDDO
0601
0602
0603
0604
0605 DO J=1,NGP
0606 FTOP(J) = 0.
0607 FSFC(J) = STRATC(J)
0608 DFABS(J,1)=-STRATC(J)
0609 ENDDO
0610
0611 DO K=2,NLEV
0612 DO J=1,NGP
0613 DFABS(J,K)=0.
0614 ENDDO
0615 ENDDO
0616
0617
0618
0619
0620
0621
0622
0623
0624 K=1
0625 DO JB=1,2
0626 DO J=1,NGP
0627 BRAD=ST4A(J,K,2)+TAU2(J,K,JB)*(ST4A(J,K,1)-ST4A(J,K,2))
0628 EMIS=FBAND(NINT(TA(J,K)),JB)*(1.-TAU2(J,K,JB))
0629 FLUX(J,JB)=EMIS*BRAD
0630 DFABS(J,K)=DFABS(J,K)-FLUX(J,JB)
0631 ENDDO
0632 ENDDO
0633
0634 DO JB=3,NBAND
0635 DO J=1,NGP
0636 FLUX(J,JB)=0.
0637 ENDDO
0638 ENDDO
0639
0640
0641
0642 DO JB=1,NBAND
0643 DO J=1,NGP
0644 DO K=2,kGrd(J)
0645 BRAD=ST4A(J,K,2)+TAU2(J,K,JB)*(ST4A(J,K,1)-ST4A(J,K,2))
0646 EMIS=FBAND(NINT(TA(J,K)),JB)*(1.-TAU2(J,K,JB))
0647 DFABS(J,K)=DFABS(J,K)+FLUX(J,JB)
0648 FLUX(J,JB)=TAU2(J,K,JB)*FLUX(J,JB)+EMIS*BRAD
0649 DFABS(J,K)=DFABS(J,K)-FLUX(J,JB)
0650 ENDDO
0651 ENDDO
0652 ENDDO
0653
0654 DO JB=1,NBAND
0655 DO J=1,NGP
0656 FSFC(J)=FSFC(J)+EMISFC*FLUX(J,JB)
0657 ENDDO
0658 ENDDO
0659
0660 IF (IMODE.EQ.-1) RETURN
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670 DO J=1,NGP
0671 ST4S(J)=TS(J)*TS(J)
0672 ST4S(J)=SBC*ST4S(J)*ST4S(J)
e749d70ece Jean*0673 ST4S(J)=EMISFC*ST4S(J)
d676f916b2 Jean*0674 ENDDO
0675
0676
0677 410 CONTINUE
0678
0679 DO J=1,NGP
0680 FSFC(J)=ST4S(J)-FSFC(J)
0681 FTOP(J)=FTOP(J)+FBAND(NINT(TS(J)),0)*ST4S(J)
0682 ENDDO
0683
0684 DO JB=1,NBAND
0685 DO J=1,NGP
0686 FLUX(J,JB)=FBAND(NINT(TS(J)),JB)*ST4S(J)
0687 & +REFSFC*FLUX(J,JB)
0688 ENDDO
0689 ENDDO
0690
0691
0692
0693 DO JB=1,NBAND
0694 DO J=1,NGP
0695 DO K=kGrd(J),2,-1
0696 BRAD=ST4A(J,K-1,2)+TAU2(J,K,JB)*(ST4A(J,K,1)-ST4A(J,K-1,2))
0697 EMIS=FBAND(NINT(TA(J,K)),JB)*(1.-TAU2(J,K,JB))
0698 DFABS(J,K)=DFABS(J,K)+FLUX(J,JB)
0699 FLUX(J,JB)=TAU2(J,K,JB)*FLUX(J,JB)+EMIS*BRAD
0700 DFABS(J,K)=DFABS(J,K)-FLUX(J,JB)
0701 ENDDO
0702 ENDDO
0703 ENDDO
0704
0705
0706
0707 K=1
0708 DO JB=1,2
0709 DO J=1,NGP
0710 EMIS=FBAND(NINT(TA(J,K)),JB)*(1.-TAU2(J,K,JB))
0711 DFABS(J,K)=DFABS(J,K)+FLUX(J,JB)
0712 FLUX(J,JB)=TAU2(J,K,JB)*FLUX(J,JB)+EMIS*ST4A(J,K,1)
0713 DFABS(J,K)=DFABS(J,K)-FLUX(J,JB)
0714 ENDDO
0715 ENDDO
0716
0717
0718
0719 DO JB=1,NBAND
0720 DO J=1,NGP
0721 FTOP(J)=FTOP(J)+FLUX(J,JB)
0722 ENDDO
0723 ENDDO
0724
0725 DO J=1,NGP
0726 FTOP(J)=FTOP(J)+OZUPP(J)
0727 ENDDO
0728
0729 #endif /* ALLOW_AIM */
0730
0731 RETURN
0732 END
0733
670d1925ca Jean*0734
d676f916b2 Jean*0735
670d1925ca Jean*0736
0737
0738
d676f916b2 Jean*0739 SUBROUTINE RADSET( myThid )
0740
670d1925ca Jean*0741
0742
0743
0744
d676f916b2 Jean*0745
670d1925ca Jean*0746
d676f916b2 Jean*0747 IMPLICIT NONE
0748
0749
0750
0751 #include "AIM_SIZE.h"
0752 #include "EEPARAMS.h"
0753
0754
0755 #include "com_radcon.h"
0756
670d1925ca Jean*0757
d676f916b2 Jean*0758 INTEGER myThid
670d1925ca Jean*0759
d676f916b2 Jean*0760
0761 #ifdef ALLOW_AIM
670d1925ca Jean*0762
d676f916b2 Jean*0763 INTEGER JTEMP, JB
0764 _RL EPS3
0765
0766
0767
0768 EPS3=0.95 _d 0
0769
0770 DO JTEMP=200,320
0771 FBAND(JTEMP,0)= EPSLW
0772 FBAND(JTEMP,2)= 0.148 _d 0 - 3.0 _d -6 *(JTEMP-247)**2
0773 FBAND(JTEMP,3)=(0.375 _d 0 - 5.5 _d -6 *(JTEMP-282)**2)*EPS3
0774 FBAND(JTEMP,4)= 0.314 _d 0 + 1.0 _d -5 *(JTEMP-315)**2
670d1925ca Jean*0775 FBAND(JTEMP,1)= 1. _d 0 -(FBAND(JTEMP,0)+FBAND(JTEMP,2)
d676f916b2 Jean*0776 & +FBAND(JTEMP,3)+FBAND(JTEMP,4))
0777 ENDDO
0778
0779 DO JB=0,NBAND
0780 DO JTEMP=lwTemp1,199
0781 FBAND(JTEMP,JB)=FBAND(200,JB)
0782 ENDDO
0783 DO JTEMP=321,lwTemp2
0784 FBAND(JTEMP,JB)=FBAND(320,JB)
0785 ENDDO
0786 ENDDO
0787
0788 #endif /* ALLOW_AIM */
0789
0790 RETURN
0791 END