[4004] | 1 | #--scripts to regrid oxidant files from AR5 to AR6 |
---|
| 2 | #--Olivier Boucher / Yves Balkanski |
---|
| 3 | #--30/01/2017 |
---|
| 4 | #--Thibaut Lurton 28/06/2017 for the future period. |
---|
| 5 | # |
---|
| 6 | OUT=$CCCWORKDIR/CMIP6_OXIDANTS/ |
---|
| 7 | |
---|
| 8 | if [ ! -d ${OUT} ] ; then mkdir -p ${OUT} ; fi |
---|
| 9 | |
---|
| 10 | # Booleans for possible bypass of processing (1=do bypass ; 0=run) |
---|
| 11 | bypass_hist=0 |
---|
| 12 | bypass_RCP=0 |
---|
| 13 | |
---|
| 14 | #--silly if statements to perform or bypass historical files |
---|
| 15 | if [ ${bypass_hist} == 0 ]; then |
---|
| 16 | # |
---|
| 17 | #HISTORICAL |
---|
| 18 | DIR=/ccc/store/cont003/dsm/p24lava/ARCHIVE/dmf_import/IGCM_OUT/LMDZORINCA/NMHC_AER/LOI_IPCC_3/CHM/Output/MO/INCA_AVGR_NC/ |
---|
| 19 | # |
---|
| 20 | #--loop on years |
---|
| 21 | for yr in `seq 1850 10 2000` |
---|
| 22 | do |
---|
| 23 | #--loop on months |
---|
| 24 | for mth in 0{1..9} {10..12} |
---|
| 25 | do |
---|
| 26 | echo $yr $mth |
---|
| 27 | filein=${DIR}'LOI_IPCC_3_'${yr}'_'${mth}'_MM_inca_avgr.nc' |
---|
| 28 | fileout=${OUT}'LOI_AR5_'${yr}'_'${mth}'.nc' |
---|
| 29 | #--remapping |
---|
| 30 | cdo remapbil,grid-lmdz-lonlat_144x143 -selname,O3,HNO3,OH,NO3,H2O2,O1D,NO2 ${filein} ${fileout} |
---|
| 31 | done |
---|
| 32 | #--merging monthly means into single sile |
---|
| 33 | cdo mergetime ${OUT}'LOI_AR5_'${yr}'_'??'.nc' ${OUT}'LOI_AR5_'${yr}'.nc' |
---|
| 34 | rm -f ${OUT}'LOI_AR5_'${yr}'_'??'.nc' |
---|
| 35 | #--change time axis - this does not work |
---|
| 36 | #secsinyr=31557600 |
---|
| 37 | #yearref=1850 |
---|
| 38 | #if [ $yr != 1850 ]; then |
---|
| 39 | # ((nbyear=$yr-$yearref)) |
---|
| 40 | # echo "yr, secsinyr=" $year $secsinyr |
---|
| 41 | # ((secsdiff = $yr * $secsinyr )) |
---|
| 42 | # echo "secsdiff=" $secsdiff |
---|
| 43 | # rm -f time_${yr}.nc |
---|
| 44 | # ncap2 -s"time=${secsdiff}" time_1850.nc time_${yr}.nc |
---|
| 45 | #fi |
---|
| 46 | #--remove time |
---|
| 47 | ncks -x -v time ${OUT}'LOI_AR5_'${yr}'.nc' ${OUT}'LOI_AR5_'${yr}'_notime.nc' |
---|
| 48 | #--add time from Yves files |
---|
| 49 | ncks -A -v time time_${yr}.nc ${OUT}'LOI_AR5_'${yr}'_notime.nc' |
---|
| 50 | #--rename file |
---|
| 51 | mv ${OUT}'LOI_AR5_'${yr}'_notime.nc' ${OUT}'LOI_AR5_'${yr}'_time.nc' |
---|
| 52 | #--regrid vertically |
---|
| 53 | ferret << EOF |
---|
| 54 | set MEMORY/SIZE=1024 |
---|
| 55 | use "${OUT}LOI_AR5_${yr}_time.nc" |
---|
| 56 | use grid.nc |
---|
| 57 | define grid/z=Z[g=OZONE] grid79L |
---|
| 58 | let H2O2L79=H2O2[d=1,g=grid79L,gz=@AVE] |
---|
| 59 | let HNO3L79=HNO3[d=1,g=grid79L,gz=@AVE] |
---|
| 60 | let NO2L79=NO2[d=1,g=grid79L,gz=@AVE] |
---|
| 61 | let NO3L79=NO3[d=1,g=grid79L,gz=@AVE] |
---|
| 62 | let O1DL79=O1D[d=1,g=grid79L,gz=@AVE] |
---|
| 63 | let O3L79=O3[d=1,g=grid79L,gz=@AVE] |
---|
| 64 | let OHL79=OH[d=1,g=grid79L,gz=@AVE] |
---|
| 65 | SAVE/format=CDF/CLOBBER/file="${OUT}LOI_AR6_${yr}.nc" H2O2L79,HNO3L79,NO2L79,NO3L79,O1DL79,O3L79,OHL79 |
---|
| 66 | quit |
---|
| 67 | EOF |
---|
| 68 | rm -f ferret.jnl* |
---|
| 69 | #--rename variables |
---|
| 70 | ncrename -v PRESNIVS1,presnivs ${OUT}LOI_AR6_${yr}.nc |
---|
| 71 | ncrename -d PRESNIVS1,presnivs ${OUT}LOI_AR6_${yr}.nc |
---|
| 72 | ncrename -v PRESNIVS1_bnds,presnivs_bnds ${OUT}LOI_AR6_${yr}.nc |
---|
| 73 | ncrename -v H2O2L79,H2O2 ${OUT}LOI_AR6_${yr}.nc |
---|
| 74 | ncrename -v HNO3L79,HNO3 ${OUT}LOI_AR6_${yr}.nc |
---|
| 75 | ncrename -v NO2L79,NO2 ${OUT}LOI_AR6_${yr}.nc |
---|
| 76 | ncrename -v NO3L79,NO3 ${OUT}LOI_AR6_${yr}.nc |
---|
| 77 | ncrename -v O1DL79,O1D ${OUT}LOI_AR6_${yr}.nc |
---|
| 78 | ncrename -v O3L79,O3 ${OUT}LOI_AR6_${yr}.nc |
---|
| 79 | ncrename -v OHL79,OH ${OUT}LOI_AR6_${yr}.nc |
---|
| 80 | ncrename -v LON,x ${OUT}LOI_AR6_${yr}.nc |
---|
| 81 | ncrename -d LON,x ${OUT}LOI_AR6_${yr}.nc |
---|
| 82 | ncrename -v LAT,y ${OUT}LOI_AR6_${yr}.nc |
---|
| 83 | ncrename -d LAT,y ${OUT}LOI_AR6_${yr}.nc |
---|
| 84 | ncrename -v TIME,time_counter ${OUT}LOI_AR6_${yr}.nc |
---|
| 85 | ncrename -d TIME,time_counter ${OUT}LOI_AR6_${yr}.nc |
---|
| 86 | ncrename -v TIME_bnds,time_bnds ${OUT}LOI_AR6_${yr}.nc |
---|
| 87 | #--This stupid ferret inverses both the vertical axis AND the latitude |
---|
| 88 | rm -f ${OUT}toto.nc |
---|
| 89 | #ncpdq -Oh --reorder -presnivs,-lat ${OUT}LOI_AR6_${yr}.nc ${OUT}toto.nc |
---|
| 90 | ncpdq -Oh --reorder -presnivs,-y ${OUT}LOI_AR6_${yr}.nc ${OUT}toto.nc |
---|
| 91 | ncatted -Oh -a units,x,o,c,"degrees_east" ${OUT}toto.nc |
---|
| 92 | mv ${OUT}toto.nc ${OUT}LOI_AR6_${yr}.nc |
---|
| 93 | rm -f ${OUT}'LOI_AR5_'${yr}'.nc' ${OUT}'LOI_AR5_'${yr}'_notime.nc' ${OUT}'LOI_AR5_'${yr}'_time.nc' |
---|
| 94 | done |
---|
| 95 | # |
---|
| 96 | fi |
---|
| 97 | |
---|
| 98 | #RCP |
---|
| 99 | #--silly if statements to perform or bypass RCP files |
---|
| 100 | if [ ${bypass_RCP} == 0 ]; then |
---|
| 101 | for rcp in RCP45 RCP60 RCP85sstA2 |
---|
| 102 | do |
---|
| 103 | DIR=/ccc/store/cont003/dsm/p24lava/ARCHIVE/dmf_import/IGCM_OUT/LMDZORINCA/NMHC_AER/LOI_IPCC_${rcp}/CHM/Output/MO/ |
---|
| 104 | for yr in `seq 2010 10 2100` |
---|
| 105 | do |
---|
| 106 | for mth in 0{1..9} {10..12} |
---|
| 107 | do |
---|
| 108 | echo $yr $mth |
---|
| 109 | filein=$DIR'LOI_IPCC_'${rcp}'_'${yr}'_'${mth}'_MM_inca_avgr.nc' |
---|
| 110 | fileout=$OUT'LOI_AR5_'${rcp}'_'${yr}'_'${mth}'.nc' |
---|
| 111 | #--remapping |
---|
| 112 | cdo remapbil,grid-lmdz-lonlat_144x143 -selname,O3,HNO3,OH,NO3,H2O2,O1D,NO2 $filein $fileout |
---|
| 113 | done |
---|
| 114 | #--merging monthly means into single file |
---|
| 115 | cdo mergetime $OUT'LOI_AR5_'${rcp}'_'${yr}'_'??'.nc' $OUT'LOI_AR5_'${rcp}'_'${yr}'.nc' |
---|
| 116 | rm -f $OUT'LOI_AR5_'${rcp}'_'${yr}'_'??'.nc' |
---|
| 117 | #--remove time |
---|
| 118 | ncks -x -v time ${OUT}'LOI_AR5_'${rcp}'_'${yr}'.nc' ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_notime.nc' |
---|
| 119 | #--add time |
---|
| 120 | ncks -A -v time time_${yr}.nc ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_notime.nc' |
---|
| 121 | #--rename file |
---|
| 122 | mv ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_notime.nc' ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_time.nc' |
---|
| 123 | |
---|
| 124 | #--regrid vertically |
---|
| 125 | ferret << EOF |
---|
| 126 | set MEMORY/SIZE=1024 |
---|
| 127 | use "${OUT}LOI_AR5_${rcp}_${yr}_time.nc" |
---|
| 128 | use grid.nc |
---|
| 129 | define grid/z=Z[g=OZONE] grid79L |
---|
| 130 | let H2O2L79=H2O2[d=1,g=grid79L,gz=@AVE] |
---|
| 131 | let HNO3L79=HNO3[d=1,g=grid79L,gz=@AVE] |
---|
| 132 | let NO2L79=NO2[d=1,g=grid79L,gz=@AVE] |
---|
| 133 | let NO3L79=NO3[d=1,g=grid79L,gz=@AVE] |
---|
| 134 | let O1DL79=O1D[d=1,g=grid79L,gz=@AVE] |
---|
| 135 | let O3L79=O3[d=1,g=grid79L,gz=@AVE] |
---|
| 136 | let OHL79=OH[d=1,g=grid79L,gz=@AVE] |
---|
| 137 | SAVE/format=CDF/CLOBBER/file="${OUT}LOI_AR6_${rcp}_${yr}.nc" H2O2L79,HNO3L79,NO2L79,NO3L79,O1DL79,O3L79,OHL79 |
---|
| 138 | quit |
---|
| 139 | EOF |
---|
| 140 | rm -f ferret.jnl* |
---|
| 141 | #--rename variables |
---|
| 142 | ncrename -v PRESNIVS1,presnivs ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 143 | ncrename -d PRESNIVS1,presnivs ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 144 | ncrename -v PRESNIVS1_bnds,presnivs_bnds ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 145 | ncrename -v H2O2L79,H2O2 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 146 | ncrename -v HNO3L79,HNO3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 147 | ncrename -v NO2L79,NO2 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 148 | ncrename -v NO3L79,NO3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 149 | ncrename -v O1DL79,O1D ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 150 | ncrename -v O3L79,O3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 151 | ncrename -v OHL79,OH ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 152 | ncrename -v LON,x ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 153 | ncrename -d LON,x ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 154 | ncrename -v LAT,y ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 155 | ncrename -d LAT,y ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 156 | ncrename -v TIME,time_counter ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 157 | ncrename -d TIME,time_counter ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 158 | ncrename -v TIME_bnds,time_bnds ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 159 | #--This stupid ferret inverses both the vertical axis AND the latitude |
---|
| 160 | rm -f ${OUT}toto.nc |
---|
| 161 | #ncpdq -Oh --reorder -presnivs,-lat ${OUT}LOI_AR6_${yr}.nc ${OUT}toto.nc |
---|
| 162 | ncpdq -Oh --reorder -presnivs,-y ${OUT}LOI_AR6_${rcp}_${yr}.nc ${OUT}toto.nc |
---|
| 163 | ncatted -Oh -a units,x,o,c,"degrees_east" ${OUT}toto.nc |
---|
| 164 | mv ${OUT}toto.nc ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 165 | rm -f ${OUT}'LOI_AR5_'${rcp}'_'${yr}'.nc' ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_notime.nc' ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_time.nc' |
---|
| 166 | done |
---|
| 167 | done |
---|
| 168 | |
---|
| 169 | # Slightly different input format for RCP26... |
---|
| 170 | for rcp in RCP26 |
---|
| 171 | do |
---|
| 172 | DIR=/ccc/store/cont003/dsm/p24lava/ARCHIVE/dmf_import/IGCM_OUT/LMDZORINCA/NMHC_AER/LOI_IPCC_${rcp}/CHM/Output/MO/ |
---|
| 173 | for yr in `seq 2010 10 2100` |
---|
| 174 | do |
---|
| 175 | echo $yr |
---|
| 176 | filein=$DIR'LOI_IPCC_'${rcp}'_'${yr}'_allMM_inca_avgr.nc' |
---|
| 177 | fileout=$OUT'LOI_AR5_'${rcp}'_'${yr}'.nc' |
---|
| 178 | #--remapping |
---|
| 179 | cdo remapbil,grid-lmdz-lonlat_144x143 -selname,O3,HNO3,OH,NO3,H2O2,O1D,NO2 $filein $fileout |
---|
| 180 | #--add time |
---|
| 181 | ncks -A -v time time_${yr}.nc ${OUT}'LOI_AR5_'${rcp}'_'${yr}'.nc' |
---|
| 182 | |
---|
| 183 | #--regrid vertically |
---|
| 184 | ferret << EOF |
---|
| 185 | set MEMORY/SIZE=1024 |
---|
| 186 | use "${OUT}LOI_AR5_${rcp}_${yr}.nc" |
---|
| 187 | use grid.nc |
---|
| 188 | define grid/z=Z[g=OZONE] grid79L |
---|
| 189 | let H2O2L79=H2O2[d=1,g=grid79L,gz=@AVE] |
---|
| 190 | let HNO3L79=HNO3[d=1,g=grid79L,gz=@AVE] |
---|
| 191 | let NO2L79=NO2[d=1,g=grid79L,gz=@AVE] |
---|
| 192 | let NO3L79=NO3[d=1,g=grid79L,gz=@AVE] |
---|
| 193 | let O1DL79=O1D[d=1,g=grid79L,gz=@AVE] |
---|
| 194 | let O3L79=O3[d=1,g=grid79L,gz=@AVE] |
---|
| 195 | let OHL79=OH[d=1,g=grid79L,gz=@AVE] |
---|
| 196 | SAVE/format=CDF/CLOBBER/file="${OUT}LOI_AR6_${rcp}_${yr}.nc" H2O2L79,HNO3L79,NO2L79,NO3L79,O1DL79,O3L79,OHL79 |
---|
| 197 | quit |
---|
| 198 | EOF |
---|
| 199 | rm -f ferret.jnl* |
---|
| 200 | #--rename variables |
---|
| 201 | ncrename -v PRESNIVS1,presnivs ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 202 | ncrename -d PRESNIVS1,presnivs ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 203 | ncrename -v PRESNIVS1_bnds,presnivs_bnds ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 204 | ncrename -v H2O2L79,H2O2 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 205 | ncrename -v HNO3L79,HNO3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 206 | ncrename -v NO2L79,NO2 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 207 | ncrename -v NO3L79,NO3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 208 | ncrename -v O1DL79,O1D ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 209 | ncrename -v O3L79,O3 ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 210 | ncrename -v OHL79,OH ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 211 | ncrename -v LON,x ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 212 | ncrename -d LON,x ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 213 | ncrename -v LAT,y ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 214 | ncrename -d LAT,y ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 215 | ncrename -v TIME,time_counter ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 216 | ncrename -d TIME,time_counter ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 217 | ncrename -v TIME_bnds,time_bnds ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 218 | #--This stupid ferret inverses both the vertical axis AND the latitude |
---|
| 219 | rm -f ${OUT}toto.nc |
---|
| 220 | #ncpdq -Oh --reorder -presnivs,-lat ${OUT}LOI_AR6_${yr}.nc ${OUT}toto.nc |
---|
| 221 | ncpdq -Oh --reorder -presnivs,-y ${OUT}LOI_AR6_${rcp}_${yr}.nc ${OUT}toto.nc |
---|
| 222 | ncatted -Oh -a units,x,o,c,"degrees_east" ${OUT}toto.nc |
---|
| 223 | mv ${OUT}toto.nc ${OUT}LOI_AR6_${rcp}_${yr}.nc |
---|
| 224 | rm -f ${OUT}'LOI_AR5_'${rcp}'_'${yr}'.nc' ${OUT}'LOI_AR5_'${rcp}'_'${yr}'_time.nc' |
---|
| 225 | done |
---|
| 226 | done |
---|
| 227 | |
---|
| 228 | fi |
---|