Changes in trunk/src/verttransform_nests.f90 [24:4]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/verttransform_nests.f90
r24 r4 21 21 22 22 subroutine verttransform_nests(n,uuhn,vvhn,wwhn,pvhn) 23 ! i i i i i23 ! i i i i i 24 24 !***************************************************************************** 25 25 ! * … … 72 72 integer :: rain_cloud_above,kz_inv 73 73 real :: f_qvsat,pressure,rh,lsp,convp 74 real :: wzlev(nwzmax),rhoh(nuvzmax),pinmconv(nzmax)74 real :: uvzlev(nuvzmax),wzlev(nwzmax),rhoh(nuvzmax),pinmconv(nzmax) 75 75 real :: uvwzlev(0:nxmaxn-1,0:nymaxn-1,nzmax) 76 real :: ew,pint,tv,tvold,pold,dz1,dz2,dz,ui,vi ,cosf76 real :: ew,pint,tv,tvold,pold,dz1,dz2,dz,ui,vi 77 77 real :: dzdx,dzdy 78 78 real :: dzdx1,dzdx2,dzdy1,dzdy2 … … 96 96 97 97 tvold=tt2n(ix,jy,1,n,l)*(1.+0.378*ew(td2n(ix,jy,1,n,l))/ & 98 psn(ix,jy,1,n,l))98 psn(ix,jy,1,n,l)) 99 99 pold=psn(ix,jy,1,n,l) 100 uv wzlev(ix,jy,1)=0.100 uvzlev(1)=0. 101 101 wzlev(1)=0. 102 102 rhoh(1)=pold/(r_air*tvold) … … 112 112 113 113 if (abs(tv-tvold).gt.0.2) then 114 uv wzlev(ix,jy,kz)=uvwzlev(ix,jy,kz-1)+const*log(pold/pint)* &115 (tv-tvold)/log(tv/tvold)114 uvzlev(kz)=uvzlev(kz-1)+const*log(pold/pint)* & 115 (tv-tvold)/log(tv/tvold) 116 116 else 117 uv wzlev(ix,jy,kz)=uvwzlev(ix,jy,kz-1)+const*log(pold/pint)*tv117 uvzlev(kz)=uvzlev(kz-1)+const*log(pold/pint)*tv 118 118 endif 119 119 … … 124 124 125 125 do kz=2,nwz-1 126 wzlev(kz)=(uvwzlev(ix,jy,kz+1)+uvwzlev(ix,jy,kz))/2. 127 end do 128 wzlev(nwz)=wzlev(nwz-1)+uvwzlev(ix,jy,nuvz)-uvwzlev(ix,jy,nuvz-1) 126 wzlev(kz)=(uvzlev(kz+1)+uvzlev(kz))/2. 127 end do 128 wzlev(nwz)=wzlev(nwz-1)+ & 129 uvzlev(nuvz)-uvzlev(nuvz-1) 130 131 ! NOTE: In FLEXPART versions up to 4.0, the number of model levels was doubled 132 ! upon the transformation to z levels. In order to save computer memory, this is 133 ! not done anymore in the standard version. However, this option can still be 134 ! switched on by replacing the following lines with those below, that are 135 ! currently commented out. 136 ! Note that one change is also necessary in gridcheck.f, 137 ! and three changes in verttransform.f 138 !***************************************************************************** 139 uvwzlev(ix,jy,1)=0.0 140 do kz=2,nuvz 141 uvwzlev(ix,jy,kz)=uvzlev(kz) 142 end do 143 144 ! Switch on following lines to use doubled vertical resolution 145 ! Switch off the three lines above. 146 !************************************************************* 147 !22 uvwzlev(ix,jy,(kz-1)*2)=uvzlev(kz) 148 ! do 23 kz=2,nwz 149 !23 uvwzlev(ix,jy,(kz-1)*2+1)=wzlev(kz) 150 ! End doubled vertical resolution 129 151 130 152 ! pinmconv=(h2-h1)/(p2-p1) 131 153 132 154 pinmconv(1)=(uvwzlev(ix,jy,2)-uvwzlev(ix,jy,1))/ & 133 ((aknew(2)+bknew(2)*psn(ix,jy,1,n,l))- &134 (aknew(1)+bknew(1)*psn(ix,jy,1,n,l)))155 ((aknew(2)+bknew(2)*psn(ix,jy,1,n,l))- & 156 (aknew(1)+bknew(1)*psn(ix,jy,1,n,l))) 135 157 do kz=2,nz-1 136 158 pinmconv(kz)=(uvwzlev(ix,jy,kz+1)-uvwzlev(ix,jy,kz-1))/ & 137 ((aknew(kz+1)+bknew(kz+1)*psn(ix,jy,1,n,l))- &138 (aknew(kz-1)+bknew(kz-1)*psn(ix,jy,1,n,l)))159 ((aknew(kz+1)+bknew(kz+1)*psn(ix,jy,1,n,l))- & 160 (aknew(kz-1)+bknew(kz-1)*psn(ix,jy,1,n,l))) 139 161 end do 140 162 pinmconv(nz)=(uvwzlev(ix,jy,nz)-uvwzlev(ix,jy,nz-1))/ & 141 ((aknew(nz)+bknew(nz)*psn(ix,jy,1,n,l))- &142 (aknew(nz-1)+bknew(nz-1)*psn(ix,jy,1,n,l)))163 ((aknew(nz)+bknew(nz)*psn(ix,jy,1,n,l))- & 164 (aknew(nz-1)+bknew(nz-1)*psn(ix,jy,1,n,l))) 143 165 144 166 … … 161 183 do iz=2,nz-1 162 184 do kz=kmin,nuvz 163 if(height(iz).gt.uv wzlev(ix,jy,nuvz)) then185 if(height(iz).gt.uvzlev(nuvz)) then 164 186 uun(ix,jy,iz,n,l)=uun(ix,jy,nz,n,l) 165 187 vvn(ix,jy,iz,n,l)=vvn(ix,jy,nz,n,l) … … 170 192 goto 30 171 193 endif 172 if ((height(iz).gt.uv wzlev(ix,jy,kz-1)).and. &173 (height(iz).le.uvwzlev(ix,jy,kz))) then174 dz1=height(iz)-uv wzlev(ix,jy,kz-1)175 dz2=uv wzlev(ix,jy,kz)-height(iz)194 if ((height(iz).gt.uvzlev(kz-1)).and. & 195 (height(iz).le.uvzlev(kz))) then 196 dz1=height(iz)-uvzlev(kz-1) 197 dz2=uvzlev(kz)-height(iz) 176 198 dz=dz1+dz2 177 199 uun(ix,jy,iz,n,l)=(uuhn(ix,jy,kz-1,l)*dz2+ & 178 uuhn(ix,jy,kz,l)*dz1)/dz200 uuhn(ix,jy,kz,l)*dz1)/dz 179 201 vvn(ix,jy,iz,n,l)=(vvhn(ix,jy,kz-1,l)*dz2+ & 180 vvhn(ix,jy,kz,l)*dz1)/dz202 vvhn(ix,jy,kz,l)*dz1)/dz 181 203 ttn(ix,jy,iz,n,l)=(tthn(ix,jy,kz-1,n,l)*dz2+ & 182 tthn(ix,jy,kz,n,l)*dz1)/dz204 tthn(ix,jy,kz,n,l)*dz1)/dz 183 205 qvn(ix,jy,iz,n,l)=(qvhn(ix,jy,kz-1,n,l)*dz2+ & 184 qvhn(ix,jy,kz,n,l)*dz1)/dz206 qvhn(ix,jy,kz,n,l)*dz1)/dz 185 207 pvn(ix,jy,iz,n,l)=(pvhn(ix,jy,kz-1,l)*dz2+ & 186 pvhn(ix,jy,kz,l)*dz1)/dz208 pvhn(ix,jy,kz,l)*dz1)/dz 187 209 rhon(ix,jy,iz,n,l)=(rhoh(kz-1)*dz2+rhoh(kz)*dz1)/dz 188 210 kmin=kz … … 203 225 do kz=kmin,nwz 204 226 if ((height(iz).gt.wzlev(kz-1)).and. & 205 (height(iz).le.wzlev(kz))) then206 207 208 209 210 +wwhn(ix,jy,kz,l)*pinmconv(kz)*dz1)/dz211 212 227 (height(iz).le.wzlev(kz))) then 228 dz1=height(iz)-wzlev(kz-1) 229 dz2=wzlev(kz)-height(iz) 230 dz=dz1+dz2 231 wwn(ix,jy,iz,n,l)=(wwhn(ix,jy,kz-1,l)*pinmconv(kz-1)*dz2 & 232 +wwhn(ix,jy,kz,l)*pinmconv(kz)*dz1)/dz 233 kmin=kz 234 goto 40 213 235 endif 214 236 end do … … 220 242 221 243 drhodzn(ix,jy,1,n,l)=(rhon(ix,jy,2,n,l)-rhon(ix,jy,1,n,l))/ & 222 (height(2)-height(1))244 (height(2)-height(1)) 223 245 do kz=2,nz-1 224 246 drhodzn(ix,jy,kz,n,l)=(rhon(ix,jy,kz+1,n,l)- & 225 rhon(ix,jy,kz-1,n,l))/(height(kz+1)-height(kz-1))247 rhon(ix,jy,kz-1,n,l))/(height(kz+1)-height(kz-1)) 226 248 end do 227 249 drhodzn(ix,jy,nz,n,l)=drhodzn(ix,jy,nz-1,n,l) … … 237 259 238 260 do jy=1,nyn(l)-2 239 cosf=cos((real(jy)*dyn(l)+ylat0n(l))*pi180)240 261 do ix=1,nxn(l)-2 241 262 … … 243 264 do iz=2,nz-1 244 265 245 ui=uun(ix,jy,iz,n,l)*dxconst*xresoln(l)/cosf 266 ui=uun(ix,jy,iz,n,l)*dxconst*xresoln(l)/ & 267 cos((real(jy)*dyn(l)+ylat0n(l))*pi180) 246 268 vi=vvn(ix,jy,iz,n,l)*dyconst*yresoln(l) 247 269 … … 297 319 rain_cloud_above=1 298 320 cloudsnh(ix,jy,n,l)=cloudsnh(ix,jy,n,l)+ & 299 height(kz)-height(kz-1)321 height(kz)-height(kz-1) 300 322 if (lsp.ge.convp) then 301 323 cloudsn(ix,jy,kz,n,l)=3 ! lsp dominated rainout
Note: See TracChangeset
for help on using the changeset viewer.