[4004] | 1 | #--Script performing bias-correction of RCP scenarios with the AMIP runs |
---|
| 2 | #--over SST and SIC. |
---|
| 3 | #--Th. Lurton, IPSL, 07/2018 |
---|
| 4 | |
---|
| 5 | #--working directory |
---|
| 6 | ici=${GENCMIP6_CCCWORKDIR}/CMIP6_LIMIT/ |
---|
| 7 | if [ ! -d ${ici} ] ; then mkdir -p ${ici} ; fi |
---|
| 8 | |
---|
| 9 | gridfile=/ccc/work/cont003/gencmip6/lurtont/CMIP6_LIMIT/GRID/grid_MR_CMIP5 |
---|
| 10 | |
---|
| 11 | #--AMIP input files |
---|
| 12 | dirinAMIP=/ccc/work/cont003/gencmip6/lurtont/CMIP6_LIMIT/AMIP/ |
---|
| 13 | |
---|
| 14 | #--performing horizontal remapping for AMIP files between 2006 and 2017 |
---|
| 15 | fileintsoloceAMIP=${dirinAMIP}tos_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-4_gn_187001-201712.nc |
---|
| 16 | fileinpourcsicAMIP=${dirinAMIP}siconc_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-4_gn_187001-201712.nc |
---|
| 17 | |
---|
| 18 | fileinSSTyearsAMIP=${ici}SST_AMIP_2006_2017.nc |
---|
| 19 | fileinSICyearsAMIP=${ici}SIC_AMIP_2006_2017.nc |
---|
| 20 | |
---|
| 21 | cdo -seldate,2006-01-01,2017-12-31 ${fileintsoloceAMIP} ${fileinSSTyearsAMIP} |
---|
| 22 | cdo -seldate,2006-01-01,2017-12-31 ${fileinpourcsicAMIP} ${fileinSICyearsAMIP} |
---|
| 23 | |
---|
| 24 | #--AMIP files remapped to CMIP5-MR grid |
---|
| 25 | fileremaptsoloceAMIP=${ici}amipbc_sst_remapped_2006_2017.nc |
---|
| 26 | fileremappourcsicAMIP=${ici}amipbc_sic_remapped_2006_2017.nc |
---|
| 27 | |
---|
| 28 | echo "Remapping AMIP SST file towards CMIP5 MR grid, for years 2006-2017..." |
---|
| 29 | cdo remapcon,${gridfile} ${fileinSSTyearsAMIP} ${fileremaptsoloceAMIP} |
---|
| 30 | echo "Remapping AMIP SIC file towards CMIP5 MR grid, for years 2006-2017..." |
---|
| 31 | cdo remapcon,${gridfile} ${fileinSICyearsAMIP} ${fileremappourcsicAMIP} |
---|
| 32 | |
---|
| 33 | |
---|
| 34 | #--loop on RCPs |
---|
| 35 | for rcp in rcp26 rcp45 rcp60 rcp85 |
---|
| 36 | do |
---|
| 37 | |
---|
| 38 | if [ ${rcp} == "rcp26" ] ; then dirinRCP=/ccc/store/cont003/dsmipsl/p86maf/dmf_import/IGCM_OUT/IPSLCM5A-MR/PROD/rcp26/v5.rcp26MR1/ATM/Analyse/TS_MO/ ; fi |
---|
| 39 | if [ ${rcp} == "rcp45" ] ; then dirinRCP=/ccc/store/cont003/dsmipsl/p86maf/dmf_import/IGCM_OUT/IPSLCM5A-MR/PROD/rcp45/v5.rcp45MR1/ATM/Analyse/TS_MO/ ; fi |
---|
| 40 | if [ ${rcp} == "rcp60" ] ; then dirinRCP=/ccc/store/cont003/dsm/p86denv/IGCM_OUT/IPSLCM5A-MR/PROD/rcp60/v5.rcp60MR1/ATM/Analyse/TS_MO/ ; fi |
---|
| 41 | if [ ${rcp} == "rcp85" ] ; then dirinRCP=/ccc/store/cont003/dsmipsl/p86maf/dmf_import/IGCM_OUT/IPSLCM5A-MR/PROD/rcp85/v5.rcp85MR1/ATM/Analyse/TS_MO/ ; fi |
---|
| 42 | |
---|
| 43 | rcpdir=${ici}Scenarios/${rcp}/ |
---|
| 44 | if [ ! -d ${rcpdir} ] ; then mkdir -p ${rcpdir} ; fi |
---|
| 45 | |
---|
| 46 | rcpsplitdir=${rcpdir}split/ |
---|
| 47 | if [ ! -d ${rcpsplitdir} ] ; then mkdir -p ${rcpsplitdir} ; fi |
---|
| 48 | |
---|
| 49 | #--RCP input files |
---|
| 50 | fileintsoloceRCP=${dirinRCP}v5.${rcp}MR1_20060101_21001231_1M_tsol_oce.nc |
---|
| 51 | fileinpourcsicRCP=${dirinRCP}v5.${rcp}MR1_20060101_21001231_1M_pourc_sic.nc |
---|
| 52 | fileinpourclicRCP=${dirinRCP}v5.${rcp}MR1_20060101_21001231_1M_pourc_lic.nc |
---|
| 53 | |
---|
| 54 | #--splitting years |
---|
| 55 | echo ${rcp}": splitting years for SST..." |
---|
| 56 | cdo splityear ${fileintsoloceRCP} ${rcpsplitdir}v5.${rcp}MR1_tsol_oce_ |
---|
| 57 | echo ${rcp}": splitting years for SIC..." |
---|
| 58 | cdo splityear ${fileinpourcsicRCP} ${rcpsplitdir}v5.${rcp}MR1_pourc_sic_ |
---|
| 59 | echo ${rcp}": splitting years for LIC..." |
---|
| 60 | cdo splityear ${fileinpourclicRCP} ${rcpsplitdir}v5.${rcp}MR1_pourc_lic_ |
---|
| 61 | |
---|
| 62 | dirout=${rcpdir}/OUT_anocorr/ |
---|
| 63 | if [ ! -d ${dirout} ] ; then mkdir -p ${dirout} ; fi |
---|
| 64 | |
---|
| 65 | tmpavgsstAMIP=${ici}tmpavgsstAMIP.nc |
---|
| 66 | tmpavgsicAMIP=${ici}tmpavgsicAMIP.nc |
---|
| 67 | tmpavgsstRCP=${ici}tmpavgsstRCP.nc |
---|
| 68 | tmpavgsicRCP=${ici}tmpavgsicRCP.nc |
---|
| 69 | tmpavglicRCP=${ici}tmpavglicRCP.nc |
---|
| 70 | cdo ymonmean -seldate,2006-01-01,2017-12-31 ${fileremaptsoloceAMIP} ${tmpavgsstAMIP} |
---|
| 71 | cdo ymonmean -seldate,2006-01-01,2017-12-31 ${fileremappourcsicAMIP} ${tmpavgsicAMIP} |
---|
| 72 | cdo ymonmean -seldate,2006-01-01,2017-12-31 ${fileintsoloceRCP} ${ici}sstRCP.nc |
---|
| 73 | cdo ymonmean -seldate,2006-01-01,2017-12-31 ${fileinpourcsicRCP} ${ici}sicRCP.nc |
---|
| 74 | cdo ymonmean -seldate,2006-01-01,2017-12-31 ${fileinpourclicRCP} ${tmpavglicRCP} |
---|
| 75 | ncrename -v siconc,pourc_sic ${tmpavgsicAMIP} |
---|
| 76 | ncrename -v tos,tsol_oce ${tmpavgsstAMIP} -O ${ici}tmp.nc |
---|
| 77 | cdo expr,'tsol_oce=tsol_oce+273.15' ${ici}tmp.nc ${tmpavgsstAMIP} |
---|
| 78 | rm -f ${ici}tmp.nc |
---|
| 79 | ncrename -v time,time_counter -d time,time_counter ${tmpavgsstAMIP} |
---|
| 80 | ncrename -v time,time_counter -d time,time_counter ${tmpavgsicAMIP} |
---|
| 81 | ncrename -v pourc_lic,pourc_sic ${tmpavglicRCP} -O ${ici}tmp.nc |
---|
| 82 | ncks -C -O -x -v aire ${ici}tmp.nc ${tmpavglicRCP} |
---|
| 83 | rm -f ${ici}tmp.nc |
---|
| 84 | ncks -C -O -x -v aire ${ici}sstRCP.nc ${tmpavgsstRCP} |
---|
| 85 | ncks -C -O -x -v aire ${ici}sicRCP.nc ${tmpavgsicRCP} |
---|
| 86 | rm -f ${ici}sstRCP.nc ${ici}sicRCP.nc |
---|
| 87 | |
---|
| 88 | for year in {2015..2100} |
---|
| 89 | do |
---|
| 90 | |
---|
| 91 | echo ${rcp}": Correcting anomaly for year "${year}"..." |
---|
| 92 | |
---|
| 93 | fileyeartsoloceRCP=${rcpsplitdir}v5.${rcp}MR1_tsol_oce_${year}.nc |
---|
| 94 | fileouttsoloce=${dirout}v5.${rcp}MR1_tsol_oce_${year}_anocorr.nc |
---|
| 95 | |
---|
| 96 | fileyearpourcsicRCP=${rcpsplitdir}v5.${rcp}MR1_pourc_sic_${year}.nc |
---|
| 97 | fileoutpourcsic=${dirout}v5.${rcp}MR1_pourc_sic_${year}_anocorr.nc |
---|
| 98 | |
---|
| 99 | ncks -C -O -x -v aire ${fileyeartsoloceRCP} ${ici}tmpyearSST.nc |
---|
| 100 | ncks -C -O -x -v aire ${fileyearpourcsicRCP} ${ici}tmpyearSIC.nc |
---|
| 101 | |
---|
| 102 | #--performing anomaly corrections |
---|
| 103 | echo "... for SST..." |
---|
| 104 | cdo add -sub ${ici}tmpyearSST.nc ${tmpavgsstRCP} ${tmpavgsstAMIP} ${fileouttsoloce} |
---|
| 105 | echo "... for SIC, as SIC = SIC(RCP) + <SICLIC(AMIP)> - <SIC(RCP)> - <LIC(RCP)>..." |
---|
| 106 | cdo add -sub ${ici}tmpyearSIC.nc ${tmpavgsicRCP} ${tmpavgsicAMIP} ${ici}tmp.nc |
---|
| 107 | cdo sub ${ici}tmp.nc ${tmpavglicRCP} ${fileoutpourcsic} |
---|
| 108 | rm -f ${ici}tmp.nc |
---|
| 109 | #--clipping of pourc_sic values between 0 and 100 |
---|
| 110 | ncap2 -s 'where(pourc_sic>100.) pourc_sic=100;' ${fileoutpourcsic} -O ${ici}tmp.nc |
---|
| 111 | ncap2 -s 'where(pourc_sic<0.) pourc_sic=0;' ${ici}tmp.nc -O ${fileoutpourcsic} |
---|
| 112 | rm -f ${ici}tmp.nc ${ici}tmpyearSST.nc ${ici}tmpyearSIC.nc |
---|
| 113 | |
---|
| 114 | #--end loop on years |
---|
| 115 | done |
---|
| 116 | |
---|
| 117 | echo "Cleaning up..." |
---|
| 118 | rm -f ${tmpavgsstAMIP} ${tmpavgsicAMIP} ${tmpavgsstRCP} ${tmpavgsicRCP} ${tmpavglicRCP} |
---|
| 119 | rm -rf ${rcpsplitdir} |
---|
| 120 | |
---|
| 121 | #--end loop on RCPs |
---|
| 122 | done |
---|
| 123 | |
---|
| 124 | #--cleaning up remapped AMIPs |
---|
| 125 | echo "Cleaning up..." |
---|
| 126 | rm -f ${ici}amipbc_sst_2006_2017_remapped.nc |
---|
| 127 | rm -f ${ici}amipbc_sic_2006_2017_remapped.nc |
---|
| 128 | echo "...OK!" |
---|