source: BOL/Multi_atlas/season.sh @ 4335

Last change on this file since 4335 was 4330, checked in by musat, 2 years ago

Ajout environnement et corrections

  • champ eva(poration) moyennes zonales
  • pour les appels a des fonctions climaf via mcdo (timavg, sqrt)

IonelaMusat?

  • Property svn:executable set to *
File size: 4.3 KB
Line 
1#!/bin/bash
2####################################################################
3# Frederic Hourdin. 2015/09/07
4# Script de calcl de moyennes saisonnieres sur une grille reduite
5# en utilisant cdo. Preparation des tracers d'atlas.
6####################################################################
7
8source ./env.sh
9
10ulimit -s unlimited
11GR=VLR
12
13MAINDIR=$DODSDIR/$login/lmdz
14
15force_create=0
16
17####################################################################
18# Interactive options
19####################################################################
20
21COMP_D=""
22listeseas="JJA,YEAR"
23listeseas="JJA,YEAR,DJF"
24listesim=""
25listeseas="YEAR,DJF,JJA,JJAS"
26
27
28while (($# > 0))
29   do
30   case $1 in
31     "-h") cat <<........fin
32        Usage : cmor.sh [ -s sim1,sim2... -seas DJF,YEAR -f]
33        -f forces execution even if the output file already exists
34........fin
35        shift ; exit ;;
36     "-s") listesim=`echo $2 | sed -e 's/,/ /g'` ; shift ; shift ;;
37     "-f") force_create=1 ; shift ;;
38     "-comp") COMP_D=/thredds/ipsl/fabric/lmdz/MultiSimu/$2 ; shift ; shift ;;
39     "-seas") listeseas=$2 ; shift ; shift ;;
40     *) ./cmor.sh -h ; shift ; exit ;;
41   esac
42done
43
44i=1
45while [ "`ps -ux | grep season.sh | grep bin | wc -l`" != "2" ] ; do
46   echo Mise en attente de season.sh deja en cours d execution $i
47   sleep 2 ; (( i = $i + 1 ))
48   if [ "$i" = "3600" ] ; then exit ; fi
49done
50
51
52####################################################################
53# About the grid
54####################################################################
55case $GR in
56   VLR) remapf="/home/hourdin/CMIP5/Anal/Feb21_2012_tsol_OBS_AVE_ANM.nc" ;;
57   *) echo "grille $GR non prevue" ; exit
58esac
59mkdir -p $MAINDIR/$GR/GR
60if [ ! -f $MAINDIR/$GR/GR/LAT ] ; then
61   ncks -v LAT $remapf  | grep 'LAT\[' | sed -e '/LAT_bn/d' | cut -d= -f2 | awk ' { print $1 } ' >| $MAINDIR/$GR/GR/LAT
62fi
63if [ "$remapf" != "" ] ; then remap="-remapcon,$remapf" ; fi
64   
65
66################################################################################
67# Loop on seasons
68for SEAS in `echo $listeseas | sed -e 's/,/ /g'` ; do
69################################################################################
70echo $SEAS
71
72case $SEAS in
73   YEAR)  months="" ;;
74   DJF)   months="-selmon,1,2,12" ;;
75   JJA)   months="-selmon,6,7,8" ;; 
76   JJAS)   months="-selmon,6,7,8,9" ;; 
77   *) echo "Cas $cas non prevu" ; exit
78esac
79
80
81################################################################################
82# Boucle sur les simulations
83################################################################################
84
85cd $MAINDIR/SE/CMOR ; \rm ferret*
86
87if [ "$COMP_D" != "" ] ; then
88listesim=`awk ' { print $1"_"$2 } ' $COMP_D/def.txt`
89fi
90echo listesim $listesim
91
92
93if [ "$listesim" = "" ] ; then listesim=`ls` ; fi
94
95for sim in $listesim ; do
96
97 IN_DIR=$MAINDIR/SE/CMOR/$sim
98 echo $IN_DIR
99
100 if [ -d $IN_DIR ] ; then
101
102   echo seasons.sh : mise a jour pour $sim
103   if [ $force_create = 1 ] ; then
104       rm -rf $MAINDIR/$GR/$SEAS/$sim
105   fi
106   OUT_DIR=$MAINDIR/$GR/$SEAS/$sim/NC   ; mkdir -p $OUT_DIR
107
108   cd $IN_DIR
109# boucle sur les variables (chacune correspondant à un .nc)
110   for f in *nc ; do
111      var=`basename $f .nc`
112# Pour le 3D, on prend directement les moyennes zonales
113
114# facteurs mutliplicatifs si besoin
115      mulc=1.
116      case $var in
117         pr) mulc=86400. ;;
118         autre) mulc=achanger ;;
119         dernier) mulc=bou
120      esac
121
122# Moyenne saisonniere (et zonale pour les champs 3D)
123      if [ ! -f $OUT_DIR/$f -a -f $IN_DIR/$f ] ; then
124         echo cdo mulc,$mulc -timavg $months $remap $IN_DIR/$f $OUT_DIR/$f
125         cdo mulc,$mulc -timavg $months $remap $IN_DIR/$f $OUT_DIR/$f
126      else
127         echo $OUT_DIR/$f : deja cree
128      fi
129
130   done
131
132
133########################################################################
134# Regroupement des variables 2D dans all.nc
135########################################################################
136   cd $OUT_DIR
137   liste3d=""
138   listef=""
139   if [ "`ls -rt *nc | tail -1`" != "all.nc" ] ; then
140      for f in `ls *nc | sed -e 's/all.nc//'` ; do
141         var=`basename $f .nc`
142         case $var in
143            ua|va|wap|ta|hus|hur) liste3d="$liste3d $f" ;;
144            *) listef="$listef $f"
145         esac
146      done
147      \rm -f all.nc
148      echo cdo merge $listef all.nc
149      cdo merge $listef all.nc
150   fi
151
152 else
153    echo ERREUR: repertoire $IN_DIR absent
154 fi # Boucle sur $sim
155done
156
157done
Note: See TracBrowser for help on using the repository browser.