source: trunk/src/simul_epsat.m @ 327

Last change on this file since 327 was 327, checked in by pinsard, 13 years ago

change svn properties

  • Property svn:keywords set to URL
File size: 7.3 KB
Line 
1function [lon_value, lat_value, datejul_value, datestr_value, epsat_value]=simul_epsat(index_simulation)
2
3%SIMUL_EPSAT fill array Surface Rainrate 3D array and associated arrays lat,
4%lon, date with simulated data
5
6%
7%+
8%
9% =============
10% simul_epsat.m
11% =============
12%
13% .. function:: simul_epsat(index_simulation)
14%
15% DESCRIPTION
16% ===========
17%
18%    :param index_simulation: index of simulation
19%    :type index_simulation: int8
20%    :raise index_simulation: required
21%
22% Charge en mémoire un tableau 3D simulé **epsat_value** de Surface Rainrate
23% dimension 1 : temps, dimension 2 : lon,  dimension 3 : lat
24%
25% Simulation #1
26%    la zone géographique [20°E,10°E] [10°N,20°N] avec un point tous les 5° en
27%    latitude et 5° en longitude et dans la zone temporelle 20060726-20060727
28%    avec un point toutes les 1/2 heure
29%
30% Simulation #2
31%    la zone géographique [24.95°E,4°E] [24.95°S,25°N] avec 250 points en
32%    latitude
33%    et 500 points en longitude dans la zone temporelle 20060726-20060726
34%    avec un point toutes les 1/2 heure
35%
36% Simulation #3
37%    la zone géographique [20°E,10°E] [10°N,20°N] avec un point tous les 5° en
38%    latitude et 5° en longitude et dans la zone temporelle 20060727
39%
40% Les longitudes sont stockées dans le tableau **lon_value**.
41%
42% Les latitudes sont stockées dans le tableau **lat_value**.
43%
44% Les dates au format `yyyymmddhhmn` sont stockés dans le tableau
45% **datestr_value** et les dates en jour julien sont stockées dans
46% **datejul_value**.
47%
48% EXAMPLES
49% ========
50%
51% From scratch to create short array of Surface Rainrate and associated arrays
52% lat, long and datestr:
53%
54% see demo 1
55%
56% To plot the grid::
57%
58%   octave> showgrid(lon_value, lat_value);
59%
60% From scratch to create long array of Surface Rainrate and associated arrays
61% lat, long and datestr:
62%
63% see demo 2
64%
65% To plot the grid::
66%
67%   octave> result=showgrid(lon_value, lat_value);
68%
69% SEE ALSO
70% ========
71%
72% :ref:`data_epsat`
73%
74% :func:`EPSATread`
75%
76% :func:`showgrid`
77%
78% :func:`cumulEPSAT_day`
79%
80% TODO
81% ====
82%
83% des valeurs de Surface Rainrate plus réalistes y compris des NaN
84%
85% returned values when error
86%
87% use in other EPSAT tools
88%
89% EVOLUTIONS
90% ==========
91%
92% $Id: simul_epsat.m 199 2011-03-04 10:11:00Z pinsard $
93%
94% $URL$
95%
96% - fplod 20110609T080107Z aedon.locean-ipsl.upmc.fr (Darwin)
97%
98%   * add datejul_value output
99%   * rearrange epsat_value dimension
100%     dimension 1 : temps, dimension 2 : lon,  dimension 3 : lat
101%
102% - fplod 20110310T135704Z aedon.locean-ipsl.upmc.fr (Darwin)
103%
104%   * fix lon_delta for simulation 2
105%   * correction on the time dimension of epsat_value (not
106%     numel(datestr_value) )!
107%   * correction to have 48 time steps / day (not 49 !)
108%   * add simulation 3 for one day
109%   * reduce simulation 2 to one day
110%   * use linspace because strange behaviour of octave using lat_delta
111%     (was 249 lat point instead of 250 in simulation #2)
112%
113%   * nb : no more crash on octave 3.2.4 cratos
114%
115% - fplod 20110308
116%
117%   * creation
118%-
119%
120result=-1;
121%
122usage='lon_value, lat_value, datejul_value, datestr_value, epsat_value]=simul_epsat(index_simulation)';
123if nargin~=1
124   disp(['Incorrect number of arguments']);
125   error(usage)
126end
127%
128arg_info=whos('index_simulation');
129if ~strcmp(arg_info.class,'int8')
130   disp(['Incorrect type of arg index_simulation']);
131   whos index_simulation
132   error(usage);
133end
134clear arg_info
135%
136% définition de la zone géographique : les coins en degré et les résolutions
137if (index_simulation == 1)
138   lonmin_value=-25;
139   lonmax_value=+25;
140   latmin_value=-5.;
141   latmax_value=20.;
142   lat_delta = 5.;
143   lon_delta = 5.;
144   lat_nbpoint = NaN;
145   lon_nbpoint = NaN;
146elseif (index_simulation == 2 )
147   % use first two and last values of LATITUDE and LONGITUDE of
148   % surf-rr_epsat-sg_multi-sat_010d_30min_20060726_v3.1-02c.nc
149   % to choose realistic geographic range
150   lonmin_value=-24.95;
151   lonmax_value=+25;
152   latmin_value=-4.95;
153   latmax_value=19.95;
154   lat_delta = NaN;
155   lon_delta = NaN;
156   lat_nbpoint = 250;
157   lon_nbpoint = 500;
158elseif (index_simulation == 3)
159   lonmin_value=-25;
160   lonmax_value=+25;
161   latmin_value=-5.
162   latmax_value=20.
163   lat_delta = 5.;
164   lon_delta = 5.;
165   lat_nbpoint = NaN;
166   lon_nbpoint = NaN;
167else
168   error(['eee : unknow simulation ' num2str(index_simulation)]);
169end
170%
171% définition de la zone temporelle : date début, date fin et la résolution
172if (index_simulation == 1)
173   yyyymin_value=2006;
174   yyyymax_value=2006;
175   mmmin_value=07;
176   mmmax_value=07;
177   ddmin_value=26;
178   ddmax_value=27;
179   datestr_delta=(datenum(2000,1,2)-datenum(2000,1,1))/48.;
180elseif (index_simulation == 2 )
181   yyyymin_value=2006;
182   yyyymax_value=2006;
183   mmmin_value=07;
184   mmmax_value=07;
185   ddmin_value=26;
186   ddmax_value=27;
187   datestr_delta=(datenum(2000,1,2)-datenum(2000,1,1))/48.;
188elseif (index_simulation == 3)
189   yyyymin_value=2006;
190   yyyymax_value=2006;
191   mmmin_value=07;
192   mmmax_value=07;
193   ddmin_value=26;
194   ddmax_value=27;
195   datestr_delta=(datenum(2000,1,2)-datenum(2000,1,1))/48.;
196else
197   error(['eee : unknow simulation ' num2str(index_simulation)]);
198end
199clear index_simulation
200%
201% création du tableau des longitudes
202if (~isnan(lon_delta))
203   lon_value=transpose(lonmin_value:lon_delta:lonmax_value);
204   lon_nbpoint=size(lon_value,1);
205   clear lon_delta
206else
207   lon_value=transpose(linspace(lonmin_value,lonmax_value,lon_nbpoint));
208end
209clear lonmin_value
210clear lonmax_value
211%
212% création du tableau des latitudes
213if (~isnan(lat_delta))
214   lat_value=transpose(latmin_value:lat_delta:latmax_value);
215   lat_nbpoint=size(lat_value,1);
216   clear lon_delta
217else
218   lat_value=transpose(linspace(latmin_value,latmax_value,lat_nbpoint));
219end
220clear latmin_value
221clear latmax_value
222clear lat_delta
223%
224datejul_value=datenum(yyyymin_value,mmmin_value,ddmin_value):datestr_delta:datenum(yyyymax_value,mmmax_value,ddmax_value);
225clear yyyymin_value
226clear yyyymax_value
227clear mmmin_value
228clear mmmax_value
229clear ddmin_value
230clear ddmax_value
231clear datestr_delta
232%
233% conversion datenum (unité octave/matlab) en format "yyyymmddhhmn"
234datestr_value=datestr(datejul_value,'yyyymmddHHMM');
235datestr_value=datestr_value(1:end-1,:);
236%
237% création de tableau Surface Rainrate
238epsat_value=zeros(size(datestr_value,1),numel(lon_value),numel(lat_value));
239epsat_value(:,:,:)=NaN;
240for index_datestr=1:size(datestr_value,1)
241    for index_lon=1:numel(lon_value)
242        for index_lat=1:numel(lat_value)
243            epsat_value(index_datestr,index_lon,index_lat)=(index_datestr+index_lon)/100. + (index_datestr+index_lat)/100.;
244        end
245   end
246end
247clear index_lat
248clear numel(lon_value)
249clear index_lon
250clear index_datestr
251%
252% whos
253%
254result=0;
255%
256end
257
258%!demo
259%! % From scratch to create short array of Surface Rainrate and associated
260%! % arrays lat, long and datestr::
261%! varamma_startup
262%! more off
263%! index_simulation=int8(1);
264%! [lon_value, lat_value, datejul_value, datestr_value, epsat_value]=simul_epsat(index_simulation);
265%! whos
266
267%!demo
268%! % From scratch to create long array of Surface Rainrate and associated
269%! % arrays lat, long and datestr::
270%! varamma_startup
271%! more off
272%! index_simulation=int8(2);
273%! [lon_value, lat_value, datejul_value, datestr_value, epsat_value]=simul_epsat(index_simulation);
274%! whos
275
276%!demo
277%! % From scratch to create short array of Surface Rainrate and associated
278%! % arrays lat, long and datestr::
279%! varamma_startup
280%! more off
281%! index_simulation=int8(3);
282%! [lon_value, lat_value, datejul_value, datestr_value, epsat_value]=simul_epsat(index_simulation);
283%! whos
Note: See TracBrowser for help on using the repository browser.