1 | function [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 | % |
---|
112 | result=-1; |
---|
113 | % |
---|
114 | % définition de la zone géographique : les coins en degré et les résolutions |
---|
115 | if (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.; |
---|
124 | elseif (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; |
---|
133 | else |
---|
134 | error(['eee : unknow simulation ' num2str(index_simulation)]); |
---|
135 | end |
---|
136 | % |
---|
137 | % définition de la zone temporelle : l'année et la résolution |
---|
138 | if (index_simulation == 1) |
---|
139 | % ici une valeur tous les 50 jours pour 2001 |
---|
140 | yyyy_value=2001; |
---|
141 | datestr_delta=50; |
---|
142 | elseif (index_simulation == 2 ) |
---|
143 | % ici une valeur tous les 8 jours pour 2001 |
---|
144 | yyyy_value=2001; |
---|
145 | datestr_delta=8; |
---|
146 | else |
---|
147 | error(['eee : unknow simulation ' num2str(index_simulation)]); |
---|
148 | end |
---|
149 | % création du tableau des longitudes |
---|
150 | lon_value=transpose(lonmin_value:lon_delta:lonmax_value); |
---|
151 | clear lonmin_value |
---|
152 | clear lonmax_value |
---|
153 | clear lon_delta |
---|
154 | nb_lon=size(lon_value,1); |
---|
155 | % |
---|
156 | % création du tableau des latitudes |
---|
157 | lat_value=transpose(latmin_value:lat_delta:latmax_value); |
---|
158 | clear latmin_value |
---|
159 | clear latmax_value |
---|
160 | clear lat_delta |
---|
161 | nb_lat=size(lat_value,1); |
---|
162 | % |
---|
163 | doy_value=datenum(yyyy_value,1,1):datestr_delta:datenum(yyyy_value,12,eomday(yyyy_value,12)); |
---|
164 | clear yyyy_value |
---|
165 | % |
---|
166 | % conversion datenum (unité octave/matlab) en format "yyyymmdd" |
---|
167 | datestr_value=datestr(doy_value,'yyyymmdd'); |
---|
168 | clear doy_value |
---|
169 | nb_datestr=size(datestr_value,1); |
---|
170 | % |
---|
171 | % création de tableau LAI |
---|
172 | lai_value=zeros(nb_datestr,nb_lat,nb_lon); |
---|
173 | lai_value(:,:,:)=NaN; |
---|
174 | for 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 |
---|
180 | end |
---|
181 | clear nb_lat |
---|
182 | clear index_lat |
---|
183 | clear nb_lon |
---|
184 | clear index_lon |
---|
185 | clear nb_datestr |
---|
186 | clear index_datestr |
---|
187 | % |
---|
188 | result=0; |
---|
189 | % |
---|
190 | end |
---|