1 | #!/opt/local/bin/python |
---|
2 | # python script to create coordinates files with e1=e2=constant, and gphit=gphiu=gphiv=gphif=0 (to do not have CORIOLIS) |
---|
3 | |
---|
4 | import os,sys |
---|
5 | from netCDF4 import Dataset as netcdf |
---|
6 | import numpy as np |
---|
7 | import math |
---|
8 | |
---|
9 | res=0.25 |
---|
10 | resname='r025' |
---|
11 | |
---|
12 | # output file |
---|
13 | fcoord='coordinates_'+str(resname)+'_cst_gphi0.nc' |
---|
14 | |
---|
15 | latmin=-30. |
---|
16 | latmax=30. |
---|
17 | latres=res |
---|
18 | |
---|
19 | lonmin=0. |
---|
20 | lonmax=180. |
---|
21 | lonres=res |
---|
22 | |
---|
23 | #LONGITUDE |
---|
24 | nb_lonpoints=int((lonmax-lonmin)/lonres+1) |
---|
25 | lontot=np.zeros(nb_lonpoints) |
---|
26 | |
---|
27 | lon=lonmin |
---|
28 | end=(lonmax-lonmin) |
---|
29 | |
---|
30 | ii=0 |
---|
31 | while lon <= end : |
---|
32 | lontot[ii]=lon |
---|
33 | lon=lon+lonres |
---|
34 | ii=ii+1 |
---|
35 | |
---|
36 | # LATITUDE |
---|
37 | # one point at equator needed |
---|
38 | LAT1=int(latmax/latres+1) |
---|
39 | LAT=2*LAT1-1 |
---|
40 | lat1=np.zeros(LAT1) |
---|
41 | lat2=np.zeros(LAT1) |
---|
42 | lat3=np.zeros(LAT) |
---|
43 | |
---|
44 | lat=0. |
---|
45 | ii=0 |
---|
46 | while lat <= latmax : |
---|
47 | lat1[ii]=lat |
---|
48 | lat=lat+latres |
---|
49 | ii=ii+1 |
---|
50 | |
---|
51 | lat=0. |
---|
52 | ii=0 |
---|
53 | while lat >= latmin : |
---|
54 | lat2[ii]=lat |
---|
55 | lat=lat-latres |
---|
56 | ii=ii+1 |
---|
57 | |
---|
58 | ii=0 |
---|
59 | while ii < LAT1 : |
---|
60 | lat3[ii]=lat2[-1-ii] |
---|
61 | ii=ii+1 |
---|
62 | |
---|
63 | ii=0 |
---|
64 | while ii < LAT1 : |
---|
65 | lat3[LAT1-1+ii]=lat1[ii] |
---|
66 | ii=ii+1 |
---|
67 | |
---|
68 | print '\n lat3:\n', lat3 |
---|
69 | |
---|
70 | |
---|
71 | print ' creating coordinates file '+fcoord+'...' |
---|
72 | |
---|
73 | LON=nb_lonpoints |
---|
74 | nc=netcdf(fcoord,'w') |
---|
75 | nc.createDimension('y',LAT) |
---|
76 | nc.createDimension('x',LON) |
---|
77 | |
---|
78 | cdfglamt=nc.createVariable('glamt','f',('y','x')) |
---|
79 | cdfgphit=nc.createVariable('gphit','f',('y','x')) |
---|
80 | cdfglamu=nc.createVariable('glamu','f',('y','x')) |
---|
81 | cdfgphiu=nc.createVariable('gphiu','f',('y','x')) |
---|
82 | cdfglamv=nc.createVariable('glamv','f',('y','x')) |
---|
83 | cdfgphiv=nc.createVariable('gphiv','f',('y','x')) |
---|
84 | cdfglamf=nc.createVariable('glamf','f',('y','x')) |
---|
85 | cdfgphif=nc.createVariable('gphif','f',('y','x')) |
---|
86 | |
---|
87 | cdfe1t=nc.createVariable('e1t','f',('y','x')) |
---|
88 | cdfe1u=nc.createVariable('e1u','f',('y','x')) |
---|
89 | cdfe1v=nc.createVariable('e1v','f',('y','x')) |
---|
90 | cdfe1f=nc.createVariable('e1f','f',('y','x')) |
---|
91 | cdfe2t=nc.createVariable('e2t','f',('y','x')) |
---|
92 | cdfe2u=nc.createVariable('e2u','f',('y','x')) |
---|
93 | cdfe2v=nc.createVariable('e2v','f',('y','x')) |
---|
94 | cdfe2f=nc.createVariable('e2f','f',('y','x')) |
---|
95 | |
---|
96 | # gphi = 0 |
---|
97 | for ii in range (LAT): |
---|
98 | cdfgphit[ii,:]=0. |
---|
99 | cdfgphiu[ii,:]=0. |
---|
100 | cdfgphiv[ii,:]=0. |
---|
101 | cdfgphif[ii,:]=0. |
---|
102 | |
---|
103 | |
---|
104 | for ii in range (LON): |
---|
105 | cdfglamt[:,ii]=lontot[ii] |
---|
106 | cdfglamu[:,ii]=lontot[ii] + lonres/2 |
---|
107 | cdfglamv[:,ii]=lontot[ii] |
---|
108 | cdfglamf[:,ii]=lontot[ii] + lonres/2 |
---|
109 | |
---|
110 | # from DOM/phycst.F90 |
---|
111 | ra=6371229. # earth radius (meter) |
---|
112 | rpi=math.pi |
---|
113 | rad=rpi / 180. # conversion from degre into radian |
---|
114 | |
---|
115 | # e2 = constant |
---|
116 | cdfe2t[:,:]=latres*rad*ra |
---|
117 | cdfe2u[:,:]=latres*rad*ra |
---|
118 | cdfe2v[:,:]=latres*rad*ra |
---|
119 | cdfe2f[:,:]=latres*rad*ra |
---|
120 | |
---|
121 | # e1 = constant |
---|
122 | cdfe1t[:,:]=lonres*rad*ra |
---|
123 | cdfe1u[:,:]=lonres*rad*ra |
---|
124 | cdfe1v[:,:]=lonres*rad*ra |
---|
125 | cdfe1f[:,:]=lonres*rad*ra |
---|
126 | |
---|
127 | |
---|
128 | nc.close() |
---|
129 | |
---|
130 | #sys.exit() |
---|
131 | |
---|
132 | |
---|