Changeset 1974 for trunk/LMDZ.MARS/libf/phymars/callsedim_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/callsedim_mod.F
r1962 r1974 4 4 5 5 CONTAINS 6 7 SUBROUTINE callsedim(ngrid,nlay, 8 & pplev,zlev, zlay, pt, pdt, rdust,rice,6 7 SUBROUTINE callsedim(ngrid,nlay,ptimestep, 8 & pplev,zlev,zlay,pt,pdt,rdust,rstormdust,rice, 9 9 & rsedcloud,rhocloud, 10 & pq, pdqfi,pdqsed,pdqs_sed,nq,10 & pq,pdqfi,pdqsed,pdqs_sed,nq, 11 11 & tau,tauscaling) 12 ! to use 'getin' 12 13 13 USE ioipsl_getincom, only: getin 14 14 USE updaterad, only: updaterdust,updaterice_micro,updaterice_typ … … 17 17 & igcm_ccn_mass, igcm_ccn_number, 18 18 & igcm_h2o_ice, nuice_sed, nuice_ref, 19 & igcm_ccnco2_mass, igcm_ccnco2_number, 20 & igcm_co2_ice 19 & igcm_ccnco2_mass,igcm_ccnco2_number, 20 & igcm_co2_ice, igcm_stormdust_mass, 21 & igcm_stormdust_number 21 22 USE newsedim_mod, ONLY: newsedim 22 23 USE comcstfi_h, ONLY: g … … 61 62 c Aerosol radius provided by the water ice microphysical scheme: 62 63 real,intent(out) :: rdust(ngrid,nlay) ! Dust geometric mean radius (m) 64 real,intent(out) :: rstormdust(ngrid,nlay) ! Stormdust geometric mean radius (m) 63 65 real,intent(out) :: rice(ngrid,nlay) ! H2O Ice geometric mean radius (m) 64 66 c Sedimentation radius of water ice … … 89 91 real r0dust(ngrid,nlay) ! geometric mean radius used for 90 92 ! dust (m) 91 ! real r0ccn(ngrid,nlay) ! geometric mean radius used for 93 real r0stormdust(ngrid,nlay) ! Geometric mean radius used for stormdust (m) 92 94 ! ! CCNs (m) 93 95 real,save :: beta ! correction for the shape of the ice particles (cf. newsedim) 94 95 96 c for ice radius computation 96 97 REAL Mo,No … … 133 134 INTEGER,SAVE :: iccn_number ! index of tracer containing CCN number 134 135 ! mix. ratio 136 INTEGER,SAVE :: istormdust_mass ! index of tracer containing 137 !stormdust mass mix. ratio 138 INTEGER,SAVE :: istormdust_number ! index of tracer containing 139 !stormdust number mix. ratio 135 140 INTEGER,SAVE :: iccnco2_number ! index of tracer containing CCN number 136 141 INTEGER,SAVE :: iccnco2_mass ! index of tracer containing CCN number … … 140 145 LOGICAL,SAVE :: firstcall=.true. 141 146 147 148 142 149 c ** un petit test de coherence 143 150 c -------------------------- 144 145 151 ! AS: firstcall OK absolute 146 152 IF (firstcall) THEN … … 240 246 ENDIF !of if (co2clouds) 241 247 242 243 IF (water) THEN 248 IF (water) THEN 244 249 write(*,*) "correction for the shape of the ice particles ?" 245 250 beta=0.75 ! default value … … 251 256 write(*,*) "water_param nueff Radiative:", nuice_ref 252 257 ENDIF 253 ENDIF 258 ENDIF 259 260 IF (rdstorm) THEN ! identifying stormdust tracers for sedimentation 261 istormdust_mass=0 ! dummy initialization 262 istormdust_number=0 ! dummy initialization 263 264 do iq=1,nq 265 if (noms(iq).eq."stormdust_mass") then 266 istormdust_mass=iq 267 write(*,*)"callsedim: istormdust_mass=",istormdust_mass 268 endif 269 if (noms(iq).eq."stormdust_number") then 270 istormdust_number=iq 271 write(*,*)"callsedim: istormdust_number=", 272 & istormdust_number 273 endif 274 enddo 275 276 ! check that we did find the tracers 277 if ((istormdust_mass.eq.0).or.(istormdust_number.eq.0)) then 278 write(*,*) 'callsedim: error! could not identify' 279 write(*,*) ' tracers for stormdust mass and number mixing' 280 write(*,*) ' ratio and rdstorm is activated!' 281 stop 282 endif 283 ENDIF !of if (rdstorm) 254 284 255 285 firstcall=.false. … … 268 298 zt(1:ngrid,1:nlay)=pt(1:ngrid,1:nlay) 269 299 & +pdt(1:ngrid,1:nlay)*ptimestep 270 271 300 272 301 c Computing the different layer properties … … 295 324 end do 296 325 endif 297 298 326 ! rocket dust storm 327 if (rdstorm) then 328 do l=1,nlay 329 do ig=1, ngrid 330 331 call updaterdust(zqi(ig,l,igcm_stormdust_mass), 332 & zqi(ig,l,igcm_stormdust_number),r0stormdust(ig,l), 333 & tauscaling(ig)) 334 335 end do 336 end do 337 endif 299 338 c ================================================================= 300 339 do iq=1,nq … … 307 346 c ----------------------------------------------------------------- 308 347 if ((doubleq.and. 309 & ((iq.eq.idust_mass).or.310 & (iq.eq.idust_number)))) then348 & ((iq.eq.idust_mass).or.(iq.eq.idust_number).or. 349 & (iq.eq.istormdust_mass).or.(iq.eq.istormdust_number)))) then 311 350 312 351 c Computing size distribution: 313 352 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314 353 315 cif ((iq.eq.idust_mass).or.(iq.eq.idust_number)) then354 if ((iq.eq.idust_mass).or.(iq.eq.idust_number)) then 316 355 do l=1,nlay 317 356 do ig=1, ngrid … … 319 358 end do 320 359 end do 321 sigma0 = varian 360 else if ((iq.eq.istormdust_mass).or. 361 & (iq.eq.istormdust_number)) then 362 do l=1,nlay 363 do ig=1, ngrid 364 r0(ig,l)=r0stormdust(ig,l) 365 end do 366 end do 367 endif 368 sigma0 = varian 322 369 323 370 c Computing mass mixing ratio for each particle size 324 371 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 325 IF ((iq.EQ.idust_mass).or.(iq.EQ.i ccn_mass)) then372 IF ((iq.EQ.idust_mass).or.(iq.EQ.istormdust_mass)) then 326 373 radpower = 2 327 374 ELSE ! number … … 376 423 377 424 do ir=1,nr 378 379 425 call newsedim(ngrid,nlay,1,1,ptimestep, 380 426 & pplev,masse,epaisseur,zt,rd(ir),(/rho_dust/),qr(1,1,ir), … … 391 437 zqi(ig,l,iq)=zqi(ig,l,iq)+qr(ig,l,ir) 392 438 ENDDO 393 ENDDO 439 ENDDO 394 440 enddo ! of do ir=1,nr 395 441 c ----------------------------------------------------------------- … … 457 503 ENDDO 458 504 endif ! of if (doubleq) 459 505 506 if (rdstorm) then 507 DO l = 1, nlay 508 DO ig=1,ngrid 509 call updaterdust(zqi(ig,l,igcm_stormdust_mass), 510 & zqi(ig,l,igcm_stormdust_number),rstormdust(ig,l), 511 & tauscaling(ig)) 512 ENDDO 513 ENDDO 514 endif ! of if (rdstorm) 515 460 516 c Update the ice particle size "rice" 461 517 c ------------------------------------- … … 490 546 491 547 END MODULE callsedim_mod 548
Note: See TracChangeset
for help on using the changeset viewer.