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!" |
---|