Changeset db712a8 in flexpart.git for src/verttransform.f90


Ignore:
Timestamp:
Mar 3, 2016, 12:34:56 PM (8 years ago)
Author:
Espen Sollum ATMOS <eso@…>
Branches:
master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
Children:
38b7917
Parents:
b0434e1
Message:

Completed handling of nested wind fields with cloud water (for wet deposition).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/verttransform.f90

    rb0434e1 rdb712a8  
    6767  use com_mod
    6868  use cmapf_mod, only: cc2gll
    69 ! eso TODO:
    70 ! only used for timing of CPU measurement. Remove this (and calls to mpif_mtime below)
    71 ! as this routine should not be dependent on MPI
    7269!  use mpi_mod
    73 ! :TODO
    7470
    7571  implicit none
    7672
    77   integer :: ix,jy,kz,iz,n,kmin,kl,klp,ix1,jy1,ixp,jyp,ixm,jym
    78   integer :: rain_cloud_above(0:nxmax-1,0:nymax-1),kz_inv,idx(0:nxmax-1,0:nymax-1)
    79   real :: f_qvsat,pressure,cosf(0:nymax-1)
    80   real :: rh,lsp,convp,tim,tim2,rhmin,precmin,prec
    81   real :: uvzlev(0:nxmax-1,0:nymax-1,nuvzmax),rhoh(0:nxmax-1,0:nymax-1,nuvzmax)
    82   real :: pinmconv(0:nxmax-1,0:nymax-1,nzmax)
    83   real :: ew,pint(0:nxmax-1,0:nymax-1),tv(0:nxmax-1,0:nymax-1)
    84   real :: tvold(0:nxmax-1,0:nymax-1),pold(0:nxmax-1,0:nymax-1),dz1,dz2,dz,ui,vi
     73  real,intent(in),dimension(0:nxmax-1,0:nymax-1,nuvzmax) :: uuh,vvh,pvh
     74  real,intent(in),dimension(0:nxmax-1,0:nymax-1,nwzmax) :: wwh
     75
     76  real,dimension(0:nxmax-1,0:nymax-1,nuvzmax) :: rhoh,uvzlev,wzlev
     77  real,dimension(0:nxmax-1,0:nymax-1,nzmax) :: pinmconv
     78  real,dimension(0:nxmax-1,0:nymax-1) ::  tvold,pold,pint,tv
     79  real,dimension(0:nymax-1) :: cosf
     80
     81  integer,dimension(0:nxmax-1,0:nymax-1) :: rain_cloud_above,idx
     82
     83  integer :: ix,jy,kz,iz,n,kmin,ix1,jy1,ixp,jyp,ixm,jym,kz_inv
     84  real :: f_qvsat,pressure,rh,lsp,convp,prec
     85  real :: ew,dz1,dz2,dz
    8586  real :: xlon,ylat,xlonr,dzdx,dzdy
    8687  real :: dzdx1,dzdx2,dzdy1,dzdy2
    8788  real :: uuaux,vvaux,uupolaux,vvpolaux,ddpol,ffpol,wdummy
    88   real :: uuh(0:nxmax-1,0:nymax-1,nuvzmax)
    89   real :: vvh(0:nxmax-1,0:nymax-1,nuvzmax)
    90   real :: pvh(0:nxmax-1,0:nymax-1,nuvzmax)
    91   real :: wwh(0:nxmax-1,0:nymax-1,nwzmax)
    92   real :: wzlev(0:nxmax-1,0:nymax-1,nwzmax)
    9389  real,parameter :: const=r_air/ga
    94 !  integer:: ihr, imin, isec, i100th,ihr2, imin2, isec2, i100th2
    95   parameter (precmin = 0.002) ! minimum prec in mm/h for cloud diagnostics
     90  real,parameter :: precmin = 0.002 ! minimum prec in mm/h for cloud diagnostics
    9691
    9792  logical :: init = .true.
    9893
    9994  !ZHG SEP 2014 tests 
    100   integer :: cloud_ver,cloud_min, cloud_max
    101   integer ::teller(5), convpteller=0, lspteller=0
    102   real :: cloud_col_wat, cloud_water
     95  ! integer :: cloud_ver,cloud_min, cloud_max
     96  ! integer ::teller(5), convpteller=0, lspteller=0
     97  ! real :: cloud_col_wat, cloud_water
    10398  !ZHG 2015 temporary variables for testing
    104   real :: rcw(0:nxmax-1,0:nymax-1)
    105   real :: rpc(0:nxmax-1,0:nymax-1)
     99  ! real :: rcw(0:nxmax-1,0:nymax-1)
     100  ! real :: rpc(0:nxmax-1,0:nymax-1)
    106101  ! character(len=60) :: zhgpath='/xnilu_wrk/flex_wrk/zhg/'
    107102  ! character(len=60) :: fnameA,fnameB,fnameC,fnameD,fnameE,fnameF,fnameG,fnameH
    108   CHARACTER(LEN=3)  :: aspec
    109   integer :: virr=0
     103  ! CHARACTER(LEN=3)  :: aspec
     104  ! integer :: virr=0
    110105  real :: tot_cloud_h
     106  real :: dbg_height(nzmax)
    111107!ZHG
    112108
     
    143139
    144140
    145     tvold(ixm,jym)=tt2(ixm,jym,1,n)*(1.+0.378*ew(td2(ixm,jym,1,n))/ &
     141    tvold(ixm,jym)=tt2(ixm,jym,1,n)*(1.+0.378*ew*(td2(ixm,jym,1,n))/ &
    146142         ps(ixm,jym,1,n))
    147143    pold(ixm,jym)=ps(ixm,jym,1,n)
     
    182178    init=.false.
    183179
     180    dbg_height = height
     181
    184182  endif
    185183
     
    191189  do jy=0,nymin1
    192190    do ix=0,nxmin1
    193       tvold(ix,jy)=tt2(ix,jy,1,n)*(1.+0.378*ew(td2(ix,jy,1,n))/ &
     191      tvold(ix,jy)=tt2(ix,jy,1,n)*(1.+0.378*ew*(td2(ix,jy,1,n))/ &
    194192           ps(ix,jy,1,n))
    195193    enddo
     
    250248  qv(:,:,1,n)=qvh(:,:,1,n)
    251249!hg adding the cloud water
    252   clwc(:,:,1,n)=clwch(:,:,1,n)
    253   if (.not.sumclouds) ciwc(:,:,1,n)=ciwch(:,:,1,n)   
     250  if (readclouds) then
     251    clwc(:,:,1,n)=clwch(:,:,1,n)
     252    if (.not.sumclouds) ciwc(:,:,1,n)=ciwch(:,:,1,n)
     253  end if
    254254!hg
    255255  pv(:,:,1,n)=pvh(:,:,1)
    256256  rho(:,:,1,n)=rhoh(:,:,1)
     257
    257258  uu(:,:,nz,n)=uuh(:,:,nuvz)
    258259  vv(:,:,nz,n)=vvh(:,:,nuvz)
    259260  tt(:,:,nz,n)=tth(:,:,nuvz,n)
    260261  qv(:,:,nz,n)=qvh(:,:,nuvz,n)
    261 
    262262!hg adding the cloud water
    263   clwc(:,:,nz,n)=clwch(:,:,nuvz,n)
    264   if (.not.sumclouds) ciwc(:,:,nz,n)=ciwch(:,:,nuvz,n)
     263  if (readclouds) then
     264    clwc(:,:,nz,n)=clwch(:,:,nuvz,n)
     265    if (.not.sumclouds) ciwc(:,:,nz,n)=ciwch(:,:,nuvz,n)
     266  end if
    265267!hg
    266268  pv(:,:,nz,n)=pvh(:,:,nuvz)
     
    279281          qv(ix,jy,iz,n)=qv(ix,jy,nz,n)
    280282!hg adding the cloud water
    281           clwc(ix,jy,iz,n)=clwc(ix,jy,nz,n)
    282           if (.not.sumclouds) ciwc(ix,jy,iz,n)=ciwc(ix,jy,nz,n)
     283          if (readclouds) then
     284            clwc(ix,jy,iz,n)=clwc(ix,jy,nz,n)
     285            if (.not.sumclouds) ciwc(ix,jy,iz,n)=ciwc(ix,jy,nz,n)
     286          end if
    283287!hg
    284288          pv(ix,jy,iz,n)=pv(ix,jy,nz,n)
     
    309313               +qvh(ix,jy,kz,n)*dz1)/dz
    310314!hg adding the cloud water
    311           clwc(ix,jy,iz,n)=(clwch(ix,jy,kz-1,n)*dz2+clwch(ix,jy,kz,n)*dz1)/dz
    312           if (.not.sumclouds) &
    313                &ciwc(ix,jy,iz,n)=(ciwch(ix,jy,kz-1,n)*dz2+ciwch(ix,jy,kz,n)*dz1)/dz
     315          if (readclouds) then
     316            clwc(ix,jy,iz,n)=(clwch(ix,jy,kz-1,n)*dz2+clwch(ix,jy,kz,n)*dz1)/dz
     317            if (.not.sumclouds) &
     318                 &ciwc(ix,jy,iz,n)=(ciwch(ix,jy,kz-1,n)*dz2+ciwch(ix,jy,kz,n)*dz1)/dz
     319          end if
    314320!hg
    315321          pv(ix,jy,iz,n)=(pvh(ix,jy,kz-1)*dz2+pvh(ix,jy,kz)*dz1)/dz
     
    601607            icloud_stats(ix,jy,3,n)= min(height(kz+1),height(kz))                     ! Cloud BOT height stats      [m]
    602608!ZHG 2015 extra for testing
    603             clh(ix,jy,kz,n)=height(kz+1)-height(kz)
     609!            clh(ix,jy,kz,n)=height(kz+1)-height(kz)
    604610            icloud_stats(ix,jy,1,n)=icloud_stats(ix,jy,1,n)+(height(kz+1)-height(kz)) ! Cloud total vertical extent [m]
    605611            icloud_stats(ix,jy,2,n)= max(icloud_stats(ix,jy,2,n),height(kz))          ! Cloud TOP height            [m]
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG