source: BOL/LMDZ_Setup/seasonal.sh @ 5558

Last change on this file since 5558 was 5552, checked in by fhourdin, 4 days ago

New post processing and some fix on environment

File size: 4.9 KB
RevLine 
[4615]1#!/bin/bash
2
[5552]3echo Ce script est obsolete
4echo Si vous en voyez encore utilite, envoyer un courriel a frederic.hourdin@lmd.ipsl.fr
5echo pour le signaler
6exit
7
[4615]8#set -vx
[5550]9local_d=$PWD
[4615]10
[5550]11if [ ! -f lmdz_env.sh ] ; then echo This script requires lmdz_env.sh script for configuration ; exit 1 ; fi
12# . lmdz_env.sh $local_d
13. lmdz_env.sh
[4615]14
15sim=$1
16MAINDIR=`basename \`pwd\``
17PRE=FH$MAINDIR
18echo $PRE
[5550]19STORED=$root_dir
20WORKD=$SIMRUNBASEDIR
21POST=$SIMRUNBASEDIR/$MAINDIR/POST/$sim
22OUT_D=$WORKD/$MAINDIR/$sim/Analyse
[4615]23
24se=1
25cosp=0
26da=0
[5550]27cmor=1
[4615]28
[5550]29liste_suf=""
30if [ $se = 1 ] ; then liste_suf="$liste_suf mth" ; fi
31if [ $cosp = 1 ] ; then liste_suf="$liste_suf mthCOSP" ; fi
32if [ $da = 1 ] ; then liste_suf="$liste_suf day" ; fi
33
[4615]34if [ ! -d $sim ] ; then echo la simulation $sim n existe pas ; exit ; fi
35
36
37yri=2001
[5550]38yrf=2004
[4615]39
40yr=$yri
41
42cd $sim
43pwd
44#mkdir -p Analyse/SE Analyse/TS_DA
45listemth=""
46listecosp=""
47listeday=""
48while [ $yr -le $yrf ] ; do
[5550]49  for suf in $liste_suf ; do
[4615]50       echo Utilisation de hist$suf.${yr}.nc
51       if [ ! -f hist$suf.${yr}.nc ] ; then
52          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
53          echo cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc
54          cdo mergetime hist$suf.${yr}??.nc hist$suf.${yr}.nc
55       fi
56  done
57  listemth="$listemth `ls histmth.${yr}.nc`"
58  listecosp="$listecosp `ls histmthCOSP.${yr}.nc`"
59  listeday="$listeday `ls histday.${yr}.nc`"
60  (( yr = $yr + 1 ))
61done
62
63# liste des variables reconstruite a partir de
64# grep calias ~fabric/LMDZ/atlas/lmdz_SE.py | cut -d\' -f6 | sort | uniq | sed -e '/psl/d'
65
66varse="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"
[5550]67varse="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,temp,topl,topl0,tsol,vitu,vitv,vitw,wind10m,snow,pr_lsc_i,pr_lsc_l,geop,phis,prw,cldl,cldm,cldh,cldt,tops,tops0,sols,sols0,soll,soll0"
68# variables enlevees taux_oce, tauy_oce, tsol_oce, z500
[4615]69
70vars1d="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"
71
72
73varcosp="cllcalipso,clhcalipso,clmcalipso,cltcalipso,clcalipso"
74
75#==========================================================================
76# Correction eventuelle pour des versions definissant mal le calendrier
77# 360d au lieu de 360_day. Corrige en avril 2017
78listetout=""
79if [ $se = 1 ] ; then listetout="$listetout $listemth" ; fi
80if [ $da = 1 ] ; then listetout="$listetout $listeday" ; fi
81if [ 1 = 0 ] ; then
82for file in $listetout ; do
83   cal=`ncdump -h $file | grep time_counter | grep calendar | cut -d\" -f2`
84   if [ "$cal"  = "360d" ] ; then
85      echo Correction axe des temps $file
86      ncatted -a calendar,"time_counter",o,c,"360_day" -O $file
87   else
88   echo $file correct
89  fi
90done
91fi
92#==========================================================================
93
94
95mkdir -p $POST
[5550]96echo Running seasonal.sh on $POST
[4615]97cd $POST
98
99echo BIBBBBBB
100cat <<eod>| post_$sim
101#!/bin/bash
102#SBATCH --job-name=se_$sim
103#SBATCH -A gzi@cpu
104#SBATCH --nodes=1
105#SBATCH --ntasks-per-node=1
106#SBATCH --time=01:00:00            # Temps d’exécution maximum demandé (HH:MM:SS)
107#SBATCH --output=se_$sim%j     # Nom du fichier de sortie
108#SBATCH --error=se_$sim%j   
109
[5550]110. $local_d/lmdz_env.sh
[4615]111
112cd $POST
113ulimit -s unlimited
114MAINDIR=$MAINDIR
[5550]115OUT_D=$OUT_D
[4615]116sim=$sim
117
[5550]118mkdir -p $OUT_D/SE $OUT_D/TS_DA
[4615]119
120if [ $se = 1 ] ; then
121   for mth in $listemth ; do
[5550]122      ln -s $STORED/$sim/\$mth
[4615]123   done
124   ncrcat -v $varse $listemth -O tmp.nc
125   out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmth.nc
126   if [ ! -f \$out ] ; then
127       cdo ymonmean tmp.nc \$out
128   fi
[5550]129   if [ $cmor = 1 ] ; then
130       for var in $( echo $varse | sed -e 's/,/ /g' ) ; do
131          ncks -v \$var \$out -O $OUT_D/SE/\$var.nc
132       done
133   else
134       mv \$out $OUT_D/SE/\$out
135   fi
[4615]136fi
137
138if [ $cosp = 1 ] ; then
139   for cosp in $listecosp ; do
[5550]140      ln -s $STORED/$sim/\$cosp
[4615]141   done
142   ncrcat -v $varcosp $listecosp -O tmp.nc
143   out=$PRE${sim}_SE_${yri}_${yrf}_1M_histmthCOSP.nc
144   if [ ! -f \$out ] ; then
145       cdo ymonmean tmp.nc \$out
[5550]146       mv \$out $OUT_D/SE/\$out
[4615]147   fi
148fi
149
150
151if [ $da = 1 ] ; then
152for day in $listeday ; do
[5550]153   if [ ! -f \$day ] ; then ln -s $STORED/$sim/\$day ; fi
[4615]154done
155for var in $vars1d ; do
156  out=$PRE${sim}_${yri}0101_${yrf}1231_1D_\$var.nc
157  if [ ! -f \$out ] ; then
158     echo ncrcat -v \$var $listeday \$out
159     ncrcat -v \$var $listeday \$out
[5550]160     mv \$out $OUT_D/TS_DA/\$out
[4615]161   fi
162done
163fi
164eod
165
166
[5550]167submitcmd post_$sim
Note: See TracBrowser for help on using the repository browser.