source: trunk/src/simul_lai.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: 4.9 KB
Line 
1function [lon_value, lat_value, datestr_value, lai_value]=simul_lai(index_simulation)
2
3%SIMUL_LAI fill array LAI 3d array and associated arrays lat, lon, date
4%          with simulated data
5
6%
7%+
8%
9% ===========
10% simul_lai.m
11% ===========
12%
13% .. function:: simul_lai(index_simulation)
14%
15% DESCRIPTION
16% ===========
17%
18%    :param index_simulation: 1 or 2
19%    :type index_simulation: int16
20%    :raise index_simulation: required
21%
22%    :returns: 0 if ok or -1 if error
23%    :rtype: integer
24%
25% Charge en mémoire un tableau simulé **lai_value** de LAI dans :
26%
27% Simulation #1
28%    la zone géographique [20°E,10°E] [10°N,20°N] avec un point tous les 2° en
29%    latitude et 5° en longitude et dans la zone temporelle 20010101-20011231
30%    avec un point ts les 50 jours.
31%
32% Simulation #2
33%    la zone géographique [++°E,++°E] [++°N,++°N] avec 860 points en latitude
34%    et 874 points en longitude dans la zone temporelle 20010101-20011231
35%    avec un point ts les 8 jours.
36%
37% Les longitudes sont stockées dans le tableau **lon_value**.
38%
39% Les latitudes sont stockées dans le tableau **lat_value**.
40%
41% Les dates au format `yyyymmdd` sont stockés dans le tableau **datestr_value**.
42%
43% EXAMPLES
44% ========
45%
46% From scratch to create short array of LAI and associated arrays lat, long
47% and datestr::
48%
49%   $ octave
50%   octave> varamma_startup
51%   octave> more off
52%   octave> index_simulation=1;
53%   octave> [lon_value, lat_value, datestr_value, lai_value]=simul_lai(index_simulation);
54%
55% To write these arrays in
56% file:`${PROJECT_OD}/LAI/laisen2001_write_lai_float.txt`::
57%
58%   octave> result=write_lai(lon_value, lat_value, datestr_value, lai_value);
59%
60% From scratch to create long array of LAI and associated arrays lat, long
61% and datestr::
62%
63%   $ octave
64%   octave> varamma_startup
65%   octave> more off
66%   octave> [lon_value, lat_value, datestr_value, lai_value]=simul_lai(2);
67%
68% To write these arrays in
69% file:`${PROJECT_OD}/LAI/lai2001_write_lai_float.txt`::
70%
71%   octave> result=write_lai(lon_value, lat_value, datestr_value, lai_value);
72%
73% SEE ALSO
74% ========
75%
76% :ref:`guide data LAI <data_lai>`
77%
78% :func:`simul_lai`
79% :func:`write_lai`
80%
81% TODO
82% ====
83%
84% des valeurs de LAI plus réalistes y compris des NaN
85%
86% check argument
87%
88% EVOLUTIONS
89% ==========
90%
91% $Id: simul_lai.m 325 2011-08-04 15:30:01Z pinsard $
92%
93% $URL$
94%
95% - fplod 20101202T142356Z aedon.locean-ipsl.upmc.fr (Darwin)
96%
97%   * add parameter information in header
98%
99% - fplod 20100830T152107Z aedon.locean-ipsl.upmc.fr (Darwin)
100%
101%   * add argument index_simulation
102%   * add simulation #2 to produce arrays with the same supposed dimension
103%     of real file :file:`$PROJECT_ID/LAI:lai2001_float.txt`
104%
105% - fplod 20100826T120800Z aedon.locean-ipsl.upmc.fr (Darwin)
106%
107%   * creation because real files are big (193 Mo) so need some small LAI
108%     data to test scientific application
109%
110%-
111%
112result=-1;
113%
114% définition de la zone géographique : les coins en degré et les résolutions
115if (index_simulation == 1);
116   % ici une boite [20°E,10°E] [10°N,20°N] et un point tous les 2° en latitude
117   % et 5° en longitude
118   lonmin_value=-20.;
119   lonmax_value=-10.;
120   latmin_value=10.;
121   latmax_value=20.;
122   lat_delta = 2.;
123   lon_delta = 5.;
124elseif (index_simulation == 2 )
125   %lon_value=transpose(linspace(-18.168,-10.518,874));
126   lonmin_value=-18.168;
127   lonmax_value=-10.518;
128   %lat_value=transpose(linspace(10.004,17.996,860));
129   latmin_value=10.004;
130   latmax_value=17.996;
131   lat_delta = 0.0092930;
132   lon_delta = 0.0087529;
133else
134   error(['eee : unknow simulation ' num2str(index_simulation)]);
135end
136%
137% définition de la zone temporelle : l'année et la résolution
138if (index_simulation == 1)
139   % ici une valeur tous les 50 jours pour 2001
140   yyyy_value=2001;
141   datestr_delta=50;
142elseif (index_simulation == 2 )
143   % ici une valeur tous les 8 jours pour 2001
144   yyyy_value=2001;
145   datestr_delta=8;
146else
147   error(['eee : unknow simulation ' num2str(index_simulation)]);
148end
149% création du tableau des longitudes
150lon_value=transpose(lonmin_value:lon_delta:lonmax_value);
151clear lonmin_value
152clear lonmax_value
153clear lon_delta
154nb_lon=size(lon_value,1);
155%
156% création du tableau des latitudes
157lat_value=transpose(latmin_value:lat_delta:latmax_value);
158clear latmin_value
159clear latmax_value
160clear lat_delta
161nb_lat=size(lat_value,1);
162%
163doy_value=datenum(yyyy_value,1,1):datestr_delta:datenum(yyyy_value,12,eomday(yyyy_value,12));
164clear yyyy_value
165%
166% conversion datenum (unité octave/matlab) en format "yyyymmdd"
167datestr_value=datestr(doy_value,'yyyymmdd');
168clear doy_value
169nb_datestr=size(datestr_value,1);
170%
171% création de tableau LAI
172lai_value=zeros(nb_datestr,nb_lat,nb_lon);
173lai_value(:,:,:)=NaN;
174for index_datestr=1:nb_datestr
175   for index_lat=1:nb_lat
176      for index_lon=1:nb_lon
177          lai_value(index_datestr,index_lat,index_lon)=(index_datestr+index_lat+index_lon)/100.;
178      end
179   end
180end
181clear nb_lat
182clear index_lat
183clear nb_lon
184clear index_lon
185clear nb_datestr
186clear index_datestr
187%
188result=0;
189%
190end
Note: See TracBrowser for help on using the repository browser.