Changeset 4514 for LMDZ6/trunk/libf
- Timestamp:
- Apr 21, 2023, 11:09:09 AM (15 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lsc_scav.F90
r2351 r4514 1 1 !$Id $ 2 2 3 SUBROUTINE lsc_scav(pdtime,it,iflag_lscav, & 4 !jyg< 5 aerosol, & 6 !>jyg 3 SUBROUTINE lsc_scav(pdtime,it,iflag_lscav, aerosol, & 7 4 oliq,flxr,flxs,rneb,beta_fisrt, & 8 beta_v1,pplay,paprs,t,tr_seri, d_tr_insc, &9 d_tr_ bcscav,d_tr_evap,qPrls)5 beta_v1,pplay,paprs,t,tr_seri, & 6 d_tr_insc,d_tr_bcscav,d_tr_evap,qPrls) 10 7 USE ioipsl 11 8 USE dimphy … … 27 24 include "YOECUMF.h" 28 25 26 ! inputs 29 27 REAL,INTENT(IN) :: pdtime ! time step (s) 30 28 INTEGER,INTENT(IN) :: it ! tracer number 31 INTEGER,INTENT(IN) :: iflag_lscav ! LS scavenging param: 32 ! 3=Reddy_Boucher2004, 4=3+RPilon. 29 INTEGER,INTENT(IN) :: iflag_lscav ! LS scavenging param: 3=Reddy_Boucher2004, 4=3+RPilon. 33 30 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: flxr ! flux precipitant de pluie 34 31 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: flxs ! flux precipitant de neige … … 51 48 REAL,DIMENSION(klon,klev) :: dxbc ! tendance temporaire de traceur bc 52 49 53 54 50 ! variables locales 55 LOGICAL,SAVE :: debut=. true.51 LOGICAL,SAVE :: debut=.TRUE. 56 52 !$OMP THREADPRIVATE(debut) 57 53 ! … … 90 86 !$OMP THREADPRIVATE(alpha_r, alpha_s, R_r, R_s) 91 87 REAL :: pr, ps, ice, water 92 real :: conserv 93 ! 94 !!!!!!!!!!!!!!!!!!!! choix lessivage !!!!!!!!!!!!!!!!!!!!!!!! 95 !! logical,save :: inscav_fisrt 96 !!! $OMP THREADPRIVATE(inscav_first) 97 ! 98 !!!!!!!!!!!!!!!!!!!!!!!!!!! 88 ! REAL :: conserv 89 ! 90 ! 99 91 IF (debut) THEN 100 !101 ! inscav_fisrt=.true.102 ! call getin('inscav_fisrt',inscav_fisrt)103 ! if(inscav_fisrt) then104 ! print*,'beta from fisrtilp.F90, beta = (z_cond - z_oliq)/z_cond, inscav_fisrt=',inscav_fisrt105 ! else106 ! print*,'beta from Reddy and Bocuher 2004 (original version), inscav_fisrt=',inscav_fisrt107 ! endif108 92 ! 109 93 alpha_r=0.001 ! coefficient d'impaction pour la pluie … … 113 97 frac_fine_scav=0.7 114 98 frac_coar_scav=0.7 115 ! frac_aer=0.5 ~ droplet size shrinks by evap99 ! Droplet size shrinks by evap 116 100 frac_aer=0.5 117 101 ! … … 125 109 READ(99,*,end=9998) frac_coar_scav 126 110 READ(99,*,end=9998) frac_aer 127 9998 C ontinue111 9998 CONTINUE 128 112 CLOSE(99) 129 9999 C ontinue113 9999 CONTINUE 130 114 131 115 print*,'alpha_r',alpha_r … … 136 120 print*,'frac_coar_scav',frac_coar_scav 137 121 print*,'frac_aer ev',frac_aer 138 139 122 ! 140 123 ENDIF !(debut) … … 158 141 ENDDO 159 142 160 DO k=1,klev161 DO i=1, klon162 d_tr_insc(i,k,it)=0.163 d_tr_bcscav(i,k,it)=0.164 d_tr_evap(i,k,it)=0.165 ENDDO166 ENDDO167 168 143 ! pressure and size of the layer 169 DO k=klev -1, 1, -1144 DO k=klev, 1, -1 170 145 DO i=1, klon 171 146 zrho(i,k)=pplay(i,k)/t(i,k)/RD … … 176 151 177 152 !jyg< 178 !! IF (it.gt.1) THEN ! aerosol179 153 !! Temporary correction: all non-aerosol tracers are dealt with in the same way. 180 154 !! Should be updated once it has been decided how gases should be dealt with. 181 IF (aerosol(it)) THEN 182 !>jyg 155 IF (aerosol(it)) THEN 183 156 frac_ev=frac_aer 184 157 ELSE ! gas 185 158 frac_ev=frac_gas 186 187 159 ENDIF 160 ! 188 161 !jyg< 189 !! IF (it.gt.1) THEN ! aerosol 190 IF (aerosol(it)) THEN 191 !>jyg 192 DO k=1, klev 162 IF (aerosol(it)) THEN ! aerosol 163 DO k=1, klev 193 164 DO i=1, klon 194 165 scav(i,k)=frac_fine_scav 195 166 ENDDO 196 197 198 167 ENDDO 168 ELSE ! gas 169 DO k=1, klev 199 170 DO i=1, klon 200 171 henry_t=henry*exp(-kk*(1./298.-1./t(i,k))) ! mol/l/atm … … 202 173 scav(i,k)=f_a/(1.+f_a) 203 174 ENDDO 204 205 206 207 175 ENDDO 176 ENDIF 177 178 DO k=klev-1, 1, -1 208 179 DO i=1, klon 209 180 ! incloud scavenging 210 ! if(inscav_fisrt) then 211 if (iflag_lscav .eq. 4) then 212 beta=beta_fisrt(i,k)*rneb(i,k) 213 else 214 beta=flxr(i,k)-flxr(i,k+1)+flxs(i,k)-flxs(i,k+1) 215 ! beta=beta/zdz(i,k)/oliq/zrho(i,k) 216 beta=beta/zmass(i,k)/oliq 217 beta=MAX(0.,beta) 218 endif ! (iflag_lscav .eq. 4) 219 beta_v1(i,k)=beta !! for output 181 IF (iflag_lscav .EQ. 4) THEN 182 beta=beta_fisrt(i,k)*rneb(i,k) 183 ELSE 184 beta=flxr(i,k)-flxr(i,k+1)+flxs(i,k)-flxs(i,k+1) 185 beta=beta/zmass(i,k)/oliq 186 beta=MAX(0.,beta) 187 ENDIF ! (iflag_lscav .eq. 4) 188 beta_v1(i,k)=beta !! for output 220 189 ! 221 190 dxin=tr_seri(i,k,it)*(exp(-scav(i,k)*beta*pdtime)-1.) 222 ! his_dh(i)=his_dh(i)-dxin*zrho(i,k)*zdz(i,k)/pdtime ! kg/m2/s223 191 his_dh(i)=his_dh(i)-dxin*zmass(i,k)/pdtime ! kg/m2/s 224 d_tr_insc(i,k,it)=dxin 192 d_tr_insc(i,k,it)=dxin ! kg/kg/timestep 225 193 226 194 ! below-cloud impaction 227 195 !jyg< 228 !! IF (it.eq.1) THEN 229 IF (.NOT.aerosol(it)) THEN 230 !>jyg 231 d_tr_bcscav(i,k,it)=0. 232 ELSE 233 pr=0.5*(flxr(i,k)+flxr(i,k+1)) 234 ps=0.5*(flxs(i,k)+flxs(i,k+1)) 235 water=pr*alpha_r/R_r/rho_water 236 ice=ps*alpha_s/R_s/rho_ice 237 dxbc(i,k)=-3./4.*tr_seri(i,k,it)*pdtime*(water+ice) 238 ! add tracers from below cloud scav in his_dh 239 his_dh(i)=his_dh(i)-dxbc(i,k)*zmass(i,k)/pdtime ! kg/m2/s 240 d_tr_bcscav(i,k,it)=dxbc(i,k) 241 ENDIF 196 IF (.NOT.aerosol(it)) THEN 197 d_tr_bcscav(i,k,it)=0. 198 ELSE 199 pr=0.5*(flxr(i,k)+flxr(i,k+1)) 200 ps=0.5*(flxs(i,k)+flxs(i,k+1)) 201 water=pr*alpha_r/R_r/rho_water 202 ice=ps*alpha_s/R_s/rho_ice 203 dxbc(i,k)=-3./4.*tr_seri(i,k,it)*pdtime*(water+ice) 204 ! add tracers from below cloud scav in his_dh 205 his_dh(i)=his_dh(i)-dxbc(i,k)*zmass(i,k)/pdtime ! kg/m2/s 206 d_tr_bcscav(i,k,it)=dxbc(i,k) ! kg/kg/timestep 207 ENDIF 242 208 243 209 ! reevaporation … … 245 211 deltaP(i,k)=max(deltaP(i,k),0.) 246 212 247 if(flxr(i,k+1)+flxs(i,k+1).gt.1.e-16) then248 beta_ev(i,k)=deltaP(i,k)/(flxr(i,k+1)+flxs(i,k+1))249 else250 beta_ev(i,k)=0.251 endif213 IF (flxr(i,k+1)+flxs(i,k+1).GT.1.e-16) THEn 214 beta_ev(i,k)=deltaP(i,k)/(flxr(i,k+1)+flxs(i,k+1)) 215 ELSE 216 beta_ev(i,k)=0. 217 ENDIF 252 218 253 219 beta_ev(i,k)=max(min(1.,beta_ev(i,k)),0.) 254 220 255 221 !jyg 256 257 if(abs(1-(1-frac_ev)*beta_ev(i,k)).gt.1.e-16) then 222 IF (ABS(1.-(1.-frac_ev)*beta_ev(i,k)).GT.1.e-16) THEN 258 223 ! remove tracers from precipitation owing to release by evaporation in his_dh 259 ! dxev=frac_ev*beta_ev(i,k)*his_dh(i) *pdtime/(zrho(i,k)*zdz(i,k)) & 260 dxev=frac_ev*beta_ev(i,k)*his_dh(i) *pdtime/(zmass(i,k)) & 261 /(1 -(1-frac_ev)*beta_ev(i,k)) 262 his_dh(i)=his_dh(i)*(1 - frac_ev*beta_ev(i,k) / (1 -(1-frac_ev)*beta_ev(i,k))) 263 else 264 ! dxev=his_dh(i) *pdtime/(zrho(i,k)*zdz(i,k)) 265 dxev=his_dh(i) *pdtime/(zmass(i,k)) 266 his_dh(i)=0. 267 endif 224 dxev=frac_ev*beta_ev(i,k)*his_dh(i)*pdtime/zmass(i,k)/(1.-(1.-frac_ev)*beta_ev(i,k)) 225 his_dh(i)=his_dh(i)*(1.-frac_ev*beta_ev(i,k)/(1.-(1.-frac_ev)*beta_ev(i,k))) 226 ELSE 227 dxev=his_dh(i)*pdtime/zmass(i,k) 228 his_dh(i)=0. 229 ENDIF 230 ! 268 231 ! print*, k, 'beta_ev',beta_ev 269 232 ! remove tracers from precipitation owing to release by evaporation in his_dh 270 ! !dxev=frac_ev*deltaP(i,k)*pdtime * his_dh(i) /(zrho(i,k)*zdz(i,k))233 ! dxev=frac_ev*deltaP(i,k)*pdtime * his_dh(i) /(zrho(i,k)*zdz(i,k)) 271 234 !rplmd 272 !! dxev=frac_ev*deltaP(i,k)*his_dh(i) *pdtime/(zrho(i,k)*zdz(i,k)) & 273 !! /max(flxr(i,k)+flxs(i,k),1.e-16) 274 275 276 d_tr_evap(i,k,it)=dxev 277 !! tendency is further added in phytrac x = x + dx 278 ENDDO !! do i 279 ENDDO !! do k 280 281 !jyg (20130114) 282 DO i = 1,klon 235 ! dxev=frac_ev*deltaP(i,k)*his_dh(i) *pdtime/(zrho(i,k)*zdz(i,k))/max(flxr(i,k)+flxs(i,k),1.e-16) 236 237 d_tr_evap(i,k,it)=dxev ! kg/kg/timestep 238 ! 239 ENDDO 240 ENDDO 241 ! 242 DO i = 1,klon 283 243 qPrls(i,it) = his_dh(i)/max(flxr(i,1)+flxs(i,1),1.e-16) 284 ENDDO 285 !jyg end 286 287 244 ENDDO 245 ! 288 246 ! test de conservation 289 conserv=0.247 ! conserv=0. 290 248 ! DO k= klev,1,-1 291 249 ! DO i=1, klon -
LMDZ6/trunk/libf/phylmd/phytrac_mod.F90
r4412 r4514 42 42 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_lessi_impa ! Td du lessivage par impaction 43 43 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_lessi_nucl ! Td du lessivage par nucleation 44 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE 45 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE 46 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE 44 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: qPrls !jyg: concentration tra dans pluie LS a la surf. 45 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: d_tr_dry ! Td depot sec/traceur (1st layer),ALLOCATABLE,SAVE jyg 46 REAL,DIMENSION(:,:),ALLOCATABLE,SAVE :: flux_tr_dry ! depot sec/traceur (surface),ALLOCATABLE,SAVE jyg 47 47 48 48 !$OMP THREADPRIVATE(qPa,qMel,qTrdi,dtrcvMA,d_tr_th,d_tr_lessi_impa,d_tr_lessi_nucl) … … 51 51 !$OMP THREADPRIVATE(d_tr_cl,d_tr_dry,flux_tr_dry,d_tr_dec,d_tr_cv) 52 52 53 54 53 CONTAINS 55 54 56 55 SUBROUTINE phytrac_init() 56 57 57 USE dimphy 58 58 USE infotrac_phy, ONLY: nbtr, type_trac 59 59 USE tracco2i_mod, ONLY: tracco2i_init 60 60 61 IMPLICIT NONE 61 62 62 ALLOCATE(d_tr_cl(klon,klev,nbtr),d_tr_dry(klon,nbtr)) 63 ALLOCATE(flux_tr_dry(klon,nbtr),d_tr_dec(klon,klev,nbtr),d_tr_cv(klon,klev,nbtr)) 64 ALLOCATE(d_tr_insc(klon,klev,nbtr),d_tr_bcscav(klon,klev,nbtr)) 65 ALLOCATE(d_tr_evapls(klon,klev,nbtr),d_tr_ls(klon,klev,nbtr)) 66 ALLOCATE(qPrls(klon,nbtr),d_tr_trsp(klon,klev,nbtr)) 67 ALLOCATE(d_tr_sscav(klon,klev,nbtr),d_tr_sat(klon,klev,nbtr)) 68 ALLOCATE(d_tr_uscav(klon,klev,nbtr),qPr(klon,klev,nbtr),qDi(klon,klev,nbtr)) 69 ALLOCATE(qPa(klon,klev,nbtr),qMel(klon,klev,nbtr)) 70 ALLOCATE(qTrdi(klon,klev,nbtr),dtrcvMA(klon,klev,nbtr)) 71 ALLOCATE(d_tr_th(klon,klev,nbtr)) 72 ALLOCATE(d_tr_lessi_impa(klon,klev,nbtr),d_tr_lessi_nucl(klon,klev,nbtr)) 73 74 63 ALLOCATE(d_tr_cl(klon,klev,nbtr),d_tr_dry(klon,nbtr)) 64 ALLOCATE(flux_tr_dry(klon,nbtr),d_tr_dec(klon,klev,nbtr),d_tr_cv(klon,klev,nbtr)) 65 ALLOCATE(d_tr_insc(klon,klev,nbtr),d_tr_bcscav(klon,klev,nbtr)) 66 ALLOCATE(d_tr_evapls(klon,klev,nbtr),d_tr_ls(klon,klev,nbtr)) 67 ALLOCATE(qPrls(klon,nbtr),d_tr_trsp(klon,klev,nbtr)) 68 ALLOCATE(d_tr_sscav(klon,klev,nbtr),d_tr_sat(klon,klev,nbtr)) 69 ALLOCATE(d_tr_uscav(klon,klev,nbtr),qPr(klon,klev,nbtr),qDi(klon,klev,nbtr)) 70 ALLOCATE(qPa(klon,klev,nbtr),qMel(klon,klev,nbtr)) 71 ALLOCATE(qTrdi(klon,klev,nbtr),dtrcvMA(klon,klev,nbtr)) 72 ALLOCATE(d_tr_th(klon,klev,nbtr)) 73 ALLOCATE(d_tr_lessi_impa(klon,klev,nbtr),d_tr_lessi_nucl(klon,klev,nbtr)) 75 74 76 75 !=============================================================================== … … 79 78 !=============================================================================== 80 79 ! -- CO2 interactif -- 81 IF (ANY(type_trac == ['co2i','inco'])) CALL tracco2i_init()80 IF (ANY(type_trac == ['co2i','inco'])) CALL tracco2i_init() 82 81 83 82 ! -- type_trac == 'co2i' ! PC … … 242 241 REAL,DIMENSION(klon,klev),INTENT(IN) :: clw 243 242 ! RomP <<< 244 245 243 ! 246 244 REAL,DIMENSION(klon,klev),INTENT(IN) :: mp … … 374 372 zrho(i,k)=0. 375 373 zdz(i,k)=0. 376 END 377 END 374 ENDDO 375 ENDDO 378 376 379 377 DO it=1, nbtr … … 401 399 zmfdam(i,k,it)=0. 402 400 zmfphi2(i,k,it)=0. 403 END 404 END 405 END 401 ENDDO 402 ENDDO 403 ENDDO 406 404 407 405 DO it=1, nbtr … … 409 407 d_tr_dry(i,it)=0. 410 408 flux_tr_dry(i,it)=0. 411 END 412 END 409 ENDDO 410 ENDDO 413 411 414 412 DO k = 1, klev 415 413 DO i = 1, klon 416 414 delp(i,k) = paprs(i,k)-paprs(i,k+1) 417 END 418 END 415 ENDDO 416 ENDDO 419 417 420 418 IF (debutphy) THEN … … 491 489 492 490 ! Initialize module for specific tracers 493 IF (type_trac == 'inca') THEN491 IF (type_trac == 'inca') THEN 494 492 source(:,:)=init_source(:,:) 495 493 CALL tracinca_init(aerosol,lessivage) 496 ELSE IF (type_trac == 'repr') THEN494 ELSE IF (type_trac == 'repr') THEN 497 495 source(:,:)=0. 498 ELSE IF (type_trac == 'co2i') THEN496 ELSE IF (type_trac == 'co2i') THEN 499 497 source(:,:)=0. 500 498 lessivage = .FALSE. … … 504 502 iflag_vdf_trac= 1 505 503 iflag_con_trac= 1 506 ELSE IF (type_trac == 'inco') THEN504 ELSE IF (type_trac == 'inco') THEN 507 505 source(:,1:nqCO2) = 0. ! from CO2i ModThL 508 506 source(:,nqCO2+1:nbtr)=init_source(:,:) ! from INCA ModThL … … 514 512 iflag_con_trac = 1 ! From CO2i 515 513 #ifdef CPP_StratAer 516 ELSE IF (type_trac == 'coag') THEN514 ELSE IF (type_trac == 'coag') THEN 517 515 source(:,:)=0. 518 516 DO it= 1, nbtr_sulgas … … 524 522 ENDDO 525 523 #endif 526 ELSE IF (type_trac == 'lmdz') THEN524 ELSE IF (type_trac == 'lmdz') THEN 527 525 CALL traclmdz_init(pctsrf,xlat,xlon,ftsol,tr_seri,t_seri,pplay,sh,pdtphys,aerosol,lessivage) 528 END 526 ENDIF 529 527 530 528 ! … … 539 537 ! 540 538 DO it=1, nbtr 541 IF (type_trac == 'repr') THEN539 IF (type_trac == 'repr') THEN 542 540 flag_cvltr(it)=.FALSE. 543 ELSE IF (type_trac == 'inca') THEN541 ELSE IF (type_trac == 'inca') THEN 544 542 ! IF ((it.EQ.id_Rn222) .OR. ((it.GE.id_SO2) .AND. (it.LE.id_NH3)) ) THEN 545 543 ! !--gas-phase species … … 565 563 !--for now we do not scavenge in cvltr 566 564 flag_cvltr(it)=.FALSE. 567 ELSE IF (type_trac == 'co2i') THEN565 ELSE IF (type_trac == 'co2i') THEN 568 566 !--co2 tracers are not scavenged 569 567 flag_cvltr(it)=.FALSE. 570 ELSE IF (type_trac == 'inco') THEN ! Add ThL568 ELSE IF (type_trac == 'inco') THEN ! Add ThL 571 569 flag_cvltr(it)=.FALSE. 572 570 #ifdef CPP_StratAer 573 ELSE IF (type_trac == 'coag') THEN571 ELSE IF (type_trac == 'coag') THEN 574 572 IF (convscav.and.aerosol(it)) THEN 575 573 flag_cvltr(it)=.TRUE. … … 581 579 ENDIF 582 580 #endif 583 ELSE IF (type_trac == 'lmdz') THEN581 ELSE IF (type_trac == 'lmdz') THEN 584 582 IF (convscav.and.aerosol(it)) THEN 585 583 flag_cvltr(it)=.TRUE. … … 590 588 flag_cvltr(it)=.FALSE. 591 589 ENDIF 592 END 590 ENDIF 593 591 ENDDO 594 592 ! … … 623 621 DO i=1,klon 624 622 zmasse(i,k)=(paprs(i,k)-paprs(i,k+1))/rg 625 END 626 END 623 ENDDO 624 ENDDO 627 625 ! 628 626 IF (id_be .GT. 0) THEN … … 630 628 DO i=1,klon 631 629 sourceBE(i,k)=srcbe(i,k) !RomP -> pour sortie histrac 632 END 633 END 630 ENDDO 631 ENDDO 634 632 ENDIF 635 633 … … 638 636 ! 639 637 !=============================================================================== 640 IF (type_trac == 'inca') THEN638 IF (type_trac == 'inca') THEN 641 639 ! -- CHIMIE INCA config_inca = aero or chem -- 642 640 ! Appel fait en fin de phytrac pour avoir les emissions modifiees par 643 641 ! la couche limite et la convection avant le calcul de la chimie 644 642 645 ELSE IF (type_trac == 'repr') THEN643 ELSE IF (type_trac == 'repr') THEN 646 644 ! -- CHIMIE REPROBUS -- 647 645 CALL tracreprobus(pdtphys, gmtime, debutphy, julien, & … … 650 648 tr_seri) 651 649 652 ELSE IF (type_trac == 'co2i') THEN650 ELSE IF (type_trac == 'co2i') THEN 653 651 ! -- CO2 interactif -- 654 652 ! -- source is updated with FF and BB emissions … … 659 657 xlat, xlon, pphis, pphi, & 660 658 t_seri, pplay, paprs, tr_seri, source) 661 ELSE IF (type_trac == 'inco') THEN ! Add ThL659 ELSE IF (type_trac == 'inco') THEN ! Add ThL 662 660 CALL tracco2i(pdtphys, debutphy, & 663 661 xlat, xlon, pphis, pphi, & … … 665 663 666 664 #ifdef CPP_StratAer 667 ELSE IF (type_trac == 'coag') THEN665 ELSE IF (type_trac == 'coag') THEN 668 666 ! --STRATOSPHERIC AER IN THE STRAT -- 669 667 CALL traccoag(pdtphys, gmtime, debutphy, julien, & … … 672 670 tr_seri) 673 671 #endif 674 ELSE IF (type_trac == 'lmdz') THEN672 ELSE IF (type_trac == 'lmdz') THEN 675 673 ! -- Traitement des traceurs avec traclmdz 676 674 CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & … … 678 676 rh, pphi, ustar, wstar, ale_bl, ale_wake, u10m, v10m, & 679 677 tr_seri, source, d_tr_cl,d_tr_dec, zmasse) !RomP 680 END 678 ENDIF 681 679 !====================================================================== 682 680 ! -- Calcul de l'effet de la convection -- … … 738 736 DO i = 1, klon 739 737 tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr_cv(i,k,it) 740 END 741 END 738 ENDDO 739 ENDDO 742 740 743 741 CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'convection it = '//TRIM(int2str(it))) 744 742 745 END 743 ENDDO ! nbtr 746 744 747 745 #ifdef CPP_StratAer … … 795 793 ! tr_seri(i,k,it)=MIN(tr_seri(i,k,it),1.e10) 796 794 !#endif 797 END 798 END 799 END 795 ENDDO 796 ENDDO 797 ENDDO 800 798 801 799 IF (iflag_thermals.GT.0.AND.iflag_the_trac>0) THEN … … 811 809 d_tr_th(i,k,it)=pdtphys*d_tr_th(i,k,it) 812 810 tr_seri(i,k,it)=MAX(tr_seri(i,k,it)+d_tr_th(i,k,it),0.) 813 END 814 END 815 816 END 811 ENDDO 812 ENDDO 813 814 ENDDO ! it 817 815 818 816 ENDIF ! Thermiques … … 854 852 DO it=1, nbtr 855 853 ! 856 IF ( pbl_flg(it) /= 0) THEN854 IF (pbl_flg(it) /= 0) THEN 857 855 ! 858 856 CALL cltrac(pdtphys, coefh,t_seri, & … … 929 927 ! Liu (2001) proposed to use 1.5e-3 kg/kg 930 928 931 !jyg<932 !! CALL lsc_scav(pdtphys,it,iflag_lscav,ql_incl,prfl,psfl,rneb,beta_fisrt, &933 929 CALL lsc_scav(pdtphys,it,iflag_lscav,aerosol,ql_incl,prfl,psfl,rneb,beta_fisrt, & 934 !>jyg 935 beta_v1,pplay,paprs,t_seri,tr_seri,d_tr_insc, & 936 d_tr_bcscav,d_tr_evapls,qPrls) 930 beta_v1,pplay,paprs,t_seri,tr_seri,d_tr_insc,d_tr_bcscav,d_tr_evapls,qPrls) 937 931 938 932 !large scale scavenging tendency … … 946 940 ENDIF 947 941 948 END 942 ENDDO !tr 949 943 950 944 #ifdef CPP_StratAer
Note: See TracChangeset
for help on using the changeset viewer.