Changeset 2346 for LMDZ5/trunk/libf/phylmd/aaam_bud.F90
- Timestamp:
- Aug 21, 2015, 5:13:46 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/aaam_bud.F90
r2311 r2346 6 6 7 7 USE dimphy 8 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat 8 9 IMPLICIT NONE 9 10 ! ====================================================================== … … 58 59 ! =================== 59 60 60 ! iim--common-I: Number of longitude intervals61 ! jjm--common-I: Number of latitude intervals61 ! nbp_lon--common-I: Number of longitude intervals 62 ! (nbp_lat-1)--common-I: Number of latitude intervals 62 63 ! klon-common-I: Number of points seen by the physics 63 ! iim*(jjm-1)+2 for instance64 ! nbp_lon*(nbp_lat-2)+2 for instance 64 65 ! klev-common-I: Number of vertical layers 65 66 ! ====================================================================== … … 84 85 ! ====================================================================== 85 86 86 include "dimensions.h"87 ! cc#include "dimphy.h"88 89 87 ! ARGUMENTS 90 88 … … 121 119 ! PUT AAM QUANTITIES AT ZERO: 122 120 123 IF ( iim+1>801 .OR. jjm+1>401) THEN121 IF (nbp_lon+1>801 .OR. nbp_lat>401) THEN 124 122 abort_message = 'Pb de dimension dans aaam_bud' 125 123 CALL abort_physic(modname, abort_message, 1) … … 129 127 hadley = 1.E18 130 128 hadday = 1.E18*24.*3600. 131 dlat = xpi/real( jjm)132 dlon = 2.*xpi/real( iim)129 dlat = xpi/real(nbp_lat-1) 130 dlon = 2.*xpi/real(nbp_lon) 133 131 134 132 DO iax = 1, 3 … … 155 153 zlat(1) = plat(l)*xpi/180. 156 154 157 DO i = 1, iim+ 1155 DO i = 1, nbp_lon + 1 158 156 159 157 zs(i, 1) = phis(l)/rg … … 169 167 170 168 171 DO j = 2, jjm169 DO j = 2, nbp_lat-1 172 170 173 171 ! Values at Greenwich (Periodicity) 174 172 175 zs( iim+1, j) = phis(l+1)/rg176 ps( iim+1, j) = p(l+1, 1)177 ssou( iim+1, j) = dragu(l+1) + liftu(l+1)178 ssov( iim+1, j) = dragv(l+1) + liftv(l+1)179 blsu( iim+1, j) = phyu(l+1) - dragu(l+1) - liftu(l+1)180 blsv( iim+1, j) = phyv(l+1) - dragv(l+1) - liftv(l+1)181 zlon( iim+1) = -plon(l+1)*xpi/180.173 zs(nbp_lon+1, j) = phis(l+1)/rg 174 ps(nbp_lon+1, j) = p(l+1, 1) 175 ssou(nbp_lon+1, j) = dragu(l+1) + liftu(l+1) 176 ssov(nbp_lon+1, j) = dragv(l+1) + liftv(l+1) 177 blsu(nbp_lon+1, j) = phyu(l+1) - dragu(l+1) - liftu(l+1) 178 blsv(nbp_lon+1, j) = phyv(l+1) - dragv(l+1) - liftv(l+1) 179 zlon(nbp_lon+1) = -plon(l+1)*xpi/180. 182 180 zlat(j) = plat(l+1)*xpi/180. 183 181 184 ub( iim+1, j) = 0.185 vb( iim+1, j) = 0.182 ub(nbp_lon+1, j) = 0. 183 vb(nbp_lon+1, j) = 0. 186 184 DO k = 1, nlev 187 ub( iim+1, j) = ub(iim+1, j) + u(l+1, k)*(p(l+1,k)-p(l+1,k+1))/rg188 vb( iim+1, j) = vb(iim+1, j) + v(l+1, k)*(p(l+1,k)-p(l+1,k+1))/rg189 END DO 190 191 192 DO i = 1, iim185 ub(nbp_lon+1, j) = ub(nbp_lon+1, j) + u(l+1, k)*(p(l+1,k)-p(l+1,k+1))/rg 186 vb(nbp_lon+1, j) = vb(nbp_lon+1, j) + v(l+1, k)*(p(l+1,k)-p(l+1,k+1))/rg 187 END DO 188 189 190 DO i = 1, nbp_lon 193 191 194 192 l = l + 1 … … 215 213 ! South Pole 216 214 217 IF ( jjm>1) THEN215 IF (nbp_lat-1>1) THEN 218 216 l = l + 1 219 ub(1, jjm+1) = 0.220 vb(1, jjm+1) = 0.217 ub(1, nbp_lat) = 0. 218 vb(1, nbp_lat) = 0. 221 219 DO k = 1, nlev 222 ub(1, jjm+1) = ub(1, jjm+1) + u(l, k)*(p(l,k)-p(l,k+1))/rg223 vb(1, jjm+1) = vb(1, jjm+1) + v(l, k)*(p(l,k)-p(l,k+1))/rg224 END DO 225 zlat( jjm+1) = plat(l)*xpi/180.226 227 DO i = 1, iim+ 1228 zs(i, jjm+1) = phis(l)/rg229 ps(i, jjm+1) = p(l, 1)230 ssou(i, jjm+1) = dragu(l) + liftu(l)231 ssov(i, jjm+1) = dragv(l) + liftv(l)232 blsu(i, jjm+1) = phyu(l) - dragu(l) - liftu(l)233 blsv(i, jjm+1) = phyv(l) - dragv(l) - liftv(l)234 ub(i, jjm+1) = ub(1, jjm+1)235 vb(i, jjm+1) = vb(1, jjm+1)220 ub(1, nbp_lat) = ub(1, nbp_lat) + u(l, k)*(p(l,k)-p(l,k+1))/rg 221 vb(1, nbp_lat) = vb(1, nbp_lat) + v(l, k)*(p(l,k)-p(l,k+1))/rg 222 END DO 223 zlat(nbp_lat) = plat(l)*xpi/180. 224 225 DO i = 1, nbp_lon + 1 226 zs(i, nbp_lat) = phis(l)/rg 227 ps(i, nbp_lat) = p(l, 1) 228 ssou(i, nbp_lat) = dragu(l) + liftu(l) 229 ssov(i, nbp_lat) = dragv(l) + liftv(l) 230 blsu(i, nbp_lat) = phyu(l) - dragu(l) - liftu(l) 231 blsv(i, nbp_lat) = phyv(l) - dragv(l) - liftv(l) 232 ub(i, nbp_lat) = ub(1, nbp_lat) 233 vb(i, nbp_lat) = vb(1, nbp_lat) 236 234 END DO 237 235 END IF … … 240 238 ! MOMENT ANGULAIRE 241 239 242 DO j = 1, jjm243 DO i = 1, iim240 DO j = 1, nbp_lat-1 241 DO i = 1, nbp_lon 244 242 245 243 raam(1) = raam(1) - rea**3*dlon*dlat*0.5*(cos(zlon(i))*sin(zlat(j))*cos & … … 274 272 275 273 276 DO j = 1, jjm277 DO i = 1, iim274 DO j = 1, nbp_lat-1 275 DO i = 1, nbp_lon 278 276 tmou(1) = tmou(1) - rea**2*dlon*0.5*sin(zlon(i))*(zs(i,j)-zs(i,j+1))*( & 279 277 cos(zlat(j+1))*ps(i,j+1)+cos(zlat(j))*ps(i,j)) … … 283 281 END DO 284 282 285 DO j = 2, jjm286 DO i = 1, iim283 DO j = 2, nbp_lat-1 284 DO i = 1, nbp_lon 287 285 tmou(1) = tmou(1) + rea**2*dlat*0.5*sin(zlat(j))*(zs(i+1,j)-zs(i,j))*( & 288 286 cos(zlon(i+1))*ps(i+1,j)+cos(zlon(i))*ps(i,j)) … … 298 296 299 297 l = 1 300 DO j = 2, jjm301 DO i = 1, iim298 DO j = 2, nbp_lat-1 299 DO i = 1, nbp_lon 302 300 l = l + 1 303 301 tsso(1) = tsso(1) - rea**3*cos(zlat(j))*dlon*dlat*ssou(i, j)*sin(zlat(j & … … 341 339 100 FORMAT (F12.5, 15(1X,F12.5)) 342 340 343 ! write(iam+1,*)((zs(i,j),i=1, iim),j=1,jjm+1)344 ! write(iam+1,*)((ps(i,j),i=1, iim),j=1,jjm+1)345 ! write(iam+1,*)((ub(i,j),i=1, iim),j=1,jjm+1)346 ! write(iam+1,*)((vb(i,j),i=1, iim),j=1,jjm+1)347 ! write(iam+1,*)((ssou(i,j),i=1, iim),j=1,jjm+1)348 ! write(iam+1,*)((ssov(i,j),i=1, iim),j=1,jjm+1)349 ! write(iam+1,*)((blsu(i,j),i=1, iim),j=1,jjm+1)350 ! write(iam+1,*)((blsv(i,j),i=1, iim),j=1,jjm+1)341 ! write(iam+1,*)((zs(i,j),i=1,nbp_lon),j=1,nbp_lat) 342 ! write(iam+1,*)((ps(i,j),i=1,nbp_lon),j=1,nbp_lat) 343 ! write(iam+1,*)((ub(i,j),i=1,nbp_lon),j=1,nbp_lat) 344 ! write(iam+1,*)((vb(i,j),i=1,nbp_lon),j=1,nbp_lat) 345 ! write(iam+1,*)((ssou(i,j),i=1,nbp_lon),j=1,nbp_lat) 346 ! write(iam+1,*)((ssov(i,j),i=1,nbp_lon),j=1,nbp_lat) 347 ! write(iam+1,*)((blsu(i,j),i=1,nbp_lon),j=1,nbp_lat) 348 ! write(iam+1,*)((blsv(i,j),i=1,nbp_lon),j=1,nbp_lat) 351 349 352 350 aam = raam(3)
Note: See TracChangeset
for help on using the changeset viewer.