1 | #--Script performing a linear time interpolation |
---|
2 | #--in order to yield every year between decade-years |
---|
3 | #--for oxidant files. |
---|
4 | #--Th. Lurton, IPSL, 07/2018 |
---|
5 | |
---|
6 | dirinOXY=/ccc/work/cont003/gencmip6/lurtont/CMIP6_OXIDANTS/ |
---|
7 | diroutOXY=${GENCMIP6_CCCWORKDIR}/CMIP6_OXIDANTS/yearly_interp/ |
---|
8 | |
---|
9 | if [ ! -d ${diroutOXY} ] ; then mkdir -p ${diroutOXY} ; fi |
---|
10 | |
---|
11 | #--historical |
---|
12 | hist=$false |
---|
13 | if [ $hist ] ; then |
---|
14 | for year in {1850..1999} #--note that the whole hist period is not covered |
---|
15 | do |
---|
16 | |
---|
17 | echo "Historical period, interpolation for year "${year}"..." |
---|
18 | |
---|
19 | if [ ${year} -ge 1850 -a ${year} -lt 1860 ] |
---|
20 | then |
---|
21 | year1=1850 |
---|
22 | year2=1860 |
---|
23 | fi |
---|
24 | if [ ${year} -ge 1860 -a ${year} -lt 1870 ] |
---|
25 | then |
---|
26 | year1=1860 |
---|
27 | year2=1870 |
---|
28 | fi |
---|
29 | if [ ${year} -ge 1870 -a ${year} -lt 1880 ] |
---|
30 | then |
---|
31 | year1=1870 |
---|
32 | year2=1880 |
---|
33 | fi |
---|
34 | if [ ${year} -ge 1880 -a ${year} -lt 1890 ] |
---|
35 | then |
---|
36 | year1=1880 |
---|
37 | year2=1890 |
---|
38 | fi |
---|
39 | if [ ${year} -ge 1890 -a ${year} -lt 1900 ] |
---|
40 | then |
---|
41 | year1=1890 |
---|
42 | year2=1900 |
---|
43 | fi |
---|
44 | if [ ${year} -ge 1900 -a ${year} -lt 1910 ] |
---|
45 | then |
---|
46 | year1=1900 |
---|
47 | year2=1910 |
---|
48 | fi |
---|
49 | if [ ${year} -ge 1910 -a ${year} -lt 1920 ] |
---|
50 | then |
---|
51 | year1=1910 |
---|
52 | year2=1920 |
---|
53 | fi |
---|
54 | if [ ${year} -ge 1920 -a ${year} -lt 1930 ] |
---|
55 | then |
---|
56 | year1=1920 |
---|
57 | year2=1930 |
---|
58 | fi |
---|
59 | if [ ${year} -ge 1930 -a ${year} -lt 1940 ] |
---|
60 | then |
---|
61 | year1=1930 |
---|
62 | year2=1940 |
---|
63 | fi |
---|
64 | if [ ${year} -ge 1940 -a ${year} -lt 1950 ] |
---|
65 | then |
---|
66 | year1=1940 |
---|
67 | year2=1950 |
---|
68 | fi |
---|
69 | if [ ${year} -ge 1950 -a ${year} -lt 1960 ] |
---|
70 | then |
---|
71 | year1=1950 |
---|
72 | year2=1960 |
---|
73 | fi |
---|
74 | if [ ${year} -ge 1960 -a ${year} -lt 1970 ] |
---|
75 | then |
---|
76 | year1=1960 |
---|
77 | year2=1970 |
---|
78 | fi |
---|
79 | if [ ${year} -ge 1970 -a ${year} -lt 1980 ] |
---|
80 | then |
---|
81 | year1=1970 |
---|
82 | year2=1980 |
---|
83 | fi |
---|
84 | if [ ${year} -ge 1980 -a ${year} -lt 1990 ] |
---|
85 | then |
---|
86 | year1=1980 |
---|
87 | year2=1990 |
---|
88 | fi |
---|
89 | if [ ${year} -ge 1990 -a ${year} -lt 2000 ] |
---|
90 | then |
---|
91 | year1=1990 |
---|
92 | year2=2000 |
---|
93 | fi |
---|
94 | |
---|
95 | file1=${dirinOXY}LOI_AR6_${year1}.nc |
---|
96 | file2=${dirinOXY}LOI_AR6_${year2}.nc |
---|
97 | filetmp=${diroutOXY}tmp.nc |
---|
98 | fileout=${diroutOXY}LOI_AR6_${year}.nc |
---|
99 | |
---|
100 | #--using separate file with time_counter and time_bnds |
---|
101 | #--to yield correct time_counter and time_bnds |
---|
102 | echo "... Creating time pattern for year "${year}", scenario "${scen}"..." |
---|
103 | filetimes=${diroutOXY}times_${year}.nc |
---|
104 | cdo addc,$(((${year}-1850)*365*24*3600)) -selname,time_counter,time_bnds ${dirinOXY}LOI_AR6_1850.nc ${filetmp} |
---|
105 | #--something weird happens, as time_counter is declared not found, and is not shifted as should be (time_bnds is). I am here forcing the shift by hand. |
---|
106 | cdo shifttime,$(((${year}-1850)*365))days ${filetmp} ${filetimes} |
---|
107 | ncrename -d x,bnds ${filetimes} |
---|
108 | |
---|
109 | if [ ${year:3:1} == 1 ] |
---|
110 | then |
---|
111 | cdo add -mulc,0.9 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.1 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
112 | fi |
---|
113 | if [ ${year:3:1} == 2 ] |
---|
114 | then |
---|
115 | cdo add -mulc,0.8 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.2 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
116 | fi |
---|
117 | if [ ${year:3:1} == 3 ] |
---|
118 | then |
---|
119 | cdo add -mulc,0.7 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.3 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
120 | fi |
---|
121 | if [ ${year:3:1} == 4 ] |
---|
122 | then |
---|
123 | cdo add -mulc,0.6 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.4 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
124 | fi |
---|
125 | if [ ${year:3:1} == 5 ] |
---|
126 | then |
---|
127 | cdo add -mulc,0.5 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.5 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
128 | fi |
---|
129 | if [ ${year:3:1} == 6 ] |
---|
130 | then |
---|
131 | cdo add -mulc,0.4 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.6 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
132 | fi |
---|
133 | if [ ${year:3:1} == 7 ] |
---|
134 | then |
---|
135 | cdo add -mulc,0.3 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.7 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
136 | fi |
---|
137 | if [ ${year:3:1} == 8 ] |
---|
138 | then |
---|
139 | cdo add -mulc,0.2 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.8 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
140 | fi |
---|
141 | if [ ${year:3:1} == 9 ] |
---|
142 | then |
---|
143 | cdo add -mulc,0.1 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.9 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
144 | fi |
---|
145 | #--nothing to be done if we are on a decade-year. |
---|
146 | if [ ${year:3:1} == 0 ] |
---|
147 | then |
---|
148 | ncks -v H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
149 | fi |
---|
150 | |
---|
151 | #--fixing presnivs, presnivs_bnds, time_counter and time_bnds |
---|
152 | echo "... Fixing presnivs, presnivs_bnds, time_counter and time_bnds for year "${year}", scenario "${scen}"..." |
---|
153 | ncks -A -v time_counter,time_bnds ${filetimes} ${filetmp} |
---|
154 | ncks -A -v presnivs,presnivs_bnds ${dirinOXY}LOI_AR6_1850.nc ${filetmp} |
---|
155 | cp ${filetmp} ${fileout} |
---|
156 | rm -f ${filetmp} |
---|
157 | |
---|
158 | #--end loop on historical years |
---|
159 | done |
---|
160 | |
---|
161 | #--skip historical |
---|
162 | fi |
---|
163 | |
---|
164 | #--Scenarios |
---|
165 | |
---|
166 | for scen in "RCP26" "RCP45" "RCP60" "RCP85sstA2" |
---|
167 | do |
---|
168 | |
---|
169 | for year in {2000..2100} |
---|
170 | do |
---|
171 | |
---|
172 | echo "Scenario "${scen}", interpolation for year "${year}"..." |
---|
173 | |
---|
174 | if [ ${year} -ge 2000 -a ${year} -lt 2010 ] |
---|
175 | then |
---|
176 | year1=2000 |
---|
177 | year2=2010 |
---|
178 | fi |
---|
179 | if [ ${year} -ge 2010 -a ${year} -lt 2020 ] |
---|
180 | then |
---|
181 | year1=2010 |
---|
182 | year2=2020 |
---|
183 | fi |
---|
184 | if [ ${year} -ge 2020 -a ${year} -lt 2030 ] |
---|
185 | then |
---|
186 | year1=2020 |
---|
187 | year2=2030 |
---|
188 | fi |
---|
189 | if [ ${year} -ge 2030 -a ${year} -lt 2040 ] |
---|
190 | then |
---|
191 | year1=2030 |
---|
192 | year2=2040 |
---|
193 | fi |
---|
194 | if [ ${year} -ge 2040 -a ${year} -lt 2050 ] |
---|
195 | then |
---|
196 | year1=2040 |
---|
197 | year2=2050 |
---|
198 | fi |
---|
199 | if [ ${year} -ge 2050 -a ${year} -lt 2060 ] |
---|
200 | then |
---|
201 | year1=2050 |
---|
202 | year2=2060 |
---|
203 | fi |
---|
204 | if [ ${year} -ge 2060 -a ${year} -lt 2070 ] |
---|
205 | then |
---|
206 | year1=2060 |
---|
207 | year2=2070 |
---|
208 | fi |
---|
209 | if [ ${year} -ge 2070 -a ${year} -lt 2080 ] |
---|
210 | then |
---|
211 | year1=2070 |
---|
212 | year2=2080 |
---|
213 | fi |
---|
214 | if [ ${year} -ge 2080 -a ${year} -lt 2090 ] |
---|
215 | then |
---|
216 | year1=2080 |
---|
217 | year2=2090 |
---|
218 | fi |
---|
219 | if [ ${year} -ge 2090 -a ${year} -lt 2100 ] |
---|
220 | then |
---|
221 | year1=2090 |
---|
222 | year2=2100 |
---|
223 | fi |
---|
224 | if [ ${year} == 2100 ] |
---|
225 | then |
---|
226 | year1=2100 |
---|
227 | year2=2100 |
---|
228 | fi |
---|
229 | |
---|
230 | file1=${dirinOXY}LOI_AR6_${scen}_${year1}.nc |
---|
231 | file2=${dirinOXY}LOI_AR6_${scen}_${year2}.nc |
---|
232 | filetmp=${diroutOXY}tmp.nc |
---|
233 | fileout=${diroutOXY}LOI_AR6_${scen}_${year}.nc |
---|
234 | |
---|
235 | #--specific case for junction with historical -- year2=2010 is correct, but year1=2000 does not exist for scenarios. Let's override that... |
---|
236 | if [ ${year} -lt 2010 ] |
---|
237 | then |
---|
238 | file1=${dirinOXY}LOI_AR6_2000.nc |
---|
239 | fi |
---|
240 | |
---|
241 | rm -f ${diroutOXY}tmp.nc |
---|
242 | |
---|
243 | #--using separate file with time_counter and time_bnds |
---|
244 | #--to yield correct time_counter and time_bnds |
---|
245 | echo "... Creating time pattern for year "${year}", scenario "${scen}"..." |
---|
246 | filetimes=${diroutOXY}times_${year}.nc |
---|
247 | cdo addc,$(((${year}-2000)*365*24*3600)) -selname,time_counter,time_bnds ${dirinOXY}LOI_AR6_2000.nc ${filetmp} |
---|
248 | #--something weird happens, as time_counter is declared not found, and is not shifted as should be (time_bnds is). I am here forcing the shift by hand. |
---|
249 | cdo shifttime,$(((${year}-2000)*365))days ${filetmp} ${filetimes} |
---|
250 | ncrename -d x,bnds ${filetimes} |
---|
251 | |
---|
252 | rm -f ${filetmp} |
---|
253 | |
---|
254 | if [ ${year:3:1} == 1 ] |
---|
255 | then |
---|
256 | cdo add -mulc,0.9 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.1 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
257 | fi |
---|
258 | if [ ${year:3:1} == 2 ] |
---|
259 | then |
---|
260 | cdo add -mulc,0.8 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.2 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
261 | fi |
---|
262 | if [ ${year:3:1} == 3 ] |
---|
263 | then |
---|
264 | cdo add -mulc,0.7 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.3 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
265 | fi |
---|
266 | if [ ${year:3:1} == 4 ] |
---|
267 | then |
---|
268 | cdo add -mulc,0.6 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.4 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
269 | fi |
---|
270 | if [ ${year:3:1} == 5 ] |
---|
271 | then |
---|
272 | cdo add -mulc,0.5 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.5 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
273 | fi |
---|
274 | if [ ${year:3:1} == 6 ] |
---|
275 | then |
---|
276 | cdo add -mulc,0.4 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.6 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
277 | fi |
---|
278 | if [ ${year:3:1} == 7 ] |
---|
279 | then |
---|
280 | cdo add -mulc,0.3 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.7 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
281 | fi |
---|
282 | if [ ${year:3:1} == 8 ] |
---|
283 | then |
---|
284 | cdo add -mulc,0.2 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.8 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
285 | fi |
---|
286 | if [ ${year:3:1} == 9 ] |
---|
287 | then |
---|
288 | cdo add -mulc,0.1 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file1} -mulc,0.9 -selname,H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
289 | fi |
---|
290 | if [ ${year:3:1} == 0 ] |
---|
291 | then |
---|
292 | ncks -v H2O2,HNO3,NO2,NO3,O1D,O3,OH ${file2} ${filetmp} |
---|
293 | fi |
---|
294 | |
---|
295 | #--fixing presnivs, presnivs_bnds, time_counter and time_bnds |
---|
296 | echo "... Fixing presnivs, presnivs_bnds, time_counter and time_bnds for year "${year}", scenario "${scen}"..." |
---|
297 | ncks -A -v time_counter,time_bnds ${filetimes} ${filetmp} |
---|
298 | ncks -A -v presnivs,presnivs_bnds ${dirinOXY}LOI_AR6_RCP26_2010.nc ${filetmp} |
---|
299 | cp ${filetmp} ${fileout} |
---|
300 | rm -f ${filetmp} |
---|
301 | |
---|
302 | #--end loop on years |
---|
303 | done |
---|
304 | |
---|
305 | rm -f ${diroutOXY}times*.nc |
---|
306 | |
---|
307 | #--end loop on scenario names |
---|
308 | done |
---|