Changeset 1159
- Timestamp:
- May 7, 2009, 5:41:29 PM (16 years ago)
- Location:
- LMDZ4/branches/LMDZ4-dev/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F
r1154 r1159 2941 2941 2942 2942 CALL radlwsw_aero 2943 e (dist, rmu0, fract, solaire,2943 e (dist, rmu0, fract, 2944 2944 e paprs, pplay,zxtsol,albsol1, albsol2, 2945 2945 e t_seri,q_seri,wo, … … 2948 2948 e tau_aero, piz_aero, cg_aero, 2949 2949 e cldtaupi,new_aod, 2950 e zqsat, flwc, fiwc, 2950 2951 s heat,heat0,cool,cool0,radsol,albpla, 2951 2952 s topsw,toplw,solsw,sollw, -
LMDZ4/branches/LMDZ4-dev/libf/phylmd/radlwsw_aero.F90
r1153 r1159 1 1 SUBROUTINE radlwsw_aero( & 2 dist, rmu0, fract, solaire,&3 paprs, pplay,tsol,alb edo, alblw, &2 dist, rmu0, fract, & 3 paprs, pplay,tsol,alb1, alb2, & 4 4 t,q,wo,& 5 5 cldfra, cldemi, cldtaupd,& … … 7 7 tau_aero, piz_aero, cg_aero,& 8 8 cldtaupi, new_aod, & 9 qsat, flwc, fiwc, & 9 10 heat,heat0,cool,cool0,radsol,albpla,& 10 11 topsw,toplw,solsw,sollw,& … … 32 33 ! fract----input-R- duree d'ensoleillement normalisee 33 34 ! co2_ppm--input-R- concentration du gaz carbonique (en ppm) 34 ! solaire--input-R- constante solaire (W/m**2)35 35 ! paprs----input-R- pression a inter-couche (Pa) 36 36 ! pplay----input-R- pression au milieu de couche (Pa) 37 37 ! tsol-----input-R- temperature du sol (en K) 38 ! albedo---input-R- albedo du sol (entre 0 et 1) 38 ! alb1-----input-R- albedo du sol(entre 0 et 1) dans l'interval visible 39 ! alb2-----input-R- albedo du sol(entre 0 et 1) dans l'interval proche infra-rouge 39 40 ! t--------input-R- temperature (K) 40 41 ! q--------input-R- vapeur d'eau (en kg/kg) … … 92 93 include "YOETHF.h" 93 94 include "YOMCST.h" 95 include "clesphys.h" 96 include "iniprint.h" 94 97 95 98 ! Input arguments 96 REAL, INTENT(in) :: solaire97 99 REAL, INTENT(in) :: dist 98 100 REAL, INTENT(in) :: rmu0(KLON), fract(KLON) 99 101 REAL, INTENT(in) :: paprs(KLON,KLEV+1), pplay(KLON,KLEV) 100 REAL, INTENT(in) :: alb edo(KLON), alblw(KLON), tsol(KLON)102 REAL, INTENT(in) :: alb1(KLON), alb2(KLON), tsol(KLON) 101 103 REAL, INTENT(in) :: t(KLON,KLEV), q(KLON,KLEV), wo(KLON,KLEV) 102 104 LOGICAL, INTENT(in) :: ok_ade, ok_aie ! switches whether to use aerosol direct (indirect) effects or not … … 107 109 REAL, INTENT(in) :: cldtaupi(KLON,KLEV) ! cloud optical thickness for pre-industrial aerosol concentrations 108 110 LOGICAL, INTENT(in) :: new_aod ! flag pour retrouver les resultats exacts de l'AR4 dans le cas ou l'on ne travaille qu'avec les sulfates 111 REAL, INTENT(in) :: qsat(klon,klev) ! Variable pour iflag_rrtm=1 112 REAL, INTENT(in) :: flwc(klon,klev) ! Variable pour iflag_rrtm=1 113 REAL, INTENT(in) :: fiwc(klon,klev) ! Variable pour iflag_rrtm=1 109 114 110 115 ! Output arguments … … 207 212 zfract(i) = fract(iof+i) 208 213 zrmu0(i) = rmu0(iof+i) 209 PALBD(i,1) = alb edo(iof+i)210 PALBD(i,2) = alb lw(iof+i)211 PALBP(i,1) = alb edo(iof+i)212 PALBP(i,2) = alb lw(iof+i)214 PALBD(i,1) = alb1(iof+i) 215 PALBD(i,2) = alb2(iof+i) 216 PALBP(i,1) = alb1(iof+i) 217 PALBP(i,2) = alb2(iof+i) 213 218 PEMIS(i) = 1.0 214 219 PVIEW(i) = 1.66 … … 281 286 ENDDO 282 287 ENDDO 283 ! 284 !====================================================================== 285 CALL LW_LMDAR4(& 286 PPMB, PDP,& 287 PPSOL,PDT0,PEMIS,& 288 PTL, PTAVE, PWV, POZON, PAER,& 289 PCLDLD,PCLDLU,& 290 PVIEW,& 291 zcool, zcool0,& 292 ztoplw,zsollw,ztoplw0,zsollw0,& 293 zsollwdown,& 294 ZFLUP, ZFLDN, ZFLUP0,ZFLDN0) 295 296 297 IF (.NOT. new_aod) THEN 298 ! use old version 299 CALL SW_LMDAR4(PSCT, zrmu0, zfract,& 300 PPMB, PDP, & 301 PPSOL, PALBD, PALBP,& 302 PTAVE, PWV, PQS, POZON, PAER,& 303 PCLDSW, PTAU, POMEGA, PCG,& 304 zheat, zheat0,& 305 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,& 306 ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,& 307 tau_aero(:,:,5,:), piz_aero(:,:,5,:), cg_aero(:,:,5,:),& 308 PTAUA, POMEGAA,& 309 ztopswadaero,zsolswadaero,& 310 ztopswaiaero,zsolswaiaero,& 311 ok_ade, ok_aie) 312 ELSE 313 314 CALL SW_AEROAR4(PSCT, zrmu0, zfract,& 315 PPMB, PDP,& 316 PPSOL, PALBD, PALBP,& 317 PTAVE, PWV, PQS, POZON, PAER,& 318 PCLDSW, PTAU, POMEGA, PCG,& 319 zheat, zheat0,& 320 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,& 321 ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,& 322 tauaero, pizaero, cgaero, & 323 PTAUA, POMEGAA,& 324 ztopswadaero,zsolswadaero,& 325 ztopswad0aero,zsolswad0aero,& 326 ztopswaiaero,zsolswaiaero, & 327 ztopsw_aero,ztopsw0_aero,& 328 zsolsw_aero,zsolsw0_aero,& 329 ok_ade, ok_aie) 330 331 ENDIF 332 !====================================================================== 288 289 ! 290 !===== iflag_rrtm ================================================ 291 ! 292 IF (iflag_rrtm == 0) THEN 293 ! Old radiation scheme, used for AR4 runs 294 CALL LW_LMDAR4(& 295 PPMB, PDP,& 296 PPSOL,PDT0,PEMIS,& 297 PTL, PTAVE, PWV, POZON, PAER,& 298 PCLDLD,PCLDLU,& 299 PVIEW,& 300 zcool, zcool0,& 301 ztoplw,zsollw,ztoplw0,zsollw0,& 302 zsollwdown,& 303 ZFLUP, ZFLDN, ZFLUP0,ZFLDN0) 304 305 306 IF (.NOT. new_aod) THEN 307 ! use old version 308 CALL SW_LMDAR4(PSCT, zrmu0, zfract,& 309 PPMB, PDP, & 310 PPSOL, PALBD, PALBP,& 311 PTAVE, PWV, PQS, POZON, PAER,& 312 PCLDSW, PTAU, POMEGA, PCG,& 313 zheat, zheat0,& 314 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,& 315 ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,& 316 tau_aero(:,:,5,:), piz_aero(:,:,5,:), cg_aero(:,:,5,:),& 317 PTAUA, POMEGAA,& 318 ztopswadaero,zsolswadaero,& 319 ztopswaiaero,zsolswaiaero,& 320 ok_ade, ok_aie) 321 322 ELSE ! new_aod=T 323 CALL SW_AEROAR4(PSCT, zrmu0, zfract,& 324 PPMB, PDP,& 325 PPSOL, PALBD, PALBP,& 326 PTAVE, PWV, PQS, POZON, PAER,& 327 PCLDSW, PTAU, POMEGA, PCG,& 328 zheat, zheat0,& 329 zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,& 330 ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,& 331 tauaero, pizaero, cgaero, & 332 PTAUA, POMEGAA,& 333 ztopswadaero,zsolswadaero,& 334 ztopswad0aero,zsolswad0aero,& 335 ztopswaiaero,zsolswaiaero, & 336 ztopsw_aero,ztopsw0_aero,& 337 zsolsw_aero,zsolsw0_aero,& 338 ok_ade, ok_aie) 339 340 ENDIF 341 342 ELSE 343 !===== iflag_rrtm=1, on passe dans SW via RECMWFL =============== 344 WRITE(lunout,*) "Option iflag_rrtm=T ne fonctionne pas encore !!!" 345 CALL abort_gcm('radlwsw_aero','iflag_rrtm=T not valid',1) 346 347 ENDIF ! iflag_rrtm 348 !====================================================================== 349 333 350 DO i = 1, kdlon 334 351 radsol(iof+i) = zsolsw(i) + zsollw(i) … … 405 422 ENDDO 406 423 ENDDO 407 ! 408 ENDDO409 410 411 END SUBROUTINE radlwsw_aero412 413 424 425 ENDDO ! j = 1, nb_gr 426 427 428 END SUBROUTINE radlwsw_aero 429 430 -
LMDZ4/branches/LMDZ4-dev/libf/phylmd/sw_aeroAR4.F90
r1153 r1159 114 114 PARAMETER(swpas=1) 115 115 116 INTEGER itapsw 117 LOGICAL appel1er 118 DATA itapsw /0/ 119 DATA appel1er /.TRUE./ 120 SAVE itapsw,appel1er 116 INTEGER, SAVE :: itapsw = 0 117 !$OMP THREADPRIVATE(itapsw) 118 LOGICAL, SAVE :: appel1er = .TRUE. 121 119 !$OMP THREADPRIVATE(appel1er) 122 !$OMP THREADPRIVATE(itapsw) 120 LOGICAL, SAVE :: initialized = .FALSE. 121 !$OMP THREADPRIVATE(initialized) 122 123 123 !jq-Introduced for aerosol forcings 124 REAL*8 flag_aer 124 REAL*8, SAVE :: flag_aer 125 !$OMP THREADPRIVATE(flag_aer) 126 125 127 LOGICAL ok_ade, ok_aie ! use aerosol forcings or not? 126 128 REAL*8 tauaero(kdlon,kflev,9,2) ! aerosol optical properties … … 162 164 REAL*8,ALLOCATABLE,SAVE :: ZFSDN0_AERO(:,:,:) 163 165 !$OMP THREADPRIVATE(ZFSDN0_AERO) 164 165 LOGICAL initialized166 !rv167 SAVE flag_aer168 !$OMP THREADPRIVATE(flag_aer)169 DATA initialized/.FALSE./170 SAVE initialized171 !$OMP THREADPRIVATE(initialized)172 166 173 167 … … 196 190 ZFSDN0_AERO(:,:,:)=0. 197 191 ENDIF 198 !rv199 192 200 193
Note: See TracChangeset
for help on using the changeset viewer.