Changeset 1454 for trunk/LMDZ.VENUS/Tools/angmom.F90
- Timestamp:
- Jun 16, 2015, 7:01:30 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/Tools/angmom.F90
r1356 r1454 47 47 integer,dimension(4) :: datashape4d ! shape of 4D datasets 48 48 49 real :: miss_val =9.99e+33! special "missing value" to specify missing data50 real,parameter :: miss_val_def= 9.99e+33 ! default value for "missing value"49 real :: miss_val ! special "missing value" to specify missing data 50 real,parameter :: miss_val_def=-9.99e+33 ! default value for "missing value" 51 51 real :: pi 52 52 real,dimension(:),allocatable :: lon ! longitude 53 53 integer lonlength ! # of grid points along longitude 54 54 real,dimension(:),allocatable :: lat ! latitude 55 real,dimension(:),allocatable :: latrad ! latitude in radian55 real,dimension(:),allocatable :: coslat ! cos of latitude 56 56 integer latlength ! # of grid points along latitude 57 57 real,dimension(:),allocatable :: plev ! Pressure levels (Pa) … … 117 117 118 118 pi = 2.*asin(1.) 119 miss_val = miss_val_def 119 120 120 121 write(*,*) "" … … 160 161 if (ierr.ne.NF_NOERR) stop "Error: Failed reading lat" 161 162 162 allocate(latrad(latlength)) 163 latrad = lat*pi/180. 163 allocate(coslat(latlength)) 164 ! Beware of rounding problems at poles... 165 coslat(:) = max(0.,cos(lat(:)*pi/180.)) 164 166 165 167 ! Lat, lon pressure intervals 166 deltalat = abs(lat rad(2)-latrad(1))168 deltalat = abs(lat(2)-lat(1))*pi/180. 167 169 deltalon = abs(lon(2)-lon(1))*pi/180. 168 170 … … 281 283 endif 282 284 283 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitu, ierr1,ierr2)285 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitu,miss_val,ierr1,ierr2) 284 286 if (ierr1.ne.NF_NOERR) stop "Error: Failed to get U ID" 285 287 if (ierr2.ne.NF_NOERR) stop "Error: Failed reading zonal wind" … … 295 297 296 298 !text="zareoid" 297 !call get_var4d(infid,lonlength,latlength,altlength,timelength,text,za, ierr1,ierr2)299 !call get_var4d(infid,lonlength,latlength,altlength,timelength,text,za,miss_val,ierr1,ierr2) 298 300 !if (ierr1.ne.NF_NOERR) stop "Error: Failed to get za ID" 299 301 !if (ierr2.ne.NF_NOERR) stop "Error: Failed reading zareoid" … … 309 311 text="DUVDF" 310 312 endif 311 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,duvdf, ierr1,ierr2)313 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,duvdf,miss_val,ierr1,ierr2) 312 314 if (ierr1.ne.NF_NOERR) then 313 315 write(*,*) "Failed to get duvdf ID" … … 357 359 358 360 text="dugwo" 359 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dugwo, ierr1,ierr2)361 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dugwo,miss_val,ierr1,ierr2) 360 362 if (ierr1.ne.NF_NOERR) then 361 363 write(*,*) "Failed to get dugwo ID" … … 367 369 368 370 text="dugwno" 369 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dugwno, ierr1,ierr2)371 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dugwno,miss_val,ierr1,ierr2) 370 372 if (ierr1.ne.NF_NOERR) then 371 373 write(*,*) "Failed to get dugwno ID" … … 390 392 391 393 text="duajs" 392 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,duajs, ierr1,ierr2)394 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,duajs,miss_val,ierr1,ierr2) 393 395 if (ierr1.ne.NF_NOERR) then 394 396 write(*,*) "Failed to get duajs ID" … … 414 416 text="DUDYN" 415 417 endif 416 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dudyn, ierr1,ierr2)418 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,dudyn,miss_val,ierr1,ierr2) 417 419 if (ierr1.ne.NF_NOERR) then 418 420 write(*,*) "Failed to get dudyn ID" … … 486 488 enddo ! timelength 487 489 488 call cellmass(infid,latlength,lonlength,altlength,timelength, &489 lmdflag,deltalon,deltalat,latrad,plev,ps,grav,rayon, &490 call cellmass(infid,latlength,lonlength,altlength,timelength,lmdflag, & 491 miss_val,deltalon,deltalat,coslat,plev,ps,grav,rayon, & 490 492 dmass ) 491 493 … … 504 506 osam(ilon,ilat,ilev,itim) = & 505 507 rayon(ilon,ilat,ilev,itim)*rayon(ilon,ilat,ilev,itim) & 506 * cos (latrad(ilat))*cos(latrad(ilat)) &508 * coslat(ilat)*coslat(ilat) & 507 509 * omega 508 510 rsam(ilon,ilat,ilev,itim) = vitu(ilon,ilat,ilev,itim) & 509 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat))511 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) 510 512 else 511 513 osam(ilon,ilat,ilev,itim) = miss_val … … 569 571 tmpp = (ps(ilon+1,ilat,itim) +ps(ilon,ilat,itim))/2. 570 572 endif 571 tmou(itim) = tmou(itim) + a0*a0* deltalat*cos (latrad(ilat)) &573 tmou(itim) = tmou(itim) + a0*a0* deltalat*coslat(ilat) & 572 574 * signe*dz*tmpp & 573 575 / hadley … … 582 584 if (rayon(ilon,ilat,ilev,itim).ne.miss_val) then 583 585 tdyn(itim) = tdyn(itim) + dudyn(ilon,ilat,ilev,itim) & 584 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat)) &586 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) & 585 587 * dmass(ilon,ilat,ilev,itim) & 586 588 / hadley … … 599 601 if (rayon(ilon,ilat,ilev,itim).ne.miss_val) then 600 602 tajs(itim) = tajs(itim) + duajs(ilon,ilat,ilev,itim) & 601 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat)) &603 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) & 602 604 * dmass(ilon,ilat,ilev,itim) & 603 605 / hadley … … 616 618 if (rayon(ilon,ilat,ilev,itim).ne.miss_val) then 617 619 tbls(itim) = tbls(itim) + duvdf(ilon,ilat,ilev,itim) & 618 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat)) &620 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) & 619 621 * dmass(ilon,ilat,ilev,itim) & 620 622 / hadley … … 633 635 if (rayon(ilon,ilat,ilev,itim).ne.miss_val) then 634 636 tgwo(itim) = tgwo(itim) + dugwo(ilon,ilat,ilev,itim) & 635 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat)) &637 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) & 636 638 * dmass(ilon,ilat,ilev,itim) & 637 639 / hadley … … 650 652 if (rayon(ilon,ilat,ilev,itim).ne.miss_val) then 651 653 tgwno(itim) = tgwno(itim) + dugwno(ilon,ilat,ilev,itim) & 652 * rayon(ilon,ilat,ilev,itim)*cos (latrad(ilat)) &654 * rayon(ilon,ilat,ilev,itim)*coslat(ilat) & 653 655 * dmass(ilon,ilat,ilev,itim) & 654 656 / hadley
Note: See TracChangeset
for help on using the changeset viewer.