- Timestamp:
- Apr 20, 2012, 2:57:26 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/updatereffrad.F
r626 r629 2 2 & rdust,rice,nuice, 3 3 & reffrad,nueffrad, 4 & pq )4 & pq,tauscaling) 5 5 6 6 IMPLICIT NONE … … 68 68 69 69 REAL, PARAMETER :: ccn0 = 1.3E8 70 71 c LOGICAL firstcall 72 c DATA firstcall/.true./ 73 c SAVE firstcall 70 71 c For microphysics only: 72 REAL Mo,No ! Mass and number of ccn 73 REAL rhocloud(ngridmx,nlayermx) ! Cloud density (kg.m-3) 74 REAL tauscaling(ngridmx) ! Convertion factor for qccn and Nccn 75 76 LOGICAL firstcall 77 DATA firstcall/.true./ 78 SAVE firstcall 74 79 75 80 REAL CBRT … … 81 86 c --------------------- 82 87 83 c================================================================== 84 85 c IF (firstcall) THEN 86 c At firstcall, rdust and rice are not known; therefore 87 c they need to be computed below. 88 89 c Correction TN 17/04: rdust and rice must be updated at all steps, 90 c otherwise it is a possible source of bugs 88 89 c================================================================== 90 c 1. Update radius from fields from dynamics or initial state 91 c================================================================== 91 92 92 93 c 1.1 Dust particles … … 110 111 ENDDO 111 112 ENDIF 113 112 114 c 1.2 Water-ice particles 113 115 c ----------------------- 114 IF (water.AND.activice) THEN 115 DO l=1,nlayer 116 DO ig=1,ngrid 117 rice(ig,l) = max( CBRT( 118 & (pq(ig,l,igcm_h2o_ice)/rho_ice + 119 & ccn0*(4./3.)*pi*rdust(ig,l)**3.) / 120 & (ccn0*4./3.*pi)),rdust(ig,l) ) 121 nuice(ig,l) = nuice_ref 122 ENDDO 123 ENDDO 116 IF (water.AND.activice) THEN 117 IF ((firstcall).or.(microphys.eq..false.)) THEN 118 DO l=1,nlayer 119 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 nuice(ig,l) = nuice_ref 125 ENDDO 126 ENDDO 127 firstcall = .false. 128 c At firstcall, the true number and true mass of cloud condensation nuclei are not known. 129 c Indeed it is scaled on the prescribed dust opacity via a 'tauscaling' coefficient 130 c computed after radiative transfer. 131 c Therefore, we use a typical value ccn0 at firstcall, like it is done without microphysics. 132 ELSE 133 DO l=1,nlayer 134 DO ig=1,ngrid 135 Mo = pq(ig,l,igcm_h2o_ice) + 136 & pq(ig,l,igcm_ccn_mass)* tauscaling(ig) + 1.e-30 137 No = pq(ig,l,igcm_ccn_number)* tauscaling(ig)+ 1e-30 138 rhocloud(ig,l) = pq(ig,l,igcm_h2o_ice)*rho_ice / Mo 139 & + pq(ig,l,igcm_ccn_mass)*tauscaling(ig)*rho_dust/Mo 140 rhocloud(ig,l) = 141 & min(max(rhocloud(ig,l),rho_ice),rho_dust) 142 rice(ig,l) = 143 & CBRT( Mo/No * 0.75 / pi / rhocloud(ig,l)) 144 nuice(ig,l) = nuice_ref 145 ENDDO 146 ENDDO 147 ENDIF ! of if ((firstcall).or.(microphys.eq.false)) 124 148 ENDIF ! of if (water.AND.activice) 125 149 126 c firstcall = .false.127 c ENDIF ! of if firstcall128 150 129 151 c==================================================================
Note: See TracChangeset
for help on using the changeset viewer.