Changeset 744
- Timestamp:
- Jul 26, 2012, 10:27:29 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/updatereffrad.F
r633 r744 2 2 & rdust,rice,nuice, 3 3 & reffrad,nueffrad, 4 & pq,tauscaling )5 4 & pq,tauscaling,tau,pplay) 5 USE updaterad 6 6 IMPLICIT NONE 7 7 c======================================================================= … … 46 46 c Tracer mass mixing ratio (kg/kg) 47 47 REAL pq(ngrid,nlayer,nqmx) 48 real rdust(ngridmx,nlayermx) ! Dust geometric mean radius (m) 48 REAL rdust(ngridmx,nlayermx) ! Dust geometric mean radius (m) 49 50 REAL pplay(ngrid,nlayer) ! altitude at the middle of the layers 51 REAL tau(ngrid,naerkind) 52 49 53 50 54 c Outputs: … … 96 100 DO l=1,nlayer 97 101 DO ig=1, ngrid 98 rdust(ig,l) = 99 & CBRT(r3n_q*pq(ig,l,igcm_dust_mass)/ 100 & max(pq(ig,l,igcm_dust_number),0.01)) 101 rdust(ig,l)=min(max(rdust(ig,l),1.e-10),500.e-6) 102 call updaterdust(pq(ig,l,igcm_dust_mass), 103 & pq(ig,l,igcm_dust_number),rdust(ig,l)) 102 104 nueffdust(ig,l) = exp(varian**2.)-1. 103 105 ENDDO … … 114 116 c 1.2 Water-ice particles 115 117 c ----------------------- 116 IF (water.AND.activice) THEN 117 IF ((firstcall).or.(microphys.eqv..false.)) THEN 118 119 IF (water.AND.activice) THEN 120 IF (microphys) THEN 121 122 IF (firstcall) THEN 118 123 DO l=1,nlayer 119 124 DO ig=1,ngrid 120 rice(ig,l) = max(CBRT(121 & (pq(ig,l,igcm_h2o_ice)/rho_ice +122 & ccn0*(4./3.)*pi*rdust(ig,l)**3.) /123 & (ccn0*4./3.*pi)),rdust(ig,l) )124 rice(ig,l)=min(max(rice(ig,l),1.e-10),500.e-6)125 call updaterice_micro(pq(ig,l,igcm_h2o_ice), 126 & pq(ig,l,igcm_ccn_mass), 127 & pq(ig,l,igcm_ccn_number), 128 & 1.e-3,rice(ig,l), 129 & rhocloud(ig,l)) 125 130 nuice(ig,l) = nuice_ref 126 131 ENDDO … … 130 135 c Indeed it is scaled on the prescribed dust opacity via a 'tauscaling' coefficient 131 136 c computed after radiative transfer. 132 c Therefore, we use a typical value ccn0 at firstcall, like it is done without microphysics.133 137 ELSE 134 138 DO l=1,nlayer 135 139 DO ig=1,ngrid 136 Mo = pq(ig,l,igcm_h2o_ice) + 137 & pq(ig,l,igcm_ccn_mass)* tauscaling(ig) + 1.e-30 138 No = pq(ig,l,igcm_ccn_number)* tauscaling(ig)+ 1e-30 139 rhocloud(ig,l) = pq(ig,l,igcm_h2o_ice)*rho_ice / Mo 140 & + pq(ig,l,igcm_ccn_mass)*tauscaling(ig)*rho_dust/Mo 141 rhocloud(ig,l) = 142 & min(max(rhocloud(ig,l),rho_ice),rho_dust) 143 rice(ig,l) = 144 & CBRT( Mo/No * 0.75 / pi / rhocloud(ig,l)) 145 rice(ig,l)=min(max(rice(ig,l),1.e-10),500.e-6) 140 call updaterice_micro(pq(ig,l,igcm_h2o_ice), 141 & pq(ig,l,igcm_ccn_mass), 142 & pq(ig,l,igcm_ccn_number), 143 & tauscaling(ig),rice(ig,l), 144 & rhocloud(ig,l)) 146 145 nuice(ig,l) = nuice_ref 147 ENDDO 148 ENDDO 149 ENDIF ! of if ((firstcall).or.(microphys.eq.false)) 150 ENDIF ! of if (water.AND.activice) 151 146 ENDDO 147 ENDDO 148 ENDIF ! of if firstcall 149 150 ELSE ! if not microphys 151 152 DO l=1,nlayer 153 DO ig=1,ngrid 154 call updaterice_typ(pq(ig,l,igcm_h2o_ice), 155 & tau(ig,1),pplay(ig,l),rice(ig,l)) 156 nuice(ig,l) = nuice_ref 157 ENDDO 158 ENDDO 159 160 ENDIF ! of if microphys 161 ENDIF ! of if (water.AND.activice) 152 162 153 163 c==================================================================
Note: See TracChangeset
for help on using the changeset viewer.