Changeset 139 for altifloat


Ignore:
Timestamp:
03/27/15 15:19:37 (9 years ago)
Author:
jbrlod
Message:

add functionalities to mask the model experiment

Location:
altifloat/matlab_toolbox
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • altifloat/matlab_toolbox/aviso2yao.m

    r133 r139  
    1 function [] = aviso2yao( aviso_netcdf, meshmask,outfile,outmask) 
    2 % [] = aviso2yao( aviso_netcdf_file, meshmask,outfile,outmask) 
     1function [Yao_uv,mask1] = aviso2yao( aviso_netcdf, meshmask,outfile,outmask,convlon) 
     2% [Yao_uv,mask1] = aviso2yao( aviso_netcdf, meshmask,outfile,outmask) 
    33% Read AVISO file aviso_netcdf_file and save to be read by read_bck (time step=1) 
    44% Interpolate on meshmask (meshmask : two columns lon,lat) 
     
    1111   
    1212 
    13 %%%%%%%%%% Usually use: 
    14 %%%%%%%%%% Nlat=58; %Phi 
    15 %%%%%%%%%% Nlong=87; %Lambda 
    16   %% aviso_netcdf='../../data/AVISO/dt_med_allsat_madt_uv_20130828_20140704.nc' 
    17   %% meshmask='../obs_float/meshgrid3.dat' 
    18   %% outfile='../obs_float/uv_bck_20130828.dat'; 
    19   %% outmask='../obs_float/mask_20130828.dat'; 
     13% Usually use: 
     14% Nlat=58; %Phi 
     15% Nlong=87; %Lambda 
     16% aviso_netcdf='../../data/AVISO/dt_med_allsat_madt_uv_20130828_20140704.nc' 
     17 
     18% meshmask='../obs_float/meshgrid3.dat' 
     19% outfile='../obs_float/uv_bck_20130828.dat'; 
     20% outmask='../obs_float/mask_20130828.dat'; 
    2021 
    2122write_u=1; 
     23if ~exist('convlon') 
     24    convlon=true; 
     25end 
    2226 
    2327  
     
    5862[LAT,LON]=meshgrid(lat,lon); %C'est à l'envers à cause de matlab 
    5963 
     64if convlon 
    6065%Conversion des longitudes 
    6166LON=LON-360; 
     67end 
    6268 
    6369%Conversion des vitesses inutile (malgré le champ scale_factor, ce que je trouve bizarre, 
     
    7379 
    7480mask1=mask(:); 
     81 
     82if (exist('outmask') & ~isempty(outmask)) 
    7583dlmwrite(outmask,mask1,'precision',1); 
     84end 
    7685 
    77 %%Masked velocity are zero 
     86%Masked velocity are zero 
    7887Uint(mask==0)=0; 
    7988Vint(mask==0)=0; 
     
    136145Yao_uv=[ ones(Nlong*Nlat,1)  cd_lon(:) cd_lat(:)  u_yao1 v_yao1]; 
    137146 
    138 if (write_u==1) 
     147if (write_u==1 & exist('outfile') & ~isempty(outfile)) 
    139148 
    140149dlmwrite(outfile,Yao_uv,'\t'); 
  • altifloat/matlab_toolbox/interp_bck.m

    r135 r139  
    1 function []=interp_bck(uv_b1,uv_b2,it1,it2,dt,outfile) 
     1function [UV_bck,mask_back]=interp_bck(uv,it,dt,meshmask,outfile,outmask) 
    22 %[]=interp_bck(uv_b1,uv_b2,it1,it2,dt) 
    33 %Time unit : hour 
     4 % Cells containing file names in nc format 
     5 % it : time step of each file 
    46    
    5    %Check if same coordinate 
    6       
    7      %uv_b1='../obs_float/uv_bck_20130828.dat' 
    8      %uv_b2='../obs_float/uv_bck_20130828.dat' 
    9      %it1=1; 
    10      %it2=47; 
    11      %dt=2; 
    12      %outfile='../obs_float/uv_bk_24pdt_const.dat' 
    13         
    14      uv1=load(uv_b1); 
    15      uv2=load(uv_b2); 
    16      delta=(uv1(:,2:3)-uv2(:,2:3)).^2; 
     7%Check if same coordinate 
     8 
     9%uv_b1='../obs_float/uv_bck_20130828.dat' 
     10%uv_b2='../obs_float/uv_bck_20130828.dat' 
     11%it1=1; 
     12%it2=47; 
     13%dt=2; 
     14%outfile='../obs_float/uv_bk_24pdt_const.dat' 
     15 
     16%The grid in degrees  
     17meshgrid2=load(meshmask); 
     18Nlong=length(unique(meshgrid2(:,1))); 
     19Nlat=length(unique(meshgrid2(:,2))); 
     20 
     21UV_bck=[]; 
     22mask_back=ones(Nlat*Nlong,1); 
     23 
     24 
     25for idf=1:length(uv)-1 
     26     
     27    uv_b1=uv{idf}; 
     28    uv_b2=uv{idf+1}; 
     29    it1=it(idf); 
     30    it2=it(idf+1); 
     31     
     32    %     uv1=load(uv_b1); 
     33    %     uv2=load(uv_b2); 
     34    [uv1,mask1]=aviso2yao(uv_b1,meshmask,[],[],false); 
     35    [uv2,mask2]=aviso2yao(uv_b1,meshmask,[],[],false); 
     36     
     37    mask_back=mask_back.*mask1.*mask2; 
     38     
     39    delta=(uv1(:,2:3)-uv2(:,2:3)).^2; 
    1740     if (sum(delta(:))>1e-8) 
    1841       fprintf(2,'Coordinates does not match\n'); 
     
    3154 
    3255       end 
    33         
    3456       tt=repmat(1:length(t),size(uv1,1),1); 
    3557       tt=tt(:); 
    3658        
    37        UV_bck=[tt,repmat(uv1(:,2:3),length(t),1),ui(:),vi(:)]; 
     59       UV_bck=[UV_bck;[tt,repmat(uv1(:,2:3),length(t),1),ui(:),vi(:)]]; 
     60 
     61end %for idf 
    3862        
    3963       dlmwrite(outfile,UV_bck,'\t'); 
    40       
     64       dlmwrite(outmask,mask_back,'precision',1) 
    4165     end 
    4266      
Note: See TracChangeset for help on using the changeset viewer.