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