source: issm/oecreview/Archive/13393-13976/ISSM-13454-13455.diff@ 13980

Last change on this file since 13980 was 13980, checked in by Mathieu Morlighem, 12 years ago

preparing oecreview for 13393-13976'

File size: 34.2 KB
RevLine 
[13980]1Index: ../trunk-jpl/test/Par/SquareShelf.py
2===================================================================
3--- ../trunk-jpl/test/Par/SquareShelf.py (revision 0)
4+++ ../trunk-jpl/test/Par/SquareShelf.py (revision 13455)
5@@ -0,0 +1,89 @@
6+import os.path
7+import inspect
8+import netCDF4
9+from numpy import *
10+from verbose import *
11+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
12+from paterson import *
13+from SetIceShelfBC import *
14+
15+#Start defining model parameters here
16+#Geometry
17+hmin=300.
18+hmax=1000.
19+ymin=min(md.mesh.y)
20+ymax=max(md.mesh.y)
21+
22+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)
23+md.geometry.bed=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
24+md.geometry.surface=md.geometry.bed+md.geometry.thickness
25+
26+#Initial velocity and pressure
27+iVelF = netCDF4.Dataset('../Data/SquareShelf.nc','r')
28+
29+x=reshape(iVelF.variables['x'][:],(-1))
30+y=reshape(iVelF.variables['y'][:],(-1))
31+vx=iVelF.variables['vx'][:]
32+vy=iVelF.variables['vy'][:]
33+index=iVelF.variables['index'][:].astype(float)
34+index=reshape(index.T,(len(index),3),order='F')
35+
36+#dbg - begin
37+# #print 'vars in SquareShelf.nc:'
38+# #for v in iVelF.variables:
39+# # print v
40+#dbg - end
41+
42+iVelF.close()
43+
44+[md.initialization.vx]=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
45+[md.initialization.vy]=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
46+md.initialization.vz=zeros(md.mesh.numberofvertices)
47+md.initialization.pressure=zeros(md.mesh.numberofvertices)
48+
49+#dbg - begin
50+#print '...vx:'
51+#print md.initialization.vx
52+#print '...vy:'
53+#print md.initialization.vy
54+##print '...vz:'
55+##print md.initialization.vz
56+##print '...pressure:'
57+##print md.initialization.pressure
58+#dbg - end
59+
60+
61+#Materials
62+md.initialization.temperature = (273.-20.)*ones(md.mesh.numberofvertices)
63+md.materials.rheology_B = paterson(md.initialization.temperature)
64+md.materials.rheology_n = 3.*ones(md.mesh.numberofelements)
65+
66+#Friction
67+pos=nonzero(md.mask.elementonfloatingice)
68+md.friction.coefficient = 20.*ones(md.mesh.numberofvertices)
69+md.friction.coefficient[md.mesh.elements[pos,:].astype(int)-1] = 0.
70+md.friction.p = ones(md.mesh.numberofelements)
71+md.friction.q = ones(md.mesh.numberofelements)
72+
73+#Numerical parameters
74+md.diagnostic.viscosity_overshoot = 0.3
75+md.prognostic.stabilization = 1.
76+md.thermal.stabilization = 1.
77+md.settings.waitonlock = 30.
78+md.verbose=verbose()
79+md.diagnostic.restol = 0.10
80+md.steadystate.reltol = 0.02
81+md.diagnostic.reltol = 0.02
82+md.diagnostic.abstol = nan
83+md.timestepping.time_step = 1.
84+md.timestepping.final_time = 3.
85+
86+#Boundary conditions:
87+# #md=SetIceShelfBC(md)
88+print '...calling seticeshelfbc:'
89+md=SetIceShelfBC(md,'../Exp/SquareFront.exp')
90+print '...called seticeshelfbc:'
91+
92+#Change name so that no test have the same name
93+if len(inspect.stack()) > 2:
94+ md.miscellaneous.name=os.path.basename(inspect.stack()[2][1]).split('.')[0]
95Index: ../trunk-jpl/test/NightlyRun/test3007.py
96===================================================================
97--- ../trunk-jpl/test/NightlyRun/test3007.py (revision 0)
98+++ ../trunk-jpl/test/NightlyRun/test3007.py (revision 13455)
99@@ -0,0 +1,39 @@
100+"""
101+== == == == == == == == == == == == == == == == == == ==
102+Auto generated python script for ISSM: test3007.m
103+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
104+== == == == == == == == == == == == == == == == == == ==
105+
106+Matlab script conversion into python
107+translateToPy.py Author: Michael Pellegrin
108+translateToPy.py Date: 09/24/12
109+== == == == == == == == == == == == == == == == == == ==
110+"""
111+
112+from MatlabFuncs import *
113+from model import *
114+from EnumDefinitions import *
115+import numpy
116+from triangle import *
117+from setmask import *
118+from parameterize import *
119+from setflowequation import *
120+from solve import *
121+
122+md=triangle(model(),'../Exp/Square.exp',150000)
123+md=setmask(md,'all','')
124+md=parameterize(md,'../Par/SquareShelfConstrained.py')
125+md=setflowequation(md,'macayeal','all')
126+md.extrude(5,3)
127+md.cluster=generic('name',oshostname(),'np',3)
128+md.autodiff.isautodiff=true
129+md=solve(md,PrognosticSolutionEnum())
130+
131+
132+# Fields and tolerances to track changes
133+
134+field_names =['Thickness']
135+field_tolerances=[1e-13]
136+field_values=[\
137+ md.results['PrognosticSolution'][1]['Thickness'],\
138+ ]
139Index: ../trunk-jpl/test/NightlyRun/test3002.py
140===================================================================
141--- ../trunk-jpl/test/NightlyRun/test3002.py (revision 0)
142+++ ../trunk-jpl/test/NightlyRun/test3002.py (revision 13455)
143@@ -0,0 +1,43 @@
144+"""
145+== == == == == == == == == == == == == == == == == == ==
146+Auto generated python script for ISSM: test3002.m
147+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
148+== == == == == == == == == == == == == == == == == == ==
149+
150+Matlab script conversion into python
151+translateToPy.py Author: Michael Pellegrin
152+translateToPy.py Date: 09/24/12
153+== == == == == == == == == == == == == == == == == == ==
154+"""
155+
156+from MatlabFuncs import *
157+from model import *
158+from EnumDefinitions import *
159+import numpy
160+from triangle import *
161+from setmask import *
162+from parameterize import *
163+from setflowequation import *
164+from solve import *
165+
166+md=triangle(model(),'../Exp/Square.exp',180000)
167+md=setmask(md,'all','')
168+md=parameterize(md,'../Par/SquareShelfConstrained.py')
169+md.extrude(3,2)
170+md=setflowequation(md,'macayeal','all')
171+md.cluster=generic('name',oshostname(),'np',3)
172+md.autodiff.isautodiff=true
173+md=solve(md,DiagnosticSolutionEnum())
174+
175+
176+# Fields and tolerances to track changes
177+
178+field_names =['Vx','Vy','Vz','Vel','Pressure']
179+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
180+field_values=[\
181+ md.results['DiagnosticSolution'][1]['Vx'],\
182+ md.results['DiagnosticSolution'][1]['Vy'],\
183+ md.results['DiagnosticSolution'][1]['Vz'],\
184+ md.results['DiagnosticSolution'][1]['Vel'],\
185+ md.results['DiagnosticSolution'][1]['Pressure'],\
186+ ]
187Index: ../trunk-jpl/test/NightlyRun/test3005.py
188===================================================================
189--- ../trunk-jpl/test/NightlyRun/test3005.py (revision 0)
190+++ ../trunk-jpl/test/NightlyRun/test3005.py (revision 13455)
191@@ -0,0 +1,38 @@
192+"""
193+== == == == == == == == == == == == == == == == == == ==
194+Auto generated python script for ISSM: test3005.m
195+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
196+== == == == == == == == == == == == == == == == == == ==
197+
198+Matlab script conversion into python
199+translateToPy.py Author: Michael Pellegrin
200+translateToPy.py Date: 09/24/12
201+== == == == == == == == == == == == == == == == == == ==
202+"""
203+
204+from MatlabFuncs import *
205+from model import *
206+from EnumDefinitions import *
207+import numpy
208+from triangle import *
209+from setmask import *
210+from parameterize import *
211+from setflowequation import *
212+from solve import *
213+
214+md=triangle(model(),'../Exp/Square.exp',150000)
215+md=setmask(md,'all','')
216+md=parameterize(md,'../Par/SquareShelfConstrained.py')
217+md=setflowequation(md,'macayeal','all')
218+md.cluster=generic('name',oshostname(),'np',3)
219+md.autodiff.isautodiff=true
220+md=solve(md,PrognosticSolutionEnum())
221+
222+
223+# Fields and tolerances to track changes
224+
225+field_names =['Thickness']
226+field_tolerances=[1e-13]
227+field_values=[\
228+ md.results['PrognosticSolution'][1]['Thickness'],\
229+ ]
230Index: ../trunk-jpl/test/NightlyRun/test3008.py
231===================================================================
232--- ../trunk-jpl/test/NightlyRun/test3008.py (revision 0)
233+++ ../trunk-jpl/test/NightlyRun/test3008.py (revision 13455)
234@@ -0,0 +1,41 @@
235+"""
236+== == == == == == == == == == == == == == == == == == ==
237+Auto generated python script for ISSM: test3008.m
238+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
239+== == == == == == == == == == == == == == == == == == ==
240+
241+Matlab script conversion into python
242+translateToPy.py Author: Michael Pellegrin
243+translateToPy.py Date: 09/24/12
244+== == == == == == == == == == == == == == == == == == ==
245+"""
246+
247+from MatlabFuncs import *
248+from model import *
249+from EnumDefinitions import *
250+import numpy
251+from triangle import *
252+from setmask import *
253+from parameterize import *
254+from setflowequation import *
255+from solve import *
256+
257+md=triangle(model(),'../Exp/Square.exp',180000)
258+md=setmask(md,'all','')
259+md=parameterize(md,'../Par/SquareShelfConstrained.py')
260+md.extrude(3,1)
261+md=setflowequation(md,'macayeal','all')
262+md.timestepping.time_step=0
263+md.cluster=generic('name',oshostname(),'np',3)
264+md.autodiff.isautodiff=true
265+md=solve(md,ThermalSolutionEnum())
266+
267+
268+# Fields and tolerances to track changes
269+
270+field_names =['Temperature','BasalforcingsMeltingRate']
271+field_tolerances=[1e-13,1e-13]
272+field_values=[\
273+ md.results['ThermalSolution'][1]['Temperature'],\
274+ md.results['ThermalSolution'][1]['BasalforcingsMeltingRate'],\
275+ ]
276Index: ../trunk-jpl/test/NightlyRun/test3003.py
277===================================================================
278--- ../trunk-jpl/test/NightlyRun/test3003.py (revision 0)
279+++ ../trunk-jpl/test/NightlyRun/test3003.py (revision 13455)
280@@ -0,0 +1,52 @@
281+"""
282+== == == == == == == == == == == == == == == == == == ==
283+Auto generated python script for ISSM: test3003.m
284+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
285+== == == == == == == == == == == == == == == == == == ==
286+
287+Matlab script conversion into python
288+translateToPy.py Author: Michael Pellegrin
289+translateToPy.py Date: 09/24/12
290+== == == == == == == == == == == == == == == == == == ==
291+"""
292+
293+from MatlabFuncs import *
294+from model import *
295+from EnumDefinitions import *
296+import numpy
297+from triangle import *
298+from setmask import *
299+from parameterize import *
300+from setflowequation import *
301+from solve import *
302+
303+md=triangle(model(),'../Exp/Square.exp',180000)
304+md=setmask(md,'all','')
305+md=parameterize(md,'../Par/SquareShelfConstrained.py')
306+md.extrude(3,2)
307+md=setflowequation(md,'pattyn','all')
308+md.cluster=generic('name',oshostname(),'np',3)
309+md.diagnostic.requested_outputs=StressTensorEnum()
310+md.autodiff.isautodiff=true
311+md=solve(md,DiagnosticSolutionEnum())
312+
313+
314+# Fields and tolerances to track changes
315+
316+field_names =['Vx','Vy','Vz','Vel','Pressure',\
317+ 'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
318+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,\
319+ 1e-09,1e-09,1e-09,1e-09,1e-09,1e-09]
320+field_values=[\
321+ md.results['DiagnosticSolution'][1]['Vx'],\
322+ md.results['DiagnosticSolution'][1]['Vy'],\
323+ md.results['DiagnosticSolution'][1]['Vz'],\
324+ md.results['DiagnosticSolution'][1]['Vel'],\
325+ md.results['DiagnosticSolution'][1]['Pressure'],\
326+ md.results['DiagnosticSolution'][1]['StressTensorxx'],\
327+ md.results['DiagnosticSolution'][1]['StressTensoryy'],\
328+ md.results['DiagnosticSolution'][1]['StressTensorzz'],\
329+ md.results['DiagnosticSolution'][1]['StressTensorxy'],\
330+ md.results['DiagnosticSolution'][1]['StressTensorxz'],\
331+ md.results['DiagnosticSolution'][1]['StressTensoryz'],\
332+ ]
333Index: ../trunk-jpl/test/NightlyRun/test201.py
334===================================================================
335--- ../trunk-jpl/test/NightlyRun/test201.py (revision 0)
336+++ ../trunk-jpl/test/NightlyRun/test201.py (revision 13455)
337@@ -0,0 +1,26 @@
338+from model import *
339+from triangle import *
340+from setmask import *
341+from parameterize import *
342+from setflowequation import *
343+from EnumDefinitions import *
344+from solve import *
345+from MatlabFuncs import *
346+from ContourToMesh import *
347+
348+md=triangle(model(),'../Exp/Square.exp',150000)
349+md=setmask(md,'all','')
350+md=parameterize(md,'../Par/SquareShelf.py')
351+md=setflowequation(md,'macayeal','all')
352+md.cluster=generic('name',oshostname(),'np',3)
353+md=solve(md,DiagnosticSolutionEnum())
354+
355+#Fields and tolerances to track changes
356+field_names =['Vx','Vy','Vel','Pressure']
357+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
358+field_values=[\
359+ md.results['DiagnosticSolution'][1]['Vx'],\
360+ md.results['DiagnosticSolution'][1]['Vy'],\
361+ md.results['DiagnosticSolution'][1]['Vel'],\
362+ md.results['DiagnosticSolution'][1]['Pressure'],\
363+ ]
364Index: ../trunk-jpl/test/NightlyRun/test3006.py
365===================================================================
366--- ../trunk-jpl/test/NightlyRun/test3006.py (revision 0)
367+++ ../trunk-jpl/test/NightlyRun/test3006.py (revision 13455)
368@@ -0,0 +1,42 @@
369+"""
370+== == == == == == == == == == == == == == == == == == ==
371+Auto generated python script for ISSM: test3006.m
372+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
373+== == == == == == == == == == == == == == == == == == ==
374+
375+Matlab script conversion into python
376+translateToPy.py Author: Michael Pellegrin
377+translateToPy.py Date: 09/24/12
378+== == == == == == == == == == == == == == == == == == ==
379+"""
380+
381+from MatlabFuncs import *
382+from model import *
383+from EnumDefinitions import *
384+import numpy
385+from triangle import *
386+from meshconvert import *
387+from setmask import *
388+from parameterize import *
389+from setflowequation import *
390+from solve import *
391+
392+md=triangle(model(),'../Exp/Square.exp',150000)
393+md=meshconvert(md)
394+md=setmask(md,'all','')
395+md=parameterize(md,'../Par/SquareShelfConstrained.py')
396+md=setflowequation(md,'macayeal','all')
397+md.cluster=generic('name',oshostname(),'np',3)
398+md.prognostic.stabilization=3
399+md.prognostic.spcthickness=md.geometry.thickness
400+md.autodiff.isautodiff=true
401+md=solve(md,PrognosticSolutionEnum())
402+
403+
404+# Fields and tolerances to track changes
405+
406+field_names =['Thickness']
407+field_tolerances=[1e-13]
408+field_values=[\
409+ md.results['PrognosticSolution'][1]['Thickness'],\
410+ ]
411Index: ../trunk-jpl/test/NightlyRun/test3001.py
412===================================================================
413--- ../trunk-jpl/test/NightlyRun/test3001.py (revision 0)
414+++ ../trunk-jpl/test/NightlyRun/test3001.py (revision 13455)
415@@ -0,0 +1,47 @@
416+"""
417+== == == == == == == == == == == == == == == == == == ==
418+Auto generated python script for ISSM: test3001.m
419+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
420+== == == == == == == == == == == == == == == == == == ==
421+
422+Matlab script conversion into python
423+translateToPy.py Author: Michael Pellegrin
424+translateToPy.py Date: 09/24/12
425+== == == == == == == == == == == == == == == == == == ==
426+"""
427+
428+from MatlabFuncs import *
429+from model import *
430+from EnumDefinitions import *
431+import numpy
432+from triangle import *
433+from setmask import *
434+from parameterize import *
435+from setflowequation import *
436+from solve import *
437+
438+md=triangle(model(),'../Exp/Square.exp',50000)
439+md=setmask(md,'all','')
440+md=parameterize(md,'../Par/SquareShelfConstrained.py')
441+md=setflowequation(md,'macayeal','all')
442+md.cluster=generic('name',oshostname(),'np',3)
443+md.diagnostic.requested_outputs=StressTensorEnum()
444+md.autodiff.isautodiff=true
445+md=solve(md,DiagnosticSolutionEnum())
446+
447+
448+# Fields and tolerances to track changes
449+
450+field_names =['Vx','Vy','Vel','Pressure',\
451+ 'StressTensorxx','StressTensoryy','StressTensorxy']
452+field_tolerances=[1e-13,1e-13,1e-13,1e-13,\
453+ 1e-13,1e-13,1e-13]
454+field_values=[\
455+ md.results['DiagnosticSolution'][1]['Vx'],\
456+ md.results['DiagnosticSolution'][1]['Vy'],\
457+ md.results['DiagnosticSolution'][1]['Vel'],\
458+ md.results['DiagnosticSolution'][1]['Pressure'],\
459+ md.results['DiagnosticSolution'][1]['StressTensorxx'],\
460+ md.results['DiagnosticSolution'][1]['StressTensoryy'],\
461+ md.results['DiagnosticSolution'][1]['StressTensorxy'],\
462+ ]
463Index: ../trunk-jpl/test/NightlyRun/test3009.py
464===================================================================
465--- ../trunk-jpl/test/NightlyRun/test3009.py (revision 0)
466+++ ../trunk-jpl/test/NightlyRun/test3009.py (revision 13455)
467@@ -0,0 +1,44 @@
468+"""
469+== == == == == == == == == == == == == == == == == == ==
470+Auto generated python script for ISSM: test3009.m
471+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
472+== == == == == == == == == == == == == == == == == == ==
473+
474+Matlab script conversion into python
475+translateToPy.py Author: Michael Pellegrin
476+translateToPy.py Date: 09/24/12
477+== == == == == == == == == == == == == == == == == == ==
478+"""
479+
480+from MatlabFuncs import *
481+from model import *
482+from EnumDefinitions import *
483+import numpy
484+from triangle import *
485+from setmask import *
486+from parameterize import *
487+from setflowequation import *
488+from solve import *
489+
490+md=triangle(model(),'../Exp/Square.exp',180000)
491+md=setmask(md,'all','')
492+md=parameterize(md,'../Par/SquareShelfConstrained.py')
493+md.extrude(3,1)
494+md=setflowequation(md,'macayeal','all')
495+md.cluster=generic('name',oshostname(),'np',3)
496+md.transient.isdiagnostic=0
497+md.transient.isprognostic=0
498+md.transient.isthermal=1
499+md.transient.isgroundingline=0
500+md.autodiff.isautodiff=true
501+md=solve(md,TransientSolutionEnum())
502+
503+
504+# Fields and tolerances to track changes
505+
506+field_names =['Temperature','BasalforcingsMeltingRate']
507+field_tolerances=[1e-13,1e-13]
508+field_values=[\
509+ md.results['TransientSolution'][1]['Temperature'],\
510+ md.results['TransientSolution'][1]['BasalforcingsMeltingRate'],\
511+ ]
512Index: ../trunk-jpl/test/NightlyRun/test3010.py
513===================================================================
514--- ../trunk-jpl/test/NightlyRun/test3010.py (revision 0)
515+++ ../trunk-jpl/test/NightlyRun/test3010.py (revision 13455)
516@@ -0,0 +1,66 @@
517+"""
518+== == == == == == == == == == == == == == == == == == ==
519+Auto generated python script for ISSM: test3010.m
520+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
521+== == == == == == == == == == == == == == == == == == ==
522+
523+Matlab script conversion into python
524+translateToPy.py Author: Michael Pellegrin
525+translateToPy.py Date: 09/24/12
526+== == == == == == == == == == == == == == == == == == ==
527+"""
528+
529+from MatlabFuncs import *
530+from model import *
531+from EnumDefinitions import *
532+import numpy
533+from triangle import *
534+from setmask import *
535+from parameterize import *
536+from setflowequation import *
537+from solve import *
538+
539+md=triangle(model(),'../Exp/Square.exp',150000)
540+md=setmask(md,'all','')
541+md=parameterize(md,'../Par/SquareShelfConstrained.py')
542+md=setflowequation(md,'macayeal','all')
543+md.cluster=generic('name',oshostname(),'np',3)
544+md.transient.requested_outputs=IceVolumeEnum()
545+
546+
547+md.autodiff.isautodiff=true
548+md=solve(md,TransientSolutionEnum())
549+
550+
551+# Fields and tolerances to track changes
552+
553+field_names =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3']
554+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
555+ 1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
556+ 1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
557+field_values=[\
558+ md.results['TransientSolution'][1]['Vx'],\
559+ md.results['TransientSolution'][1]['Vy'],\
560+ md.results['TransientSolution'][1]['Vel'],\
561+ md.results['TransientSolution'][1]['Pressure'],\
562+ md.results['TransientSolution'][1]['Bed'],\
563+ md.results['TransientSolution'][1]['Surface'],\
564+ md.results['TransientSolution'][1]['Thickness'],\
565+ md.results['TransientSolution'][1]['IceVolume'],\
566+ md.results['TransientSolution'][2]['Vx'],\
567+ md.results['TransientSolution'][2]['Vy'],\
568+ md.results['TransientSolution'][2]['Vel'],\
569+ md.results['TransientSolution'][2]['Pressure'],\
570+ md.results['TransientSolution'][2]['Bed'],\
571+ md.results['TransientSolution'][2]['Surface'],\
572+ md.results['TransientSolution'][2]['Thickness'],\
573+ md.results['TransientSolution'][2]['IceVolume'],\
574+ md.results['TransientSolution'][3]['Vx'],\
575+ md.results['TransientSolution'][3]['Vy'],\
576+ md.results['TransientSolution'][3]['Vel'],\
577+ md.results['TransientSolution'][3]['Pressure'],\
578+ md.results['TransientSolution'][3]['Bed'],\
579+ md.results['TransientSolution'][3]['Surface'],\
580+ md.results['TransientSolution'][3]['Thickness'],\
581+ md.results['TransientSolution'][3]['IceVolume'],\
582+ ]
583Index: ../trunk-jpl/test/NightlyRun/test3004.py
584===================================================================
585--- ../trunk-jpl/test/NightlyRun/test3004.py (revision 0)
586+++ ../trunk-jpl/test/NightlyRun/test3004.py (revision 13455)
587@@ -0,0 +1,43 @@
588+"""
589+== == == == == == == == == == == == == == == == == == ==
590+Auto generated python script for ISSM: test3004.m
591+Created on 2012-09-25 via translateToPy.py Ver 1.0 by mikep
592+== == == == == == == == == == == == == == == == == == ==
593+
594+Matlab script conversion into python
595+translateToPy.py Author: Michael Pellegrin
596+translateToPy.py Date: 09/24/12
597+== == == == == == == == == == == == == == == == == == ==
598+"""
599+
600+from MatlabFuncs import *
601+from model import *
602+from EnumDefinitions import *
603+import numpy
604+from triangle import *
605+from setmask import *
606+from parameterize import *
607+from setflowequation import *
608+from solve import *
609+
610+md=triangle(model(),'../Exp/Square.exp',180000)
611+md=setmask(md,'all','')
612+md=parameterize(md,'../Par/SquareShelfConstrained.py')
613+md.extrude(3,2)
614+md=setflowequation(md,'stokes','all')
615+md.cluster=generic('name',oshostname(),'np',3)
616+md.autodiff.isautodiff=true
617+md=solve(md,DiagnosticSolutionEnum())
618+
619+
620+# Fields and tolerances to track changes
621+
622+field_names =['Vx','Vy','Vz','Vel','Pressure']
623+field_tolerances=[1e-08,1e-08,1e-07,1e-08,1e-08]
624+field_values=[\
625+ md.results['DiagnosticSolution'][1]['Vx'],\
626+ md.results['DiagnosticSolution'][1]['Vy'],\
627+ md.results['DiagnosticSolution'][1]['Vz'],\
628+ md.results['DiagnosticSolution'][1]['Vel'],\
629+ md.results['DiagnosticSolution'][1]['Pressure'],\
630+ ]
631Index: ../trunk-jpl/src/modules/python/Makefile.am
632===================================================================
633--- ../trunk-jpl/src/modules/python/Makefile.am (revision 13454)
634+++ ../trunk-jpl/src/modules/python/Makefile.am (revision 13455)
635@@ -13,6 +13,7 @@
636 InterpFromMeshToMesh2d.la\
637 NodeConnectivity.la\
638 StringToEnum.la\
639+ ContourToMesh.la\
640 TriMesh.la
641 endif
642 #}}}
643@@ -93,6 +94,10 @@
644 ../StringToEnum/StringToEnum.h
645 StringToEnum_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
646
647+ContourToMesh_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp\
648+ ../ContourToMesh/ContourToMesh.h
649+ContourToMesh_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
650+
651 TriMesh_la_SOURCES = ../TriMesh/TriMesh.cpp\
652 ../TriMesh/TriMesh.h
653 TriMesh_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB)
654Index: ../trunk-jpl/src/m/classes/flowequation.py
655===================================================================
656--- ../trunk-jpl/src/m/classes/flowequation.py (revision 13454)
657+++ ../trunk-jpl/src/m/classes/flowequation.py (revision 13455)
658@@ -1,4 +1,5 @@
659 #module imports
660+import copy
661 import numpy
662 from fielddisplay import fielddisplay
663 from EnumDefinitions import *
664@@ -80,6 +81,8 @@
665 # }}}
666
667 def marshall(self,fid): # {{{
668+ #print "marshalling flowequation-1"
669+ #print self.vertex_equation
670 WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean')
671 WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean')
672 WriteData(fid,'object',self,'fieldname','isl1l2','format','Boolean')
673@@ -88,7 +91,8 @@
674 WriteData(fid,'object',self,'fieldname','borderpattyn','format','DoubleMat','mattype',1)
675 WriteData(fid,'object',self,'fieldname','borderstokes','format','DoubleMat','mattype',1)
676 #convert approximations to enums
677- data=self.vertex_equation
678+ ## data=list(self.vertex_equation)
679+ data=copy.deepcopy(self.vertex_equation)
680 data[numpy.nonzero(data==0)]=NoneApproximationEnum()
681 data[numpy.nonzero(data==1)]=HutterApproximationEnum()
682 data[numpy.nonzero(data==2)]=MacAyealApproximationEnum()
683@@ -99,7 +103,8 @@
684 data[numpy.nonzero(data==7)]=PattynStokesApproximationEnum()
685 data[numpy.nonzero(data==8)]=L1L2ApproximationEnum()
686 WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
687- data=self.element_equation
688+ ########data=self.element_equation
689+ data=copy.deepcopy(self.element_equation)
690 data[numpy.nonzero(data==0)]=NoneApproximationEnum()
691 data[numpy.nonzero(data==1)]=HutterApproximationEnum()
692 data[numpy.nonzero(data==2)]=MacAyealApproximationEnum()
693@@ -110,5 +115,7 @@
694 data[numpy.nonzero(data==7)]=PattynStokesApproximationEnum()
695 data[numpy.nonzero(data==8)]=L1L2ApproximationEnum()
696 WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
697+ #print "marshalling flowequation-4"
698+ #print self.vertex_equation
699 # }}}
700
701Index: ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py
702===================================================================
703--- ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py (revision 13454)
704+++ ../trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py (revision 13455)
705@@ -1,5 +1,6 @@
706 import os
707 import numpy
708+from ContourToMesh import ContourToMesh
709
710 def SetIceShelfBC(md,icefrontfile=''):
711 """
712@@ -23,8 +24,8 @@
713 if icefrontfile:
714 if not os.path.exists(icefrontfile):
715 raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
716- nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
717- nodeonicefront=double(md.mesh.vertexonboundary and nodeinsideicefront)
718+ nodeinsideicefront=ContourToMesh((md.mesh.elements).reshape(-1,1),(md.mesh.x).reshape(-1,1),(md.mesh.y).reshape(-1,1),icefrontfile,'node',2)
719+ nodeonicefront= numpy.bitwise_and( map(int,md.mesh.vertexonboundary), map(int,nodeinsideicefront[0].ravel()) )
720 else:
721 nodeonicefront=numpy.zeros(md.mesh.numberofvertices)
722
723Index: ../trunk-jpl/scripts/mToPy.py
724===================================================================
725--- ../trunk-jpl/scripts/mToPy.py (revision 0)
726+++ ../trunk-jpl/scripts/mToPy.py (revision 13455)
727@@ -0,0 +1,52 @@
728+#!/usr/bin/env python
729+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
730+#
731+program = 'mToPy.py'
732+version = '1.0'
733+versionReleaseDate = '09/24/12'
734+origAuthor = 'Mike Pellegrin'
735+desc = '\nMain control unit for converting an matlab script file to python'
736+#
737+# Note: Output will be put in the same (absolute) location as the input.
738+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
739+# History
740+# Date Developer Modification
741+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
742+# 09/24/12 Michael Pellegrin Initial Release V1.0
743+#
744+#
745+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
746+
747+import sys, os, shutil
748+import translateToPy
749+import mToPy # touch mToPy to assertain location of installation
750+
751+def convert ( inputFile ):
752+ try:
753+ if os.path.exists( inputFile + '.m') and os.path.isfile( inputFile + '.m'):
754+ checkBackupOutputFile( inputFile )
755+ convertMToPy( inputFile )
756+ else:
757+ print 'Specified input file: ' + inputFile + '.m doesn\'t appear to exist'
758+ finally:
759+ print ''
760+
761+def convertMToPy ( inputFileName ):
762+ translateToPy.convertToPython ( inputFileName + '.m', inputFileName + '.py' )
763+
764+def checkBackupOutputFile ( inputFile ):
765+ mFile = inputFile + '.m'
766+ pyFile = inputFile + '.py'
767+ if os.path.exists( pyFile ):
768+ i=1
769+ bkupName = pyFile + str(i)
770+ while os.path.exists( bkupName ):
771+ i+=1
772+ bkupName = pyFile + str(i)
773+ os.rename( pyFile, bkupName )
774+
775+ shutil.copyfile(mFile, pyFile)
776+
777+if __name__ == "__main__":
778+ convert( sys.argv[1])
779+
780
781Property changes on: ../trunk-jpl/scripts/mToPy.py
782___________________________________________________________________
783Added: svn:executable
784## -0,0 +1 ##
785+*
786Index: ../trunk-jpl/scripts/translateToPy.py
787===================================================================
788--- ../trunk-jpl/scripts/translateToPy.py (revision 0)
789+++ ../trunk-jpl/scripts/translateToPy.py (revision 13455)
790@@ -0,0 +1,220 @@
791+
792+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
793+#
794+program = 'translateToPy.py'
795+version = '1.0'
796+versionReleaseDate = '09/24/12'
797+origAuthor = 'Mike Pellegrin'
798+desc = '\nMatlab script conversion into python'
799+#
800+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
801+# History
802+# Date Developer Modification
803+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
804+# 09/24/12 Michael Pellegrin Initial Release V1.0
805+#
806+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
807+
808+import codecs, unicodedata
809+import sys, re, datetime, os
810+import decimal, operator
811+
812+
813+outputLocation = sys.stdout
814+inputFile = ""
815+
816+# other global vars
817+indentLevel = 0
818+
819+
820+def setupOutputLocation ( outFile ):
821+ if outFile != sys.stdout:
822+ globals()['outputLocation'] = open( outFile, 'w' ) # clobber
823+
824+def translateFile ( inputFile ):
825+ f = codecs.open( inputFile, encoding='utf-8' )
826+ try:
827+ for line in f:
828+ # print "in: " +line
829+
830+ asciiLine = unicodedata.normalize('NFKD', line).encode('ascii','ignore')
831+ line = asciiLine
832+
833+ translateLine( line )
834+
835+ finally:
836+ f.close()
837+
838+def translateLine ( line ):
839+
840+ if len(line) == 1: # blank line
841+ output( line )
842+
843+ elif line.split()[0][0] == '%': # comment line
844+ output("# " + line.replace('%','') )
845+
846+ else: # needs cleanup. this is a real-quick-n-dirty implimentation
847+ #print line
848+ res = line.replace('{','[')
849+ res = res.replace('}',']')
850+ res = res.replace('model','model()')
851+ res = res.replace('SolutionEnum','SolutionEnum()')
852+ res = res.replace('StressTensorEnum','StressTensorEnum()')
853+ res = res.replace('.par','.py')
854+ res = res.replace('=extrude(md,','.extrude(')
855+
856+ res = res.replace('thickness(pos)','thickness[pos]')
857+ res = res.replace('find(md.','numpy.nonzero(md.')
858+
859+ res = res.replace('...','\\')
860+ res = res.replace(';','')
861+ res = res.replace('\n','')
862+
863+ res = convertFieldValues( res )
864+
865+ output(res)
866+
867+def convertFieldValues ( currentLine ):
868+ # before utilizing regex's {starting w/ eg. \([0-9]\) } for special case: ...(#)...
869+ # i noticed what i'm looking for is only TransientSolution(*). So, ...
870+
871+ res = currentLine
872+ if 'md.results' in currentLine:
873+ res = res.replace('(md.results.','md.results[\'')
874+
875+ if 'TransientSolution(' in currentLine: # got a TransientSolution([0-9..]) case
876+ res = res.replace('TransientSolution(','TransientSolution\'][')
877+ parts = res.split(')')
878+ res = parts[0] + '][\'' + parts[1].replace('.','') + '\']' + parts[2]
879+
880+ else: # handle the other cases for md.results
881+
882+ res = res.replace('Solution.Vx)','Solution\'][1][\'Vx\']')
883+ res = res.replace('Solution.Vy)','Solution\'][1][\'Vy\']')
884+ res = res.replace('Solution.Vz)','Solution\'][1][\'Vz\']')
885+ res = res.replace('Solution.Vel)','Solution\'][1][\'Vel\']')
886+
887+ res = res.replace('Solution.Pressure)','Solution\'][1][\'Pressure\']')
888+
889+ res = res.replace('Solution.StressTensorxx)','Solution\'][1][\'StressTensorxx\']')
890+ res = res.replace('Solution.StressTensorxy)','Solution\'][1][\'StressTensorxy\']')
891+ res = res.replace('Solution.StressTensoryy)','Solution\'][1][\'StressTensoryy\']')
892+ res = res.replace('Solution.StressTensorzz)','Solution\'][1][\'StressTensorzz\']')
893+ res = res.replace('Solution.StressTensorxz)','Solution\'][1][\'StressTensorxz\']')
894+ res = res.replace('Solution.StressTensoryz)','Solution\'][1][\'StressTensoryz\']')
895+
896+ res = res.replace('Solution.Thickness)','Solution\'][1][\'Thickness\']')
897+
898+ res = res.replace('Solution.Temperature)','Solution\'][1][\'Temperature\']')
899+
900+ res = res.replace('Solution.BasalforcingsMeltingRate)','Solution\'][1][\'BasalforcingsMeltingRate\']')
901+
902+ res = res.replace('Solution.SurfaceSlopeX)','Solution\'][1][\'SurfaceSlopeX\']')
903+ res = res.replace('Solution.SurfaceSlopeY)','Solution\'][1][\'SurfaceSlopeY\']')
904+ res = res.replace('Solution.SurfaceSlopeZ)','Solution\'][1][\'SurfaceSlopeZ\']')
905+
906+ res = res.replace('Solution.BedSlopeX)','Solution\'][1][\'BedSlopeX\']')
907+ res = res.replace('Solution.BedSlopeY)','Solution\'][1][\'BedSlopeY\']')
908+ res = res.replace('Solution.BedSlopeZ)','Solution\'][1][\'BedSlopeZ\']')
909+
910+ res = res.replace('Solution.Enthalpy)','Solution\'][1][\'Enthalpy\']')
911+ res = res.replace('Solution.Waterfraction)','Solution\'][1][\'Waterfraction\']')
912+ res = res.replace('Solution.Temperature)','Solution\'][1][\'Temperature\']')
913+ return res
914+
915+def output ( line ):
916+ numTabs = indentLevel
917+ while numTabs:
918+ numTabs -= 1
919+ print >> outputLocation, '\t',
920+ print >> outputLocation, line
921+
922+def outputTopOfSript( inputFile ):
923+
924+ global indentLevel
925+
926+ output("\"\"\"")
927+ output("== == == == == == == == == == == == == == == == == == ==")
928+ output("Auto generated python script for ISSM: %s" % (inputFile) )
929+ output("Created on %s via %s Ver %s by %s" % ( datetime.date.today(), program, version, os.getlogin()))
930+ output("== == == == == == == == == == == == == == == == == == ==")
931+ #output("")
932+ output(desc)
933+ output("%s Author: Michael Pellegrin" % (program))
934+ output("%s Date: %s" % (program, versionReleaseDate))
935+ output("== == == == == == == == == == == == == == == == == == ==")
936+ output("\"\"\"")
937+ output("")
938+
939+def outputBottomOfScript():
940+
941+ global indentLevel
942+
943+ output("")
944+
945+def genericImports ():
946+ output("from MatlabFuncs import *")
947+ output("from model import *")
948+ output("from EnumDefinitions import *")
949+ output("from numpy import *")
950+
951+def createImports ( inputFile ):
952+ genericImports()
953+
954+ # cycle through eachline to assertain import needs
955+ f = codecs.open( inputFile, encoding='utf-8' )
956+ try:
957+ for line in f:
958+ # print "in: " +line
959+
960+ # toss blank lines
961+ if len(line) == 1:
962+ continue
963+
964+ asciiLine = unicodedata.normalize('NFKD', line).encode('ascii','ignore')
965+ line = asciiLine
966+
967+ for il in importList:
968+ if line.find(il) != -1:
969+ output( "from %s import *" % (il) )
970+ importList.remove(il) # already got it
971+
972+ finally:
973+ output("")
974+ f.close()
975+
976+
977+def initImportList ():
978+ global importList
979+
980+ importList = [ \
981+ 'triangle' ,\
982+ 'setmask' ,\
983+ 'parameterize' ,\
984+ 'setflowequation' ,\
985+ 'meshconvert' ,\
986+ 'solve' ,\
987+ #'zeros' # -> numpy
988+ ]
989+
990+
991+
992+def convertToPython ( inFile, outFile = sys.stdout ):
993+ #print ' in cnvrt to python w/ file:' + inFile
994+ initImportList()
995+ setupOutputLocation( outFile )
996+ outputTopOfSript( inFile )
997+ createImports( inFile )
998+ translateFile( inFile )
999+ # outputBottomOfScript()
1000+
1001+
1002+if __name__ == "__main__":
1003+ #print ' in main w/ arg:' + sys.argv[1]+' '+sys.argv[2]
1004+ if len(sys.argv)==2:
1005+ convertToPython( sys.argv[1], sys.argv[2] )
1006+ else:
1007+ convertToPython( sys.argv[1] )
1008+
1009+
1010+
1011
1012Property changes on: ../trunk-jpl/scripts/translateToPy.py
1013___________________________________________________________________
1014Added: svn:executable
1015## -0,0 +1 ##
1016+*
Note: See TracBrowser for help on using the repository browser.