Changeset 609


Ignore:
Timestamp:
Mar 31, 2012, 3:04:57 PM (13 years ago)
Author:
aslmd
Message:

MESOSCALE: local dust storm specific routines. allow to set everything in an external localstorm.def file (see in the specific phymars). note that REV310 of MESOSCALE and LMDZ.MARS must be used for local dust storm simulations. the way to go is the following: svn update -r 310 MESOSCALE LMDZ.MARS then svn update the specific phymars folder in SRC...etc to get the present latest updates.

Location:
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars
Files:
5 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/STORM_JULIEN_LAST/aeropacity_tachemobile_z.F

    r310 r609  
    11      SUBROUTINE aeropacity(ngrid,nlayer,nq,zday,pplay,pplev,ls,
    22     &    pq,ccn,tauref,tau,aerosol,reffrad,nueffrad,
    3      &    QREFvis3d,QREFir3d,omegaREFvis3d,omegaREFir3d,
     3     &                      QVISsQREF3d,omegaVIS3d,gVIS3d,
     4     &                      QIRsQREF3d,omegaIR3d,gIR3d,
     5     &                      QREFvis3d,QREFir3d,
     6     &                      omegaREFvis3d,omegaREFir3d,
    47     &    zdqnorm,dsodust,pt)
    58                                                   
     
    8083      REAL reffrad(ngrid,nlayer,naerkind)
    8184      REAL nueffrad(ngrid,nlayer,naerkind)
    82       REAL QREFvis3d(ngridmx,nlayermx,naerkind)
    83       REAL QREFir3d(ngridmx,nlayermx,naerkind)
    84       REAL omegaREFvis3d(ngridmx,nlayermx,naerkind)
    85       REAL omegaREFir3d(ngridmx,nlayermx,naerkind)
     85!      REAL QREFvis3d(ngridmx,nlayermx,naerkind)
     86!      REAL QREFir3d(ngridmx,nlayermx,naerkind)
     87!      REAL omegaREFvis3d(ngridmx,nlayermx,naerkind)
     88!      REAL omegaREFir3d(ngridmx,nlayermx,naerkind)
    8689      REAL zdqnorm(ngridmx,nlayermx,2)                       !mass mixing ratio perturbation due to the dust storm. Output for meso_physiq.F
    8790      REAL pt(ngrid,nlayer)                                 !input: temperature. usefull to compute precisely the l_top parameter
     91
     92c     Aerosol optical properties
     93      REAL :: QVISsQREF3d(ngridmx,nlayermx,nsun,naerkind)
     94      REAL :: omegaVIS3d(ngridmx,nlayermx,nsun,naerkind)
     95      REAL :: gVIS3d(ngridmx,nlayermx,nsun,naerkind)
     96
     97      REAL :: QIRsQREF3d(ngridmx,nlayermx,nir,naerkind)
     98      REAL :: omegaIR3d(ngridmx,nlayermx,nir,naerkind)
     99      REAL :: gIR3d(ngridmx,nlayermx,nir,naerkind)
     100
     101      REAL :: QREFvis3d(ngridmx,nlayermx,naerkind)
     102      REAL :: QREFir3d(ngridmx,nlayermx,naerkind)
     103
     104      REAL :: omegaREFvis3d(ngridmx,nlayermx,naerkind)
     105      REAL :: omegaREFir3d(ngridmx,nlayermx,naerkind)
    88106
    89107
     
    142160         logical localstorm        ! =true to create a local dust storm
    143161         real taulocref,ztoploc,radloc,lonloc,latloc  !local dust storm parameters
     162         real reffstorm, yeah
    144163         REAL ray(ngridmx)                            !distance from dust storm center
    145164         REAL tauuser(ngridmx)                        !opacity perturbation due to dust storm
     
    488507
    489508      IF (firstcall) THEN
    490       WRITE(*,*) " RENORMALISATION !!! "
    491509c--------------------------------------------------
    492510c  Parameters of the opacity perturbation
     
    494512
    495513      iaer=1  !!!! PROVISOIRE !!!!
    496       taulocref = 4.25 !10  ! ref optical depth of the local dust storm
    497       ztoploc = 10      ! target pseudo-altitude of local storm (km)
    498       radloc = 0.5      ! radius of dust storm (degree)
    499       lonloc = 25.      ! center longitude of storm (deg)
    500       latloc = -3.      ! center latitude of storm (deg)
     514
     515        write(*,*) "Add a local storm ?"
     516        localstorm=.true. ! default value
     517        call getin("localstorm",localstorm)
     518        write(*,*) " localstorm = ",localstorm
     519
     520        IF (localstorm) THEN
     521          WRITE(*,*) "********************"
     522          WRITE(*,*) "ADDING A LOCAL STORM"
     523          WRITE(*,*) "********************"
     524
     525          !!! DEFAULT CASE
     526          !4.25   ! ref optical depth of the local dust storm
     527          !10     ! target pseudo-altitude of local storm (km)
     528          !0.5    ! radius of dust storm (degree) (actual radius is twice this)
     529          !25.    ! center longitude of storm (deg)
     530          !-2.5   ! center latitude of storm (deg)
     531          !0.0    ! reff in storm (microns) 0. for background
     532
     533          write(*,*) "ref opacity of local dust storm"
     534              taulocref = 4.25 ! default value
     535              call getin("taulocref",taulocref)
     536              write(*,*) " taulocref = ",taulocref
     537
     538          write(*,*) "target altitude of local storm (km)"
     539              ztoploc = 10.0 ! default value
     540              call getin("ztoploc",ztoploc)
     541              write(*,*) " ztoploc = ",ztoploc
     542
     543          write(*,*) "radius of dust storm (degree)"
     544              radloc = 0.5 ! default value
     545              call getin("radloc",radloc)
     546              write(*,*) " radloc = ",radloc
     547
     548          write(*,*) "center longitude of storm (deg)"
     549              lonloc = 25.0 ! default value
     550              call getin("lonloc",lonloc)
     551              write(*,*) " lonloc = ",lonloc
     552
     553          write(*,*) "center latitude of storm (deg)"
     554              latloc = -2.5 ! default value
     555              call getin("latloc",latloc)
     556              write(*,*) " latloc = ",latloc
     557
     558          write(*,*) "reff storm (mic) 0. for background"
     559              reffstorm = 0.0 ! default value
     560              call getin("reffstorm",reffstorm)
     561              write(*,*) " reffstorm = ",reffstorm
     562        ELSE
     563          write(*,*) 'I need localstorm = T'
     564          STOP
     565        ENDIF
    501566
    502567      DO ig=1,ngrid
     568
    503569
    504570c---------------------------------------
     
    509575     &          (long(ig)*180./pi -lonloc)**2)
    510576
     577      !! transition factor for storm
     578      !! increase factor ray diff for steepness
     579      yeah = (TANH(2.+(radloc-ray(ig))*10.)+1.)/2.
     580
    511581c-------------------------------------------------
    512582c           Tau's new map:
    513583c------------------------------------------
    514584
    515       tauuser(ig)=max(tauref(ig) * pplev(ig,1) / 700.E0 , taulocref
    516      &          * (TANH(2.+(radloc-ray(ig))*2)+1.)/2.)
     585      tauuser(ig)=max(tauref(ig) * pplev(ig,1) / 700.E0 ,
     586     &          taulocref * yeah)
    517587
    518588c---------------------------------------------------------
     
    529599
    530600          ENDDO
    531       ENDDO
     601
     602c---------------------------------------------------------
     603c           change reffrad if ever needed
     604c----------------------------------------------------------
     605
     606      IF (reffstorm .gt. 0.) THEN
     607          DO l=1,nlayer
     608             IF (l .lt. l_top+1) THEN
     609
     610                WRITE(*,*) "OLD REFFRAD", reffrad(ig,l,iaer)
     611
     612                reffrad(ig,l,iaer) = max( reffrad(ig,l,iaer), reffstorm
     613     &          * 1.e-6 * yeah )
     614
     615                WRITE(*,*) "NEW REFFRAD", reffrad(ig,l,iaer), reffstorm
     616     &          * 1.e-6 * yeah
     617
     618             ENDIF
     619          ENDDO
     620      ENDIF
     621
     622c---------------------------------------------------------------------------
     623      ENDDO !! boucle sur ngridmx
     624c---------------------------------------------------------------------------
     625
     626      !!! ReComputing 3D scattering parameters: if needed.
     627      IF (reffstorm .gt. 0.) THEN
     628      CALL aeroptproperties(ngrid,nlayer,reffrad,nueffrad,
     629     &                      QVISsQREF3d,omegaVIS3d,gVIS3d,
     630     &                      QIRsQREF3d,omegaIR3d,gIR3d,
     631     &                      QREFvis3d,QREFir3d,
     632     &                      omegaREFvis3d,omegaREFir3d)
     633      ENDIF
    532634
    533635c----------------------------------------------------------------------------
    534636c    compute int_factor
    535637c---------------------------------------------------------------------------
    536 
    537638
    538639      DO ig=1,ngrid
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/STORM_JULIEN_LAST/callradite_tachemobile_z.F

    r308 r609  
    391391      CALL aeropacity(ngrid,nlayer,nq,zday,pplay,pplev,ls,
    392392     &      pq,ccn,tauref,tau,aerosol,reffrad,nueffrad,
    393      &      QREFvis3d,QREFir3d,omegaREFvis3d,omegaREFir3d,
     393     &                      QVISsQREF3d,omegaVIS3d,gVIS3d,
     394     &                      QIRsQREF3d,omegaIR3d,gIR3d,
     395     &                      QREFvis3d,QREFir3d,
     396     &                      omegaREFvis3d,omegaREFir3d,
    394397     &      zdqnorm,dsodust,pt)
    395398
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/callsedim.F

    r308 r609  
    1 link ../../../mars_lmd_new/libf/phymars/callsedim.F
     1link callsedim.F.modified
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/physiq.F

    r308 r609  
    296296      SAVE ccn  !! in case iradia != 1
    297297      real rdust(ngridmx,nlayermx) ! dust geometric mean radius (m)
     298      real reffdust(ngridmx,nlayermx) ! effective radius (m)
    298299      real qtot1,qtot2 ! total aerosol mass
    299300      integer igmin, lmin
     
    10461047             ENDDO
    10471048           ENDDO
     1049
     1050             DO ig=1,ngrid
     1051              zdqssed_diag(ig)= zdqssed(ig,igcm_dust_mass)
     1052             ENDDO
     1053
    10481054         END IF   ! of IF (sedimentation)
    10491055
     
    14561462     .           * mugaz / mmol(igcm_h2o_ice)
    14571463      ENDIF
     1464
    14581465      !! Dust quantity integration along the vertical axe
    14591466      dustot(:)=0
     1467      reffdust(:,:)=0
    14601468      do ig=1,ngrid
    14611469       do l=1,nlayermx
     
    14631471     &               zq(ig,l,igcm_dust_mass)
    14641472     &               *  (pplev(ig,l) - pplev(ig,l+1)) / g
     1473        reffdust(ig,l) = rdust(ig,l)*ref_r0
    14651474       enddo
    14661475      enddo
Note: See TracChangeset for help on using the changeset viewer.