# Script prenant en entrĂe les outputs des simulations historical gĂnĂrant les forĂages aĂrosols tropo # Une moyenne glissante sur 3 ans est effectuĂe, avec pondĂration [0.25 ; 0.5 ; 0.25]. # Un fichier climato par an est gĂnĂrĂ au final. # Th. Lurton IPSL nov. 2017 #!/bin/sh for year in {1850..2014} do if [ ${year} -ge 1850 ] && [ ${year} -le 1882 ] then lettreprec='' lettre=A lettresuiv=B elif [ ${year} -ge 1883 ] && [ ${year} -le 1915 ] then lettreprec=A lettre=B lettresuiv=C elif [ ${year} -ge 1916 ] && [ ${year} -le 1948 ] then lettreprec=B lettre=C lettresuiv=D elif [ ${year} -ge 1949 ] && [ ${year} -le 1981 ] then lettreprec=C lettre=D lettresuiv=E elif [ ${year} -ge 1982 ] && [ ${year} -le 2014 ] then lettreprec=D lettre=E lettresuiv='' fi nomsimu=LOI6012-histAER-part${lettre} nomsimuprec=LOI6012-histAER-part${lettreprec} nomsimusuiv=LOI6012-histAER-part${lettresuiv} # Chemins chemin=/ccc/store/cont003/gencmip6/lurtont/IGCM_OUT/LMDZORINCA/PROD/historicalAER/${nomsimu}/CHM/Output/MO/ cheminprec=/ccc/store/cont003/gencmip6/lurtont/IGCM_OUT/LMDZORINCA/PROD/historicalAER/${nomsimuprec}/CHM/Output/MO/ cheminsuiv=/ccc/store/cont003/gencmip6/lurtont/IGCM_OUT/LMDZORINCA/PROD/historicalAER/${nomsimusuiv}/CHM/Output/MO/ workchemin=/ccc/scratch/cont003/gencmip6/lurtont/aerosols_from_inca/ # On effectue une moyenne glissante sur trois annĂ©es, centrĂ©e en l'annĂ©e d'intĂ©rĂȘt, # et de poids [ 1/4 ; 1/2 ; 1/4 ]. prec=$((${year}-1)) suiv=$((${year}+1)) # Override des annĂ©es prĂ©cĂ©dente pour 1850, et suivante pour 2014 : if [ ${year} = 1850 ] then prec=1850 echo '*** Comme on est en 1850, je prends aussi 1850 pour an (n-1).' fi if [ ${year} = 2014 ] then suiv=2014 echo '*** Comme on est en 2014, je prends aussi 2014 pour an (n+1).' fi echo '***** Annee '${year}' : Moyenne glissante sur ans '${prec}', '${year}', et '${suiv}'.' # Adresses generiques des fichiers a traiter fileprec=${chemin}${nomsimu}_${prec}0101_${prec}1230_1M_aerosols_from_inca.nc fileyear=${chemin}${nomsimu}_${year}0101_${year}1230_1M_aerosols_from_inca.nc filesuiv=${chemin}${nomsimu}_${suiv}0101_${suiv}1230_1M_aerosols_from_inca.nc # Override pour les cas des annees-charnieres # Si l'on est en fin de periode (sauf la derniere), il faut regarder dans la simulation suivante pour le fichier (n+1) if [ ${year} = 1882 ] || [ ${year} = 1915 ] || [ ${year} = 1948 ] || [ ${year} = 1981 ] then filesuiv=${cheminsuiv}${nomsimusuiv}_${suiv}0101_${suiv}1230_1M_aerosols_from_inca.nc # si l'on est en debut de periode (sauf la premiere), on regarde dans la simulation precedente pour le fichier (n-1) fi if [ ${year} = 1883 ] || [ ${year} = 1916 ] || [ ${year} = 1949 ] || [ ${year} = 1982 ] then fileprec=${cheminprec}${nomsimuprec}_${prec}0101_${prec}1230_1M_aerosols_from_inca.nc fi # Fichiers temporaires avec ponderation (cas generique) pondprec=${workchemin}${nomsimu}_${prec}0101_${prec}1230_pond.nc pondyear=${workchemin}${nomsimu}_${year}0101_${year}1230_pond.nc pondsuiv=${workchemin}${nomsimu}_${suiv}0101_${suiv}1230_pond.nc # Cas particulier pour 1850 : il ne faut pas que ${pondprec} et ${pondyear} s'Ă©crivent l'un sur l'autre if [ ${year} = 1850 ] then pondprec=${workchemin}${nomsimu}_18490101_18491230_pond.nc fi # Cas particulier pour 2014 : il ne faut pas que ${pondsuiv} et ${pondyear} s'Ă©crivent l'un sur l'autre if [ ${year} = 2014 ] then pondsuiv=${workchemin}${nomsimu}_20150101_20151230_pond.nc fi # PondĂ©ration des trois annĂ©es successives par 1/4 ; 1/2 ; 1/4 ] # et multiplication par un facteur 3 qui disparaĂźtr lors de la moyenne par mois. cdo mulc,.75 ${fileprec} ${pondprec} cdo mulc,1.5 ${fileyear} ${pondyear} cdo mulc,.75 ${filesuiv} ${pondsuiv} # Fix du vecteur temps pour les cas 1849 et 2015 : comme ils sont issus d'une duplication de fichier, il faut lui faire croire # que l'on a le vecteur temps de l'annee precedente/suivante if [ ${year} = 1850 ] then tmp=${workchemin}${nomsimu}_tmp.nc mv ${pondprec} ${tmp} cdo shifttime,-1year ${tmp} ${pondprec} rm -f ${tmp} fi if [ ${year} = 2014 ] then tmp=${workchemin}${nomsimu}_tmp.nc mv ${pondsuiv} ${tmp} cdo shifttime,1year ${tmp} ${pondsuiv} rm -f ${tmp} fi # Alignement de tout le monde sur 1850 ncatted -O -a units,time_counter,o,c,"seconds since 1850-01-01 00:00:00" ${pondyear} ncatted -O -a units,time_counter,o,c,"seconds since 1850-01-01 00:00:00" ${pondprec} ncatted -O -a units,time_counter,o,c,"seconds since 1850-01-01 00:00:00" ${pondsuiv} # Fix du vecteur temps pour les annees-charnieres : chacune des cinq parties de simulation a sa propre origine des temps # partA commence en 1847, partB en 1880, partC en 1913, partD en 1946 et partE en 1979 # si on est en fin de periode, on doit decaler l'axe des temps du fichier (n+1) de 33 ans if [ ${year} = 1882 ] || [ ${year} = 1915 ] || [ ${year} = 1948 ] || [ ${year} = 1981 ] then tmp=${workchemin}${suiv}_tmp.nc mv ${pondsuiv} ${tmp} cdo shifttime,33years ${tmp} ${pondsuiv} fi # si on est en debut de periode, on doit decaler l'axe des temps du fichier (n-1) de -33 ans # (normalement on reste en positif, car la simu fait 36 ans au total en incluant le spin-up de 3 ans, et on regarde la derniere annee) if [ ${year} = 1883 ] || [ ${year} = 1916 ] || [ ${year} = 1949 ] || [ ${year} = 1982 ] then tmp=${workchemin}${prec}_tmp.nc mv ${pondprec} ${tmp} cdo shifttime,-33years ${tmp} ${pondprec} fi pondtroisans=${workchemin}aerosols_${prec}0101_${suiv}1230_pond.nc # Override pour les cas 1850 et 2014, renommage propre du fichier trois ans if [ ${year} = 1850 ] then pondtroisans=${workchemin}aerosols_18490101_18511230_pond.nc fi if [ ${year} = 2014 ] then pondtroisans=${workchemin}aerosols_20130101_20151230_pond.nc fi cdo mergetime ${pondprec} ${pondyear} ${pondsuiv} ${pondtroisans} rm -f ${pondprec} ${pondyear} ${pondsuiv} fileout=${workchemin}final_AER/aerosols${year}_from_inca.nc cdo ymonmean ${pondtroisans} ${fileout} rm -f ${pondtroisans} # Fix du vecteur temps : ymonmean s'aligne sur la derniere annee, ici (n+1) # on recule donc d'un an pour bien avoir l'annee (n) tmp=${workchemin}${nomsimu}_tmp.nc mv ${fileout} ${tmp} cdo shifttime,-1year ${tmp} ${fileout} rm -f ${tmp} # Dernier point : on s'aligne sur 1850 pour l'origine des temps de tout le monde tmp=${workchemin}tmp.nc mv ${fileout} ${tmp} if [ ${lettre} = 'A' ] then cdo shifttime,-3years ${tmp} ${fileout} elif [ ${lettre} = 'B' ] then cdo shifttime,30years ${tmp} ${fileout} elif [ ${lettre} = 'C' ] then cdo shifttime,63years ${tmp} ${fileout} elif [ ${lettre} = 'D' ] then cdo shifttime,96years ${tmp} ${fileout} elif [ ${lettre} = 'E' ] then cdo shifttime,129years ${tmp} ${fileout} fi rm -f ${tmp} # Fin de boucle sur les annĂ©es done