source: trunk/src/scripts_Laura/ARCTIC/Travail_CEN/daily_param_emissivity_all_arctic.py @ 56

Last change on this file since 56 was 51, checked in by lahlod, 10 years ago

new scripts

File size: 5.5 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 arctic_map # function to regrid coast limits
11import cartesian_grid_test # function to convert grid from polar to cartesian
12import scipy.special
13import ffgrid2
14import map_ffgrid
15from matplotlib import colors
16from matplotlib.font_manager import FontProperties
17import map_cartesian_grid
18
19
20###############################
21# time period characteristics #
22###############################
23MONTH = np.array(['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'])
24month = np.array(['JANUARY', 'FEBRUARY', 'MARCH', 'APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER'])
25month_day = np.array([31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31])
26M = len(month)
27
28
29########################
30# grid characteristics #
31########################
32x0 = -3000. # min limit of grid
33x1 = 2500. # max limit of grid
34dx = 40.
35xvec = np.arange(x0, x1+dx, dx)
36nx = len(xvec) 
37y0 = -3000. # min limit of grid
38y1 = 3000. # max limit of grid
39dy = 40.
40yvec = np.arange(y0, y1+dy, dy)
41ny = len(yvec)
42
43
44
45
46###################################
47
48frequ = np.array(['23', '89'])
49
50
51
52
53emis_spec_anom = np.zeros([len(frequ), M, 31, ny, nx], float)
54emis_lamb_anom = np.zeros([len(frequ), M, 31, ny, nx], float)
55emis_diff_anom = np.zeros([len(frequ), M, 31, ny, nx], float)
56emis_ratio_anom = np.zeros([len(frequ), M, 31, ny, nx], float)
57for ifr in range (1, len(frequ)):
58    print 'frequency ' + frequ[ifr]
59    for imo in range (0, M):
60        print 'month ' + month[imo]
61        print 'read daily emis spec lamb and diff'
62        fichier_glob = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/monthly_GLACE/gridded_data/cartesian_grid/res_40/cartesian_grid_monthly_data_lamb_spec_near_nadir_AMSUA' + str(frequ[ifr]) + '_' + month[imo] + '2009.nc', 'r', format = 'NETCDF3_CLASSIC')
63        emis_spec = fichier_glob.variables['e_spec'][:]
64        emis_lamb = fichier_glob.variables['e_lamb'][:]
65        emis_diff = fichier_glob.variables['e_spec_lamb'][:]
66        fichier_glob.close()
67        print 'calculate daily emis_ratio'
68        emis_ratio = np.zeros([ny, nx, month_day[imo]], float)
69        for ijr in range (0, month_day[imo]):
70            for ilat in range (0, ny):
71                for ilon in range (0, nx):
72                    emis_ratio[ilat, ilon, ijr] = ((emis_lamb[ilat, ilon, ijr] - emis_spec[ilat, ilon, ijr]) / emis_spec[ilat, ilon, ijr]) * 100.
73        print 'calculate daily anomaly'
74        a = np.zeros([month_day[imo], ny * nx], float)
75        b = np.zeros([month_day[imo], ny * nx], float)
76        c = np.zeros([month_day[imo], ny * nx], float)
77        d = np.zeros([month_day[imo], ny * nx], float)
78        for ijr in range (0, month_day[imo]):
79            print 'date ' + str(ijr + 1) + ' ' + month[imo] + ' 2009'
80            a[ijr, :] = reshape(emis_spec[:, :, ijr], size(emis_spec[:, :, ijr]))
81            b[ijr, :] = reshape(emis_lamb[:, :, ijr], size(emis_lamb[:, :, ijr]))
82            c[ijr, :] = reshape(emis_diff[:, :, ijr], size(emis_diff[:, :, ijr]))
83            d[ijr, :] = reshape(emis_ratio[:, :, ijr], size(emis_ratio[:, :, ijr]))
84            for ilat in range (0, ny):
85                for ilon in range (0, nx):
86                    emis_spec_anom[ifr, imo, ijr, ilat, ilon] = emis_spec[ilat, ilon, ijr] - mean(a[ijr, :][nonzero(isnan(a[ijr, :]) == False)])
87                    emis_lamb_anom[ifr, imo, ijr, ilat, ilon] = emis_lamb[ilat, ilon, ijr] - mean(b[ijr, :][nonzero(isnan(b[ijr, :]) == False)])
88                    emis_diff_anom[ifr, imo, ijr, ilat, ilon] = emis_diff[ilat, ilon, ijr] - mean(c[ijr, :][nonzero(isnan(c[ijr, :]) == False)])
89                    emis_ratio_anom[ifr, imo, ijr, ilat, ilon] = emis_ratio[ilat, ilon, ijr] - mean(d[ijr, :][nonzero(isnan(d[ijr, :]) == False)])
90        ########################
91        # stack in netcdf file #
92        ########################
93        print 'stack data in file - month ' + str(month[imo])
94        rootgrp = Dataset('/net/argos/data/parvati/lahlod/ARCTIC/monthly_GLACE/gridded_data/cartesian_grid/res_40/cartesian_grid_daily_data_lamb_spec_ratio_anomaly_near_nadir_AMSUA' + str(frequ[ifr]) + '_' + month[imo] + '2009.nc', 'w', format='NETCDF3_CLASSIC')
95        rootgrp.createDimension('longitude', nx)
96        rootgrp.createDimension('latitude', ny)
97        rootgrp.createDimension('days', month_day[imo])
98        nc_lon = rootgrp.createVariable('longitude', 'f', ('longitude',))
99        nc_lat = rootgrp.createVariable('latitude', 'f', ('latitude',))
100        nc_days = rootgrp.createVariable('days', 'f', ('days',))
101        nc_anom_spec = rootgrp.createVariable('spec_anomaly', 'f', ('days', 'latitude', 'longitude'))
102        nc_anom_lamb = rootgrp.createVariable('lamb_anomay', 'f', ('days', 'latitude', 'longitude'))
103        nc_anom_diff = rootgrp.createVariable('diff_anomaly', 'f', ('days', 'latitude', 'longitude'))
104        nc_anom_ratio = rootgrp.createVariable('ratio_anomaly', 'f', ('days', 'latitude', 'longitude'))
105        nc_lon[:] = xvec
106        nc_lat[:] = yvec
107        nc_days[:] = np.arange(0, month_day[imo], 1)
108        nc_anom_spec[:] = emis_spec_anom[ifr, imo, 0 : month_day[imo], :, :]
109        nc_anom_lamb[:] = emis_lamb_anom[ifr, imo,0 : month_day[imo], :, :]
110        nc_anom_diff[:] = emis_diff_anom[ifr, imo,0 : month_day[imo], :, :]
111        nc_anom_ratio[:] = emis_ratio_anom[ifr, imo,0 : month_day[imo], :, :]
112        rootgrp.close()
Note: See TracBrowser for help on using the repository browser.