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


Ignore:
Timestamp:
Jan 5, 2016, 12:20:01 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:
d8107c2
Parents:
d6a0977
Message:

Fixed a bug with number of occurances of wet scavenging written to stdout

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/verttransform.f90

    rd6a0977 rf75967d  
    568568
    569569!*********************************************************************************** 
    570 if (readclouds) then !HG METHOD
     570  if (readclouds) then !HG METHOD
    571571! The method is loops all grids vertically and constructs the 3D matrix for clouds
    572572! Cloud top and cloud bottom gid cells are assigned as well as the total column
     
    577577! to include future cloud processing by non-precipitating-clouds.
    578578!***********************************************************************************
    579   if (readclouds) write(*,*) 'using cloud water from ECMWF'
    580   clw(:,:,:,n)=0
    581   icloud_stats(:,:,:,n)=0
    582   clouds(:,:,:,n)=0
    583   do jy=0,nymin1
    584    do ix=0,nxmin1
    585     lsp=lsprec(ix,jy,1,n)
    586     convp=convprec(ix,jy,1,n)
    587     prec=lsp+convp
    588     tot_cloud_h=0
    589     ! Find clouds in the vertical
    590     do kz=1, nz-1 !go from top to bottom
    591      if (clwc(ix,jy,kz,n).gt.0) then     
    592       ! assuming rho is in kg/m3 and hz in m gives: kg/kg * kg/m3 *m3/kg /m = m2/m3
    593       clw(ix,jy,kz,n)=(clwc(ix,jy,kz,n)*rho(ix,jy,kz,n))*(height(kz+1)-height(kz))
    594       tot_cloud_h=tot_cloud_h+(height(kz+1)-height(kz))
    595       icloud_stats(ix,jy,4,n)= icloud_stats(ix,jy,4,n)+clw(ix,jy,kz,n)          ! Column cloud water [m3/m3]
    596       icloud_stats(ix,jy,3,n)= min(height(kz+1),height(kz))                     ! Cloud BOT height stats      [m]
     579    write(*,*) 'using cloud water from ECMWF'
     580    clw(:,:,:,n)=0
     581    icloud_stats(:,:,:,n)=0
     582    clouds(:,:,:,n)=0
     583    do jy=0,nymin1
     584      do ix=0,nxmin1
     585        lsp=lsprec(ix,jy,1,n)
     586        convp=convprec(ix,jy,1,n)
     587        prec=lsp+convp
     588        tot_cloud_h=0
     589! Find clouds in the vertical
     590        do kz=1, nz-1 !go from top to bottom
     591          if (clwc(ix,jy,kz,n).gt.0) then     
     592! assuming rho is in kg/m3 and hz in m gives: kg/kg * kg/m3 *m3/kg /m = m2/m3
     593            clw(ix,jy,kz,n)=(clwc(ix,jy,kz,n)*rho(ix,jy,kz,n))*(height(kz+1)-height(kz))
     594            tot_cloud_h=tot_cloud_h+(height(kz+1)-height(kz))
     595            icloud_stats(ix,jy,4,n)= icloud_stats(ix,jy,4,n)+clw(ix,jy,kz,n)          ! Column cloud water [m3/m3]
     596            icloud_stats(ix,jy,3,n)= min(height(kz+1),height(kz))                     ! Cloud BOT height stats      [m]
    597597!ZHG 2015 extra for testing
    598       clh(ix,jy,kz,n)=height(kz+1)-height(kz)
    599       icloud_stats(ix,jy,1,n)=icloud_stats(ix,jy,1,n)+(height(kz+1)-height(kz)) ! Cloud total vertical extent [m]
    600       icloud_stats(ix,jy,2,n)= max(icloud_stats(ix,jy,2,n),height(kz))          ! Cloud TOP height            [m]
     598            clh(ix,jy,kz,n)=height(kz+1)-height(kz)
     599            icloud_stats(ix,jy,1,n)=icloud_stats(ix,jy,1,n)+(height(kz+1)-height(kz)) ! Cloud total vertical extent [m]
     600            icloud_stats(ix,jy,2,n)= max(icloud_stats(ix,jy,2,n),height(kz))          ! Cloud TOP height            [m]
    601601!ZHG
    602     endif
    603     end do
    604 
    605    ! If Precipitation. Define removal type in the vertical
    606   if ((lsp.gt.0.01).or.(convp.gt.0.01)) then ! cloud and precipitation
    607 
    608     do kz=nz,1,-1 !go Bottom up!
    609      if (clw(ix,jy,kz,n).gt. 0) then ! is in cloud
    610         cloudsh(ix,jy,n)=cloudsh(ix,jy,n)+height(kz)-height(kz-1)
    611         clouds(ix,jy,kz,n)=1                               ! is a cloud
    612         if (lsp.ge.convp) then
    613            clouds(ix,jy,kz,n)=3                            ! lsp in-cloud
    614         else
    615           clouds(ix,jy,kz,n)=2                             ! convp in-cloud
    616         endif                                              ! convective or large scale
    617      elseif((clw(ix,jy,kz,n).le.0) .and. (icloud_stats(ix,jy,3,n).ge.height(kz)) ) then ! is below cloud
    618         if (lsp.ge.convp) then
    619           clouds(ix,jy,kz,n)=5                             ! lsp dominated washout
    620         else
    621           clouds(ix,jy,kz,n)=4                             ! convp dominated washout
    622         endif                                              ! convective or large scale
    623      endif
    624 
    625      if (height(kz).ge. 19000) then                        ! set a max height for removal
    626         clouds(ix,jy,kz,n)=0
    627      endif !clw>0
    628     end do !nz
    629    endif ! precipitation
    630   end do
    631  end do
     602          endif
     603        end do
     604
     605! If Precipitation. Define removal type in the vertical
     606        if ((lsp.gt.0.01).or.(convp.gt.0.01)) then ! cloud and precipitation
     607
     608          do kz=nz,1,-1 !go Bottom up!
     609            if (clw(ix,jy,kz,n).gt. 0) then ! is in cloud
     610              cloudsh(ix,jy,n)=cloudsh(ix,jy,n)+height(kz)-height(kz-1)
     611              clouds(ix,jy,kz,n)=1                               ! is a cloud
     612              if (lsp.ge.convp) then
     613                clouds(ix,jy,kz,n)=3                            ! lsp in-cloud
     614              else
     615                clouds(ix,jy,kz,n)=2                             ! convp in-cloud
     616              endif                                              ! convective or large scale
     617            elseif((clw(ix,jy,kz,n).le.0) .and. (icloud_stats(ix,jy,3,n).ge.height(kz)) ) then ! is below cloud
     618              if (lsp.ge.convp) then
     619                clouds(ix,jy,kz,n)=5                             ! lsp dominated washout
     620              else
     621                clouds(ix,jy,kz,n)=4                             ! convp dominated washout
     622              endif                                              ! convective or large scale
     623            endif
     624
     625            if (height(kz).ge. 19000) then                        ! set a max height for removal
     626              clouds(ix,jy,kz,n)=0
     627            endif !clw>0
     628          end do !nz
     629        endif ! precipitation
     630      end do
     631    end do
    632632!**************************************************************************
    633  else       ! use old definitions
     633  else       ! use old definitions
    634634!**************************************************************************
    635635!   create a cloud and rainout/washout field, clouds occur where rh>80%
    636636!   total cloudheight is stored at level 0
    637  if (.not.readclouds) write(*,*) 'using cloud water from Parameterization'
    638   do jy=0,nymin1
    639     do ix=0,nxmin1
     637! if (.not.readclouds) write(*,*) 'using cloud water from Parameterization'
     638    write(*,*) 'using cloud water from Parameterization'
     639    do jy=0,nymin1
     640      do ix=0,nxmin1
    640641! OLD METHOD
    641       rain_cloud_above(ix,jy)=0
    642       lsp=lsprec(ix,jy,1,n)
    643       convp=convprec(ix,jy,1,n)
    644       cloudsh(ix,jy,n)=0
    645       do kz_inv=1,nz-1
    646         kz=nz-kz_inv+1
    647         pressure=rho(ix,jy,kz,n)*r_air*tt(ix,jy,kz,n)
    648         rh=qv(ix,jy,kz,n)/f_qvsat(pressure,tt(ix,jy,kz,n))
    649         clouds(ix,jy,kz,n)=0
    650         if (rh.gt.0.8) then ! in cloud
    651           if ((lsp.gt.0.01).or.(convp.gt.0.01)) then ! cloud and precipitation
    652             rain_cloud_above(ix,jy)=1
    653             cloudsh(ix,jy,n)=cloudsh(ix,jy,n)+ &
    654                  height(kz)-height(kz-1)
    655             if (lsp.ge.convp) then
    656               clouds(ix,jy,kz,n)=3 ! lsp dominated rainout
    657             else
    658               clouds(ix,jy,kz,n)=2 ! convp dominated rainout
     642        rain_cloud_above(ix,jy)=0
     643        lsp=lsprec(ix,jy,1,n)
     644        convp=convprec(ix,jy,1,n)
     645        cloudsh(ix,jy,n)=0
     646        do kz_inv=1,nz-1
     647          kz=nz-kz_inv+1
     648          pressure=rho(ix,jy,kz,n)*r_air*tt(ix,jy,kz,n)
     649          rh=qv(ix,jy,kz,n)/f_qvsat(pressure,tt(ix,jy,kz,n))
     650          clouds(ix,jy,kz,n)=0
     651          if (rh.gt.0.8) then ! in cloud
     652            if ((lsp.gt.0.01).or.(convp.gt.0.01)) then ! cloud and precipitation
     653              rain_cloud_above(ix,jy)=1
     654              cloudsh(ix,jy,n)=cloudsh(ix,jy,n)+ &
     655                   height(kz)-height(kz-1)
     656              if (lsp.ge.convp) then
     657                clouds(ix,jy,kz,n)=3 ! lsp dominated rainout
     658              else
     659                clouds(ix,jy,kz,n)=2 ! convp dominated rainout
     660              endif
     661            else ! no precipitation
     662              clouds(ix,jy,kz,n)=1 ! cloud
    659663            endif
    660           else ! no precipitation
    661             clouds(ix,jy,kz,n)=1 ! cloud
    662           endif
    663         else ! no cloud
    664           if (rain_cloud_above(ix,jy).eq.1) then ! scavenging
    665             if (lsp.ge.convp) then
    666               clouds(ix,jy,kz,n)=5 ! lsp dominated washout
    667             else
    668               clouds(ix,jy,kz,n)=4 ! convp dominated washout
     664          else ! no cloud
     665            if (rain_cloud_above(ix,jy).eq.1) then ! scavenging
     666              if (lsp.ge.convp) then
     667                clouds(ix,jy,kz,n)=5 ! lsp dominated washout
     668              else
     669                clouds(ix,jy,kz,n)=4 ! convp dominated washout
     670              endif
    669671            endif
    670672          endif
    671         endif
    672       end do
     673        end do
    673674!END OLD METHOD
    674675      end do
    675      end do
    676 endif !readclouds
     676    end do
     677  endif !readclouds
    677678
    678679     !********* TEST ***************
     
    838839    !      sum(ww(:,:,:,n)*ww(:,:,:,n)), &
    839840    !      sum(clouds(:,:,:,n)), sum(cloudsh(:,:,n)),sum(idx),sum(pinmconv)
    840   end subroutine verttransform
    841 
     841end subroutine verttransform
     842
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG