Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/python
import sys
import numpy as np
import netCDF4 as nc
from numpy import arange, dtype
import math
#*******************************************************************************
def main(args):
"""USE
{0} mask.nc input.nc output.nc
DESCRIPTION
Computes pressure from density and e3t (that changes with SSH).
"""
if len(args)<4 or args[1]=='-h' or args[1]=='--help':
print( main.func_doc.format(args[0]) )
return 0
#===============================================================================
# input
#===============================================================================
file_pressure_eulerien = args[1]
fichierpression1 = nc.Dataset(file_pressure_eulerien)
ptot_a=fichierpression1.variables['Ptot_a'][:,:,:]
ptot_G=fichierpression1.variables['Ptot_G'][:,:,:]
depth=fichierpression1.variables['dept'][:]
lon=fichierpression1.variables['lont'][:]
lat=fichierpression1.variables['latt'][:]
jj=ptot_a.shape[1]
ii=ptot_a.shape[2]
kk=ptot_a.shape[0]
file_pressure_lagpatch = args[2]
fichierpression2 = nc.Dataset(file_pressure_lagpatch)
P_corr_A=fichierpression2.variables['P_corr_A'][:,:,:]
P_corr_G=fichierpression2.variables['P_corr_G'][:,:,:]
#===============================================================================
# output
#===============================================================================
p_file=args[3]
print('Creating '+p_file)
# this will overwrite the file
ncfile = nc.Dataset(p_file,'w', format='NETCDF3_CLASSIC')
setattr(ncfile,'history',' '.join(args))
ncfile.createDimension('x',ii)
ncfile.createDimension('y',jj)
ncfile.createDimension('dept',kk)
data = ncfile.createVariable('lont',dtype('float64').char,('y','x'))
data[:] = lon
setattr(data, 'units',"degrees_north")
setattr(data, 'standard_name',"longitude_at_T_location")
data = ncfile.createVariable('latt',dtype('float64').char,('y','x'))
data[:] = lat
setattr(data, 'units',"degrees_east")
setattr(data, 'standard_name',"latitude_at_T_location")
data = ncfile.createVariable('dept',dtype('float64').char,('dept'))
data[:] = depth
setattr(data, 'units',"m")
setattr(data, 'positive',"down")
setattr(data, 'standard_name',"depth_at_T_location")
setattr(data, 'axis',"Z")
p_diff_a = ncfile.createVariable('P_corr_A',dtype('float32').char,('dept','y','x'))
setattr(p_diff_a, 'standard_name',"Amplitude Of Pressure Total")
setattr(p_diff_a, 'units',"m-1.kg.s-2")
setattr(p_diff_a, 'coordinates', "dept latt lont")
p_diff_G = ncfile.createVariable('P_corr_G',dtype('float32').char,('dept','y','x'))
setattr(p_diff_G, 'standard_name',"Phase Of Pressure Total")
setattr(p_diff_G, 'units',"m-1.kg.s-2")
setattr(p_diff_G, 'coordinates', "dept latt lont")
#===============================================================================
# process
#===============================================================================
p_diff_a[:,:,:] = ptot_a[:,:,:] - P_corr_A[:,:,:]
p_diff_G[:,:,:] = ptot_G[:,:,:] - P_corr_G[:,:,:]
#===============================================================================
# clean-up
#===============================================================================
fichierpression1.close()
fichierpression2.close()
ncfile.close()
#*******************************************************************************
if __name__ == '__main__':
#file:///usr/share/doc/packages/python/html/python-2.7-docs-html/library/sys.html#sys.exit
sys.exit(main(sys.argv))