[4004] | 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 |
---|