source: issm/trunk-jpl/examples/Greenland/CheatSheet.py@ 26559

Last change on this file since 26559 was 26559, checked in by bdef, 3 years ago

NEW: adding Greenland tutorial in Python

File size: 2.9 KB
Line 
1if 7 in steps:
2 # Step 7: Historical Relaxation run {{{
3 print(' Step 7: Historical Relaxation run')
4 md = loadmodel('./Models/Greenland.Control_drag.nc')
5
6 with open('./smbbox.npz', "rb") as smbFile:
7 SMB = np.load(smbFile)
8 x1 = np.squeeze(SMB['x1'])
9 y1 = np.squeeze(SMB['y1'])
10 smbmean = np.squeeze(SMB['smbmean'])
11
12 #convert mesh x, y into the Box projection
13 [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
14 [xi, yi] = ll2xy(md.mesh.lat, md.mesh.long, + 1, 45, 70)
15
16 #Interpolate and set surface mass balance
17 x1 = x1.flatten()
18 y1 = y1.flatten()
19 smbmean = smbmean.flatten()
20 index = BamgTriangulate(x1, y1)
21 smb_mo = InterpFromMeshToMesh2d(index, x1, y1, smbmean, xi, yi)
22 smb = smb_mo * 12 / 1000 * md.materials.rho_freshwater / md.materials.rho_ice
23 md.smb.mass_balance = np.append(smb, 1)
24
25 #Set transient options, run for 20 years, saving every timestep
26 md.timestepping.time_step = 0.2
27 md.timestepping.final_time = 200
28 md.settings.output_frequency = 5
29
30 #Additional options
31 md.inversion.iscontrol = 0
32 md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'SmbMassBalance']
33 md.verbose = verbose('solution', True, 'module', True)
34
35 #Go solve
36 md.cluster = generic('name', gethostname(), 'np', 2)
37 md = solve(md, 'Transient')
38
39 export_netCDF(md, './Models/Greenland.HistoricTransient_200yr.nc')
40 # }}}
41
42if 8 in steps:
43 # Step 8: Plotting exercise {{{
44 print(' Step 8: Plotting exercise')
45 md = loadmodel('./Models/Greenland.HistoricTransient_200yr.nc')
46
47 #Create Line Plots of relaxation run. Create a figure.
48 fig = plt.figure(tight_layout=True)
49
50 #Save surface mass balance, by looping through 200 years (1000 steps)
51 #Note, the first output will always contain output from time step 1
52
53 Timer = np.arange(0.2, 200.2)
54 surfmb = []
55 for i in range(0, 200):
56 surfmb.append(md.results.TransientSolution[i].SmbMassBalance)
57
58 #Plot surface mass balance time series in first subplot
59 ax = fig.add_subplot(311)
60 ax.plot(Timer, np.nanmean(surfmb, axis=1))
61
62 #Title this plot Mean surface mass balance
63 ax.set_title('Mean Surface mass balance')
64
65 #Save velocity by looping through 200 years
66 vel = []
67 for i in range(0, 200):
68 vel.append(md.results.TransientSolution[i].Vel)
69
70 #Plot velocity time series in second subplot
71 ay = fig.add_subplot(312)
72 ay.plot(Timer, np.nanmean(vel, axis=1))
73
74 #Title this plot Mean Velocity
75 ay.set_title('Mean Velocity')
76
77 #Save Ice Volume by looping through 200 years
78 volume = []
79 for i in range(0, 200):
80 volume.append(md.results.TransientSolution[i].IceVolume)
81
82 #Plot volume time series in third subplot
83 az = fig.add_subplot(313)
84 az.plot(Timer, volume)
85
86 #Title this plot Mean Velocity and add an x label of years
87 az.set_title('Ice Volume')
88 az.set_xlabel('years')
89 # }}}
Note: See TracBrowser for help on using the repository browser.