Changeset 1974 for trunk/LMDZ.MARS/libf/phymars/updatereffrad_mod.F
- Timestamp:
- Jul 18, 2018, 4:48:34 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/updatereffrad_mod.F
r1969 r1974 6 6 7 7 SUBROUTINE updatereffrad(ngrid,nlayer, 8 & rdust,r ice,nuice,8 & rdust,rstormdust,rice,nuice, 9 9 & reffrad,nueffrad, 10 10 & pq,tauscaling,tau,pplay) … … 14 14 & igcm_h2o_ice, igcm_ccn_mass, radius, 15 15 & igcm_ccn_number, nuice_ref, varian, 16 & ref_r0, igcm_dust_submicron 16 & ref_r0, igcm_dust_submicron, 17 & igcm_stormdust_mass,igcm_stormdust_number 17 18 USE dimradmars_mod, only: nueffdust,naerkind, 18 19 & name_iaer, 19 20 & iaer_dust_conrath,iaer_dust_doubleq, 20 & iaer_dust_submicron,iaer_h2o_ice 21 & iaer_dust_submicron,iaer_h2o_ice, 22 & iaer_stormdust_doubleq 21 23 22 24 IMPLICIT NONE … … 45 47 46 48 c----------------------------------------------------------------------- 47 c Inputs :49 c Inputs/outputs: 48 50 c ------ 49 51 50 INTEGER ngrid,nlayer52 INTEGER, INTENT(in) :: ngrid,nlayer 51 53 c Ice geometric mean radius (m) 52 REAL :: rice(ngrid,nlayer)54 REAL, INTENT(out) :: rice(ngrid,nlayer) 53 55 c Estimated effective variance of the size distribution (n.u.) 54 REAL :: nuice(ngrid,nlayer)56 REAL, INTENT(out) :: nuice(ngrid,nlayer) 55 57 c Tracer mass mixing ratio (kg/kg) 56 REAL pq(ngrid,nlayer,nqmx) 57 REAL rdust(ngrid,nlayer) ! Dust geometric mean radius (m) 58 59 REAL pplay(ngrid,nlayer) ! altitude at the middle of the layers 60 REAL tau(ngrid,naerkind) 61 62 63 c Outputs: 64 c ------- 65 58 REAL, INTENT(in) :: pq(ngrid,nlayer,nqmx) 59 REAL, INTENT(out) :: rdust(ngrid,nlayer) ! Dust geometric mean radius (m) 60 REAL, INTENT(out) :: rstormdust(ngrid,nlayer) ! Dust geometric mean radius (m) 61 REAL, INTENT(in) :: pplay(ngrid,nlayer) ! altitude at the middle of the layers 62 REAL, INTENT(in) :: tau(ngrid,naerkind) 66 63 c Aerosol effective radius used for radiative transfer (meter) 67 REAL :: reffrad(ngrid,nlayer,naerkind)64 REAL, INTENT(out) :: reffrad(ngrid,nlayer,naerkind) 68 65 c Aerosol effective variance used for radiative transfer (n.u.) 69 REAL :: nueffrad(ngrid,nlayer,naerkind) 70 66 REAL, INTENT(out) :: nueffrad(ngrid,nlayer,naerkind) 67 REAL, INTENT(in) :: tauscaling(ngrid) ! Convertion factor for qccn and Nccn 68 71 69 c Local variables: 72 70 c --------------- … … 85 83 REAL Mo,No ! Mass and number of ccn 86 84 REAL rhocloud(ngrid,nlayer) ! Cloud density (kg.m-3) 87 REAL tauscaling(ngrid) ! Convertion factor for qccn and Nccn88 85 89 86 LOGICAL,SAVE :: firstcall=.true. … … 114 111 ENDDO 115 112 ENDIF 113 114 ! updating radius of stormdust particles 115 IF (rdstorm.AND.active) THEN 116 DO l=1,nlayer 117 DO ig=1, ngrid 118 call updaterdust(pq(ig,l,igcm_stormdust_mass), 119 & pq(ig,l,igcm_stormdust_number),rstormdust(ig,l)) 120 nueffdust(ig,l) = exp(varian**2.)-1. 121 ENDDO 122 ENDDO 123 ENDIF 116 124 117 125 c 1.2 Water-ice particles … … 126 134 127 135 IF (firstcall) THEN 128 IF (minval(tauscaling).lt.0) tauscaling(:) = 1.e-3 ! default value when non-read in startfi is -1129 IF (freedust) tauscaling(:) = 1. ! if freedust, enforce no rescaling at all136 !IF (minval(tauscaling).lt.0) tauscaling(:) = 1.e-3 ! default value when non-read in startfi is -1 137 !IF (freedust) tauscaling(:) = 1. ! if freedust, enforce no rescaling at all 130 138 firstcall = .false. 131 139 ENDIF … … 206 214 ENDDO 207 215 c================================================================== 216 CASE("stormdust_doubleq") aerkind! Two-moment scheme for 217 c stormdust; same distribution than normal dust 218 c================================================================== 219 DO l=1,nlayer 220 DO ig=1,ngrid 221 reffrad(ig,l,iaer) = rstormdust(ig,l) * ref_r0 222 nueffrad(ig,l,iaer) = nueffdust(ig,l) 223 ENDDO 224 ENDDO 225 c================================================================== 208 226 END SELECT aerkind 209 227 ENDDO ! iaer (loop on aerosol kind)
Note: See TracChangeset
for help on using the changeset viewer.