Changeset 2246 for trunk/LMDZ.MARS/libf/phymars
- Timestamp:
- Feb 27, 2020, 6:03:57 PM (5 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/aeropacity_mod.F
r2199 r2246 8 8 & pq,tauscaling,tauref,tau,taucloudtes,aerosol,dsodust,reffrad, 9 9 & QREFvis3d,QREFir3d,omegaREFir3d, 10 & totstormfract,clearatm,dsords, 10 & totstormfract,clearatm,dsords,dsotop, 11 11 & alpha_hmons,nohmons, 12 12 & clearsky,totcloudfrac) … … 90 90 REAL, INTENT(OUT) :: aerosol(ngrid,nlayer,naerkind) 91 91 REAL, INTENT(OUT) :: dsodust(ngrid,nlayer) 92 REAL, INTENT(OUT) :: dsords(ngrid,nlayer) !dso of stormdust 92 REAL, INTENT(OUT) :: dsords(ngrid,nlayer) !dso of stormdust 93 REAL, INTENT(OUT) :: dsotop(ngrid,nlayer) !dso of topdust 93 94 REAL, INTENT(INOUT) :: reffrad(ngrid,nlayer,naerkind) 94 95 REAL, INTENT(IN) :: QREFvis3d(ngrid,nlayer,naerkind) … … 171 172 dsords(:,:)=0. !CW17: initialize dsords 172 173 dsodust(:,:)=0. 174 dsotop(:,:)=0. 173 175 174 176 ! identify tracers … … 376 378 377 379 c================================================================== 378 CASE("dust_doubleq") aerkind! Two-moment scheme for dust380 CASE("dust_doubleq") aerkind! Two-moment scheme for background dust 379 381 c (transport of mass and number mixing ratio) 380 382 c================================================================== … … 385 387 c avoid unrealistic values due to constant lifting: 386 388 DO ig=1,ngrid 389 ! OPTICAL DEPTH for the computation of tauref, 390 ! which is to be compared with tauref_scenario 391 ! => visible wavelength 387 392 aerosol(ig,l,iaer) = 388 393 & ( 0.75 * QREFvis3d(ig,cstdustlevel,iaer) / … … 390 395 & pq(ig,cstdustlevel,igcm_dust_mass) * 391 396 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 392 ! DENSITY SCALED OPACITY IN THE INFRARED: 397 ! DENSITY SCALED OPACITY : 398 ! GCM output to be compared with observations 399 ! => infrared wavelength 393 400 dsodust(ig,l) = 394 401 & ( 0.75 * QREFir3d(ig,cstdustlevel,iaer) / … … 398 405 ELSE 399 406 DO ig=1,ngrid 400 aerosol(ig,l,iaer) = 407 ! OPTICAL DEPTH for the computation of tauref, 408 ! which is to be compared with tauref_scenario 409 ! => visible wavelength 410 aerosol(ig,l,iaer) = 401 411 & ( 0.75 * QREFvis3d(ig,l,iaer) / 402 412 & ( rho_dust * reffrad(ig,l,iaer) ) ) * 403 413 & pq(ig,l,igcm_dust_mass) * 404 414 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 405 ! DENSITY SCALED OPACITY IN THE INFRARED: 415 ! DENSITY SCALED OPACITY : 416 ! GCM output to be compared with observations 417 ! => infrared wavelength 406 418 dsodust(ig,l) = 407 419 & ( 0.75 * QREFir3d(ig,l,iaer) / … … 505 517 c avoid unrealistic values due to constant lifting: 506 518 DO ig=1,ngrid 507 aerosol(ig,l,iaer) = 519 ! OPTICAL DEPTH for the computation of tauref, 520 ! which is to be compared with tauref_scenario 521 ! => visible wavelength 522 aerosol(ig,l,iaer) = 508 523 & ( 0.75 * QREFvis3d(ig,cstdustlevel,iaer) / 509 524 & ( rho_dust * reffrad(ig,cstdustlevel,iaer) ) ) * 510 525 & pq(ig,cstdustlevel,igcm_stormdust_mass) * 511 526 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 527 ! DENSITY SCALED OPACITY : 528 ! GCM output to be compared with observations 529 ! => infrared wavelength 530 dsords(ig,l) = 531 & ( 0.75 * QREFir3d(ig,cstdustlevel,iaer) / 532 & ( rho_dust * reffrad(ig,cstdustlevel,iaer) ) ) * 533 & pq(ig,cstdustlevel,igcm_stormdust_mass) 512 534 ENDDO 513 535 ELSE 514 DO ig=1,ngrid 536 DO ig=1,ngrid 537 ! OPTICAL DEPTH for the computation of tauref, 538 ! which is to be compared with tauref_scenario 539 ! => visible wavelength 515 540 aerosol(ig,l,iaer) = 516 541 & ( 0.75 * QREFvis3d(ig,l,iaer) / … … 518 543 & pq(ig,l,igcm_stormdust_mass) * 519 544 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 520 ENDDO 545 ! DENSITY SCALED OPACITY : 546 ! GCM output to be compared with observations 547 ! => infrared wavelength 548 dsords(ig,l) = 549 & ( 0.75 * QREFir3d(ig,l,iaer) / 550 & ( rho_dust * reffrad(ig,l,iaer) ) ) * 551 & pq(ig,l,igcm_stormdust_mass) 552 ENDDO 521 553 ENDIF 522 554 ENDDO … … 533 565 ELSE ! part of the mesh with concentred dust storm 534 566 DO l=1,nlayer 535 ! IF (l.LE.cstdustlevel) THEN 536 !c Opacity in the first levels is held constant to 537 !c avoid unrealistic values due to constant lifting: 538 ! DO ig=1,ngrid 539 ! aerosol(ig,l,iaer) = 540 ! & ( 0.75 * QREFvis3d(ig,cstdustlevel,iaer) / 541 ! & ( rho_dust * reffrad(ig,cstdustlevel,iaer) ) ) * 542 ! & pq(ig,cstdustlevel,igcm_topdust_mass) * 543 ! & ( pplev(ig,l) - pplev(ig,l+1) ) / g 544 ! ENDDO 545 ! ELSE 546 DO ig=1,ngrid 547 aerosol(ig,l,iaer) = 567 IF (l.LE.cstdustlevel) THEN 568 c Opacity in the first levels is held constant to 569 c avoid unrealistic values due to constant lifting: 570 DO ig=1,ngrid 571 aerosol(ig,l,iaer) = 572 & ( 0.75 * QREFvis3d(ig,cstdustlevel,iaer) / 573 & ( rho_dust * reffrad(ig,cstdustlevel,iaer) ) ) * 574 & pq(ig,cstdustlevel,igcm_topdust_mass) * 575 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 576 ! DENSITY SCALED OPACITY : 577 ! GCM output to be compared with observations 578 ! => infrared wavelength 579 dsotop(ig,l) = 580 & ( 0.75 * QREFir3d(ig,cstdustlevel,iaer) / 581 & ( rho_dust * reffrad(ig,cstdustlevel,iaer) ) ) * 582 & pq(ig,cstdustlevel,igcm_topdust_mass) 583 ENDDO 584 ELSE 585 DO ig=1,ngrid 586 ! OPTICAL DEPTH for the computation of tauref, 587 ! which is to be compared with tauref_scenario 588 ! => visible wavelength 589 aerosol(ig,l,iaer) = 548 590 & ( 0.75 * QREFvis3d(ig,l,iaer) / 549 591 & ( rho_dust * reffrad(ig,l,iaer) ) ) * 550 592 & pq(ig,l,igcm_topdust_mass) * 551 593 & ( pplev(ig,l) - pplev(ig,l+1) ) / g 552 ENDDO 553 ! ENDIF 554 594 ! DENSITY SCALED OPACITY : 595 ! GCM output to be compared with observations 596 ! => infrared wavelength 597 dsotop(ig,l) = 598 & ( 0.75 * QREFir3d(ig,l,iaer) / 599 & ( rho_dust * reffrad(ig,l,iaer) ) ) * 600 & pq(ig,l,igcm_topdust_mass) 601 ENDDO 602 ENDIF 555 603 ENDDO 556 604 ENDIF … … 852 900 #endif 853 901 854 c -----------------------------------------------------------------855 c Density scaled opacity and column opacity output856 c -----------------------------------------------------------------857 IF (rdstorm) then858 DO l=1,nlayer859 IF (l.LE.cstdustlevel) THEN860 DO ig=1,ngrid861 dsodust(ig,l)=dsodust(ig,l) +862 & aerosol(ig,l,iaer_dust_doubleq) * g /863 & (pplev(ig,l) - pplev(ig,l+1))864 865 dsords(ig,l) = dsords(ig,l) +866 & aerosol(ig,l,iaer_stormdust_doubleq)* g/867 & (pplev(ig,l) - pplev(ig,l+1))868 ENDDO869 ELSE870 DO ig=1,ngrid871 dsodust(ig,l) =dsodust(ig,l) +872 & aerosol(ig,l,iaer_dust_doubleq) * g /873 & (pplev(ig,l) - pplev(ig,l+1))874 dsords(ig,l) = dsords(ig,l) +875 & aerosol(ig,l,iaer_stormdust_doubleq)* g/876 & (pplev(ig,l) - pplev(ig,l+1))877 ENDDO878 ENDIF879 ENDDO880 ENDIF881 902 882 903 c ----------------------------------------------------------------- -
trunk/LMDZ.MARS/libf/phymars/callradite_mod.F
r2199 r2246 10 10 $ fluxtop_sw,tauref,tau,aerosol,dsodust,tauscaling, 11 11 $ taucloudtes,rdust,rice,nuice,co2ice,rstormdust,rtopdust, 12 $ totstormfract,clearatm,dsords, alpha_hmons,nohmons,12 $ totstormfract,clearatm,dsords,dsotop,alpha_hmons,nohmons, 13 13 $ clearsky,totcloudfrac) 14 14 … … 35 35 c 36 36 c These calculations are only valid on the part of the atmosphere 37 c where Local Thermal Equilibrium ( NLTE) is verified. In practice38 c The calculations are only performed for the first "nlaylte"37 c where Local Thermal Equilibrium (LTE) is verified. In practice 38 c the calculations are only performed for the first "nlaylte" 39 39 c parameters (nlaylte is calculated by subroutine "nlthermeq" 40 40 c and stored in module "yomlw_h"). … … 203 203 REAL,INTENT(IN) :: totstormfract(ngrid) ! dust storm mesh fraction 204 204 REAL,INTENT(OUT) :: rstormdust(ngrid,nlayer) ! Storm dust geometric mean radius (m) 205 REAL dsords(ngrid,nlayer) ! density scaled opacity for rocket dust storm dust206 205 REAL,INTENT(OUT) :: dsords(ngrid,nlayer) ! density scaled opacity for rocket dust storm dust 206 207 207 c entrainment by slope wind 208 208 LOGICAL, INTENT(IN) :: nohmons ! true for background dust 209 209 REAL, INTENT(IN) :: alpha_hmons(ngrid) ! sub-grid scale topography mesh fraction 210 210 REAL,INTENT(OUT) :: rtopdust(ngrid,nlayer) ! Topdust geometric mean radius (m) 211 211 REAL,INTENT(OUT) :: dsotop(ngrid,nlayer) ! density scaled opacity for topmons dust 212 212 213 c sub-grid scale water ice clouds 213 214 LOGICAL,INTENT(IN) :: clearsky … … 269 270 270 271 REAL :: QREFvis3d(ngrid,nlayer,naerkind) 272 ! QREFvis3d : Extinction efficiency at the VISible reference wavelength 271 273 REAL :: QREFir3d(ngrid,nlayer,naerkind) 274 ! QREFir3d : Extinction efficiency at the InfraRed reference wavelength 272 275 273 276 REAL :: omegaREFvis3d(ngrid,nlayer,naerkind) … … 421 424 & pq,tauscaling,tauref,tau,taucloudtes,aerosol,dsodust,reffrad, 422 425 & QREFvis3d,QREFir3d,omegaREFir3d, 423 & totstormfract,clearatm,dsords, 426 & totstormfract,clearatm,dsords,dsotop, 424 427 & alpha_hmons,nohmons, 425 428 & clearsky,totcloudfrac) -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r2226 r2246 407 407 REAL dsodust(ngrid,nlayer) 408 408 REAL dsords(ngrid,nlayer) 409 REAL dsotop(ngrid,nlayer) 409 410 REAL wtop(ngrid,nlayer+1) ! vertical velocity topdust tracer 410 411 … … 855 856 & fluxtop_sw,tauref,tau,aerosol,dsodust,tauscaling, 856 857 & taucloudtes,rdust,rice,nuice,co2ice,rstormdust,rtopdust, 857 & totstormfract,clearatm,dsords, alpha_hmons,nohmons,858 & totstormfract,clearatm,dsords,dsotop,alpha_hmons,nohmons, 858 859 & clearsky,totcloudfrac) 859 860 … … 871 872 & tau,aerosol,dsodust,tauscaling,taucloudtesclf,rdust, 872 873 & rice,nuice,co2ice,rstormdust,rtopdust,totstormfract, 873 & clearatm,dsords, alpha_hmons,nohmons,874 & clearatm,dsords,dsotop,alpha_hmons,nohmons, 874 875 & clearsky,totcloudfrac) 875 876 clearsky = .false. ! just in case. … … 1069 1070 & nohmons,alpha_hmons, 1070 1071 c output 1071 & pdqrds,wspeed,dsodust,dsords, 1072 & pdqrds,wspeed,dsodust,dsords,dsotop, 1072 1073 & tauref) 1073 1074 … … 1129 1130 & zzlay,zdtsw,zdtlw, 1130 1131 & icount,zday,zls,tsurf,igout,aerosol, 1131 & tauscaling,totstormfract,clearatm, dsords,1132 & tauscaling,totstormfract,clearatm, 1132 1133 & clearsky,totcloudfrac, 1133 1134 & nohmons,hsummit, 1134 & pdqtop,wtop,dsodust, 1135 & pdqtop,wtop,dsodust,dsords,dsotop, 1135 1136 & tauref) 1136 1137 … … 2924 2925 & 'part/kg',3,ndust) 2925 2926 call WRITEDIAGFI(ngrid,'dsodust', 2926 & 'density scaled optical depth in the IR',2927 & 'm2.kg-1',3,dsodust)2927 & 'density scaled optical depth in the IR', 2928 & 'm2.kg-1',3,dsodust) 2928 2929 call WRITEDIAGFI(ngrid,'dso', 2929 & 'density scaled optical depth in the IR', 2930 & 'm2.kg-1',3,dsodust+dsords) 2931 else 2930 & 'density scaled optical depth in the IR', 2931 & 'm2.kg-1',3,dsodust+dsords+dsotop) 2932 2933 else ! (doubleq=.false.) 2932 2934 do iq=1,dustbin 2933 2935 write(str2(1:2),'(i2.2)') iq … … 2990 2992 endif ! (rdstorm) 2991 2993 2994 if (slpwind) then 2995 call WRITEDIAGFI(ngrid,'dsotop', 2996 & 'density scaled opacity of topdust', 2997 & 'm2.kg-1',3,dsotop) 2998 endif ! (slpwind) 2999 2992 3000 if (scavenging) then 2993 3001 call WRITEDIAGFI(ngrid,'ccnq','CCN mass mr', -
trunk/LMDZ.MARS/libf/phymars/rocketduststorm_mod.F90
r2226 r2246 30 30 nohmons,alpha_hmons, & 31 31 ! output 32 pdqrds,wrad,dsodust,dsords, 32 pdqrds,wrad,dsodust,dsords,dsotop, & 33 33 tauref) 34 34 … … 94 94 REAL, INTENT(OUT) :: dsodust(ngrid,nlayer) ! density scaled opacity of env. dust 95 95 REAL, INTENT(OUT) :: dsords(ngrid,nlayer) ! density scaled opacity of storm dust 96 REAL, INTENT(OUT) :: dsotop(ngrid,nlayer) ! density scaled opacity of topmons dust 96 97 REAL, INTENT(OUT) :: tauref(ngrid) 97 98 … … 247 248 fluxtop_sw1,tauref,tau,aerosol,dsodust,tauscaling, & 248 249 taucloudtes,rdust,rice,nuice,co2ice,rstormdust,rtopdust, & 249 totstormfract,clearatm,dsords, alpha_hmons,nohmons,&250 totstormfract,clearatm,dsords,dsotop,alpha_hmons,nohmons,& 250 251 clearsky,totcloudfrac) 251 252 -
trunk/LMDZ.MARS/libf/phymars/topmons_mod.F90
r2226 r2246 26 26 tauscaling, & 27 27 ! input sub-grid scale rocket dust storm 28 totstormfract,clearatm, dsords,&28 totstormfract,clearatm, & 29 29 ! input sub-grid scale cloud 30 30 clearsky,totcloudfrac, & … … 32 32 nohmons,hsummit, & 33 33 ! output 34 pdqtop,wfin,dsodust, 34 pdqtop,wfin,dsodust,dsords,dsotop, & 35 35 tauref) 36 36 … … 98 98 REAL, INTENT(OUT) :: aerosol(ngrid,nlayer,naerkind) 99 99 REAL, INTENT(OUT) :: dsords(ngrid,nlayer) 100 REAL, INTENT(OUT) :: dsotop(ngrid,nlayer) 100 101 REAL, INTENT(OUT) :: tauref(ngrid) 101 102 … … 211 212 dsodust(:,:)=0. 212 213 dsords(:,:)=0. 214 dsotop(:,:)=0. 213 215 pdqtop(:,:,:) = 0. 214 216 dqvl_topdust_mass(:,:)=0. … … 274 276 fluxtop_sw1,tauref,tau,aerosol,dsodust,tauscaling, & 275 277 taucloudtes,rdust,rice,nuice,co2ice,rstormdust,rtopdust, & 276 totstormfract,clearatm,dsords, alpha_hmons,nohmons,&278 totstormfract,clearatm,dsords,dsotop,alpha_hmons,nohmons,& 277 279 clearsky,totcloudfrac) 278 280 ! **********************************************************************
Note: See TracChangeset
for help on using the changeset viewer.