Changeset 2312 for trunk/LMDZ.MARS/libf/phymars/simpleclouds.F
- Timestamp:
- May 6, 2020, 4:46:33 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/simpleclouds.F
r1996 r2312 5 5 USE updaterad 6 6 USE watersat_mod, ONLY: watersat 7 use tracer_mod, only: igcm_h2o_vap, igcm_h2o_ice 7 use tracer_mod, only: igcm_h2o_vap, igcm_h2o_ice, 8 & igcm_hdo_vap, igcm_hdo_ice 8 9 USE comcstfi_h 9 10 use dimradmars_mod, only: naerkind 11 10 12 implicit none 11 13 c------------------------------------------------------------------ … … 77 79 REAL ccntyp(ngrid,nlay) 78 80 ! Typical dust number density (#/kg) 81 REAL alpha_c(ngrid,nlay) !!MARGAUX: alpha_c as a spatial variable 82 79 83 c CCN reduction factor 80 84 c REAL, PARAMETER :: ccn_factor = 4.5 !! comme TESTS_JB // 1. avant 81 82 85 REAL DoH_vap(ngrid,nlay) 86 REAL DoH_ice(ngrid,nlay) 83 87 c----------------------------------------------------------------------- 84 88 c 1. initialisation … … 100 104 zq(ig,l,igcm_h2o_ice)=max(zq(ig,l,igcm_h2o_ice),0.) ! FF 12/2004 101 105 zq0(ig,l,igcm_h2o_ice)=zq(ig,l,igcm_h2o_ice) 106 107 if (hdo) then 108 zq(ig,l,igcm_hdo_vap)= 109 & pq(ig,l,igcm_hdo_vap)+pdq(ig,l,igcm_hdo_vap)*ptimestep 110 zq(ig,l,igcm_hdo_vap)=max(zq(ig,l,igcm_hdo_vap),1e-30) ! FF 12/2004 111 zq0(ig,l,igcm_hdo_vap)=zq(ig,l,igcm_hdo_vap) 112 113 zq(ig,l,igcm_hdo_ice)= 114 & pq(ig,l,igcm_hdo_ice)+pdq(ig,l,igcm_hdo_ice)*ptimestep 115 zq(ig,l,igcm_hdo_ice)=max(zq(ig,l,igcm_hdo_ice),1e-30) ! FF 12/2004 116 zq0(ig,l,igcm_hdo_ice)=zq(ig,l,igcm_hdo_ice) 117 118 endif !hdo 102 119 enddo 103 120 enddo 104 121 105 106 122 pdqcloud(1:ngrid,1:nlay,1:nq)=0 107 123 pdtcloud(1:ngrid,1:nlay)=0 108 124 125 alpha_c(1:ngrid,1:nlay)=0. 126 109 127 c ---------------------------------------------- 110 c111 128 c 112 129 c Rapport de melange a saturation dans la couche l : ------- … … 122 139 123 140 if (zq(ig,l,igcm_h2o_vap).ge.zqsat(ig,l))then ! Condensation 124 dzq=zq(ig,l,igcm_h2o_vap)-zqsat(ig,l) 141 dzq=zq(ig,l,igcm_h2o_vap)-zqsat(ig,l) 142 125 143 elseif(zq(ig,l,igcm_h2o_vap).lt.zqsat(ig,l))then ! Sublimation 126 144 dzq=-min(zqsat(ig,l)-zq(ig,l,igcm_h2o_vap), 127 145 & zq(ig,l,igcm_h2o_ice)) 128 146 endif 129 147 130 148 c Water Mass change 131 149 c ~~~~~~~~~~~~~~~~~ 132 150 zq(ig,l,igcm_h2o_ice)=zq(ig,l,igcm_h2o_ice)+dzq 133 151 zq(ig,l,igcm_h2o_vap)=zq(ig,l,igcm_h2o_vap)-dzq 134 135 152 136 153 enddo ! of do ig=1,ngrid 137 154 enddo ! of do l=1,nlay 155 138 156 139 157 c Tendance finale … … 145 163 pdqcloud(ig,l,igcm_h2o_ice) = 146 164 & (zq(ig,l,igcm_h2o_ice) - zq0(ig,l,igcm_h2o_ice))/ptimestep 165 147 166 lw=(2834.3-0.28*(zt(ig,l)-To)-0.004*(zt(ig,l)-To)**2)*1.e+3 148 167 pdtcloud(ig,l)=-pdqcloud(ig,l,igcm_h2o_vap)*lw/cpp 149 end do 150 end do 168 169 if (hdo) then 170 if (pdqcloud(ig,l,igcm_h2o_ice).gt.0.0) then !condens 171 172 if (hdofrac) then ! do we use fractionation? 173 alpha_c(ig,l) = exp(16288./zt(ig,l)**2.-9.34d-2) 174 c alpha_c(ig,l) = exp(13525./zt(ig,l)**2.-5.59d-2) !Lamb 175 else 176 alpha_c(ig,l) = 1.d0 177 endif 178 179 if (zq0(ig,l,igcm_h2o_vap).gt.1.e-16) then 180 pdqcloud(ig,l,igcm_hdo_ice)= 181 & pdqcloud(ig,l,igcm_h2o_ice)*alpha_c(ig,l)* 182 & ( zq0(ig,l,igcm_hdo_vap) 183 & /zq0(ig,l,igcm_h2o_vap) ) 184 else 185 pdqcloud(ig,l,igcm_hdo_ice)= 0.0 186 endif 187 188 pdqcloud(ig,l,igcm_hdo_ice) = 189 & min(pdqcloud(ig,l,igcm_hdo_ice), 190 & zq0(ig,l,igcm_hdo_vap)/ptimestep) 191 192 pdqcloud(ig,l,igcm_hdo_vap)= 193 & -pdqcloud(ig,l,igcm_hdo_ice) 194 195 else ! sublimation 196 197 if (zq0(ig,l,igcm_h2o_ice).gt.1.e-16) then 198 pdqcloud(ig,l,igcm_hdo_ice)= 199 & pdqcloud(ig,l,igcm_h2o_ice)* 200 & ( zq0(ig,l,igcm_hdo_ice) 201 & /zq0(ig,l,igcm_h2o_ice) ) 202 else 203 pdqcloud(ig,l,igcm_hdo_ice)= 0. 204 endif 205 206 pdqcloud(ig,l,igcm_hdo_ice) = 207 & max(pdqcloud(ig,l,igcm_hdo_ice), 208 & -zq0(ig,l,igcm_hdo_ice)/ptimestep) 209 210 pdqcloud(ig,l,igcm_hdo_vap)= 211 & -pdqcloud(ig,l,igcm_hdo_ice) 212 213 endif ! condensation/sublimation 214 215 endif ! hdo 216 217 enddo ! of do ig=1,ngrid 218 enddo ! of do l=1,nlay 151 219 152 220 c ice crystal radius … … 158 226 end do 159 227 228 c if (hdo) then 229 c CALL WRITEDIAGFI(ngrid,'alpha_c', 230 c & 'alpha_c', 231 c & ' ',3,alpha_c) 232 c endif !hdo 160 233 c------------------------------------------------------------------ 161 234 return
Note: See TracChangeset
for help on using the changeset viewer.