Changeset 76 for trunk/src


Ignore:
Timestamp:
08/09/11 18:09:00 (13 years ago)
Author:
pinsard
Message:

consolidation of interp_erai_msl_1989_2009.pro

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/interp_erai_msl_1989_2009.pro

    r75 r76  
    1 pro interp_erai_msl_1989_2009_v1 
    2 @common 
    3  
    4 filein='/Volumes/PRAVEEN/ERAI_global/20c3m_erai_msl_TROP_1989_2009.nc' 
    5 fileout='/Volumes/PRAVEEN/flux_reconstruction/basic_data/erai_d2m_19890101_20091231_oafluxgrid.nc' 
    6 gridout='/Volumes/PRAVEEN/work/flux_reconstruction/gridded_data/mask_oaflux_30N30S.nc' 
    7  
    8 initncdf, filein 
     1;+ 
     2; 
     3; .. _interp_erai_msl_1989_2009.pro: 
     4; 
     5; ============================= 
     6; interp_erai_msl_1989_2009.pro 
     7; ============================= 
     8; 
     9; DESCRIPTION 
     10; =========== 
     11; 
     12; Interpolation of msl from ERA-I grid to OAFLUX grid 
     13; 
     14; :file:`${PROJECT_ID}/20c3m_erai_msl_TROP_1989_2009.nc` containing msl from ERA-I have been produced 
     15; by :ref:`compute_erai_daily_region_2d.sh`. 
     16; 
     17; :file:`${PROJECT_ID}/mask_oaflux_30N30S.nc` containing OAFLUX grid have been produced by :ref:`oaflux_mask_30N30S.pro`. 
     18; 
     19; Interpolated msl is written in 
     20; :file:`${PROJECT_OD}/erai_msl_19890101_20091231_oafluxgrid.nc` if this file not already exists. 
     21; 
     22; This output file :file:`${PROJECT_OD}/erai_msl_19890101_20091231_oafluxgrid.nc` must be processed after by :ref:`d2m_to_q2m_erai.pro`. 
     23; 
     24; 
     25;     .. graphviz:: 
     26; 
     27;        digraph interp_erai_msl_1989_2009 { 
     28;           graph [ 
     29;           rankdir="LR", 
     30;           ] 
     31; 
     32;           file_in [shape=ellipse,fontname=Courier,label="${PROJECT_ID}/20c3m_erai_msl_TROP_1989_2009.nc"]; 
     33;           mask [shape=ellipse,fontname=Courier,label="${PROJECT_ID}/mask_oaflux_30N30S.nc"]; 
     34;           file_out [shape=ellipse,fontname=Courier,label="${PROJECT_OD}/erai_msl_19890101_20091231_oafluxgrid.nc"]; 
     35; 
     36;           interp_erai_msl_1989_2009 [shape=box, 
     37;           fontname=Courier, 
     38;           color=blue, 
     39;           URL="http://forge.ipsl.jussieu.fr/tropflux/browser/trunk/src/interp_erai_msl_1989_2009.pro", 
     40;           label="${PROJECT}/src/interp_erai_msl_1989_2009.pro"]; 
     41; 
     42;           {file_in mask} -> {interp_erai_msl_1989_2009} -> {file_out} 
     43; 
     44;          } 
     45; 
     46; SEE ALSO 
     47; ======== 
     48; 
     49; :ref:`project_profile.sh` 
     50; 
     51; :ref:`interpolate_data` 
     52; 
     53; :func:`report <saxo:report>` 
     54; :func:`isadirectory <saxo:isadirectory>` 
     55; :func:`isafile <saxo:isafile>` 
     56; :func:`initncdf <saxo:initncdf>` 
     57; :func:`read_ncdf <saxo:read_ncdf>` 
     58; :func:`domdef <saxo:domdef>` 
     59; :func:`call_interp2d <saxo:call_interp2d>` 
     60; :func:`ncdf_quickwrite <saxo:ncdf_quickwrite>` 
     61; 
     62; :ref:`d2m_to_q2m_erai.pro` 
     63; 
     64; EXAMPLES 
     65; ======== 
     66; 
     67; :: 
     68; 
     69;  IDL> .compile file_interp 
     70;  IDL> interp_erai_msl_1989_2009 
     71; 
     72; TODO 
     73; ==== 
     74; 
     75; no input file available 
     76; 
     77; hard coded scale factor ? mslin=mslin/100 
     78; 
     79; msl_attr={units:'milibars' .. millibar at least, hPa will be probably 
     80; more SI 
     81; 
     82; why 19880101,20100930 as dates 
     83; 
     84; KNOWN ISSUES 
     85; ============ 
     86; 
     87; test of existence of fullfilename_msk not very efficient because 
     88; MUST_EXIST keyword of :func:`isafile <saxo:isafile>` not yet implemented 
     89; 
     90; EVOLUTIONS 
     91; ========== 
     92; 
     93; $Id$ 
     94; 
     95; $URL$ 
     96; 
     97; - fplod 20110809T145539Z aedon.locean-ipsl.upmc.fr (Darwin) 
     98; 
     99;   * remove v1 from pro name and file 
     100;   * header 
     101;   * usage of ${PROJECT_ID} and ${PROJECT_OD} 
     102;   * remove return statement 
     103;   * add test on IO files 
     104;   * add OUTMASK_IND and SET_OUTMSKVAL to call_interp2d call 
     105; 
     106; - pbk 2008 
     107; 
     108;   * creation 
     109; 
     110;- 
     111pro interp_erai_msl_1989_2009 
     112; 
     113@cm_4cal 
     114@cm_4data 
     115@cm_4mesh 
     116@cm_4data 
     117@cm_project 
     118; 
     119; check for input directory 
     120; 
     121; test if ${PROJECT_ID} defined 
     122CASE project_id_env OF 
     123    ''  :  BEGIN 
     124     msg = 'eee : ${PROJECT_ID} is not defined' 
     125     ras = report(msg) 
     126     STOP 
     127           END 
     128 ELSE: BEGIN 
     129     msg = 'iii : ${PROJECT_ID} is ' + project_id_env 
     130     ras = report(msg) 
     131       END 
     132ENDCASE 
     133; 
     134iodirin = isadirectory(project_id_env) 
     135; 
     136; existence and protection of ${PROJECT_ID} 
     137IF (FILE_TEST(iodirin, /DIRECTORY, /EXECUTABLE, /READ) EQ 0) THEN BEGIN 
     138   msg = 'eee : the directory' + iodirin  + ' is not accessible.' 
     139   ras = report(msg) 
     140   STOP 
     141ENDIF 
     142; 
     143; build mask filename 
     144filename_msk='mask_oaflux_30N30S.nc' 
     145; 
     146; check if this file exists 
     147msg='iii : looking for ' + filename_msk 
     148ras = report(msg) 
     149fullfilename_msk = isafile(iodirin + filename_msk, NEW=0, /MUST_EXIST) 
     150IF fullfilename_msk[0] EQ '' THEN BEGIN 
     151   msg = 'eee : the file ' + fullfilename_msk + ' was not found.' 
     152   ras = report(msg) 
     153   STOP 
     154ENDIF 
     155; 
     156; build data filename 
     157filename='20c3m_erai_msl_TROP_1989_2009.nc' 
     158; 
     159; check if this file exists 
     160msg='iii : looking for ' + filename 
     161ras = report(msg) 
     162fullfilename = isafile(iodirin + filename, NEW=0, /MUST_EXIST) 
     163IF fullfilename[0] EQ '' THEN BEGIN 
     164   msg = 'eee : the file ' + fullfilename + ' was not found.' 
     165   ras = report(msg) 
     166   STOP 
     167ENDIF 
     168; 
     169; test if ${PROJECT_OD} defined 
     170CASE project_od_env OF 
     171  '' : BEGIN 
     172         msg = 'eee : ${PROJECT_OD} is not defined' 
     173         ras = report(msg) 
     174       STOP 
     175       END 
     176  ELSE: BEGIN 
     177          msg = 'iii : ${PROJECT_OD} is ' + project_od_env 
     178          ras = report(msg) 
     179        END 
     180 ENDCASE 
     181; 
     182; check if output data will be possible 
     183iodirout = isadirectory(project_od_env) 
     184; 
     185; existence and protection 
     186IF (FILE_TEST(iodirout, /DIRECTORY, /WRITE) EQ 0) THEN BEGIN 
     187    msg = 'eee : the directory' + iodirout  + ' was not found.' 
     188    ras = report(msg) 
     189    STOP 
     190ENDIF 
     191; 
     192; build output filename 
     193filename_out = 'erai_msl_19890101_20091231_oafluxgrid.nc' 
     194fullfilename_out = iodirout + filename_out 
     195; in order to avoid unexpected overwritten 
     196IF (FILE_TEST(fullfilename_out) EQ 1) THEN BEGIN 
     197   msg = 'eee : the file ' + fullfilename_out  + ' already exists.' 
     198   ras = report(msg) 
     199   STOP 
     200ENDIF 
     201 
     202initncdf, fullfilename 
    9203domdef 
    10204latin=reform(gphit(0,*)) & lonin=reform(glamt(*,0)) 
    11205print, 'lat grid ',min(latin),max(latin),latin(1)-latin(0) 
    12206print, 'lon grid ',min(lonin),max(lonin),lonin(1)-lonin(0) 
    13 mslin=read_ncdf("msl",19880101,20100930,file=filein,/nostr) 
     207mslin=read_ncdf("msl",19880101,20100930,file=fullfilename,/nostr) 
    14208 
    15209timein=time & jptin=jpt 
     
    17211mskin=glamt*0.+1. 
    18212 
    19 initncdf, gridout 
     213initncdf, fullfilename_msk 
    20214domdef 
    21215latout=reform(gphit(0,*)) & lonout=reform(glamt(*,0)) 
    22216print, 'lat grid ',min(latout),max(latout),latout(1)-latout(0) 
    23217print, 'lon grid ',min(lonout),max(lonout),lonout(1)-lonout(0) 
    24 mskout=read_ncdf("msk", file=gridout,/nostr) 
     218mskout=read_ncdf("msk", file=fullfilename_msk,/nostr) 
    25219mslin=mslin/100 
    26220 
     
    32226  print, 'Interpolation jt=',jt,' / ',jptin-1 
    33227  tab=reform(mslin(*,*,jt)) 
    34   mslout(*,*,jt)=call_interp2d(tab,lonin,latin,mskin,lonout,latout,method='bilinear') 
     228  mslout(*,*,jt)=call_interp2d(tab,lonin,latin,mskin $ 
     229      , lonout,latout,method='bilinear' $ 
     230      , OUTMASK_IND=mskout, SET_OUTMSKVAL=mskout) 
    35231  mslout(*,*,jt)=mslout(*,*,jt)*mskout+(1.-mskout)*1.e20 
    36232endfor 
     
    38234timein=timein & jptin=jpt 
    39235 
    40 initncdf, gridout 
     236initncdf, fullfilename_msk 
    41237;time=julday(1,2,1989)+lindgen(7516) 
    42238time=timegen(7670, units='days', start=julday(1,1,1989)) & jpt=n_elements(time) 
     
    47243lat=latout 
    48244lon=lonout 
    49 ncfile='!/Volumes/PRAVEEN/TropFlux/input_uncor/erai_msl_19890101_20091231_oafluxgrid.nc' 
     245ncfile='!' + fullfilename_out 
    50246lon_attr={units:'degrees_east',long_name:'Longitude'} 
    51247lat_attr={units:'degrees_north',long_name:'Latitude'} 
     
    54250globattr={source:'Data are from ECMWF ERA-Interim reanalysis', timerange:cda0+' - '+cda1} 
    55251 
    56  
    57252ncfields = 'msl[longitude,latitude,time]=mslout:msl_attr; ' $ 
    58253                      + 'longitude[]=lon:lon_attr; ' $ 
     
    63258@ncdf_quickwrite 
    64259 
    65  
    66260end 
Note: See TracChangeset for help on using the changeset viewer.