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