source: trunk/src/scripts_Laura/ARCTIC/Travail_CEN/read_spec_lamb_nadir.py @ 55

Last change on this file since 55 was 53, checked in by lahlod, 10 years ago

modifs

File size: 11.6 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3import string
4import numpy as np
5import matplotlib.pyplot as plt
6from pylab import *
7from mpl_toolkits.basemap import Basemap
8from mpl_toolkits.basemap import shiftgrid, cm
9from netCDF4 import Dataset
10import scipy.special
11import ffgrid2
12import map_ffgrid
13import arctic_map # function to regrid coast limits
14import cartesian_grid_test # function to convert grid from polar to cartesian
15
16
17
18
19###############
20# time period #
21###############
22month = np.array(['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'])
23month_day = np.array([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])
24M = len(month)
25
26
27
28########################
29# grid characteristics #
30########################
31x0 = -3000. # min limit of grid
32x1 = 2500. # max limit of grid
33dx = 100.
34xvec = np.arange(x0, x1+dx, dx)
35nx = len(xvec) 
36y0 = -3000. # min limit of grid
37y1 = 3000. # max limit of grid
38dy = 100.
39yvec = np.arange(y0, y1+dy, dy)
40ny = len(yvec)
41
42
43
44#############################
45# grid data from .dat files #
46#############################
47tsu = np.zeros([ny, nx, 31, M], float)
48'''tu = np.zeros([ny, nx, 31, M], float)
49td = np.zeros([ny, nx, 31, M], float)
50tbs = np.zeros([ny, nx, 31, M], float)
51tbl = np.zeros([ny, nx, 31, M], float)
52es = np.zeros([ny, nx, 31, M], float)
53el = np.zeros([ny, nx, 31, M], float)
54esl = np.zeros([ny, nx, 31, M], float)
55esl00 = np.zeros([ny, nx, 31, M], float)
56esl25 = np.zeros([ny, nx, 31, M], float)
57esl50 = np.zeros([ny, nx, 31, M], float)
58esl75 = np.zeros([ny, nx, 31, M], float)
59esl100 = np.zeros([ny, nx, 31, M], float)'''
60for imo in range (0, M):
61    print 'month: ' + month[imo]
62    fichier = open('/net/argos/data/parvati/lahlod/ARCTIC/GLACE/AMSUA/GLACE_AMSUA_EMIS_' + month[imo] + '2009.DAT','r')
63    numlines = 0
64    for line in fichier: numlines += 1
65    fichier.close()
66    fichier = open('/net/argos/data/parvati/lahlod/ARCTIC/GLACE/AMSUA/GLACE_AMSUA_EMIS_' + month[imo] + '2009.DAT','r') 
67    nbtotal = numlines-1
68    iligne = 0
69    jjr = np.zeros([nbtotal],float)
70    lat = np.zeros([nbtotal],float)
71    lon = np.zeros([nbtotal],float)
72    '''e = np.zeros([nbtotal],float)'''
73    ts = np.zeros([nbtotal],float)
74    '''tup = np.zeros([nbtotal],float)
75    tdn = np.zeros([nbtotal],float)
76    tb = np.zeros([nbtotal],float)
77    theta_eff = np.zeros([nbtotal],float)
78    opac = np.zeros([nbtotal],float)
79    tdn_lamb = np.zeros([nbtotal],float)
80    tb_spec = np.zeros([nbtotal],float)
81    tb_lamb = np.zeros([nbtotal],float)
82    e_spec = np.zeros([nbtotal],float)
83    e_lamb = np.zeros([nbtotal],float)
84    e_spec_lamb = np.zeros([nbtotal],float)
85    e_sl_00 = np.zeros([nbtotal],float)
86    e_sl_25 = np.zeros([nbtotal],float)
87    e_sl_50 = np.zeros([nbtotal],float)
88    e_sl_75 = np.zeros([nbtotal],float)
89    e_sl_100 = np.zeros([nbtotal],float)'''
90    while (iligne < nbtotal) :
91         line=fichier.readline()
92         liste = line.split()
93         jjr[iligne] = float(liste[4])
94         lat[iligne] = float(liste[1])
95         lon[iligne] = float(liste[0])
96         '''e[iligne] = float(liste[5])'''
97         ts[iligne] = float(liste[8])
98         '''tup[iligne] = float(liste[7])
99         tdn[iligne] = float(liste[8])
100         tb[iligne] = float(liste[10])
101         theta_eff[iligne] = float(liste[12])
102         opac[iligne] = float(liste[11])
103         tdn_lamb[iligne] = float(liste[13])
104         tb_spec[iligne]  = float(liste[14])
105         tb_lamb[iligne] = float(liste[15])
106         e_spec[iligne] = float(liste[16])
107         e_lamb[iligne] = float(liste[17])
108         e_spec_lamb[iligne] = float(liste[18])
109         e_sl_00[iligne] = float(liste[19])
110         e_sl_25[iligne] = float(liste[20])
111         e_sl_50[iligne] = float(liste[21])
112         e_sl_75[iligne] = float(liste[22])
113         e_sl_100[iligne] = float(liste[23])'''
114         iligne=iligne+1
115    fichier.close()
116    print 'ts'
117    z0 = ts.min()
118    z1 = ts.max()
119    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, ts, z0, z1, dx, dy)
120    ts_day = zgrid_output
121    tsu[:, :, 0 : month_day[imo], imo] = ts_day[:, :, :]
122    '''print 'tup'
123    z0 = tup.min()
124    z1 = tup.max()
125    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, tup, z0, z1, dx, dy)
126    tup_day = zgrid_output
127    tu[:, :, 0 : month_day[imo], imo] = tup_day[:, :, :]
128    print 'tdn'
129    z0 = tdn.min()
130    z1 = tdn.max()
131    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, tdn, z0, z1, dx, dy)
132    tdn_day = zgrid_output
133    td[:, :, 0 : month_day[imo], imo] = tdn_day[:, :, :]
134    print 'tb spec'
135    z0 = tb_spec.min()
136    z1 = tb_spec.max()
137    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, tb_spec, z0, z1, dx, dy)
138    tb_spec_day = zgrid_output
139    tbs[:, :, 0 : month_day[imo], imo] = tb_spec_day[:, :, :]
140    print 'tb lamb'
141    z0 = tb_lamb.min()
142    z1 = tb_lamb.max()
143    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, tb_lamb, z0, z1, dx, dy)
144    tb_lamb_day = zgrid_output
145    tbl[:, :, 0 : month_day[imo], imo] = tb_lamb_day[:, :, :]
146    print 'emis spec'
147    z0 = e_spec.min()
148    z1 = e_spec.max()
149    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_spec, z0, z1, dx, dy)
150    e_spec_day = zgrid_output
151    es[:, :, 0 : month_day[imo], imo] = e_spec_day[:, :, :]
152    print 'emis lamb'
153    z0 = e_lamb.min()
154    z1 = e_lamb.max()
155    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_lamb, z0, z1, dx, dy)
156    e_lamb_day = zgrid_output
157    el[:, :, 0 : month_day[imo], imo] = e_lamb_day[:, :, :]
158    print 'emis spec lamb'
159    z0 = e_spec_lamb.min()
160    z1 = e_spec_lamb.max()
161    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_spec_lamb, z0, z1, dx, dy)
162    e_spec_lamb_day = zgrid_output
163    esl[:, :, 0 : month_day[imo], imo] = e_spec_lamb_day[:, :, :]
164    print 'emis spec lamb 00'
165    z0 = e_sl_00.min()
166    z1 = e_sl_00.max()
167    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_sl_00, z0, z1, dx, dy)
168    e_sl_00_day = zgrid_output
169    esl00[:, :, 0 : month_day[imo], imo] = e_sl_00_day[:, :, :]
170    print 'emis spec lamb 25'
171    z0 = e_sl_25.min()
172    z1 = e_sl_25.max()
173    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_sl_25, z0, z1, dx, dy)
174    e_sl_25_day = zgrid_output
175    esl25[:, :, 0 : month_day[imo], imo] = e_sl_25_day[:, :, :]
176    print 'emis spec lamb 50'
177    z0 = e_sl_50.min()
178    z1 = e_sl_50.max()
179    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_sl_50, z0, z1, dx, dy)
180    e_sl_50_day = zgrid_output
181    esl50[:, :, 0 : month_day[imo], imo] = e_sl_50_day[:, :, :]
182    print 'emis spec lamb 75'
183    z0 = e_sl_75.min()
184    z1 = e_sl_75.max()
185    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_sl_75, z0, z1, dx, dy)
186    e_sl_75_day = zgrid_output
187    esl75[:, :, 0 : month_day[imo], imo] = e_sl_75_day[:, :, :]
188    print 'emis spec lamb 100'
189    z0 = e_sl_100.min()
190    z1 = e_sl_100.max()
191    zgrid_output, ngrid_output, z2grid_output, sigmagrid_output, xvec, yvec, xgrid_cart, ygrid_cart = cartesian_grid_test.new_cartesian_grid(month_day[imo], jjr, month[imo], lon, lat, e_sl_100, z0, z1, dx, dy)
192    e_sl_100_day = zgrid_output
193    esl100[:, :, 0 : month_day[imo], imo] = e_sl_100_day[:, :, :]'''
194    ###############################################
195    # stack gridded data spec lamb in NETCDF file #
196    ###############################################
197    print 'stacking of gridded data'
198    rootgrp = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/monthly_GLACE/gridded_data/cartesian_grid/res_100/cartesian_grid_monthly_surf-temp_' + month[imo] + '2009.nc', 'w', format='NETCDF3_CLASSIC')
199    rootgrp.createDimension('longitude', nx)
200    rootgrp.createDimension('latitude', ny)
201    rootgrp.createDimension('days', month_day[imo])
202    nc_lon = rootgrp.createVariable('longitude', 'f', ('longitude',))
203    nc_lat = rootgrp.createVariable('latitude', 'f', ('latitude',))
204    nc_day = rootgrp.createVariable('days', 'f', ('days',))
205    nc_ts = rootgrp.createVariable('ts', 'f', ('latitude', 'longitude', 'days'))
206    '''nc_tup = rootgrp.createVariable('tup', 'f', ('latitude', 'longitude', 'days'))
207    nc_tdn = rootgrp.createVariable('tdn', 'f', ('latitude', 'longitude', 'days'))
208    nc_tb_spec = rootgrp.createVariable('tb_spec', 'f', ('latitude', 'longitude', 'days'))
209    nc_tb_lamb = rootgrp.createVariable('tb_lamb', 'f', ('latitude', 'longitude', 'days'))
210    nc_e_spec = rootgrp.createVariable('e_spec', 'f', ('latitude', 'longitude', 'days'))
211    nc_e_lamb = rootgrp.createVariable('e_lamb', 'f', ('latitude', 'longitude', 'days'))
212    nc_e_spec_lamb = rootgrp.createVariable('e_spec_lamb', 'f', ('latitude', 'longitude', 'days'))
213    nc_e_sl_00 = rootgrp.createVariable('e_mixed_s00', 'f', ('latitude', 'longitude', 'days'))
214    nc_e_sl_25 = rootgrp.createVariable('e_mixed_s25', 'f', ('latitude', 'longitude', 'days'))
215    nc_e_sl_50 = rootgrp.createVariable('e_mixed_s50', 'f', ('latitude', 'longitude', 'days'))
216    nc_e_sl_75 = rootgrp.createVariable('e_mixed_s75', 'f', ('latitude', 'longitude', 'days'))
217    nc_e_sl_100 = rootgrp.createVariable('e_mixed_s100', 'f', ('latitude', 'longitude', 'days'))'''
218    nc_lon[:] = xvec
219    nc_lat[:] = yvec
220    nc_ts[:] = tsu[:, :, 0 : month_day[imo], imo]
221    '''nc_tup[:] = tu[:, :, 0 : month_day[imo], imo]
222    nc_tdn[:] = td[:, :, 0 : month_day[imo], imo]
223    nc_tb_spec[:] = tbs[:, :, 0 : month_day[imo], imo]
224    nc_tb_lamb[:] = tbl[:, :, 0 : month_day[imo], imo]
225    nc_e_spec[:] = es[:, :, 0 : month_day[imo], imo]
226    nc_e_lamb[:] = el[:, :, 0 : month_day[imo], imo]
227    nc_e_spec_lamb[:] = esl[:, :, 0 : month_day[imo], imo]
228    nc_e_sl_00[:] = esl00[:, :, 0 : month_day[imo], imo]
229    nc_e_sl_25[:] = esl25[:, :, 0 : month_day[imo], imo]
230    nc_e_sl_50[:] = esl50[:, :, 0 : month_day[imo], imo]
231    nc_e_sl_75[:] = esl75[:, :, 0 : month_day[imo], imo]
232    nc_e_sl_100[:] = esl100[:, :, 0 : month_day[imo], imo]'''
233    rootgrp.close()
234
235
236
237############################################
238# scatter plot theta_eff vs zenith_opacity #
239############################################
240'''plt.ion()
241plt.figure()
242scatter(opac, theta_eff, alpha = 0.4)
243xlim(0.135, 0.24)
244ylim(54.5, 56.3)
245xlabel('Zenith opacity')
246ylabel('Effective incidence angle (deg)')
247grid(True)
248plt.savefig('/mma/hermozol/Documents/figure_output/scatter_effective_incident_angle_vs_opacity_AMSUB_JANUARY2009.png')'''
249
Note: See TracBrowser for help on using the repository browser.