#!/bin/bash #set -vx module load cdo sim=$1 MAINDIR=`basename \`pwd\`` PRE=FH$MAINDIR echo $PRE STORED=$STORE WORKD=$WORK se=1 cosp=0 da=0 if [ ! -d $sim ] ; then echo la simulation $sim n existe pas ; exit ; fi yri=2001 yrf=2003 yr=$yri cd $sim pwd #mkdir -p Analyse/SE Analyse/TS_DA listemth="" listecosp="" listeday="" while [ $yr -le $yrf ] ; do for suf in day mth ; do echo Utilisation de hist$suf.${yr}.nc if [ ! -f hist$suf.${yr}.nc ] ; then if [ ! -f "hist$suf.${yr}01.nc" -o ! -f "hist$suf.${yr}12.nc" ] ; then echo fichiers hist$suf.${yr}01.nc -f hist$suf.${yr}12.nc manquants ; exit ; fi echo cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc fi done listemth="$listemth `ls histmth.${yr}.nc`" listecosp="$listecosp `ls histmthCOSP.${yr}.nc`" listeday="$listeday `ls histday.${yr}.nc`" (( yr = $yr + 1 )) done # liste des variables reconstruite a partir de # grep calias ~fabric/LMDZ/atlas/lmdz_SE.py | cut -d\' -f6 | sort | uniq | sed -e '/psl/d' varse="pourc_ter,pourc_oce,pourc_lic,pourc_sic,bils,cldt,flat,LWdnSFC,LWdnSFCclr,LWupSFC,ovap,precip,q2m,rh2m,rhum,sens,slp,SWdnSFC,SWdnSFCclr,SWdnTOA,SWupSFC,SWupSFCclr,SWupTOA,SWupTOAclr,t2m,taux_oce,tauy_oce,temp,topl,topl0,tsol,tsol_oce,vitu,vitv,vitw,wind10m,z500,snow,pr_lsc_i,pr_lsc_l,geop,phis,prw,cldl,cldm,cldh,cldt,w500,tops,tops0,sols,sols0,soll,soll0" vars1d="bils cldh cldl cldm cldq cldt evap flat pluc plul precip prw psol q2m q700 sens sicf slp soll sols SWdnSFC max min t2m t700 topl tops tsol u10m u700 u850 v10m v700 w700 wind10max wind10m" varcosp="cllcalipso,clhcalipso,clmcalipso,cltcalipso,clcalipso" #========================================================================== # Correction eventuelle pour des versions definissant mal le calendrier # 360d au lieu de 360_day. Corrige en avril 2017 listetout="" if [ $se = 1 ] ; then listetout="$listetout $listemth" ; fi if [ $da = 1 ] ; then listetout="$listetout $listeday" ; fi if [ 1 = 0 ] ; then for file in $listetout ; do cal=`ncdump -h $file | grep time_counter | grep calendar | cut -d\" -f2` if [ "$cal" = "360d" ] ; then echo Correction axe des temps $file ncatted -a calendar,"time_counter",o,c,"360_day" -O $file else echo $file correct fi done fi #========================================================================== POST=$SCRATCH/$MAINDIR/POST/$sim mkdir -p $POST cd $POST echo BIBBBBBB cat <| post_$sim #!/bin/bash #SBATCH --job-name=se_$sim #SBATCH -A gzi@cpu #SBATCH --nodes=1 #SBATCH --ntasks-per-node=1 #SBATCH --time=01:00:00 # Temps d’exécution maximum demandé (HH:MM:SS) #SBATCH --output=se_$sim%j # Nom du fichier de sortie #SBATCH --error=se_$sim%j module purge module load intel-compilers/19.0.4 module load nco module load cdo cd $POST ulimit -s unlimited MAINDIR=$MAINDIR sim=$sim mkdir -p $WORKD/$MAINDIR/$sim/Analyse/SE $WORKD/$MAINDIR/$sim/Analyse/TS_DA if [ $se = 1 ] ; then for mth in $listemth ; do ln -s $STORED/$MAINDIR/$sim/\$mth done ncrcat -v $varse $listemth -O tmp.nc out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmth.nc if [ ! -f \$out ] ; then cdo ymonmean tmp.nc \$out mv \$out $WORKD/$MAINDIR/$sim/Analyse/SE/\$out cd $WORKD ; mfthredds -d $MAINDIR/$sim/Analyse/SE $MAINDIR/$sim/Analyse/SE/\$out ; cd - fi fi if [ $cosp = 1 ] ; then for cosp in $listecosp ; do ln -s $STORED/$MAINDIR/$sim/\$cosp done ncrcat -v $varcosp $listecosp -O tmp.nc out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmthCOSP.nc if [ ! -f \$out ] ; then cdo ymonmean tmp.nc \$out mv \$out $WORKD/$MAINDIR/$sim/Analyse/SE/\$out cd $WORKD ; mfthredds -d $MAINDIR/$sim/Analyse/SE $MAINDIR/$sim/Analyse/SE/\$out ; cd - fi fi if [ $da = 1 ] ; then for day in $listeday ; do if [ ! -f \$day ] ; then ln -s $STORED/$MAINDIR/$sim/\$day ; fi done for var in $vars1d ; do out=$PRE${sim}_${yri}0101_${yrf}1231_1D_\$var.nc if [ ! -f \$out ] ; then echo ncrcat -v \$var $listeday \$out ncrcat -v \$var $listeday \$out mv \$out $WORKD/$MAINDIR/$sim/Analyse/TS_DA/\$out cd $WORKD ; mfthredds -d $MAINDIR/$sim/Analyse/TS_DA $MAINDIR/$sim/Analyse/TS_DA/\$out ; cd - fi done fi eod sbatch post_$sim