Ignore:
Timestamp:
May 23, 2014, 11:48:41 AM (10 years ago)
Author:
igpis
Message:

version 9.2 beta. Changes from HH, AST, MC, NIK, IP. Changes in vert transform. New SPECIES input includes scavenging coefficients

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/calcpv_nests.f90

    r4 r24  
    2121
    2222subroutine calcpv_nests(l,n,uuhn,vvhn,pvhn)
    23   !                        i i  i    i    o
     23  !                     i i  i    i    o
    2424  !*****************************************************************************
    2525  !                                                                            *
     
    4848  integer :: nlck,l
    4949  real :: vx(2),uy(2),phi,tanphi,cosphi,dvdx,dudy,f
    50   real :: theta,thetap,thetam,dthetadp,dt1,dt2,dt,ppmk
    51   real :: ppml(nuvzmax)
     50  real :: theta,thetap,thetam,dthetadp,dt1,dt2,dt
     51  real :: ppml(0:nxmaxn-1,0:nymaxn-1,nuvzmax),ppmk(0:nxmaxn-1,0:nymaxn-1,nuvzmax)
    5252  real :: thup,thdn
    5353  real,parameter :: eps=1.e-5,p0=101325
     
    6161  ! Loop over entire grid
    6262  !**********************
     63  do kl=1,nuvz
     64    do jy=0,nyn(l)-1
     65      do ix=0,nxn(l)-1
     66         ppml(ix,jy,kl)=akz(kl)+bkz(kl)*psn(ix,jy,1,n,l)
     67      enddo
     68    enddo
     69  enddo
     70  ppmk=(100000./ppml)**kappa
     71
    6372  do jy=0,nyn(l)-1
    6473    phi = (ylat0n(l) + jy * dyn(l)) * pi / 180.
     
    8897      if (ix.eq.0.or.ix.eq.nxn(l)-1) jumpx=1
    8998      jux=jumpx
    90   ! Precalculate pressure values for efficiency
    91       do kl=1,nuvz
    92         ppml(kl)=akz(kl)+bkz(kl)*psn(ix,jy,1,n,l)
    93       end do
    9499  !
    95100  ! Loop over the vertical
     
    97102
    98103      do kl=1,nuvz
    99         ppmk=akz(kl)+bkz(kl)*psn(ix,jy,1,n,l)
    100         theta=tthn(ix,jy,kl,n,l)*(100000./ppmk)**kappa
     104        theta=tthn(ix,jy,kl,n,l)*ppmk(ix,jy,kl)
    101105        klvrp=kl+1
    102106        klvrm=kl-1
     
    107111        if (klvrp.gt.nuvz) klvrp=nuvz
    108112        if (klvrm.lt.1) klvrm=1
    109         ppmk=akz(klvrp)+bkz(klvrp)*psn(ix,jy,1,n,l)
    110         thetap=tthn(ix,jy,klvrp,n,l)*(100000./ppmk)**kappa
    111         ppmk=akz(klvrm)+bkz(klvrm)*psn(ix,jy,1,n,l)
    112         thetam=tthn(ix,jy,klvrm,n,l)*(100000./ppmk)**kappa
    113         dthetadp=(thetap-thetam)/(ppml(klvrp)-ppml(klvrm))
     113        thetap=tthn(ix,jy,klvrp,n,l)*ppmk(ix,jy,klvrp)
     114        thetam=tthn(ix,jy,klvrm,n,l)*ppmk(ix,jy,klvrm)
     115        dthetadp=(thetap-thetam)/(ppml(ix,jy,klvrp)-ppml(ix,jy,klvrm))
    114116
    115117  ! Compute vertical position at pot. temperature surface on subgrid
     
    134136          kch=kch+1
    135137          k=kup
    136           ppmk=akz(k)+bkz(k)*psn(ivr,jy,1,n,l)
    137           thdn=tthn(ivr,jy,k,n,l)*(100000./ppmk)**kappa
    138           ppmk=akz(k+1)+bkz(k+1)*psn(ivr,jy,1,n,l)
    139           thup=tthn(ivr,jy,k+1,n,l)*(100000./ppmk)**kappa
     138          thdn=tthn(ivr,jy,k,n,l)*ppmk(ivr,jy,k)
     139          thup=tthn(ivr,jy,k+1,n,l)*ppmk(ivr,jy,k+1)
    140140
    141141      if (((thdn.ge.theta).and.(thup.le.theta)).or. &
     
    158158          kch=kch+1
    159159          k=kdn
    160           ppmk=akz(k)+bkz(k)*psn(ivr,jy,1,n,l)
    161           thdn=tthn(ivr,jy,k,n,l)*(100000./ppmk)**kappa
    162           ppmk=akz(k+1)+bkz(k+1)*psn(ivr,jy,1,n,l)
    163           thup=tthn(ivr,jy,k+1,n,l)*(100000./ppmk)**kappa
     160          thdn=tthn(ivr,jy,k,n,l)*ppmk(ivr,jy,k)
     161          thup=tthn(ivr,jy,k+1,n,l)*ppmk(ivr,jy,k+1)
    164162      if (((thdn.ge.theta).and.(thup.le.theta)).or. &
    165163           ((thdn.le.theta).and.(thup.ge.theta))) then
     
    212210          kch=kch+1
    213211          k=kup
    214           ppmk=akz(k)+bkz(k)*psn(ix,j,1,n,l)
    215           thdn=tthn(ix,j,k,n,l)*(100000./ppmk)**kappa
    216           ppmk=akz(k+1)+bkz(k+1)*psn(ix,j,1,n,l)
    217           thup=tthn(ix,j,k+1,n,l)*(100000./ppmk)**kappa
     212          thdn=tthn(ix,j,k,n,l)*ppmk(ix,j,k)
     213          thup=tthn(ix,j,k+1,n,l)*ppmk(ix,j,k+1)
    218214      if (((thdn.ge.theta).and.(thup.le.theta)).or. &
    219215           ((thdn.le.theta).and.(thup.ge.theta))) then
     
    235231          kch=kch+1
    236232          k=kdn
    237           ppmk=akz(k)+bkz(k)*psn(ix,j,1,n,l)
    238           thdn=tthn(ix,j,k,n,l)*(100000./ppmk)**kappa
    239           ppmk=akz(k+1)+bkz(k+1)*psn(ix,j,1,n,l)
    240           thup=tthn(ix,j,k+1,n,l)*(100000./ppmk)**kappa
     233          thdn=tthn(ix,j,k,n,l)*ppmk(ix,j,k)
     234          thup=tthn(ix,j,k+1,n,l)*ppmk(ix,j,k+1)
    241235      if (((thdn.ge.theta).and.(thup.le.theta)).or. &
    242236           ((thdn.le.theta).and.(thup.ge.theta))) then
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG