Changeset db712a8 in flexpart.git for src/verttransform.f90
- Timestamp:
- Mar 3, 2016, 12:34:56 PM (8 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- 38b7917
- Parents:
- b0434e1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/verttransform.f90
rb0434e1 rdb712a8 67 67 use com_mod 68 68 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 MPI72 69 ! use mpi_mod 73 ! :TODO74 70 75 71 implicit none 76 72 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 85 86 real :: xlon,ylat,xlonr,dzdx,dzdy 86 87 real :: dzdx1,dzdx2,dzdy1,dzdy2 87 88 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)93 89 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 96 91 97 92 logical :: init = .true. 98 93 99 94 !ZHG SEP 2014 tests 100 integer :: cloud_ver,cloud_min, cloud_max101 integer ::teller(5), convpteller=0, lspteller=0102 real :: cloud_col_wat, cloud_water95 ! integer :: cloud_ver,cloud_min, cloud_max 96 ! integer ::teller(5), convpteller=0, lspteller=0 97 ! real :: cloud_col_wat, cloud_water 103 98 !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) 106 101 ! character(len=60) :: zhgpath='/xnilu_wrk/flex_wrk/zhg/' 107 102 ! character(len=60) :: fnameA,fnameB,fnameC,fnameD,fnameE,fnameF,fnameG,fnameH 108 CHARACTER(LEN=3) :: aspec109 integer :: virr=0103 ! CHARACTER(LEN=3) :: aspec 104 ! integer :: virr=0 110 105 real :: tot_cloud_h 106 real :: dbg_height(nzmax) 111 107 !ZHG 112 108 … … 143 139 144 140 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))/ & 146 142 ps(ixm,jym,1,n)) 147 143 pold(ixm,jym)=ps(ixm,jym,1,n) … … 182 178 init=.false. 183 179 180 dbg_height = height 181 184 182 endif 185 183 … … 191 189 do jy=0,nymin1 192 190 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))/ & 194 192 ps(ix,jy,1,n)) 195 193 enddo … … 250 248 qv(:,:,1,n)=qvh(:,:,1,n) 251 249 !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 254 254 !hg 255 255 pv(:,:,1,n)=pvh(:,:,1) 256 256 rho(:,:,1,n)=rhoh(:,:,1) 257 257 258 uu(:,:,nz,n)=uuh(:,:,nuvz) 258 259 vv(:,:,nz,n)=vvh(:,:,nuvz) 259 260 tt(:,:,nz,n)=tth(:,:,nuvz,n) 260 261 qv(:,:,nz,n)=qvh(:,:,nuvz,n) 261 262 262 !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 265 267 !hg 266 268 pv(:,:,nz,n)=pvh(:,:,nuvz) … … 279 281 qv(ix,jy,iz,n)=qv(ix,jy,nz,n) 280 282 !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 283 287 !hg 284 288 pv(ix,jy,iz,n)=pv(ix,jy,nz,n) … … 309 313 +qvh(ix,jy,kz,n)*dz1)/dz 310 314 !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 314 320 !hg 315 321 pv(ix,jy,iz,n)=(pvh(ix,jy,kz-1)*dz2+pvh(ix,jy,kz)*dz1)/dz … … 601 607 icloud_stats(ix,jy,3,n)= min(height(kz+1),height(kz)) ! Cloud BOT height stats [m] 602 608 !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) 604 610 icloud_stats(ix,jy,1,n)=icloud_stats(ix,jy,1,n)+(height(kz+1)-height(kz)) ! Cloud total vertical extent [m] 605 611 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.