Changeset 4750
- Timestamp:
- Nov 14, 2023, 7:06:07 PM (13 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd/StratAer
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/strataer_local_var_mod.F90
r4625 r4750 1 ! $Id: strataer_local_var_mod.F90 2022-10-17 19:39:09Z nlebas $2 1 MODULE strataer_local_var_mod 3 2 ! This module contains strato microphysic model parameters & variables … … 41 40 LOGICAL,SAVE :: flag_newclim_file 42 41 !$OMP THREADPRIVATE(flag_newclim_file) 42 43 ! flag to choose new H2SO4 density and weight percent from Tabazadeh et al. (1994). 44 LOGICAL,SAVE :: flag_new_strat_compo 45 !$OMP THREADPRIVATE(flag_new_strat_compo) 43 46 44 47 ! Verbose mode to get more print info … … 178 181 flag_H2SO4_photolysis = .FALSE. ! H2SO4 photolysis (default: No) 179 182 flag_min_rreduce = .TRUE. ! Minimum lifetime=1.5 pdt phys (default: Yes) 183 flag_new_strat_compo =.TRUE. ! H2SO4/H2O weight percent & density routine (default: S. Bekki) 180 184 ok_qemiss = .FALSE. ! H2O emission flag 181 185 … … 208 212 CALL getin_p('flag_H2SO4_photolysis',flag_H2SO4_photolysis) 209 213 CALL getin_p('flag_min_rreduce',flag_min_rreduce) 214 CALL getin_p('flag_new_strat_compo',flag_new_strat_compo) 210 215 CALL getin_p('ok_qemiss',ok_qemiss) 211 216 … … 235 240 WRITE(lunout,*) 'IN STRATAER : flag_H2SO4_photolysis = ',flag_H2SO4_photolysis 236 241 WRITE(lunout,*) 'IN STRATAER : flag_min_rreduce = ',flag_min_rreduce 242 WRITE(lunout,*) 'IN STRATAER : flag_new_strat_compo = ',flag_new_strat_compo 237 243 WRITE(lunout,*) 'IN STRATAER : ok_qemiss = ',ok_qemiss 238 244 ENDIF -
LMDZ6/trunk/libf/phylmd/StratAer/sulfate_aer_mod.F90
r3663 r4750 1 !2 ! $Id$3 !4 1 MODULE sulfate_aer_mod 5 2 … … 8 5 9 6 CONTAINS 7 8 !******************************************************************* 9 SUBROUTINE STRACOMP_BIN(sh,t_seri,pplay) 10 ! 11 ! Aerosol H2SO4 weight fraction as a function of PH2O and temperature 12 ! INPUT: 13 ! sh: VMR of H2O 14 ! t_seri: temperature (K) 15 ! pplay: middle layer pression (Pa) 16 ! 17 ! OUTPUT: 18 ! R2SO4: aerosol H2SO4 weight fraction (percent) 19 20 USE dimphy, ONLY : klon,klev ! nb of longitude and altitude bands 21 USE aerophys 22 USE phys_local_var_mod, ONLY: R2SO4 23 24 IMPLICIT NONE 25 26 REAL,DIMENSION(klon,klev),INTENT(IN) :: t_seri ! Temperature 27 REAL,DIMENSION(klon,klev),INTENT(IN) :: pplay ! pression in the middle of each layer (Pa) 28 REAL,DIMENSION(klon,klev),INTENT(IN) :: sh ! specific humidity 29 30 REAL ks(7) 31 REAL t,qh2o,ptot,pw 32 REAL a,b,c,det 33 REAL xsb,msb 34 35 INTEGER ilon,ilev 36 DATA ks/-21.661,2724.2,51.81,-15732.0,47.004,-6969.0,-4.6183/ 37 38 !******************************************************************* 39 !*** liquid aerosols process 40 !******************************************************************* 41 ! BINARIES LIQUID AEROROLS: 42 43 DO ilon=1,klon 44 DO ilev=1,klev 45 46 t = max(t_seri(ilon,ilev),185.) 47 qh2o=sh(ilon,ilev)/18.*28.9 48 ptot=pplay(ilon,ilev)/100. 49 pw = qh2o*ptot/1013.0 50 pw = min(pw,2.e-3/1013.) 51 pw = max(pw,2.e-5/1013.) 52 53 !******************************************************************* 54 !*** binaries aerosols h2so4/h2o 55 !******************************************************************* 56 a = ks(3) + ks(4)/t 57 b = ks(1) + ks(2)/t 58 c = ks(5) + ks(6)/t + ks(7)*log(t) - log(pw) 59 60 det = b**2 - 4.*a*c 61 62 IF (det > 0.) THEN 63 xsb = (-b - sqrt(det))/(2.*a) 64 msb = 55.51*xsb/(1.0 - xsb) 65 ELSE 66 msb = 0. 67 ENDIF 68 R2SO4(ilon,ilev) = 100*msb*0.098076/(1.0 + msb*0.098076) 69 70 ! H2SO4 min dilution: 0.5% 71 R2SO4(ilon,ilev) = max( R2SO4(ilon,ilev), 0.005 ) 72 ENDDO 73 ENDDO 74 100 RETURN 75 76 END SUBROUTINE STRACOMP_BIN 10 77 11 78 !******************************************************************** … … 479 546 480 547 !**************************************************************** 548 SUBROUTINE DENH2SA_TABA(t_seri) 549 550 ! AERSOL DENSITY AS A FUNCTION OF H2SO4 WEIGHT PERCENT AND T 551 ! from Tabazadeh et al. (1994) abaques 552 ! --------------------------------------------- 553 554 ! 555 ! INPUT: 556 ! R2SO4: aerosol H2SO4 weight fraction (percent) 557 ! t_seri: temperature (K) 558 ! klon: number of latitude bands in the model domain 559 ! klev: number of altitude bands in the model domain 560 ! for IFS: perhaps add another dimension for longitude 561 ! 562 ! OUTPUT: 563 ! DENSO4: aerosol mass density (gr/cm3 = aerosol mass/aerosol volume) 564 ! 565 USE dimphy, ONLY : klon,klev 566 USE phys_local_var_mod, ONLY: R2SO4, DENSO4 567 568 IMPLICIT NONE 569 570 REAL,DIMENSION(klon,klev),INTENT(IN) :: t_seri ! Temperature 571 572 INTEGER i,j 573 574 !---------------------------------------------------------------------- 575 ! ... Local variables 576 !---------------------------------------------------------------------- 577 real, parameter :: a9 = -268.2616e4, a10 = 576.4288e3 578 579 real :: a0, a1, a2, a3, a4, a5, a6, a7 ,a8 580 real :: c1, c2, c3, c4, w 581 582 583 ! Loop on model domain (2 dimension for UPMC model; 3 for IFS) 584 DO i=1,klon 585 DO j=1,klev 586 !---------------------------------------------------------------------- 587 ! ... Temperature variables 588 !---------------------------------------------------------------------- 589 c1 = t_seri(I,J)- 273.15 590 c2 = c1**2 591 c3 = c1*c2 592 c4 = c1*c3 593 !---------------------------------------------------------------------- 594 ! Polynomial Coefficients 595 !---------------------------------------------------------------------- 596 a0 = 999.8426 + 334.5402e-4*c1 - 569.1304e-5*c2 597 a1 = 547.2659 - 530.0445e-2*c1 + 118.7671e-4*c2 + 599.0008e-6*c3 598 a2 = 526.295e1 + 372.0445e-1*c1 + 120.1909e-3*c2 - 414.8594e-5*c3 + 119.7973e-7*c4 599 a3 = -621.3958e2 - 287.7670*c1 - 406.4638e-3*c2 + 111.9488e-4*c3 + 360.7768e-7*c4 600 a4 = 409.0293e3 + 127.0854e1*c1 + 326.9710e-3*c2 - 137.7435e-4*c3 - 263.3585e-7*c4 601 a5 = -159.6989e4 - 306.2836e1*c1 + 136.6499e-3*c2 + 637.3031e-5*c3 602 a6 = 385.7411e4 + 408.3717e1*c1 - 192.7785e-3*c2 603 a7 = -580.8064e4 - 284.4401e1*c1 604 a8 = 530.1976e4 + 809.1053*c1 605 !---------------------------------------------------------------------- 606 ! ... Summation 607 !---------------------------------------------------------------------- 608 ! w : H2SO4 Weight fraction 609 w=r2SO4(i,j)*0.01 610 DENSO4(i,j) = 0.001*(a0 + w*(a1 + w*(a2 + w*(a3 + w*(a4 + & 611 w*(a5 + w*(a6 + w*(a7 + w*(a8 + w*(a9 + w*a10)))))))))) 612 DENSO4(i,j) = max (0.0, DENSO4(i,j) ) 613 614 ENDDO 615 ENDDO 616 617 END SUBROUTINE DENH2SA_TABA 618 619 !**************************************************************** 481 620 SUBROUTINE DENH2SA(t_seri) 482 621 -
LMDZ6/trunk/libf/phylmd/StratAer/traccoag_mod.F90
r4601 r4750 1 !2 ! $Id$3 !4 1 MODULE traccoag_mod 5 2 ! … … 119 116 WHERE (stratomask.GT.0.5) is_strato=.TRUE. 120 117 121 ! STRACOMP (H2O, P, t_seri -> aerosol composition (R2SO4)) 122 ! H2SO4 mass fraction in aerosol (%) 123 CALL stracomp(sh,t_seri,pplay) 124 125 ! aerosol density (gr/cm3) 126 CALL denh2sa(t_seri) 127 118 IF(flag_new_strat_compo) THEN 119 WRITE(lunout,*) 'traccoag: USE STRAT COMPO from Tabazadeh 1994', flag_new_strat_compo 120 ! STRACOMP (H2O, P, t_seri -> aerosol composition (R2SO4)) : binary routine (from reprobus) 121 ! H2SO4 mass fraction in aerosol (%) from Tabazadeh et al. (1994). 122 CALL stracomp_bin(sh,t_seri,pplay) 123 124 ! aerosol density (gr/cm3) - from Tabazadeh 125 CALL denh2sa_taba(t_seri) 126 ELSE 127 WRITE(lunout,*) 'traccoag: USE STRAT COMPO from Bekki 2D model', flag_new_strat_compo 128 ! STRACOMP (H2O, P, t_seri -> aerosol composition (R2SO4)) 129 ! H2SO4 mass fraction in aerosol (%) 130 CALL stracomp(sh,t_seri,pplay) 131 132 ! aerosol density (gr/cm3) 133 CALL denh2sa(t_seri) 134 ENDIF 135 128 136 ! compute factor for converting dry to wet radius (for every grid box) 129 137 f_r_wet(:,:) = (dens_aer_dry/(DENSO4(:,:)*1000.)/(R2SO4(:,:)/100.))**(1./3.)
Note: See TracChangeset
for help on using the changeset viewer.