Merge lp:~fluidity-core/fluidity/fix_coord_transformations into lp:fluidity
- fix_coord_transformations
- Merge into dev-trunk
Proposed by
Alexandros Avdis
Status: | Merged |
---|---|
Merged at revision: | 4212 |
Proposed branch: | lp:~fluidity-core/fluidity/fix_coord_transformations |
Merge into: | lp:fluidity |
Diff against target: | 6051 lines |
To merge this branch: | bzr merge lp:~fluidity-core/fluidity/fix_coord_transformations |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Simon Mouradian | Approve | ||
Jon Hill | Pending | ||
Review via email: mp+161400@code.launchpad.net |
Commit message
Description of the change
Corrections to tensor transformations
To post a comment you must log in.
Revision history for this message
Alexandros Avdis (alexandros-avdis) wrote : | # |
Revision history for this message
Jon Hill (jon-hill) wrote : | # |
Not going to have chance to this before I bugger off to Italy. If it's
urgent you might be better getting someone else to look at it. If it's
not urgent, I'm more than happy to do it.
On 29/04/13 18:04, Alexandros Avdis wrote:
> build-bot is now green: http://
>
Revision history for this message
Simon Mouradian (mouradian) wrote : | # |
I'll have a look at this.
Revision history for this message
Simon Mouradian (mouradian) wrote : | # |
The femtools manual has a line saying:
"Write about the python version of the transformation routines."
This should probably be commented out in the latex file.
Revision history for this message
Simon Mouradian (mouradian) wrote : | # |
Looks good to go, to me.
review:
Approve
- 4108. By Alexandros Avdis
-
Correction to femtools manual to address merge review.
- 4109. By Alexandros Avdis
-
Merging in trunk, to make sure this branch is up-to-date, prior to merging this branch into trunk.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'femtools/Coordinates.F90' |
2 | --- femtools/Coordinates.F90 2012-10-15 13:57:00 +0000 |
3 | +++ femtools/Coordinates.F90 2013-05-08 10:49:27 +0000 |
4 | @@ -62,7 +62,6 @@ |
5 | tensor_spherical_polar_2_cartesian, & |
6 | higher_order_sphere_projection, & |
7 | sphere_inward_normal_at_quad_ele, sphere_inward_normal_at_quad_face, & |
8 | - rotate_diagonal_to_cartesian_gi, rotate_diagonal_to_cartesian_face, & |
9 | rotate_diagonal_to_sphere_gi, rotate_diagonal_to_sphere_face, & |
10 | rotate_ct_m_sphere, rotate_momentum_to_sphere, & |
11 | rotate_velocity_sphere, rotate_velocity_back_sphere, & |
12 | @@ -1055,94 +1054,6 @@ |
13 | |
14 | end function sphere_inward_normal_at_quad_face |
15 | |
16 | - function rotate_diagonal_to_cartesian_gi(positions, ele_number, diagonal) result(quad_val) |
17 | - ! Given the diagonal of a tensor in spherical coordinates, this function transforms the |
18 | - ! tensor components to a cartesian system at all quadrature points of an element. |
19 | - ! This result is given by R(diagonal)R^T where R is the transformation matrix. |
20 | - type(vector_field), intent(in) :: positions |
21 | - integer, intent(in) :: ele_number |
22 | - real, dimension(mesh_dim(positions),ele_ngi(positions,ele_number)), intent(in) :: diagonal |
23 | - real, dimension(mesh_dim(positions),ele_ngi(positions,ele_number)) :: X_quad |
24 | - real, dimension(mesh_dim(positions),mesh_dim(positions)) :: R, RT |
25 | - real, dimension(mesh_dim(positions),mesh_dim(positions),ele_ngi(positions,ele_number)) :: diagonal_T, quad_val |
26 | - real :: radius, theta, phi !distance form origin, polar angle, azimuthal angle |
27 | - integer :: i |
28 | - |
29 | - assert(mesh_dim(positions)==3) |
30 | - |
31 | - X_quad=ele_val_at_quad(positions, ele_number) |
32 | - |
33 | - diagonal_T=0.0 |
34 | - do i=1,mesh_dim(positions) |
35 | - diagonal_T(i,i,:)=diagonal(i,:) |
36 | - end do |
37 | - |
38 | - do i=1,ele_ngi(positions,ele_number) |
39 | - ! Calculate the spherical-polar coordinates of the point |
40 | - call cartesian_2_spherical_polar(X_quad(1,i), X_quad(2,i), X_quad(3,i), radius, theta, phi) |
41 | - |
42 | - R(1,1)=sin(theta)*cos(phi) |
43 | - R(1,2)=cos(theta)*cos(phi) |
44 | - R(1,3)=-sin(phi) |
45 | - R(2,1)=sin(theta)*sin(phi) |
46 | - R(2,2)=cos(theta)*sin(phi) |
47 | - R(2,3)=cos(phi) |
48 | - R(3,1)=cos(theta) |
49 | - R(3,2)=-sin(theta) |
50 | - R(3,3)=0.0 |
51 | - |
52 | - RT = TRANSPOSE(R) |
53 | - |
54 | - quad_val(:,:,i)=matmul((matmul(R,diagonal_T(:,:,i))),RT) |
55 | - |
56 | - end do |
57 | - |
58 | - end function rotate_diagonal_to_cartesian_gi |
59 | - |
60 | - function rotate_diagonal_to_cartesian_face(positions, face_number, diagonal) result(quad_val) |
61 | - ! Given the diagonal of a tensor in spherical coordinates, this function transforms the |
62 | - ! tensor components to a cartesian system at all quadrature points of an face. |
63 | - ! This result is given by R(diagonal)R^T where R is the transformation matrix. |
64 | - type(vector_field), intent(in) :: positions |
65 | - integer, intent(in) :: face_number |
66 | - real, dimension(positions%dim,face_ngi(positions,face_number)), intent(in) :: diagonal |
67 | - real, dimension(positions%dim,face_ngi(positions,face_number)) :: X_quad |
68 | - real, dimension(positions%dim,positions%dim) :: R, RT |
69 | - real, dimension(positions%dim,positions%dim,face_ngi(positions,face_number)) :: diagonal_T, quad_val |
70 | - real :: radius, theta, phi !distance form origin, polar angle, azimuthal angle |
71 | - integer :: i |
72 | - |
73 | - assert(positions%dim==3) |
74 | - |
75 | - X_quad=face_val_at_quad(positions, face_number) |
76 | - |
77 | - diagonal_T=0.0 |
78 | - do i=1,positions%dim |
79 | - diagonal_T(i,i,:)=diagonal(i,:) |
80 | - end do |
81 | - |
82 | - do i=1,ele_ngi(positions,face_number) |
83 | - ! Calculate the spherical-polar coordinates of the point |
84 | - call cartesian_2_spherical_polar(X_quad(1,i), X_quad(2,i), X_quad(3,i), radius, theta, phi) |
85 | - |
86 | - R(1,1)=sin(theta)*cos(phi) |
87 | - R(1,2)=cos(theta)*cos(phi) |
88 | - R(1,3)=-sin(phi) |
89 | - R(2,1)=sin(theta)*sin(phi) |
90 | - R(2,2)=cos(theta)*sin(phi) |
91 | - R(2,3)=cos(phi) |
92 | - R(3,1)=cos(theta) |
93 | - R(3,2)=-sin(theta) |
94 | - R(3,3)=0.0 |
95 | - |
96 | - RT = TRANSPOSE(R) |
97 | - |
98 | - quad_val(:,:,i)=matmul((matmul(R,diagonal_T(:,:,i))),RT) |
99 | - |
100 | - end do |
101 | - |
102 | - end function rotate_diagonal_to_cartesian_face |
103 | - |
104 | function rotate_diagonal_to_sphere_gi(positions, ele_number, diagonal) result(quad_val) |
105 | ! Given the diagonal of a tensor in cartesian coordinates, this function |
106 | ! transforms the tensor components to a spherical-polar basis. This result |
107 | @@ -1170,18 +1081,18 @@ |
108 | ! Calculate the spherical-polar coordinates of the point |
109 | call cartesian_2_spherical_polar(X_quad(1,i), X_quad(2,i), X_quad(3,i), radius, theta, phi) |
110 | |
111 | - R(1,1)=sin(theta)*cos(phi) |
112 | - R(1,2)=sin(theta)*sin(phi) |
113 | - R(1,3)=cos(theta) |
114 | - R(2,1)=cos(theta)*cos(phi) |
115 | + R(1,1)=-sin(phi) |
116 | + R(1,2)=cos(theta)*cos(phi) |
117 | + R(1,3)=sin(theta)*cos(phi) |
118 | + R(2,1)=cos(phi) |
119 | R(2,2)=cos(theta)*sin(phi) |
120 | - R(2,3)=-sin(theta) |
121 | - R(3,1)=-sin(phi) |
122 | - R(3,2)=cos(phi) |
123 | - R(3,3)=0.0 |
124 | - |
125 | - RT = TRANSPOSE(R) |
126 | - |
127 | + R(2,3)=sin(theta)*sin(phi) |
128 | + R(3,1)=0 |
129 | + R(3,2)=-sin(theta) |
130 | + R(3,3)=cos(theta) |
131 | + |
132 | + RT=R |
133 | + call invert(RT) |
134 | quad_val(:,:,i)=matmul((matmul(R,diagonal_T(:,:,i))),RT) |
135 | |
136 | end do |
137 | @@ -1215,18 +1126,18 @@ |
138 | ! Calculate the spherical-polar coordinates of the point |
139 | call cartesian_2_spherical_polar(X_quad(1,i), X_quad(2,i), X_quad(3,i), radius, theta, phi) |
140 | |
141 | - R(1,1)=sin(theta)*cos(phi) |
142 | - R(1,2)=sin(theta)*sin(phi) |
143 | - R(1,3)=cos(theta) |
144 | - R(2,1)=cos(theta)*cos(phi) |
145 | + R(1,1)=-sin(phi) |
146 | + R(1,2)=cos(theta)*cos(phi) |
147 | + R(1,3)=sin(theta)*cos(phi) |
148 | + R(2,1)=cos(phi) |
149 | R(2,2)=cos(theta)*sin(phi) |
150 | - R(2,3)=-sin(theta) |
151 | - R(3,1)=-sin(phi) |
152 | - R(3,2)=cos(phi) |
153 | - R(3,3)=0.0 |
154 | - |
155 | - RT = TRANSPOSE(R) |
156 | - |
157 | + R(2,3)=sin(theta)*sin(phi) |
158 | + R(3,1)=0 |
159 | + R(3,2)=-sin(theta) |
160 | + R(3,3)=cos(theta) |
161 | + |
162 | + RT=R |
163 | + call invert(RT) |
164 | quad_val(:,:,i)=matmul((matmul(R,diagonal_T(:,:,i))),RT) |
165 | |
166 | end do |
167 | @@ -1278,8 +1189,8 @@ |
168 | call cartesian_2_spherical_polar(x(1),x(2),x(3),radius,theta,phi) |
169 | |
170 | node_normal=(/sin(theta)*cos(phi),sin(theta)*sin(phi),cos(theta)/) |
171 | - node_tangent1=(/cos(theta)*cos(phi),cos(theta)*sin(phi),-sin(theta)/) |
172 | - node_tangent2=(/-sin(phi),cos(phi),0.0/) |
173 | + node_tangent1=(/-sin(phi),cos(phi),0.0/) |
174 | + node_tangent2=(/cos(theta)*cos(phi),cos(theta)*sin(phi),-sin(theta)/) |
175 | |
176 | call set(sphere_normal, node, node_normal) |
177 | call set(sphere_tangent1, node, node_tangent1) |
178 | @@ -1298,9 +1209,9 @@ |
179 | do j=1, size(rowcol) |
180 | rotated_node=rowcol(j) |
181 | ! construct local rotation matrix |
182 | - local_rotation(1,:)=node_val(sphere_normal, rotated_node) |
183 | - local_rotation(2,:)=node_val(sphere_tangent1, rotated_node) |
184 | - local_rotation(3,:)=node_val(sphere_tangent2, rotated_node) |
185 | + local_rotation(1,:)=node_val(sphere_tangent1, rotated_node) |
186 | + local_rotation(2,:)=node_val(sphere_tangent2, rotated_node) |
187 | + local_rotation(3,:)=node_val(sphere_normal, rotated_node) |
188 | |
189 | ! look up ct_m values of row i, column rowcol(j) in xyz orientation |
190 | do k=1, blocks(ct_m,2) |
191 | @@ -1441,8 +1352,8 @@ |
192 | call cartesian_2_spherical_polar(x(1),x(2),x(3),radius,theta,phi) |
193 | |
194 | node_normal=(/sin(theta)*cos(phi),sin(theta)*sin(phi),cos(theta)/) |
195 | - node_tangent1=(/cos(theta)*cos(phi),cos(theta)*sin(phi),-sin(theta)/) |
196 | - node_tangent2=(/-sin(phi),cos(phi),0.0/) |
197 | + node_tangent1=(/-sin(phi),cos(phi),0.0/) |
198 | + node_tangent2=(/cos(theta)*cos(phi),cos(theta)*sin(phi),-sin(theta)/) |
199 | |
200 | call set(sphere_normal, node, node_normal) |
201 | call set(sphere_tangent1, node, node_tangent1) |
202 | @@ -1451,9 +1362,9 @@ |
203 | end do |
204 | |
205 | do node=1, mynodes |
206 | - local_rotation(:,1)=node_val(sphere_normal, node) |
207 | - local_rotation(:,2)=node_val(sphere_tangent1, node) |
208 | - local_rotation(:,3)=node_val(sphere_tangent2, node) |
209 | + local_rotation(:,1)=node_val(sphere_tangent1, node) |
210 | + local_rotation(:,2)=node_val(sphere_tangent2, node) |
211 | + local_rotation(:,3)=node_val(sphere_normal, node) |
212 | |
213 | call addto(rotation_sphere, node, node, local_rotation) |
214 | end do |
215 | @@ -1472,6 +1383,7 @@ |
216 | type(vector_field), intent(inout):: vfield |
217 | type(state_type), intent(inout):: state |
218 | |
219 | + type(vector_field), pointer:: u |
220 | type(vector_field):: result |
221 | type(petsc_csr_matrix), pointer:: rotation_sphere |
222 | integer :: stat |
223 | @@ -1479,7 +1391,8 @@ |
224 | rotation_sphere => extract_petsc_csr_matrix(state, "RotationMatrixSphere", stat=stat) |
225 | if (stat/=0) then |
226 | allocate(rotation_sphere) |
227 | - call create_rotation_matrix_sphere(rotation_sphere, vfield, state) |
228 | + u => extract_vector_field(state, "Velocity") |
229 | + call create_rotation_matrix_sphere(rotation_sphere, u, state) |
230 | call insert(state, rotation_sphere, "RotationMatrixSphere") |
231 | end if |
232 | |
233 | @@ -1506,7 +1419,8 @@ |
234 | rotation_sphere => extract_petsc_csr_matrix(state, "RotationMatrixSphere", stat=stat) |
235 | if (stat/=0) then |
236 | allocate(rotation_sphere) |
237 | - call create_rotation_matrix_sphere(rotation_sphere, vfield, state) |
238 | + u => extract_vector_field(state, "Velocity") |
239 | + call create_rotation_matrix_sphere(rotation_sphere, u, state) |
240 | call insert(state, rotation_sphere, "RotationMatrixSphere") |
241 | end if |
242 | |
243 | |
244 | === modified file 'femtools/doc/femtools_manual.pdf' |
245 | --- femtools/doc/femtools_manual.pdf 2012-10-23 18:10:34 +0000 |
246 | +++ femtools/doc/femtools_manual.pdf 2013-05-08 10:49:27 +0000 |
247 | @@ -874,11 +874,11 @@ |
248 | << /S /GoTo /D [582 0 R /Fit ] >> |
249 | endobj |
250 | 584 0 obj << |
251 | -/Length 130 |
252 | +/Length 126 |
253 | /Filter /FlateDecode |
254 | >> |
255 | stream |
256 | -xÚ3PHW0Ppç2 @;…pé»›+šëšš(„¤)ê™+˜Å,,,BR¢5ÜRsKòósŠ5u�L |
257 | 4róJs4cC¼ š |
258 | õ,MM�Àš�ôLŒLt-ÌôŒ- Zý“Kò“R‹ :�Œt |
259 | C#�.r |
260 | á U�*( |
261 | +xÚ3PHW0Ppç2 @;…pé»›+šëšš(„¤)ê™+˜Å,,,BR¢5ÜRsKòósŠ5u�L |
262 | 4róJs4cC¼ š |
263 | õ,MM�@š�MôLM |
264 | t-ÌôŒ- Z}+!º,t ´‘�¡1H/†c\C¸ bs(Y |
265 | endstream |
266 | endobj |
267 | 582 0 obj << |
268 | @@ -2274,8 +2274,8 @@ |
269 | 814 0 obj |
270 | << |
271 | /Producer (GPL Ghostscript 9.05) |
272 | -/CreationDate (D:20120710183848+01'00') |
273 | -/ModDate (D:20120710183848+01'00') |
274 | +/CreationDate (D:20130116170603Z00'00') |
275 | +/ModDate (D:20130116170603Z00'00') |
276 | /Title (linear_1d.fig) |
277 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
278 | >> |
279 | @@ -2320,8 +2320,8 @@ |
280 | 816 0 obj |
281 | << |
282 | /Producer (GPL Ghostscript 9.05) |
283 | -/CreationDate (D:20120710183848+01'00') |
284 | -/ModDate (D:20120710183848+01'00') |
285 | +/CreationDate (D:20130116170603Z00'00') |
286 | +/ModDate (D:20130116170603Z00'00') |
287 | /Title (quadratic_1d.fig) |
288 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
289 | >> |
290 | @@ -2370,8 +2370,8 @@ |
291 | 818 0 obj |
292 | << |
293 | /Producer (GPL Ghostscript 9.05) |
294 | -/CreationDate (D:20120710183849+01'00') |
295 | -/ModDate (D:20120710183849+01'00') |
296 | +/CreationDate (D:20130116170603Z00'00') |
297 | +/ModDate (D:20130116170603Z00'00') |
298 | /Title (linear_1d_mesh.fig) |
299 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
300 | >> |
301 | @@ -2468,8 +2468,8 @@ |
302 | 834 0 obj |
303 | << |
304 | /Producer (GPL Ghostscript 9.05) |
305 | -/CreationDate (D:20120710183849+01'00') |
306 | -/ModDate (D:20120710183849+01'00') |
307 | +/CreationDate (D:20130116170604Z00'00') |
308 | +/ModDate (D:20130116170604Z00'00') |
309 | /Title (linear_1d_basis.fig) |
310 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
311 | >> |
312 | @@ -2570,8 +2570,8 @@ |
313 | 848 0 obj |
314 | << |
315 | /Producer (GPL Ghostscript 9.05) |
316 | -/CreationDate (D:20120710183849+01'00') |
317 | -/ModDate (D:20120710183849+01'00') |
318 | +/CreationDate (D:20130116170604Z00'00') |
319 | +/ModDate (D:20130116170604Z00'00') |
320 | /Title (quadratic_1d_basis.fig) |
321 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
322 | >> |
323 | @@ -2769,8 +2769,8 @@ |
324 | 877 0 obj |
325 | << |
326 | /Producer (GPL Ghostscript 9.05) |
327 | -/CreationDate (D:20120710183849+01'00') |
328 | -/ModDate (D:20120710183849+01'00') |
329 | +/CreationDate (D:20130116170604Z00'00') |
330 | +/ModDate (D:20130116170604Z00'00') |
331 | /Title (numerical_integration.fig) |
332 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
333 | >> |
334 | @@ -2979,8 +2979,8 @@ |
335 | 908 0 obj |
336 | << |
337 | /Producer (GPL Ghostscript 9.05) |
338 | -/CreationDate (D:20120710183849+01'00') |
339 | -/ModDate (D:20120710183849+01'00') |
340 | +/CreationDate (D:20130116170604Z00'00') |
341 | +/ModDate (D:20130116170604Z00'00') |
342 | /Title (linear_1d_derivative.fig) |
343 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
344 | >> |
345 | @@ -3547,8 +3547,8 @@ |
346 | 1007 0 obj |
347 | << |
348 | /Producer (GPL Ghostscript 9.05) |
349 | -/CreationDate (D:20120710183849+01'00') |
350 | -/ModDate (D:20120710183849+01'00') |
351 | +/CreationDate (D:20130116170604Z00'00') |
352 | +/ModDate (D:20130116170604Z00'00') |
353 | /Title (linear_1d_galerkin.fig) |
354 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
355 | >> |
356 | @@ -3741,8 +3741,8 @@ |
357 | 1035 0 obj |
358 | << |
359 | /Producer (GPL Ghostscript 9.05) |
360 | -/CreationDate (D:20120710183850+01'00') |
361 | -/ModDate (D:20120710183850+01'00') |
362 | +/CreationDate (D:20130116170604Z00'00') |
363 | +/ModDate (D:20130116170604Z00'00') |
364 | /Title (local_coords_tri.fig) |
365 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
366 | >> |
367 | @@ -3871,8 +3871,8 @@ |
368 | 1054 0 obj |
369 | << |
370 | /Producer (GPL Ghostscript 9.05) |
371 | -/CreationDate (D:20121022222121+01'00') |
372 | -/ModDate (D:20121022222121+01'00') |
373 | +/CreationDate (D:20130508114144+01'00') |
374 | +/ModDate (D:20130508114144+01'00') |
375 | /Creator (dvips\(k\) 5.98 Copyright 2009 Radical Eye Software) |
376 | /Title (femtools_manual-fig1.dvi) |
377 | >> |
378 | @@ -4308,8 +4308,8 @@ |
379 | 1113 0 obj |
380 | << |
381 | /Producer (GPL Ghostscript 9.05) |
382 | -/CreationDate (D:20120710183849+01'00') |
383 | -/ModDate (D:20120710183849+01'00') |
384 | +/CreationDate (D:20130116170604Z00'00') |
385 | +/ModDate (D:20130116170604Z00'00') |
386 | /Title (mesh.fig) |
387 | /Creator (fig2dev Version 3.2 Patchlevel 5d) |
388 | >> |
389 | @@ -4679,24 +4679,17 @@ |
390 | /ProcSet [ /PDF /Text ] |
391 | >> endobj |
392 | 1198 0 obj << |
393 | -/Length 2284 |
394 | +/Length 2282 |
395 | /Filter /FlateDecode |
396 | >> |
397 | stream |
398 | -xÚÕZ[sÛ¸~÷¯Ð[éÙ%„;Á¼µŽµM'ílÏìC²«a$ÚâŒDª$•Øûë{p#A-$9g¶ |
399 | �-pÎåû ãÙÃ |
400 | Ï~ºúÛÝÕ|Á²Á(Ç9™ÝÝÏ„D2g3…9Ês9»[Ï>$œ^ÿz÷�ùB°p$Ë"˜ÀBfÐÍßÿúóÝí»ë” |
401 | -œ(t� |
402 | -‰“ś۷¯ßëÙWØÉôŸÇ‚S& âR@£L(»*A“Éó…œL" |
403 | IXÆ«P´}ÙUE}�2Á“UÓ´ëª. ï•ÝÀT"�= |
404 | -!üì»M9λ&*±sÓ®ìmÿ¡+׶U9 ‹í¡ZWýÓ5!$�-KÊ’7î�×¢Y•¾¹kÖåv[Õ^NÝ—�nñ |
405 | ¤ƒŽ³Ôk•ÂÞÏnM[=¡8Kš{ûÙ}¡Q<–�nɤêlÏ~[¬Œ®úm4|UÖ½Ù_yb=˜]—ý�ð@‰×k¾à"´ |
406 | U |
407 | qª¼í |
408 | cö•ˆ²Áº)•Å£Wð¡);/ÕèÒ |
409 | |
410 | 6£f12HÀ |
411 | ƒ£± |
412 | Aå,Cy†mà".øŒ¡\8›}ÄDÆÔR+Q6Ž¼-:ØnD(•H0ú"RSÎs¤¿fH`ÞÿjÚ~£SF%û¦ª{ÝÌ“¦¶]Æ#º£;´÷àQp •']BAã^Û§˜eü� |
413 | Ñ"¬G¬ÔÀ#^�¨G*÷Ëå1óØáÆ>ê¼}À(‚Z¯¨K^He½"¾Mêà‘\{äš$—œb³–A¨pÌlÖ |
414 | -»TQ¯-žp˃;~�ûK èF |
415 | †“öZ%‡ºó¼»°W»<þ‹²o¶¥k~ÄwûMÙV«bŽµí¢ë»r |
416 | £ŽÐw– |
417 | -…(‡¦)LZôk ú½›‚>E |
418 | )Ïée ¦ |
419 | -‰œO�æí›®ê+íýô¹\õ�[Ñà |
420 | |vûrU}Ę4Ô/Üà¾lwn |
421 | à_,ÈGR |
422 | zˆ:áÁ9 ˜f |
423 | -LK©o1]˜"‰‡½üꢗÑk–ÓÌí7®IÃ4`K‘|[t�hÌ1dƨr |
424 | ó‘½râ43ï'ä´®º¾¨W:êT–Ü[ôØé'Ÿ-Ê“”î²\öc¸DŠ�¯�ÕQÈPE#RÕÊÒPjBˈ¶®W§cL&VH�Y'ò0†ÈÌï |
425 | Vþ½Ú |
426 | ú�É%/Scuím×ØAݦùRÛ„Æš4c°]0&0>wµÖ�½ÛòÞåã |
427 | RÓ¥©æj›Á˜> |
428 | F?Cöᙵ:uã |
429 | $ëW‰‘iÐ… |
430 | -#ئ‘ |
431 | âG·?�øŒæEŽr©Æ¼H™J~»” |
432 | e$Ì!tìÝX6ŒÇ©¼ |
433 | X?•”BTuAV–kaY– |
434 | ÇÖ±<ðH0î´Àü9› |
435 | äÅá@˜ |
436 | -#ø²ˆ`ðÜÆ ´| |
437 | jïÖ/ISz Ê– )€œ¦6£û~Ø6õCÕÖ¥&»mÑ›¶Ö”8–ÐŒ|š(˜N2! |
438 | -=u$Ši¼“Äû„(Ì‹Ú~:¢pÉK,QFÄE¢ ª o{¨J |
439 | 8´'˜‚}/¦Ð[;Ë |
440 | ˜ |
441 | «‰ÎQ\Ĺšà¢ ![h6¡S¶< |
442 | å§ |
443 | Î |
444 | �¥NUmŸJ¥ži D |
445 | =‰úJA Ò³LR9)% =x |
446 | -H/ |
447 | äH�Ž¤—RF¡À²�> |
448 | ¡YÕGSaü¦·M‹ÿöp( |
449 | »è”2þ|R ‚C¨f/H |
450 | -!N‹˜H¨à0õ]€šÈ81ÈüåI&Ï°ž¾à³`Ô©ì'ÏJþgÒÂíÝq³ô¥‘3øÖËg«ÝÕ®02õ&üø†éöS†Ž,ˆÙú¦Hù7ó7;Bg¯›«›?/u²Ò@Øéë.–³Ñ>‹jØ9Ôp\ïðD4Ts?»Â2?¾$ê }8Êo¡hscÿp҉̲�çq˜S¤dv¹@Íð¤l× |
451 | [0�FX æl(Šõ›8<¦LP$²#è>]�Sʦ, }!› |
452 | Õ8ôÁiNÞi€Ó¶¢,yë9! |
453 | )_FÌë�7†<¥ùeÞ"rÐx]Ö�[]ôd„�:4‚(¡—ˆJ!,�¥Xfä |
454 | ÁIàˆÝÞ�ª* |
455 | åF |
456 | -¢4(j€Eú¶¨»û¦Ý®´a$q77}U›ýh®±YïîË¢ã^ݤUÝ[[6û²->mÝ‹ãUHb×ÐA}�¨{úA�P |
457 | 'tU8}Œt½c<¹ùäH²c[ºK’€Báéf~óÃnP³.�ÙéÆÍ9Ô«±®ÛÛú¦Úû«ŽbØ°>R5+£õ€tÆcžÄÓ@9fR½Ú¥JF&-� |
458 | óàmžuá�[xw |
459 | EÜ |
460 | UôM‹œÔ±°ßf»m¾˜ |
461 | d³¨Aº£KŸâsQm |
462 | oàiŒØ¢9P„A-“¶xÏÙx�™ |
463 | Mxz|67|§®wŒŽfÆëùHªài.,šVë†x|sEè§W |
464 | 7[K£Ã’.W¡àË_D¸åâú�|¢�í8ÔUŸ‚ˆ>ª |
465 | ¡‘±Ø¼/w}Ól»¹ž`ÿ.ÏèŒöfõ²Þ^ÎDñ ÉÓ ËÁª_Úb |
466 | 'TÎ�å3Lº\=W9»bqÝ´A�nϲnFæä»\}…}�¤‰}ßè |
467 | è{àW¢Öe·j+Ÿ“H±¨ã†»" |
468 | ½ÏU‹:‡5MÆ ¬|„cjˆ`VH±†�t!ÎzíÞo ní(«Ø^ã : |
469 | ©KiÃ:X~ßÄ…p |
470 | ßFÓãøŸÅ�3:#ˆ„�3Ú} |
471 | œÇ¨—Ç�³úÿ?á€mC5W¿ |
472 | è«hD36åþ_®3ž´Uï|Q|‚ |
473 | ئ©6tcÿÔo— |
474 | ŸË¶«üƒ¾“˜Œ<®V�òG (tý³Y¼ó])3<v1·³ |
475 | ª:$•UhþÓâõÒÜZÜlÀˆåÒ„Ú?=ËÁÓËœ…Dnï¦&6½},v{ gÌì™3ó¶c(1'ƒÂY>(lÃ3ZŠæÆ%þøPôEl5*QÃj󦶑].Û¦·E”¦u×·‡U¿¼¯ÊíúùvÐÇl2 |
476 | =!R¡2 |
477 | Ž_f³Áe‡ÓŸ ŽVºó_+ÚŸƒu(Z‡Ì |
478 | o™\é¯5×_tjÖCQoï®þ |
479 | £ |
480 | ÍÑ |
481 | +xÚÕZ[sÛ6~÷¯ÐÛÒÓÂ… Á¼u |
482 | «›�L§›ø-i5ŒD[œ¡H-I%vý |
483 | ÜH�…$'ãL»ã± � ÎÁ¹|ßd¼xXàÅÏWÿ¼»Z®Xº e8#‹»ûHdl!q‚²L,QB¯»û÷rÅ™?’¥ |
484 | L`!=èæ_?ýzwûî:¦ |
485 | G]Ç\àhõæöíë÷jö¶2Ýs.8f‚ Dph`”riV%h2y¹“I„!Ë8ò¶/º2¯¯cÆ“hÓ4í¶¬sè{e60•H`�œs7ûnWŒó®‰ŒÌܸ+zÓìŠi•Vª:–Û²º&„D°eAYôƾsZ4›Â5÷Ͷ¨ª²~prê¾x´‹÷ |
486 | t\ÄN«öÆ“Ìèִ僊Ө¹7Ï^ë |
487 | �ü±èTKDegzU¾Ñºª·ýlø¦¨{½¿âÄz0».úá%N¯å*á¾í¨LPB¥³ÝcȾQ6X÷#¥"t |
488 | +>4Eç¤j]šãÃnTC/F& ˜cp46#¨X¤(K± \”ðdÁPÆÍ>b"BjI„%�(GÞæ |
489 | l7 ” |
490 | +Ä}©q’dHÊüš"ŽmxÿÒ´ýN¥ŒŒMY÷ª™EMmº´GTGwlïÁ£à*Nº„p‚R–8mŸBZp”&öˆa<b¤z |
491 | qj=B—™[. |
492 | ™Ç |
493 | ×ö‘çíFáÔxE^ò |
494 | +G2½èþmR�dÊ#×$ºä“µ |
495 | B%ÁÌd-7KåõÖ á ‡± |
496 | a>¸ã�°¿8€nÀa8j¯et¬;'Á¹ |
497 | ;±ÍãØ!‡¦*ló#æ¸;슶Üä•?Ö´ó®;î‹-Œš¡ï"æÑb˜$15jѯ�è÷Nl |
498 | úä-¤|B/5•ˆgɨaÞ¡éʾTŽQŸ>›¾±+jœ�gw(6åGŒ©FCõÂî‹voÇ þ…‚Œ$HÈAïA"<8ÓT‚i)u-&‚ |
499 | S$ð°—ßlô2/zõ² |
500 | ašÚý†ÁU` o˜lÁ£/``ƒî� |
501 | ™1ª |
502 | DÇl¤DgÆ�œšê÷rÚ–]Ÿ×u2�î |
503 | zìÕ'—-Ò‘”ê2\öcÂ�$^3¨#¾ŠZ¤ª‘¥ T‡–[?T¶W¥cH&–HŽY'2?†�ÈÔí |
504 | Vþ£Üû�Î%'SauíªkÌ n×|©Í BmMš2Ø.?±µÖ�½Uqoóñ ©iÓTqµÉ`LŽ£Ÿ!ûð‚,Z•‚ªñ’õƒÄÈ4‡?¨B…lÒH |
505 | q‰£ÚŸòÎ |
506 | <ƒy‘¡LÈ1/b&£ß/eGs] {×–õãq*/Ö÷Æ%ÅÕD^�•fJXš¦óØšË�xãN |
507 | Ìž³9O^¸®0¼�/‹ÏM |
508 | BËÅ òný"‘4¥*M È)jÓZ°¯á‡ª©Êþ¸-ÙUy¯ÛJSbYB1òi¢`*8É„(ÔÔ‘(¦ñN"ì¢Ð/jó´Da“/”X ”ð‹DA<TãÎöP•hphO0û^L¡¶v–)0=–�ƒ¸ˆ39ÁEN|¶PlB§l1x8ÈOœ<K�ªÚÒd*•:¦�†5ô$êK �JÏ2!H!ä¤�ôà“Gzþ Kzt$½˜2 |
509 | +–étéͲžM…ñ»Þ4 |
510 | þ›Ã!gpì¢SÊøëI�ðB5}ARðqš‡DB |
511 |
build-bot is now green: http:// buildbot- ocean.ese. ic.ac.uk: 8080/builders/ fix_coord_ transformations