Ignore:
Timestamp:
Jun 16, 2015, 7:01:30 PM (10 years ago)
Author:
slebonnois
Message:

SL: corrections in Titan and Venus tools

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/Tools/stability.F90

    r816 r1454  
    3131integer,dimension(4) :: datashape4d ! shape of 4D datasets
    3232
    33 real :: miss_val=9.99e+33 ! special "missing value" to specify missing data
    34 real,parameter :: miss_val_def=9.99e+33 ! default value for "missing value"
     33real :: miss_val ! special "missing value" to specify missing data
     34real,parameter :: miss_val_def=-9.99e+33 ! default value for "missing value"
    3535real :: pi
    3636real,dimension(:),allocatable :: lon ! longitude
    3737integer lonlength ! # of grid points along longitude
    3838real,dimension(:),allocatable :: lat ! latitude
    39 real,dimension(:),allocatable :: latrad ! latitude in radian
     39real,dimension(:),allocatable :: coslat ! cos of latitude
    4040integer latlength ! # of grid points along latitude
    4141real,dimension(:),allocatable :: plev ! Pressure levels (Pa)
     
    9191
    9292pi = 2.*asin(1.)
     93miss_val = miss_val_def
    9394
    9495write(*,*) ""
     
    129130if (ierr.ne.NF_NOERR) stop "Error: Failed reading lat"
    130131
    131 allocate(latrad(latlength))
    132 latrad = lat*pi/180.
     132allocate(coslat(latlength))
     133! Beware of rounding problems at poles...
     134coslat(:) = max(0.,cos(lat(:)*pi/180.))
    133135
    134136! Lat, lon pressure intervals
    135 deltalat = abs(latrad(2)-latrad(1))
     137deltalat = abs(lat(2)-lat(1))*pi/180.
    136138deltalon = abs(lon(2)-lon(1))*pi/180.
    137139
     
    180182
    181183text="temp"
    182 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,temp,ierr1,ierr2)
     184call get_var4d(infid,lonlength,latlength,altlength,timelength,text,temp,miss_val,ierr1,ierr2)
    183185if (ierr1.ne.NF_NOERR) then
    184186  write(*,*) "  looking for t instead... "
    185187  text="t"
    186   call get_var4d(infid,lonlength,latlength,altlength,timelength,text,temp,ierr1,ierr2)
     188  call get_var4d(infid,lonlength,latlength,altlength,timelength,text,temp,miss_val,ierr1,ierr2)
    187189  if (ierr1.ne.NF_NOERR) stop "Error: Failed to get temperature ID"
    188190endif
     
    197199! zonal wind vitu (in m/s)
    198200text="vitu"
    199 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitu,ierr1,ierr2)
     201call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitu,miss_val,ierr1,ierr2)
    200202if (ierr1.ne.NF_NOERR) stop "Error: Failed to get vitu ID"
    201203if (ierr2.ne.NF_NOERR) stop "Error: Failed reading zonal wind"
     
    203205! meridional wind vitv (in m/s)
    204206text="vitv"
    205 call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitv,ierr1,ierr2)
     207call get_var4d(infid,lonlength,latlength,altlength,timelength,text,vitv,miss_val,ierr1,ierr2)
    206208if (ierr1.ne.NF_NOERR) stop "Error: Failed to get vitv ID"
    207209if (ierr2.ne.NF_NOERR) stop "Error: Failed reading meridional wind"
     
    215217
    216218! text="zareoid"
    217 ! call get_var4d(infid,lonlength,latlength,altlength,timelength,text,za,ierr1,ierr2)
     219! call get_var4d(infid,lonlength,latlength,altlength,timelength,text,za,miss_val,ierr1,ierr2)
    218220! if (ierr1.ne.NF_NOERR) stop "Error: Failed to get za ID"
    219221! if (ierr2.ne.NF_NOERR) stop "Error: Failed reading zareoid"
     
    276278 grav(lonlength+1,:,:,:) =  grav(1,:,:,:)
    277279
    278 call cellmass(infid,latlength,lonlength+1,altlength,timelength, &
    279               lmdflag,deltalon,deltalat,latrad,plev,ps,grav,rayon, &
     280call cellmass(infid,latlength,lonlength+1,altlength,timelength,lmdflag, &
     281              miss_val,deltalon,deltalat,coslat,plev,ps,grav,rayon, &
    280282              dmass )
    281283
     
    364366
    365367do ilat=2,latlength-1
    366    if (tan(latrad(ilat)).ne.0.) then
    367      fac1 = R0/tan(latrad(ilat))
     368   if (tan(lat(ilat)*pi/180.).ne.0.) then
     369     fac1 = R0/tan(lat(ilat)*pi/180.)
    368370   else
    369371     fac1 = miss_val
Note: See TracChangeset for help on using the changeset viewer.