source: trunk/src/simul_msg.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: 6.6 KB
Line 
1function [lon_value, lat_value, datejul_value, datestr_value, msg_tb108]=simul_msg(index_simulation)
2
3%SIMUL_MSG fill array tb108 3D array and associated arrays lat, lon, date
4%with simulated data
5
6%
7%+
8%
9% ===========
10% simul_msg.m
11% ===========
12%
13% .. function:: simul_msg(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é **msg_tb108** de tb108
23% dimension 1 : temps, dimension 2 : lon,  dimension 3 : lat
24%
25% Simulation #1
26%    la zone géographique [20°W,10°W] [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 ts les 1/4 d'heure
29%
30% Simulation #2
31%    la zone géographique [++°W,++°W] [++°N,++°N] avec 928 points en latitude
32%    et 1856 points en longitude dans la zone temporelle 20060726-20060731
33%    avec un point ts 1/4 d'heure
34%
35% Simulation #3
36%    la zone géographique [20°W,10°W] [10°N,20°N] avec un point tous les 5° en
37%    latitude et 5° en longitude et dans la zone temporelle 20060726-20060727
38%
39% Les longitudes sont stockées dans le tableau **lon_value**.
40%
41% Les latitudes sont stockées dans le tableau **lat_value**.
42%
43% Les dates au format `yyyymmddhhmn` sont stockés dans le tableau **datestr_value**.
44% et les dates en jour julien sont stockées dans **datejul_value**.
45%
46% EXAMPLES
47% ========
48%
49% From scratch to create short array of tb108 and associated arrays lat, long
50% and datestr (4 days) :
51%
52% see demo 1
53%
54% To plot the grid::
55%
56%   octave> showgrid(lon_value, lat_value);
57%
58% From scratch to create long array of tb108 and associated arrays lat, long
59% and datestr:
60%
61% see demo 2
62%
63% To plot the grid::
64%
65%   octave> result=showgrid(lon_value, lat_value);
66%
67% From scratch to create short array of tb108 and associated arrays lat, long
68% and datestr (1 day) :
69%
70% see demo 3
71%
72% SEE ALSO
73% ========
74%
75% :ref:`data_msg`
76%
77% :func:`MSGread`
78%
79% TODO
80% ====
81%
82% des valeurs de tb108 plus réalistes y compris des NaN
83%
84% fix octave pb for simulation #2::
85%
86%   error: memory exhausted or requested size too large for range of Octave's index type -- trying to return to prompt
87%
88% too long for simulation #2 using matlab
89%
90% returned values when error
91%
92% use in other MSG tools
93%
94% EVOLUTIONS
95% ==========
96%
97% $Id: simul_msg.m 199 2011-03-04 10:11:00Z pinsard $
98%
99% $URL$
100%
101% - fplod 20110621T075258Z aedon.locean-ipsl.upmc.fr (Darwin)
102%
103%   * suppression d'un case en trop de datejul_value
104%   * passage de datejul_value de vectuer ligne à vecteur colonne pour
105%     être plus proche des sorties de MSGread
106%
107% - fplod 20110609T124035Z aedon.locean-ipsl.upmc.fr (Darwin)
108%   
109%   * boite à l'ouest !
110%
111% - fplod 20110609T081126Z aedon.locean-ipsl.upmc.fr (Darwin)
112%
113%   * add datejul_value output
114%   * rearrange epsat_value dimension
115%     dimension 1 : temps, dimension 2 : lon,  dimension 3 : lat
116%   * revision of init of simulation
117%   * add demo 3
118%
119% - fplod 20110307T164521Z aedon.locean-ipsl.upmc.fr (Darwin)
120%
121%   * add demo with only one day (to emphase possible trouble due to hard
122%     coded values in :func:`intensityMSG_day`)
123%
124% - fplod 20110307T163822Z aedon.locean-ipsl.upmc.fr (Darwin)
125%
126%   * correction to have 96 time step / day (not 97 !)
127%   * correction on the time dimension of msg_tb108 (not numel(datestr_value) !
128%
129% - fplod 20110304
130%
131%   * creation
132%-
133%
134result=-1;
135%
136usage='[lon_value, lat_value, datejul_value, datestr_value, msg_tb108]=simul_msg(index_simulation)';
137if nargin~=1
138   disp(['Incorrect number of arguments']);
139   error(usage)
140end
141%
142arg_info=whos('index_simulation');
143if ~strcmp(arg_info.class,'int8')
144   disp(['Incorrect type of arg index_simulation']);
145   whos index_simulation
146   error(usage);
147end
148clear arg_info
149%
150yyyymin_value=2006;
151yyyymax_value=2006;
152mmmin_value=07;
153mmmax_value=07;
154datestr_delta=(datenum(2000,1,2)-datenum(2000,1,1))/96.;
155% définition de la zone géographique : les coins en degré et les résolutions
156lat_delta = 5.;
157lon_delta = 5.;
158if (index_simulation == 1)
159   ddmin_value=26;
160   ddmax_value=26;
161   lonmin_value=-25;
162   lonmax_value=+25;
163   latmin_value=-5.;
164   latmax_value=20.;
165elseif (index_simulation == 2)
166   ddmin_value=26;
167   ddmax_value=31;
168   lonmin_value=-25;
169   lonmax_value=+25;
170   latmin_value=-5.;
171   latmax_value=20.;
172elseif (index_simulation == 3)
173   ddmin_value=26;
174   ddmax_value=26;
175   lonmin_value=-25;
176   lonmax_value=+25;
177   latmin_value=-5.;
178   latmax_value=20.;
179   lat_delta = 5.;
180else
181   error(['eee : unknown simulation ' num2str(index_simulation)]);
182end
183clear index_simulation
184%
185% création du tableau des longitudes
186lon_value=transpose(lonmin_value:lon_delta:lonmax_value);
187clear lonmin_value
188clear lonmax_value
189clear lon_delta
190%
191% création du tableau des latitudes
192lat_value=transpose(latmin_value:lat_delta:latmax_value);
193clear latmin_value
194clear latmax_value
195clear lat_delta
196%
197datejul_value=datenum(yyyymin_value,mmmin_value,ddmin_value):datestr_delta:datenum(yyyymax_value,mmmax_value,ddmax_value+1);
198datejul_value=datejul_value(1:end-1);
199clear yyyymin_value
200clear yyyymax_value
201clear mmmin_value
202clear mmmax_value
203clear ddmin_value
204clear ddmax_value
205clear datestr_delta
206%
207% conversion datenum (unité octave/matlab) en format "yyyymmddhhmn"
208datestr_value=datestr(datejul_value,'yyyymmddHHMM');
209%
210% row to column
211datejul_value=transpose(datejul_value);
212;
213% création de tableau tb108
214msg_tb108=zeros(size(datestr_value,1),numel(lon_value),numel(lat_value));
215msg_tb108(:,:,:)=NaN;
216for index_datestr=1:size(datestr_value,1)
217    for index_lon=1:numel(lon_value)
218        for index_lat=1:numel(lat_value)
219            msg_tb108(index_datestr,index_lon,index_lat)=(index_datestr+index_lon)/100. + (index_datestr+index_lat)/100.;
220        end
221   end
222end
223clear index_lat
224clear index_lon
225clear index_datestr
226%
227% whos
228%
229result=0;
230%
231end
232
233%!demo
234%! % From scratch to create short array of tb108 and associated arrays lat, long
235%! % and datestr::
236%! varamma_startup
237%! more off
238%! index_simulation=int8(1);
239%! [lon_value, lat_value, datejul_value, datestr_value, msg_tb108]=simul_msg(index_simulation)
240
241%!demo
242%! % From scratch to create long array of tb108 and associated arrays lat, long
243%! % and datestr::
244%! varamma_startup
245%! more off
246%! index_simulation=int8(2);
247%! [lon_value, lat_value, datejul_value, datestr_value, msg_tb108]=simul_msg(index_simulation);
248
249%!demo
250%! % From scratch to create long array of tb108 and associated arrays lat, long
251%! % and datestr++ demo 3::
252%! varamma_startup
253%! more off
254%! index_simulation=int8(3);
255%! [lon_value, lat_value, datejul_value, datestr_value, msg_tb108]=simul_msg(index_simulation);
256%! lon_value
257%! lat_value
Note: See TracBrowser for help on using the repository browser.