source: BOL/Multi_atlas/METRICS/POUB/metricsIM_test_glob.sh @ 3684

Last change on this file since 3684 was 3684, checked in by idelkadi, 4 years ago

Repository under svn of a first version of Multiatlas diagnostics for LMDZ. This version is adapted to be able to run a LMDZ multiatlas on an individual account on the ciclad machine of the IPSL. In this version, the parts to be modified are identified so as to subsequently adapt it to other machines.
This version is still under development.

  • Property svn:executable set to *
File size: 10.4 KB
Line 
1#!/bin/bash -vx
2
3set -vx
4force_create=0
5
6comp=$1 
7local=`pwd`
8
9#for season in YEAR DJF JJA ; do
10for season in YEAR ; do
11
12
13cd $local
14
15if [ "$season" = "YEAR" ] ; then
16   masks="ter oce NAtl Arct circA otrop glob eto weak conv subs NH SH"
17   mask_figs="NAtl Arct circA glob ter oce otrop interH etoa conv weak subs"
18   masks="glob"
19   mask_figs="glob"
20else
21   masks="NAtl Arct circA Sibe USA"
22   mask_figs="NAtl Arct circA Sibe USA"
23fi
24
25WRK_D=$local/XMGR$$/$season
26if [ -d $WRK_D ] ; then WRK_D=$WRK_D$$ ; fi
27mkdir -p $WRK_D
28cd $WRK_D
29ln -s ../../mas*nc .
30
31comp=`basename $1`
32if [ -d /prodigfs/ipslfs/dods/fabric/lmdz/MultiSimu ] ; then
33   # Installation multi modele fabric
34   COMP_D=/prodigfs/ipslfs/dods/fabric/lmdz/MultiSimu/$comp
35   CMOR_DIR=/prodigfs/ipslfs/dods/fabric/lmdz/VLR/$season
36elif [ "$comp" = "$1" ] ; then
37   # Installation locale
38   COMP_D=.
39   CMOR_DIR=.
40else
41   # Path absolu
42   COMP_D=$1
43   CMOR_DIR=.
44fi
45
46###############################################
47# Liste des simulations de la comparasion $comp
48listsims="" ; listsimsy=""
49DEF_FILE=$COMP_D/def.txt ; if [ ! -f "$DEF_FILE" ] ; then renseigner $DEF_FILE ; exit ; fi
50for s in `awk ' {print $1"_"$2 } ' $DEF_FILE` ; do listsimsy="$listsimsy $s" ; done
51for s in `awk ' {print $1 } ' $DEF_FILE` ; do listsims="$listsims $s" ; done
52###############################################
53
54echo $listsimsy
55ici=`pwd`
56
57for simy in  OBS $listsimsy ; do
58  sim=`echo $simy | sed -e 's/_[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]//'`
59  years=`echo $simy | sed -e s/${sim}//`
60  echo SIM $sim
61  echo years $years
62
63
64  SIM_DIR=$CMOR_DIR/$GR/$sim$years
65ETOA_DIR=$SIM_DIR/METRICS
66
67
68   for mask in $masks ; do
69#      mkdir -p XMGR$$/$mask
70     xmgr=$ETOA_DIR/$mask
71     mkdir -p $ETOA_DIR
72     if [ ! -f "$xmgr" -o "$force_create" = "1" ] ; then
73        \rm -f $xmgr ; touch $xmgr
74        if [ ! -d $SIM_DIR ] ; then echo $SIM_DIR absent ; exit ; fi
75        set +e ; \rm resu$sim ; set -e
76        #for var in rsut clhcalipso cllcalipso clmcalipso cltcalipso clt hfls hfss hurs huss pr ts tas sst psl rldscs rlds rlus rlutcs rlut rsdscs rsds rsdt rsuscs rsus rsutcs prw ; do
77        #for var in rsut rsutcs clhcalipso cllcalipso clmcalipso cltcalipso clt hfls hfss hurs huss pr ts tas sst psl rldscs rlds rlus rlutcs rlut rsdscs rsds rsdt rsuscs rsus rsutcs prw ; do
78        for var in rsut rsutcs ; do
79          if [ -f "$SIM_DIR/NC/$var.nc" ] ; then
80           if [ "$mask" = "glob" ] ; then
81              val=`cdo output -fldmean -selvar,$var $SIM_DIR/NC/$var.nc`
82           elif [ ! -f "mask$mask.nc" ] ; then
83               echo Le fichier mask$mask.nc n existe pas ; exit
84           else
85             if [ 1 = 1 ] ; then
86              if [ 1 = 0 && $var = "hfls" ] && [ $simy == "OBS" ]; then
87               cdo remapcon,mask$mask.nc $SIM_DIR/NC/$var.nc_ocean-only tmp.nc
88               val=`cdo output -fldmean -selvar,$var -mul tmp.nc mask$mask.nc`
89              else
90               cdo remapcon,mask$mask.nc $SIM_DIR/NC/$var.nc tmp.nc
91               val=`cdo output -fldmean -selvar,$var -mul tmp.nc mask$mask.nc`
92              fi
93             else
94              cdo remapcon,maskotrop.nc $SIM_DIR/NC/$var.nc tmp.nc
95              cdo remapcon,maskotrop.nc mask$mask.nc mask.nc
96              val=`cdo output -fldmean -selvar,$var -mul tmp.nc mask.nc`
97             fi
98           fi
99           echo $mask  $sim $var $val
100           echo $var $val >> $xmgr
101          else
102            echo $var 999999 >> $xmgr
103          fi
104        done
105      rsut=`grep "^rsut " $xmgr | awk ' { print $2 } '`
106      rsutcs=`grep "^rsutcs " $xmgr | awk ' { print $2 } '`
107      rlut=`grep '^rlut ' $xmgr | awk ' { print $2 } '`
108      rlutcs=`grep '^rlutcs ' $xmgr | awk ' { print $2 } '`
109      hfls=`grep '^hfls ' $xmgr | awk ' { print $2 } '`
110      hfss=`grep '^hfss ' $xmgr | awk ' { print $2 } '`
111      rlds=`grep '^rlds ' $xmgr | awk ' { print $2 } '`
112      rldscs=`grep '^rldscs ' $xmgr | awk ' { print $2 } '`
113      rsds=`grep '^rsds ' $xmgr | awk ' { print $2 } '`
114      rsdscs=`grep '^rsdscs ' $xmgr | awk ' { print $2 } '`
115      rlus=`grep '^rlus ' $xmgr | awk ' { print $2 } '`
116      rsus=`grep '^rsus ' $xmgr | awk ' { print $2 } '`
117      rsuscs=`grep '^rsuscs ' $xmgr | awk ' { print $2 } '`
118      rsdt=`grep '^rsdt ' $xmgr | awk ' { print $2 } '`
119      echo $rsut $rsutcs | awk ' { print "crest" , $2 - $1 } ' >> $xmgr
120      echo $rlut $rlutcs | awk ' { print "crelt" , $2 - $1 } ' >> $xmgr
121      echo $rsut $rsutcs $rlut $rlutcs | awk ' { print "cret"  , $2 - $1 +$4 -$3 } ' >> $xmgr
122      echo $rsdt $rsut | awk ' { print "rst"  , $1 - $2 } ' >> $xmgr
123      echo $rsdt $rsutcs | awk ' { print "rstcs"  , $1 - $2 } ' >> $xmgr
124      echo $rsdt $rsut $rlut | awk ' { print "rt"  , $1 - $2 -$3 } ' >> $xmgr
125      echo $hfls $hfss   | awk ' { print "trbs"  , $1 + $2 } ' >> $xmgr
126      echo $rlds $rlus   | awk ' { print "rls"  , $1 - $2 } ' >> $xmgr
127      echo $rsds $rsus   | awk ' { print "rss"  , $1 - $2 } ' >> $xmgr
128      echo $rlds $rlus $rsds $rsus  | awk ' { print "rs"   , $1 - $2 +$3 - $4 } ' >> $xmgr
129      echo $rlds $rldscs $rsds $rsdscs $rsus $rsuscs | awk ' { print "cres"   , $1 - $2 + $3 - $4 - $5 + $6 } ' >> $xmgr
130      echo $rlds $rldscs $rsds $rsdscs $rsus $rsuscs $hfls | awk ' { print "crehfls"   , $1 - $2 + $3 - $4 - $5 + $6 - $7 } ' >> $xmgr
131      echo $rlds $rlus $rsds $rsus  $hfls $hfss   | awk ' { print "bils"  , $1 - $2 + $3 - $4 - $5 - $6 } ' >> $xmgr
132      fi
133   done
134   
135   # Masques combinés
136   set +e
137   paste $ETOA_DIR/otrop $ETOA_DIR/eto | awk ' { if ( $2 == 999999 || $4 == 999999 ) print $1 , 999999 ; else print $1 , $4 - $2 } ' >| $ETOA_DIR/etoa
138   paste $ETOA_DIR/SH $ETOA_DIR/NH | awk ' { if ( $2 == 999999 || $4 == 999999 ) print $1 , 999999 ; else print $1 , $4 - $2 } ' >| $ETOA_DIR/interH
139   set -e
140
141done
142
143
144#########################################################################################
145# Tracers
146#########################################################################################
147
148
149
150cat <<eod>| descr
151clhcalipso  1  High Clouds
152cllcalipso  1  Low Clouds
153clmcalipso  1  Mid Clouds
154cltcalipso  1  Total Clouds
155clt         1  LMDZ Total Clouds
156hfls       -1  -LE
157hfss       -1  -H
158hurs        1  RHsrf
159huss        1 Surface specific humidity
160pr         10  PR*10
161prw         1  PRW
162psl         1  SLP
163ts         10  Ts*10
164sst        10  sst*10
165tas        10  T2m*10
166rlds        1  LWdn srf
167rldscs      1  LWdn srf Clr
168rlus       -1  LWup Srf
169rlutcs     -1  LW TOA Clr
170rlut       -1  LW TOA
171rsdscs      1  SWdn srf Clr
172rsds        1  SWdn srf
173rsdt        1  SWdn TOA
174rsuscs     -1  SWup srf Clr
175rsus       -1  SWup srf
176rsutcs     -1  SW TOA Clr
177rstcs      -1  SW TOA Clr
178rsut       -1  SW TOA
179crest       1  SW CRE TOA
180crelt       1  LW CRE TOA
181cres        1  CRE srf
182crehfls     1  CRE - LE
183cret        1  CRE TOA
184rst         1  SW TOA
185rt          1  SW+LW TOA
186trbs       -1  -(LE+H)
187rls         1  LW srf
188rss         1  SW srf
189rs          1  SW+LW srf
190bils        1  Srf budget
191eod
192
193# -------------------  debut boucle sur les figures ----------------------------
194for mask in $mask_figs ; do
195# -------------------  debut boucle sur les figures ----------------------------
196
197   case $mask in
198       etoa|oce|otrop) listevars="ts bils crehfls cres rs rss crest hfls tas cllcalipso clhcalipso " ;;
199       #interH|glob|ter|NAtl|circA|conv|weak|subs) listevars="bils tas rt rlutcs crelt rsutcs crest cllcalipso clmcalipso clhcalipso pr" ;;
200       interH|glob|ter|NAtl|circA|conv|weak|subs) listevars="rsut rsutcs crest" ;;
201       Arct|Sibe|USA) listevars="tas rs rlds rsds crelt crest cllcalipso clmcalipso clhcalipso pr prw" ;;
202       *) echo cas non prevu ; exit
203   esac
204
205   nvars=`echo $listevars | wc -w | awk ' { print $1 } '`
206   case $mask in
207     NAtl) yax="North Atlantic " ;;
208     Arct) yax="Arctic ocean" ;;
209     circA) yax="Circum Antartica " ;;
210     Sibe) yax="Siberia " ;;
211     USA) yax="US Gr. Plains " ;;
212     glob) yax="Global " ;;
213     ter) yax="Land " ;;
214     oce) yax="Ocean " ;;
215     otrop) yax="Tropical ocean " ;;
216     interH) yax="Inter Hemispheric " ;;
217     etoa) yax="ETOA " ;;
218     conv) yax="Convective regimes " ;;
219     weak) yax="Weak convection " ;;
220     subs) yax="Subsidences "
221   esac
222   cat <<...eod>| tmp.param
223    g0 type Chart
224    world -0.5, -35, $nvars, 35
225    yaxis  label "$yax Fluxes (W/m2) "
226    xaxis  ticklabel font 0
227    xaxis  ticklabel color 1
228    xaxis  tick place both
229    xaxis  tick spec type both
230    xaxis  tick spec 11
231    xaxis  ticklabel char size 1.3
232    xaxis  ticklabel angle 90
233    yaxis  tick major 10
234    yaxis  tick minor ticks 1
235    legend 1.20, 0.8
236...eod
237
238   ii=0
239   for var in $listevars ; do
240      fact=`grep "^$var " descr | awk ' { print $2 } '`
241      titre=`grep "^$var " descr | sed -e 's/'$var'//' -e 's/'$fact'//'`
242      cat <<......eod>> tmp.param
243      xaxis  tick major $ii, $ii
244      xaxis  ticklabel $ii, "$titre"
245......eod
246      (( ii = $ii + 1 ))
247   done
248
249
250   prev=""
251   ip=0
252   listex=""
253   echo LISTESIMSY $listsimsy
254   for simy in $listsimsy ; do
255      sim=`echo $simy | sed -e 's/_[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]//'`
256      years=`echo $simy | sed -e s/${sim}//`
257      echo $sim
258      SIM_DIR=$CMOR_DIR/$sim$years/METRICS
259      ls $SIM_DIR
260      OBS_DIR=$CMOR_DIR/OBS/METRICS
261      mkdir -p $WRK_D/$mask
262      if [ "$sim" = "$prev" ] ; then # Cas ou on a plusieurs decennies de la meme simu
263         (( ip = $ip + 1 ))
264         xmgr=$WRK_D/$mask/$sim.$ip
265         listex="$listex $sim.$ip"
266      else
267         xmgr=$WRK_D/$mask/$sim 
268         ip=0 ; prev=$sim
269         listex="$listex $sim"
270      fi
271      rm -f $xmgr ; touch $xmgr
272      for var in $listevars ; do
273         echo var $var
274         fact=`grep "^$var " descr | awk ' { print $2 } '`
275         paste $OBS_DIR/$mask $SIM_DIR/$mask | grep "^$var " | awk ' { if ( $4 == 999999 ) print 0 ; else print '$fact' * ( $4 - $2 ) } ' >> $xmgr
276      done
277   done
278         
279
280
281   size=`echo $listsims | wc -w | awk ' { print 3. / $1 } '`
282   for ii in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do
283      echo "s$ii type bar" >> tmp.param
284      echo "s$ii symbol fill pattern 1" >> tmp.param
285      echo "s$ii symbol size $size" >> tmp.param
286      echo "s$ii line linestyle 0" >> tmp.param
287   done
288
289   cd $WRK_D/$mask
290   pwd ; echo xmgrace $listex -param ../../../tmp.param -legend load -hardcopy -hdevice EPS -printfile tmp.eps
291   xmgrace $listex -param ../../../tmp.param -legend load -hardcopy -hdevice EPS -printfile tmp.eps
292   epstopdf tmp.eps
293   OUT_D=$COMP_D/METRICS/$season ; mkdir -p $OUT_D
294   \mv -f tmp.pdf $OUT_D/$mask.pdf ; convert -density 144 $OUT_D/$mask.pdf $OUT_D/$mask.png
295   cd ../../..
296
297done
298
299cp mask*png $OUT_D
300done
Note: See TracBrowser for help on using the repository browser.