Changeset 5246 for LMDZ6/trunk/libf/phylmd/Dust/incloud_scav_lsc.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (4 days ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/Dust/incloud_scav_lsc.f90
r5245 r5246 1 c Subroutine that calculates the effect of precipitation in scavenging 2 cWITHIN the cloud, for large scale as well as convective precipitation3 SUBROUTINE incloud_scav_lsc(lminmax,qmin,qmax,masse,henry,kk,prfl, 4 . psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys,5 .his_dhlsc,his_dhcon1,tr_seri)1 ! Subroutine that calculates the effect of precipitation in scavenging 2 ! WITHIN the cloud, for large scale as well as convective precipitation 3 SUBROUTINE incloud_scav_lsc(lminmax,qmin,qmax,masse,henry,kk,prfl, & 4 psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys, & 5 his_dhlsc,his_dhcon1,tr_seri) 6 6 7 8 9 7 USE dimphy 8 USE infotrac 9 USE indice_sol_mod 10 10 11 11 IMPLICIT NONE 12 12 13 14 15 16 13 INCLUDE "dimensions.h" 14 INCLUDE "chem.h" 15 INCLUDE "YOMCST.h" 16 INCLUDE "paramet.h" 17 17 18 c============================= INPUT =================================== 19 REAL qmin, qmax 20 REAL masse(nbtr) 21 REAL henry(nbtr) !--cste de Henry mol/l/atm 22 REAL kk(nbtr) !--coefficient de var avec T (K) 23 REAL prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale 24 ! REAL prfl(klon,klev), psfl(klon,klev) !--large-scale 25 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection 26 ! REAL pmflxr(klon,klev), pmflxs(klon,klev) !--convection 27 REAL zrho(klon,klev), zdz(klon,klev) 28 REAL t_seri(klon,klev) 29 LOGICAL lminmax 30 REAL pdtphys 31 ! REAL prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale ! Titane 32 ! REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection ! Titane 33 c============================= OUTPUT ================================== 34 REAL tr_seri(klon,klev,nbtr) ! traceur 35 REAL aux_var1(klon,klev) ! traceur 36 REAL aux_var2(klon) ! traceur 37 REAL aux_var3(klon) ! traceur 38 REAL his_dhlsc(klon,nbtr) ! in-cloud scavenging lsc 39 REAL his_dhcon1(klon,nbtr) ! in-cloud scavenging con 40 c========================= LOCAL VARIABLES ============================= 41 INTEGER it, i, j 42 43 EXTERNAL minmaxqfi, inscav_spl 44 DO it=1, nbtr 45 c 46 DO i=1,klon 47 aux_var2(i)=his_dhlsc(i,it) 48 aux_var3(i)=his_dhcon1(i,it) 49 ENDDO 50 DO j=1,klev 51 DO i=1,klon 52 aux_var1(i,j)=tr_seri(i,j,it) 53 ENDDO 54 ENDDO 55 c 56 IF (lminmax) THEN 57 CALL minmaxqfi(aux_var1,qmin,qmax,'avt inscav') 58 cnhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'avt inscav') 59 ENDIF 60 c 61 cnhl CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3, 62 cnhl . prfl,psfl,zrho,zdz,t_seri,tr_seri(1,1,it), 63 cnhl . his_dhlsc(1,it)) 64 CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3, 65 . prfl,psfl,zrho,zdz,t_seri,aux_var1,aux_var2) 66 c 67 IF (lminmax) THEN 68 CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide lsc') 69 cnhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide lsc') 70 ENDIF 71 c 72 c 73 c-scheme for convective in-cloud scavenging 74 c 75 cnhl CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3, 76 cnhl . pmflxr,pmflxs,zrho,zdz,t_seri,tr_seri(1,1,it), 77 cnhl . his_dhcon1(1,it)) 18 !============================= INPUT =================================== 19 REAL :: qmin, qmax 20 REAL :: masse(nbtr) 21 REAL :: henry(nbtr) !--cste de Henry mol/l/atm 22 REAL :: kk(nbtr) !--coefficient de var avec T (K) 23 REAL :: prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale 24 ! REAL prfl(klon,klev), psfl(klon,klev) !--large-scale 25 REAL :: pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection 26 ! REAL pmflxr(klon,klev), pmflxs(klon,klev) !--convection 27 REAL :: zrho(klon,klev), zdz(klon,klev) 28 REAL :: t_seri(klon,klev) 29 LOGICAL :: lminmax 30 REAL :: pdtphys 31 ! REAL prfl(klon,klev+1), psfl(klon,klev+1) !--large-scale ! Titane 32 ! REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1) !--convection ! Titane 33 !============================= OUTPUT ================================== 34 REAL :: tr_seri(klon,klev,nbtr) ! traceur 35 REAL :: aux_var1(klon,klev) ! traceur 36 REAL :: aux_var2(klon) ! traceur 37 REAL :: aux_var3(klon) ! traceur 38 REAL :: his_dhlsc(klon,nbtr) ! in-cloud scavenging lsc 39 REAL :: his_dhcon1(klon,nbtr) ! in-cloud scavenging con 40 !========================= LOCAL VARIABLES ============================= 41 INTEGER :: it, i, j 78 42 79 c print *,'JE inscav0' 80 c IF (iflag_con.LT.3) THEN 81 c 82 c print *,'JE inscav1' 83 c print *,'iflag_con',iflag_con 84 c CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3, 85 c . pmflxr,pmflxs,zrho,zdz,t_seri,aux_var1,aux_var3) 86 c 87 cc 88 c IF (lminmax) THEN 89 c CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide con') 90 ccnhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide con') 91 c 92 c ENDIF 93 c 94 c ENDIF ! iflag_con 43 EXTERNAL minmaxqfi, inscav_spl 44 DO it=1, nbtr 45 ! 46 DO i=1,klon 47 aux_var2(i)=his_dhlsc(i,it) 48 aux_var3(i)=his_dhcon1(i,it) 49 ENDDO 50 DO j=1,klev 51 DO i=1,klon 52 aux_var1(i,j)=tr_seri(i,j,it) 53 ENDDO 54 ENDDO 55 ! 56 IF (lminmax) THEN 57 CALL minmaxqfi(aux_var1,qmin,qmax,'avt inscav') 58 !nhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'avt inscav') 59 ENDIF 60 ! 61 !nhl CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3, 62 !nhl . prfl,psfl,zrho,zdz,t_seri,tr_seri(1,1,it), 63 !nhl . his_dhlsc(1,it)) 64 CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3, & 65 prfl,psfl,zrho,zdz,t_seri,aux_var1,aux_var2) 66 ! 67 IF (lminmax) THEN 68 CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide lsc') 69 !nhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide lsc') 70 ENDIF 71 ! 72 ! 73 !-scheme for convective in-cloud scavenging 74 ! 75 !nhl CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3, 76 !nhl . pmflxr,pmflxs,zrho,zdz,t_seri,tr_seri(1,1,it), 77 !nhl . his_dhcon1(1,it)) 95 78 96 c 97 c print *,'JE inscav2' 98 DO j=1,klev 99 DO i=1,klon 100 tr_seri(i,j,it)=aux_var1(i,j) 101 ENDDO 102 ENDDO 103 DO i=1,klon 104 his_dhlsc(i,it)=aux_var2(i) 105 his_dhcon1(i,it)=aux_var3(i) 106 ENDDO 79 ! print *,'JE inscav0' 80 ! IF (iflag_con.LT.3) THEN 81 ! 82 ! print *,'JE inscav1' 83 ! print *,'iflag_con',iflag_con 84 ! CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3, 85 ! . pmflxr,pmflxs,zrho,zdz,t_seri,aux_var1,aux_var3) 86 ! 87 !c 88 ! IF (lminmax) THEN 89 ! CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide con') 90 !cnhl CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide con') 91 ! 92 ! ENDIF 93 ! 94 ! ENDIF ! iflag_con 107 95 108 c 109 ENDDO !--boucle sur it 96 ! 97 ! print *,'JE inscav2' 98 DO j=1,klev 99 DO i=1,klon 100 tr_seri(i,j,it)=aux_var1(i,j) 101 ENDDO 102 ENDDO 103 DO i=1,klon 104 his_dhlsc(i,it)=aux_var2(i) 105 his_dhcon1(i,it)=aux_var3(i) 106 ENDDO 110 107 111 c print *,'JE inscav3' 112 END 108 ! 109 ENDDO !--boucle sur it 110 111 ! print *,'JE inscav3' 112 END SUBROUTINE incloud_scav_lsc
Note: See TracChangeset
for help on using the changeset viewer.