Changeset 2091
- Timestamp:
- Feb 6, 2019, 2:06:01 PM (6 years ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/README
r2090 r2091 2697 2697 == 05/02/2019 == MV 2698 2698 - follow-up of the last change in rocketduststorm_mod.F90 2699 2700 == 06/02/2019 == MV 2701 - follow-up of the last change in rocketduststorm_mod.F90: corrections in vector definitions -
trunk/LMDZ.MARS/libf/phymars/rocketduststorm_mod.F90
r2090 r2091 92 92 REAL zdtsw1(ngrid,nlayer) ! (K/s) storm 93 93 REAL zt(ngrid,nlayer) ! actual temperature at mid-layer (K) 94 REAL zdtvert(n layer) ! dT/dz , lapse rate95 REAL ztlev(n layer) ! temperature at intermediate levels l+1/2 without last level94 REAL zdtvert(ngrid,nlayer) ! dT/dz , lapse rate 95 REAL ztlev(ngrid,nlayer) ! temperature at intermediate levels l+1/2 without last level 96 96 97 97 REAL zdtlw1_lev(nlayer),zdtsw1_lev(nlayer) ! rad. heating rate at intermediate levels l+1/2 for stormdust … … 193 193 wqmass(:,:)=0. 194 194 wqnumber(:,:)=0. 195 zdtvert(:,:)=0. 195 196 lapserate(:,:)=0. 196 197 deltahr(:,:)=0. … … 251 252 !! gradient at boundaries of each layer, start from surface 252 253 DO ig=1,ngrid 253 zdtvert(1)=0. !This is the env. lapse rate 254 DO l=1,nlayer-1 255 zdtvert(l+1)=(zt(ig,l+1)-zt(ig,l))/(pzlay(ig,l+1)-pzlay(ig,l)) 256 lapserate(ig,l+1)=zdtvert(l+1) !for diagnosing 257 ENDDO 258 259 ! computing heating rates gradient at boundraies of each layer 260 ! start from surface 261 zdtlw1_lev(1)=0. 262 zdtsw1_lev(1)=0. 263 zdtlw_lev(1)=0. 264 zdtsw_lev(1)=0. 265 ztlev(1)=zt(ig,1) 266 267 DO l=1,nlayer-1 268 ! Calculation for the dust storm fraction 269 zdtlw1_lev(l+1)=(zdtlw1(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 270 zdtlw1(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 271 (pzlay(ig,l+1)-pzlay(ig,l)) 254 IF (storm(ig)) THEN 255 256 scheme(ig)=2 257 !! This is the env. lapse rate 258 zdtvert(ig,1)=0. 259 DO l=1,nlayer-1 260 zdtvert(ig,l+1)=(zt(ig,l+1)-zt(ig,l))/(pzlay(ig,l+1)-pzlay(ig,l)) 261 lapserate(ig,l+1)=zdtvert(ig,l+1) 262 ENDDO 263 264 !! computing heating rates gradient at boundraies of each layer 265 !! start from surface 266 zdtlw1_lev(1)=0. 267 zdtsw1_lev(1)=0. 268 zdtlw_lev(1)=0. 269 zdtsw_lev(1)=0. 270 ztlev(ig,1)=zt(ig,1) 271 272 DO l=1,nlayer-1 273 !! Calculation for the dust storm fraction 274 zdtlw1_lev(l+1)=(zdtlw1(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 275 zdtlw1(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 276 (pzlay(ig,l+1)-pzlay(ig,l)) 277 278 zdtsw1_lev(l+1)=(zdtsw1(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 279 zdtsw1(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 280 (pzlay(ig,l+1)-pzlay(ig,l)) 281 !! Calculation for the background dust fraction 282 zdtlw_lev(l+1)=(pdtlw(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 283 pdtlw(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 284 (pzlay(ig,l+1)-pzlay(ig,l)) 272 285 273 zdtsw1_lev(l+1)=(zdtsw1(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 274 zdtsw1(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 275 (pzlay(ig,l+1)-pzlay(ig,l)) 276 !! Calculation for the background dust fraction 277 zdtlw_lev(l+1)=(pdtlw(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 278 pdtlw(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 279 (pzlay(ig,l+1)-pzlay(ig,l)) 286 zdtsw_lev(l+1)=(pdtsw(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 287 pdtsw(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 288 (pzlay(ig,l+1)-pzlay(ig,l)) 280 289 281 zdtsw_lev(l+1)=(pdtsw(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 282 pdtsw(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 283 (pzlay(ig,l+1)-pzlay(ig,l)) 284 285 ztlev(l+1)=(zt(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 286 zt(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 287 (pzlay(ig,l+1)-pzlay(ig,l)) 288 ENDDO ! DO l=1,nlayer-1 289 ENDDO ! DO ig=1,ngrid 290 291 !! ********************************************************************** 292 !! 2.3 Calculation of the vertical velocity : extra heating 293 !! balanced by adiabatic cooling 294 DO ig=1,ngrid 295 IF (storm(ig)) THEN 296 scheme(ig)=2 290 ztlev(ig,l+1)=(zt(ig,l)*(pzlay(ig,l+1)-pzlev(ig,l+1))+ & 291 zt(ig,l+1)*(pzlev(ig,l+1)-pzlay(ig,l))) / & 292 (pzlay(ig,l+1)-pzlay(ig,l)) 293 ENDDO ! DO l=1,nlayer-1 294 295 !! ********************************************************************** 296 !! 2.3 Calculation of the vertical velocity : extra heating 297 !! balanced by adiabatic cooling 298 297 299 DO l=1,nlayer 298 300 deltahr(ig,l)=(zdtlw1_lev(l)+zdtsw1_lev(l)) & 299 301 -(zdtlw_lev(l)+zdtsw_lev(l)) 300 302 wrad(ig,l)=-deltahr(ig,l)/(g/cpp+ & 301 max(zdtvert( l),-0.99*g/cpp))303 max(zdtvert(ig,l),-0.99*g/cpp)) 302 304 !! Limit vertical wind in case of lapse rate close to adiabatic 303 305 wrad(ig,l)=max(wrad(ig,l),-wmax) 304 306 wrad(ig,l)=min(wrad(ig,l),wmax) 305 307 ENDDO 308 306 309 ENDIF ! IF (storm(ig)) 307 310 ENDDO ! DO ig=1,ngrid … … 337 340 !! Mass flux in kg/m2 338 341 DO l=1,nlayer 339 w(ig,l)=wrad(ig,l)*(pplev(ig,l)/(r*ztlev( l)))*ptimestep342 w(ig,l)=wrad(ig,l)*(pplev(ig,l)/(r*ztlev(ig,l)))*ptimestep 340 343 ENDDO 341 344
Note: See TracChangeset
for help on using the changeset viewer.