Ignore:
Timestamp:
Apr 22, 2015, 3:42:35 PM (9 years ago)
Author:
pesei
Message:

Wet dep quick fix and other small changes. Wet depo quick fix not final yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/petra/src/verttransform_nests.f90

    r24 r37  
    11!**********************************************************************
    2 ! Copyright 1998,1999,2000,2001,2002,2005,2007,2008,2009,2010         *
     2! Copyright 1998-2015                                                 *
    33! Andreas Stohl, Petra Seibert, A. Frank, Gerhard Wotawa,             *
    44! Caroline Forster, Sabine Eckhardt, John Burkhart, Harald Sodemann   *
     
    5252  ! add the variable cloud for use with scavenging - descr. in com_mod
    5353  !*****************************************************************************
     54  ! Petra Seibert, Feb 2015: Add quick fix from 2013
     55  !*****************************************************************************
    5456  !                                                                            *
    5557  ! Variables:                                                                 *
     
    6971  implicit none
    7072
    71   integer :: ix,jy,kz,iz,n,l,kmin,kl,klp,ix1,jy1,ixp,jyp
    72   integer :: rain_cloud_above,kz_inv
    73   real :: f_qvsat,pressure,rh,lsp,convp
    74   real :: wzlev(nwzmax),rhoh(nuvzmax),pinmconv(nzmax)
    75   real :: uvwzlev(0:nxmaxn-1,0:nymaxn-1,nzmax)
    76   real :: ew,pint,tv,tvold,pold,dz1,dz2,dz,ui,vi,cosf
     73  integer :: ix,jy,kz,iz,n,l,kmin,kl,klp,ix1,jy1,ixp,jyp,kz_inv
     74  integer :: icloudtop
     75  real :: f_qvsat,pressure
     76  real :: rh,lsp,convp,prec,rhmin
     77  real :: rhoh(nuvzmax),pinmconv(nzmax)
     78  real :: wzlev(nwzmax),uvwzlev(0:nxmaxn-1,0:nymaxn-1,nzmax)
     79  real :: ew,pint,tv,tvold,pold,dz1,dz2,dz,ui,vi
    7780  real :: dzdx,dzdy
    78   real :: dzdx1,dzdx2,dzdy1,dzdy2
     81  real :: dzdx1,dzdx2,dzdy1,dzdy2,cosf
    7982  real :: uuhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
    8083  real :: vvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests)
     
    8386  real,parameter :: const=r_air/ga
    8487
     88  logical :: lconvectprec, lsearch
    8589
    8690  ! Loop over all nests
    8791  !********************
    8892
     93  numbnest_loop: &
    8994  do l=1,numbnests
    9095
     
    143148
    144149
    145   ! Levels, where u,v,t and q are given
    146   !************************************
     150  ! Levels where u,v,t and q are given
     151  !***********************************
    147152
    148153      uun(ix,jy,1,n,l)=uuhn(ix,jy,1,l)
     
    194199
    195200
    196   ! Levels, where w is given
    197   !*************************
     201  ! Levels where w is given
     202  !************************
    198203
    199204      wwn(ix,jy,1,n,l)=wwhn(ix,jy,1,l)*pinmconv(1)
     
    275280
    276281      end do
    277 
    278282    end do
    279283  end do
    280284
    281 
    282   !write (*,*) 'initializing nested cloudsn, n:',n
    283   !   create a cloud and rainout/washout field, cloudsn occur where rh>80%
     285  ! write (*,*) 'diagnosing nested clouds, n:',n
     286  jy_loop: &
    284287  do jy=0,nyn(l)-1
    285288    do ix=0,nxn(l)-1
    286       rain_cloud_above=0
     289
    287290      lsp=lsprecn(ix,jy,1,n,l)
    288291      convp=convprecn(ix,jy,1,n,l)
    289       cloudsnh(ix,jy,n,l)=0
    290       do kz_inv=1,nz-1
    291          kz=nz-kz_inv+1
    292          pressure=rhon(ix,jy,kz,n,l)*r_air*ttn(ix,jy,kz,n,l)
    293          rh=qvn(ix,jy,kz,n,l)/f_qvsat(pressure,ttn(ix,jy,kz,n,l))
    294          cloudsn(ix,jy,kz,n,l)=0
    295          if (rh.gt.0.8) then ! in cloud
    296             if ((lsp.gt.0.01).or.(convp.gt.0.01)) then
    297                rain_cloud_above=1
    298                cloudsnh(ix,jy,n,l)=cloudsnh(ix,jy,n,l)+ &
    299                height(kz)-height(kz-1)
    300                if (lsp.ge.convp) then
    301                   cloudsn(ix,jy,kz,n,l)=3 ! lsp dominated rainout
    302                else
    303                   cloudsn(ix,jy,kz,n,l)=2 ! convp dominated rainout
    304                endif
    305             else ! no precipitation
    306                   cloudsn(ix,jy,kz,n,l)=1 ! cloud
     292      prec=lsp+convp
     293      if (lsp .gt. convp) then !  prectype='lsp'
     294        lconvectprec = .false.
     295      else ! prectype='cp '
     296        lconvectprec = .true.
     297      endif
     298      icloudbotn(ix,jy,n,l)=icmv
     299      icloudtop=icmv ! this is just a local variable
     300      rhmin=rhmininit 
     301      lsearch=.true.
     302
     303      cloudsearch_loop: &
     304      do while (rhmin .ge. rhminx .and. lsearch) 
     305        ! give up for < rhminx
     306
     307        kz_loop: &
     308        do kz_inv=1,nz-1
     309           kz=nz-kz_inv+1
     310           pressure=rhon(ix,jy,kz,n,l)*r_air*ttn(ix,jy,kz,n,l)
     311           rh=qvn(ix,jy,kz,n,l)/f_qvsat(pressure,ttn(ix,jy,kz,n,l))
     312           if (rh .gt. rhmin) then
     313            if (icloudbotn(ix,jy,n,l) .eq. icmv) then
     314              icloudtop=nint(height(kz)) ! use int to save memory
    307315            endif
    308          else ! no cloud
    309             if (rain_cloud_above.eq.1) then ! scavenging
    310                if (lsp.ge.convp) then
    311                   cloudsn(ix,jy,kz,n,l)=5 ! lsp dominated washout
    312                else
    313                   cloudsn(ix,jy,kz,n,l)=4 ! convp dominated washout
    314                endif
    315             endif
    316          endif
    317       end do
    318     end do
    319   end do
    320 
    321   end do
     316            icloudbotn(ix,jy,n,l)=nint(height(kz))
     317          endif
     318        end do kz_loop
     319
     320        ! PS try to get a cloud thicker than 50 m
     321        ! PS if there is at least precmin mm/h
     322        if (prec .gt. precmin .and. &
     323          ( icloudbotn(ix,jy,n,l) .eq. icmv .or. &
     324            icloudtop-icloudbotn(ix,jy,n,l) .lt. 50)) then
     325          rhmin = rhmin - 0.05
     326        else
     327          lsearch = .false.
     328        endif
     329       
     330      enddo cloudsearch_loop
     331     
     332      ! PS implement a rough fix for badly represented convection
     333      ! PS is based on looking at a limited set of comparison data
     334      if (lconvectprec .and. icloudtop .lt. icloudtopconvmin .or. &
     335         icloudbotn(ix,jy,n,l) .lt. icloudtopmin .and. prec .gt. precmin) then
     336        if (convp .lt. 0.1) then
     337          icloudbotn(ix,jy,n,l) = icloudbot1
     338          icloudtop =             icloudtop1
     339        else
     340          icloudbotn(ix,jy,n,l) = icloudbot2
     341          icloudtop =             icloudtop2
     342        endif
     343      endif
     344      if (icloudtop .ne. icmv) then
     345        icloudthckn(ix,jy,n,l) = icloudtop-icloudbotn(ix,jy,n,l)
     346      else
     347        icloudthckn(ix,jy,n,l) = icmv
     348      endif
     349      ! PS get rid of too thin clouds     
     350      if (icloudthck(ix,jy,n) .lt. 50) then
     351        icloudbotn(ix,jy,n,l)=icmv
     352        icloudthckn(ix,jy,n,l)=icmv
     353      endif
     354
     355    enddo
     356  enddo jy_loop
     357 
     358  enddo numbnest_loop
    322359
    323360end subroutine verttransform_nests
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG