Changes in trunk/src/calcpv_nests.f90 [24:4]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/calcpv_nests.f90
r24 r4 21 21 22 22 subroutine calcpv_nests(l,n,uuhn,vvhn,pvhn) 23 ! i i i i o23 ! i i i i o 24 24 !***************************************************************************** 25 25 ! * … … 48 48 integer :: nlck,l 49 49 real :: vx(2),uy(2),phi,tanphi,cosphi,dvdx,dudy,f 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)50 real :: theta,thetap,thetam,dthetadp,dt1,dt2,dt,ppmk 51 real :: ppml(nuvzmax) 52 52 real :: thup,thdn 53 53 real,parameter :: eps=1.e-5,p0=101325 … … 61 61 ! Loop over entire grid 62 62 !********************** 63 do kl=1,nuvz64 do jy=0,nyn(l)-165 do ix=0,nxn(l)-166 ppml(ix,jy,kl)=akz(kl)+bkz(kl)*psn(ix,jy,1,n,l)67 enddo68 enddo69 enddo70 ppmk=(100000./ppml)**kappa71 72 63 do jy=0,nyn(l)-1 73 64 phi = (ylat0n(l) + jy * dyn(l)) * pi / 180. … … 97 88 if (ix.eq.0.or.ix.eq.nxn(l)-1) jumpx=1 98 89 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 99 94 ! 100 95 ! Loop over the vertical … … 102 97 103 98 do kl=1,nuvz 104 theta=tthn(ix,jy,kl,n,l)*ppmk(ix,jy,kl) 99 ppmk=akz(kl)+bkz(kl)*psn(ix,jy,1,n,l) 100 theta=tthn(ix,jy,kl,n,l)*(100000./ppmk)**kappa 105 101 klvrp=kl+1 106 102 klvrm=kl-1 … … 111 107 if (klvrp.gt.nuvz) klvrp=nuvz 112 108 if (klvrm.lt.1) klvrm=1 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)) 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)) 116 114 117 115 ! Compute vertical position at pot. temperature surface on subgrid … … 136 134 kch=kch+1 137 135 k=kup 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) 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 140 140 141 141 if (((thdn.ge.theta).and.(thup.le.theta)).or. & … … 158 158 kch=kch+1 159 159 k=kdn 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) 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 162 164 if (((thdn.ge.theta).and.(thup.le.theta)).or. & 163 165 ((thdn.le.theta).and.(thup.ge.theta))) then … … 210 212 kch=kch+1 211 213 k=kup 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) 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 214 218 if (((thdn.ge.theta).and.(thup.le.theta)).or. & 215 219 ((thdn.le.theta).and.(thup.ge.theta))) then … … 231 235 kch=kch+1 232 236 k=kdn 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) 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 235 241 if (((thdn.ge.theta).and.(thup.le.theta)).or. & 236 242 ((thdn.le.theta).and.(thup.ge.theta))) then
Note: See TracChangeset
for help on using the changeset viewer.