123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- #/bin/ksh
- set -evx
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # This script computes daily perturbation from any NEMO forcing variable
- # ('u10', 'v10', 't2', 'q2', 'qsw', 'qlw', 'snow', 'precip') by picking up
- # randomly monthly differences between ERAinterim and DFS4.3 forcing fields
- # and interpolating these to a daily frequency (see more details in Guemas
- # et al, 2014, Climate Dynamics)
- #
- # This script chases a fly with a flame thrower because it has been written
- # while testing many different options. It works but it should be better
- # rewritten.
- #
- # History : Virginie Guemas - Initial version - 2012
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Arguments
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- lstvars=( 'u10' 'v10' )
- # Variables for which to compute and pick up random perturbations
- lstmbs=( 1 2 3 4 )
- # List of members for which to build pertubation files
- dfs2era='T' # Interpolation from DFS4 to ERA (T) or from ERA to DFS (F)
- # to build differences and perturbations
- patherain='/cfu/scratch/vguemas/ERAint/'
- # Path were to find the ERAinterim forcing files
- pathdfsin='/cfu/scratch/vguemas/dfs4.3/'
- # Path were to find the DFS4.3 forcing files
- year0=1979 # Initial year of the reference period to compute perturbations
- yearf=2006 # Last year of the reference period to compute perturbations
- year1=2012 # First year for which to pick and build a pertubation file
- year2=2014 # Last year for which to pick and build a perturbation file
- nstep=1460 # Number of time steps for a non-leap year : 1460 or 365
- raw='F' # Compute the timestep differences between raw ERA and DFS fields
- # If the script has already run once and the differences have
- # been stored, this option can be set to F for the step of picking
- # up random perturbations.
- ano='F' # Compute anomalies relative to a monthly-smoothed daily climatology
- # and the timestep differences between anomalies of ERA and DFS fields
- # raw=T needs to have run before. If the script has already run once and
- # the timesteps differences have been stored, this option can be set to F.
- reorg='F' # Reorganize the differences timestep per timestep all the years together
- # rather than year per year with all the timesteps. Works on anomalies
- # if wih is set to 'ano_' and raw differences if wih is set to '_'
- # Once the computation of differences and their reorganization has been
- # performed once (raw=T, ano=T, reorg=T), the results are stored in directories
- # named according to the options set and raw, ano and reorg can be set
- # to F for the picking up.
- wih='ano_' # Which types needs to be picked for the perturbations
- monmean='T' # Compute monthly mean differences and pickup perturbations from monthly mean
- # differences rather than timestep differences
- pickup1='T' # Pickup random perturbations for each member, variable, year, either
- # one per timestep or one per month
- pickup2='F' # Pickup 2 random perturbations and average them for each member, variable,
- # year, each timestep
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- if [[ $dfs2era == T ]] ; then
- dif='eraint-dfs4.3'
- dir0='era-dfs'
- else
- dif='dfs4.3-eraint'
- dir0='dfs-era'
- fi
- for var in ${lstvars[@]} ; do
- if [[ $raw == T ]] ; then
- for ((year=$year0;year<=$yearf;year++)) ; do
- cp ${patherain}/${var}_eraint_${year}.nc ${var}_eraint_${year}.nc
- ncpdq -O -U ${var}_eraint_${year}.nc ${var}_eraint_${year}.nc
- if [[ $nstep == 1460 ]] ; then
- case $year in
- 1980|1984|1988|1992|1996|2000|2004|2008|2012|2016)
- ncks -O -d time,0,232 ${var}_eraint_${year}.nc ${var}_eraint_${year}_1.nc
- ncks -O -d time,237, ${var}_eraint_${year}.nc ${var}_eraint_${year}_2.nc
- ncrcat -O ${var}_eraint_${year}_1.nc ${var}_eraint_${year}_2.nc ${var}_eraint_${year}.nc
- rm -f ${var}_eraint_${year}_1.nc ${var}_eraint_${year}_2.nc
- ;;
- esac
- fi
- if [[ $nstep == 365 ]] ; then
- case $year in
- 1980|1984|1988|1992|1996|2000|2004|2008|2012|2016)
- ncks -O -d time,0,58 ${var}_eraint_${year}.nc ${var}_eraint_${year}_1.nc
- ncks -O -d time,60, ${var}_eraint_${year}.nc ${var}_eraint_${year}_2.nc
- ncrcat -O ${var}_eraint_${year}_1.nc ${var}_eraint_${year}_2.nc ${var}_eraint_${year}.nc
- rm -f ${var}_eraint_${year}_1.nc ${var}_eraint_${year}_2.nc
- ;;
- esac
- fi
- cp ${pathdfsin}/${var}_DFS4.3_${year}.nc ${var}_dfs4.3_${year}.nc
- ncks -A -v time ${var}_eraint_${year}.nc ${var}_dfs4.3_${year}.nc
- case $var in
- 'u10'|'v10'|'t2'|'q2') cdo setgrid,r320x161 ${var}_dfs4.3_${year}.nc ${var}_dfs4.3_${year}_bis.nc ;;
- 'qsw'|'qlw'|'snow'|'precip') cdo setgrid,r192x94 ${var}_dfs4.3_${year}.nc ${var}_dfs4.3_${year}_bis.nc ;;
- esac
- ncks -O -x -v lat_2,lon_2 ${var}_dfs4.3_${year}_bis.nc ${var}_dfs4.3_${year}.nc
- rm -f ${var}_dfs4.3_${year}_bis.nc
- if [[ $dfs2era == T ]] ; then
- cdo remapbic,r240x121 ${var}_dfs4.3_${year}.nc ${var}_dfs4.3_${year}_grideraint.nc
- cdo invertlat ${var}_dfs4.3_${year}_grideraint.nc ${var}_dfs4.3_${year}_grideraint_bis.nc
- rm -f ${var}_dfs4.3_${year}.nc ${var}_dfs4.3_${year}_grideraint.nc
- mv ${var}_dfs4.3_${year}_grideraint_bis.nc ${var}_dfs4.3_gridera_${year}.nc
- cdo sub ${var}_eraint_${year}.nc ${var}_dfs4.3_gridera_${year}.nc ${var}_eraint-dfs4.3_${year}.nc
- else
- case $var in
- 'u10'|'v10'|'t2'|'q2') cdo remapbic,r320x161 ${var}_eraint_${year}.nc ${var}_eraint_griddfs_${year}.nc ;;
- 'qsw'|'qlw'|'snow'|'precip') cdo remapbic,r192x94 ${var}_eraint_${year}.nc ${var}_eraint_griddfs_${year}.nc ;;
- esac
- rm -f ${var}_eraint_${year}.nc
- cdo sub ${var}_dfs4.3_${year}.nc ${var}_eraint_griddfs_${year}.nc ${var}_dfs4.3-eraint_${year}.nc
- fi
- done
- fi
- if [[ $ano == T ]] ; then
- length=30
- if [[ $dfs2era == T ]] ; then
- ncea -O -n $((${yearf}-${year0}+1)),4,1 ${var}_dfs4.3_gridera_${year0}.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim.nc
- ncea -O -n $((${yearf}-${year0}+1)),4,1 ${var}_eraint_${year0}.nc ${var}_eraint_${year0}-${yearf}_clim.nc
- ncrcat -O ${var}_dfs4.3_gridera_${year0}-${yearf}_clim.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_bis.nc
- ncrcat -O ${var}_eraint_${year0}-${yearf}_clim.nc ${var}_eraint_${year0}-${yearf}_clim.nc ${var}_eraint_${year0}-${yearf}_clim_bis.nc
- cdo runmean,${length} ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_bis.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed.nc
- ncks -O -d time,$(($nstep+1)),$(($nstep+$length/2)) ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_1.nc
- ncks -O -d time,$(($length/2+1)),$nstep ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_2.nc
- ncrcat -O ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_1.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_2.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim.nc
- rm -f ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_bis.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_1.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim_smoothed_2.nc
- cdo runmean,${length} ${var}_eraint_${year0}-${yearf}_clim_bis.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed.nc
- ncks -O -d time,$(($nstep+1)),$(($nstep+$length/2)) ${var}_eraint_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed_1.nc
- ncks -O -d time,$(($length/2+1)),$nstep ${var}_eraint_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed_2.nc
- ncrcat -O ${var}_eraint_${year0}-${yearf}_clim_smoothed_1.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed_2.nc ${var}_eraint_${year0}-${yearf}_clim.nc
- rm -f ${var}_eraint_${year0}-${yearf}_clim_bis.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed_1.nc ${var}_eraint_${year0}-${yearf}_clim_smoothed_2.nc
- for ((year=$year0;year<=$yearf;year++)) ; do
- cdo sub ${var}_eraint_${year}.nc ${var}_eraint_${year0}-${yearf}_clim.nc ${var}_ano_eraint_${year}.nc
- cdo sub ${var}_dfs4.3_gridera_${year}.nc ${var}_dfs4.3_gridera_${year0}-${yearf}_clim.nc ${var}_ano_dfs4.3_gridera_${year}.nc
- cdo sub ${var}_ano_eraint_${year}.nc ${var}_ano_dfs4.3_gridera_${year}.nc ${var}_ano_eraint-dfs4.3_${year}.nc
- rm -f ${var}_eraint_${year}.nc ${var}_dfs4.3_gridera_${year}.nc ${var}_ano_eraint_${year}.nc ${var}_ano_dfs4.3_gridera_${year}.nc
- done
- else
- ncea -O -n $((${yearf}-${year0}+1)),4,1 ${var}_dfs4.3_${year0}.nc ${var}_dfs4.3_${year0}-${yearf}_clim.nc
- ncea -O -n $((${yearf}-${year0}+1)),4,1 ${var}_eraint_griddfs_${year0}.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim.nc
- ncrcat -O ${var}_dfs4.3_${year0}-${yearf}_clim.nc ${var}_dfs4.3_${year0}-${yearf}_clim.nc ${var}_dfs4.3_${year0}-${yearf}_clim_bis.nc
- ncrcat -O ${var}_eraint_griddfs_${year0}-${yearf}_clim.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_bis.nc
- cdo runmean,${length} ${var}_dfs4.3_${year0}-${yearf}_clim_bis.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed.nc
- ncks -O -d time,$(($nstep+1)),$(($nstep+$length/2)) ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_1.nc
- ncks -O -d time,$(($length/2+1)),$nstep ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_2.nc
- ncrcat -O ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_1.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_2.nc ${var}_dfs4.3_${year0}-${yearf}_clim.nc
- rm -f ${var}_dfs4.3_${year0}-${yearf}_clim_bis.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_1.nc ${var}_dfs4.3_${year0}-${yearf}_clim_smoothed_2.nc
- cdo runmean,${length} ${var}_eraint_griddfs_${year0}-${yearf}_clim_bis.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed.nc
- ncks -O -d time,$(($nstep+1)),$(($nstep+$length/2)) ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_1.nc
- ncks -O -d time,$(($length/2+1)),$nstep ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_2.nc
- ncrcat -O ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_1.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_2.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim.nc
- rm -f ${var}_eraint_griddfs_${year0}-${yearf}_clim_bis.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_1.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim_smoothed_2.nc
- for ((year=$year0;year<=$yearf;year++)) ; do
- cdo sub ${var}_eraint_griddfs_${year}.nc ${var}_eraint_griddfs_${year0}-${yearf}_clim.nc ${var}_ano_eraint_griddfs_${year}.nc
- cdo sub ${var}_dfs4.3_${year}.nc ${var}_dfs4.3_${year0}-${yearf}_clim.nc ${var}_ano_dfs4.3_${year}.nc
- cdo sub ${var}_ano_dfs4.3_${year}.nc ${var}_ano_eraint_griddfs_${year}.nc ${var}_ano_dfs4.3-eraint_${year}.nc
- rm -f ${var}_eraint_griddfs_${year}.nc ${var}_dfs4.3_${year}.nc ${var}_ano_eraint_griddfs_${year}.nc ${var}_ano_dfs4.3_${year}.nc
- done
- fi
- fi
- if [[ $reorg == T ]] ; then
- for ((jt=1;jt<=$nstep;jt++)) ; do
- ncrcat -O -d time,$((jt-1)),,$nstep -n $((yearf-year0+1)),4,1 ${var}_${wih}${dif}_${year0}.nc ${var}_${wih}${dif}_${year0}-${yearf}_$jt.nc
- done
- mkdir -p ${wih}${dir0}
- mv ${var}_${wih}${dif}_* ${wih}${dir0}/.
- fi
- if [[ $raw == T && $ano == F ]] ; then
- for ((year=$year0;year<=$yearf;year++)) ; do
- if [[ $dfs2era == T ]] ; then
- rm -f ${var}_eraint_${year}.nc ${var}_dfs4.3_gridera_${year}.nc
- else
- rm -f ${var}_eraint_griddfs_${year}.nc ${var}_dfs4.3_${year}.nc
- fi
- done
- fi
- if [[ $monmean == T ]] ; then
- jt0=1
- for ((mon=1;mon<=12;mon++)) ; do
- case $mon in
- 1|3|5|7|8|10|12) ndays=31 ;;
- 4|6|9|11) ndays=30 ;;
- 2) ndays=28 ;;
- esac
- lstfiles=""
- case $nstep in
- 1460) ntimes=$((ndays*4+jt0-1)) ;;
- 365) ntimes=$((ndays+jt0-1)) ;;
- 12) ntimes=1 ;;
- esac
- for ((jt=$jt0;jt<=$ntimes;jt++)) ;do
- lstfiles=$lstfiles" "${wih}${dir0}/${var}_${wih}${dif}_${year0}-${yearf}_$jt.nc
- done
- ncea -O $lstfiles ${wih}${dir0}/${var}_${wih}${dif}_${year0}-${yearf}_mon$(printf "%02d" ${mon}).nc
- case $nstep in
- 1460) jt0=$((${jt0}+ndays*4)) ;;
- 365) jt0=$((${jt0}+ndays)) ;;
- 12) jt0=$((${jt0}+1)) ;;
- esac
- done
- fi
- done
- if [[ $pickup1 == T ]] ; then
- if [[ $monmean == T ]] ; then
- dirpert=perturb1_${dir0}_mon
- nstep=12
- else
- dirpert=perturb1_${dir0}
- fi
- mkdir -p $dirpert
- RANGE=$((${yearf}-${year0}+1))
- for ((jt=1;jt<=$nstep;jt++)) ; do
- for memb in ${lstmbs[@]} ; do
- for ((year=$year1;year<=$year2;year++)) ; do
- number=$((RANDOM%${RANGE}))
- for var in ${lstvars[@]} ; do
- if [[ $monmean == T ]] ; then
- filein=${var}_${wih}${dif}_${year0}-${yearf}_mon$(printf "%02d" ${jt}).nc
- else
- filein=${var}_${wih}${dif}_${year0}-${yearf}_$jt.nc
- fi
- ncks -O -d time,$number ${wih}${dir0}/${filein} ${dirpert}/${var}_fc${memb}_${year}_$(printf "%04d" $jt).nc
- done
- done
- done
- done
- fi
- if [[ $pickup2 == T ]] ; then
- mkdir -p perturb2_${dir0}
- RANGE=$((${yearf}-${year0}+1))
- for ((jt=1;jt<=$nstep;jt++)) ; do
- for memb in ${lstmbs[@]} ; do
- for ((year=$year1;year<=$year2;year++)) ; do
- for ((jlaunch=1;jlaunch<=2;jlaunch++)) ; do
- number=$((RANDOM%${RANGE}))
- for var in ${lstvars[@]} ; do
- ncks -O -d time,$number ${wih}${dir0}/${var}_${wih}${dif}_${year0}-${yearf}_$jt.nc perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt)_$jlaunch.nc
- done
- done
- for var in ${lstvars[@]} ; do
- ncea -O perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt)_1.nc perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt)_2.nc perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt).nc
- rm -f perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt)_1.nc perturb2_${dir0}/${var}_fc${memb}_${year}_$(printf "%04d" $jt)_2.nc
- done
- done
- done
- done
- fi
- if [[ $pickup1 == T || $pickup2 == T ]] ; then
- lstdirs=""
- if [[ $pickup1 == T ]] ; then
- if [[ $monmean == T ]] ; then
- lstdirs=$lstdirs" "perturb1_${dir0}_mon
- else
- lstdirs=$lstdirs" "perturb1_${dir0}
- fi
- fi
- if [[ $pickup2 == T ]] ; then
- lstdirs=$lstdirs" "perturb2_${dir0}
- fi
- for dir in $lstdirs ; do
- for memb in ${lstmbs[@]} ; do
- for ((year=$year1;year<=$year2;year++)) ; do
- for var in ${lstvars[@]} ; do
- ncrcat -O -n $nstep,4,1 ${dir}/${var}_fc${memb}_${year}_0001.nc ${dir}/${var}_fc${memb}_${year}.nc
- rm -f ${dir}/${var}_fc${memb}_${year}_*.nc
- if [[ $monmean == T ]] ; then
- cdo settaxis,${year}-01-15,12:00,1mon ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_bis.nc
- rm ${dir}/${var}_fc${memb}_${year}.nc
- mv ${dir}/${var}_fc${memb}_${year}_bis.nc ${dir}/${var}_fc${memb}_${year}.nc
- fi
- if [[ $dfs2era == T && $monmean == F ]] ; then
- case $year in
- 1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020)
- case $nstep in
- 1460)
- ncks -O -d time,0,232 ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_1.nc
- ncks -O -d time,229,232 ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_2.nc
- ncks -O -d time,233, ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_3.nc
- ;;
- 365)
- ncks -O -d time,0,58 ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_1.nc
- ncks -O -d time,58 ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_2.nc
- ncks -O -d time,59, ${dir}/${var}_fc${memb}_${year}.nc ${dir}/${var}_fc${memb}_${year}_3.nc
- ;;
- esac
- ncrcat -O ${dir}/${var}_fc${memb}_${year}_1.nc ${dir}/${var}_fc${memb}_${year}_2.nc ${dir}/${var}_fc${memb}_${year}_3.nc ${dir}/${var}_fc${memb}_${year}.nc
- rm -f ${dir}/${var}_fc${memb}_${year}_1.nc ${dir}/${var}_fc${memb}_${year}_2.nc ${dir}/${var}_fc${memb}_${year}_3.nc
- esac
- fi
- done
- done
- done
- done
- fi
-
- if [[ $monmean == T ]] ; then
- for memb in ${lstmbs[@]} ; do
- for var in ${lstvars[@]} ; do
- ncrcat -O -n $((${year2}-${year1}+1)),4,1 perturb1_${dir0}_mon/${var}_fc${memb}_${year1}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}.nc
- cdo inttime,${year1}-01-15,12:00,6hour perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}_6hourly.nc
- rm -f perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}.nc
- cdo splityear perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}_6hourly.nc perturb1_${dir0}_mon/${var}_fc${memb}_
- rm -f perturb1_${dir0}_mon/${var}_fc${memb}_${year1}-${year2}_6hourly.nc
- if [[ $dfs2era == F ]] ; then
- lstyears=( 1960 1964 1968 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 )
- for year in ${lstyears[@]} ; do
- if [[ -e perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc ]] ; then
- case $nstep in
- 1460)
- ncks -O -d time,0,232 perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_1.nc
- ncks -O -d time,237, perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_2.nc
- ;;
- 365)
- ncks -O -d time,0,58 perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_1.nc
- ncks -O -d time,60, perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_2.nc
- ;;
- esac
- ncrcat -O perturb1_${dir0}_mon/${var}_fc${memb}_${year}_1.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_2.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}.nc
- rm -f perturb1_${dir0}_mon/${var}_fc${memb}_${year}_1.nc perturb1_${dir0}_mon/${var}_fc${memb}_${year}_2.nc
- fi
- done
- fi
- done
- done
- fi
-
|