Changeset 971 in lmdz_wrf


Ignore:
Timestamp:
Jun 29, 2016, 4:57:39 PM (9 years ago)
Author:
lfita
Message:

Seemly to be a working version with generation of differences files

Location:
trunk/tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/model_graphics.bash

    r962 r971  
    66# All purpouse
    77######## ###### ##### #### ### ## #
     8
     9function list_pairs() {
     10# Function to provide two lists from one in order to obtain all the possibles pairs
     11#   listv= ':' separated list of values to construct de couples
     12#    $ list_pairs 1:2:3:4:5:6:7:8:9
     13#      list_pairs: newlists= 1|2|3|4|5|6|7|8|:2|3|4|5|6|7|8|9|
     14#     list_pairs: pairs= 1|2:1|3:1|4:1|5:1|6:1|7:1|8:1|9:2|3:2|4:2|5:2|6:2|7:2|8:2|9:3|4:3|5:3|6:3|7:3|8:3|9:4|5:4|6:4|7:4|8:4|9:5|6:5|7:5|8:5|9:6|7:6|8:6|9:7|8:7|9:8|9
     15
     16  fname='list_pairs'
     17
     18  listv=$1
     19
     20  lv=`echo ${listv} | tr ':' ' '`
     21  Nlv=`echo ${listv} | tr ':' ' ' | wc -w | awk '{print $1}'`
     22
     23  if test ${Nlv} -lt 2; then
     24    echo ${errormsg}
     25    echo "  "${fname}": too few values from list, at least 2 are required!"
     26    echo "    provided list: "${listv}
     27    exit
     28  fi
     29
     30  Nlv_1=`expr ${Nlv} - 1`
     31
     32  newlist1=`echo ${listv} | tr ':' '\n' | head -n ${Nlv_1} | tr '\n' '|'`
     33  newlist2=`echo ${listv} | tr ':' '\n' | tail -n ${Nlv_1} | tr '\n' '|'`
     34
     35  pairs=''
     36  ipair=1
     37  il1=1
     38  while test ${il1} -le ${Nlv_1}; do
     39    lv1=`echo ${listv} | tr ':' '\n' | head -n ${il1} | tail -n 1`
     40    il2=`expr ${il1} + 1`
     41    while test ${il2} -le ${Nlv}; do
     42      lv2=`echo ${listv} | tr ':' '\n' | head -n ${il2} | tail -n 1`
     43      if test ${ipair} -eq 1; then
     44        pairs=${lv1}'|'${lv2}
     45      else
     46        pairs=${pairs}':'${lv1}'|'${lv2}
     47      fi
     48
     49      ipair=`expr ${ipair} + 1`
     50      il2=`expr ${il2} + 1`
     51    done
     52
     53    il1=`expr ${il1} + 1`
     54  done
     55
     56  echo "  "${fname}": newlists= "${newlist1}':'${newlist2}
     57  echo "  "${fname}": pairs= "${pairs}
     58
     59}
    860
    961function uploadvars() {
     
    13111363      itotv=1
    13121364      for vark in ${varks}; do
    1313         echo "    "${vark}" ..."
    1314         case ${vark} in
    1315           'acc')
    1316             varvks=${varacc}
    1317           ;;
    1318           'combo')
    1319             combo=true
    1320             varvcombo=${varcombo}
    1321             varcos=`echo ${varvcombo} | tr ':' ' '`
    1322             varvks=''
    1323             ivco=1
    1324             for vco in ${varcos}; do
    1325               vn=`echo ${vco} | tr '@' ' ' | awk '{print $1}'`
    1326               if test ${ivco} -eq 1; then
    1327                 varvks=${vco}
    1328               else
    1329                 varvks=${varvks}':'${vco}
    1330               fi
    1331               ivco=`expr ${ivco} + 1`
    1332             done
    1333           ;;
    1334           'diff')
    1335             varvks=${vardiff}
    1336           ;;
    1337           'direct')
    1338             varvks=${vardirect}
    1339           ;;
    1340           'last')
    1341             varvks=${varlast}
    1342           ;;
    1343           'Lmean')
    1344             varvks=${varLmean}
    1345           ;;
    1346           'Lsec')
    1347             varvks=${varLsec}
    1348           ;;
    1349           'lmean')
    1350             varvks=${varlmean}
    1351           ;;
    1352           'lsec')
    1353             varvks=${varlsec}
    1354           ;;
    1355           'pinterp')
    1356             varvks=${varpinterp}
    1357           ;;
    1358           'tmean')
    1359             varvks=${vartmean}
    1360           ;;
    1361           'xmean')
    1362             varvks=${varxmean}
    1363           ;;
    1364           'ymean')
    1365             varvks=${varymean}
    1366           ;;
    1367           'zsum')
    1368             varvks=${varzsum}
    1369           ;;
    1370           '*')
    1371             echo ${errmsg}
    1372             echo "  "${main}": variable kind '"${vark}"' not ready!!"
    1373             exit
    1374           ;;
    1375         esac
     1365        if test ! ${vark} = 'diff'; then
     1366          echo "    "${vark}" ..."
     1367          case ${vark} in
     1368            'acc')
     1369              varvks=${varacc}
     1370            ;;
     1371            'combo')
     1372              combo=true
     1373              varvcombo=${varcombo}
     1374              varcos=`echo ${varvcombo} | tr ':' ' '`
     1375              varvks=''
     1376              ivco=1
     1377              for vco in ${varcos}; do
     1378                vn=`echo ${vco} | tr '@' ' ' | awk '{print $1}'`
     1379                if test ${ivco} -eq 1; then
     1380                  varvks=${vco}
     1381                else
     1382                  varvks=${varvks}':'${vco}
     1383                fi
     1384                ivco=`expr ${ivco} + 1`
     1385              done
     1386            ;;
     1387            'direct')
     1388              varvks=${vardirect}
     1389            ;;
     1390            'last')
     1391              varvks=${varlast}
     1392            ;;
     1393            'Lmean')
     1394              varvks=${varLmean}
     1395            ;;
     1396            'Lsec')
     1397              varvks=${varLsec}
     1398            ;;
     1399            'lmean')
     1400              varvks=${varlmean}
     1401            ;;
     1402            'lsec')
     1403              varvks=${varlsec}
     1404            ;;
     1405            'pinterp')
     1406              varvks=${varpinterp}
     1407            ;;
     1408            'tmean')
     1409              varvks=${vartmean}
     1410            ;;
     1411            'xmean')
     1412              varvks=${varxmean}
     1413            ;;
     1414            'ymean')
     1415              varvks=${varymean}
     1416            ;;
     1417            'zsum')
     1418              varvks=${varzsum}
     1419            ;;
     1420            '*')
     1421              echo ${errmsg}
     1422              echo "  "${main}": variable kind '"${vark}"' not ready!!"
     1423              exit
     1424            ;;
     1425          esac
    13761426
    13771427# Do we have variables for this kind?
    1378         Lvarvks=`expr length ${varvks}'0'`
    1379         if test ${Lvarvks} -lt 2; then
    1380           ferrmsg 1 ${main} "variable!kind!"${vark}"!without!variables"
    1381         fi
    1382         if test ${ik} -eq 1; then
    1383           allvars=${varvks}
    1384         else
    1385           allvars=${allvars}':'${varvks}
    1386         fi
    1387         ik=`expr ${ik} + 1`
    1388         vars=`echo ${varvks} | tr ':' ' '`
     1428          Lvarvks=`expr length ${varvks}'0'`
     1429          if test ${Lvarvks} -lt 2; then
     1430            ferrmsg 1 ${main} "variable!kind!"${vark}"!without!variables"
     1431          fi
     1432          if test ${ik} -eq 1; then
     1433            allvars=${varvks}
     1434          else
     1435            allvars=${allvars}':'${varvks}
     1436          fi
     1437          ik=`expr ${ik} + 1`
     1438          vars=`echo ${varvks} | tr ':' ' '`
    13891439
    13901440# Variables loop
    13911441##
    1392         iv=1
    1393         for var in ${vars}; do
    1394           echo "      "${var}
    1395           # How to compute it?
    1396           varcomp=`variable_compute ${iwdir} ${var} ${testfiles} | grep varcomp |    \
    1397             awk '{print $2}'`
    1398 
    1399           if test ${itotv} -eq 1; then
    1400             varcompute=${varcomp}
    1401           else
    1402             varcompute=${varcompute}';'${varcomp}
    1403           fi
    1404 
    1405           iv=`expr ${iv} + 1`
    1406           itotv=`expr ${itotv} + 1`
     1442          iv=1
     1443          for var in ${vars}; do
     1444            echo "      "${var}
     1445            # How to compute it?
     1446            varcomp=`variable_compute ${iwdir} ${var} ${testfiles} | grep varcomp |  \
     1447              awk '{print $2}'`
     1448 
     1449            if test ${itotv} -eq 1; then
     1450              varcompute=${varcomp}
     1451            else
     1452              varcompute=${varcompute}';'${varcomp}
     1453            fi
     1454
     1455            iv=`expr ${iv} + 1`
     1456            itotv=`expr ${itotv} + 1`
    14071457
    14081458# end loop of variables
    1409         done
     1459          done
     1460        fi
    14101461# end of kind of variables
    14111462      done
     
    15941645
    15951646    echo "  "${main}": "${idp}" direct plots hav been computed"
    1596 # LLUIS
    15971647    cd ${rootsh}
    1598     exit
     1648
    15991649# end of experiments
    16001650  done
     1651
     1652# Experiment differences
     1653##
     1654  diffexperiments=`list_pairs $(echo ${exps} | tr ' ' ':') | grep -v newlists | awk '{print $3}'`
     1655  diffexps=`echo ${diffexperiments} | tr ':' ' '`
     1656
     1657  set -x
     1658
     1659  vdiffs=`echo ${vardiff} | tr ':' ' '`
     1660  ivd=1
     1661  for vdiff in ${vdiffs}; do
     1662    echo ${vdiff}" ..."
     1663    if test $(expr index ${vdiff} '|') -ne -1; then
     1664      vn=`echo ${vdiff} | tr '|' ' ' | awk '{print $1}'`
     1665      ops=`echo ${vdiff} | tr '|' ' ' | awk '{print $2}'`
     1666    else
     1667      vn=`echo ${vdiff} | tr '|' ' ' | awk '{print $1}'`
     1668      ops='None'
     1669    fi 
     1670    fileh=`echo ${varcompute} | tr ';' '\n' | grep ${vdiff} | tr '|' ' ' | awk '{print $3}'`
     1671
     1672    filen=`stats_filename ${vn} ${ops} ${fileh}`
     1673    opss=`echo ${ops} | tr '@' ' '`
     1674    for op in ${opss}; do
     1675      # Adding 'surnames' to the variable's name
     1676      if test ${op} = 'turb'; then
     1677        vn=${vn}'turb'
     1678      fi
     1679      if $(isInlist ${varmeanname} ${op}); then
     1680        vn=${vn}'mean'
     1681      fi
     1682    done
     1683
     1684    for diffexp in ${diffexps}; do
     1685      echo "  "${diffexp}
     1686      difexp1=`echo ${diffexp} | tr '|' ' ' | awk '{print $1}'`
     1687      difexp2=`echo ${diffexp} | tr '|' ' ' | awk '{print $2}'`
     1688
     1689      owdir=${ofold}/${mod}/${difexp1}-${difexp2}
     1690      if test ${ivd} -eq 1; then
     1691        mkdir -p ${owdir}
     1692      fi
     1693
     1694      if ${filescratch}; then rm ${owdir}/${filen} >& /dev/null; fi
     1695      if test ! -f ${owdir}/${filen}; then
     1696        dfile1=${ofold}/${mod}/${difexp1}/${filen}
     1697        dfile2=${ofold}/${mod}/${difexp2}/${filen}
     1698
     1699        dfiles='add|'${dfile1}'|'${vn}',sub|'${dfile2}'|'${vn}
     1700        dims='time|pres|lat|lon@'${dfiles}
     1701        echo "python ${pyHOME}/nc_var.py -S ${dims} -o compute_opersvarsfiles -v ${vn}"
     1702        pyout=`python ${pyHOME}/nc_var.py -S ${dims} -o compute_opersvarsfiles -v ${vn}`
     1703        pyn=$?
     1704        Spyout=`echo ${pyout} | tr '\n' '#' | tr ' ' '!'`
     1705        ferrmsg ${pyn} ${fname} "python!'difference'!failed"${Spyout}
     1706
     1707        mv opersvarsfiles_${vn}.nc ${owdir}/${filen}
     1708      fi
     1709
     1710    # end experiment pairs
     1711    done
     1712# LLUIS
     1713
     1714    ivd=`expr ${ivd} + 1`
     1715  # end of variable diff
     1716  done
     1717
     1718  exit
     1719
    16011720# end of models
    16021721done
  • trunk/tools/model_graphics_template.dat

    r963 r971  
    2828
    2929# Have new files been added and do they need to be processed?
    30 addfiles = true
     30addfiles = false
    3131
    3232# Have new figures been added and do they need to be drawn?
    33 addfigures = true
     33addfigures = false
    3434
    3535# Debug
     
    7676#   ymean: y-axis mean values
    7777#   zsum: vertical aggregated values
    78 varkinds = last:tmean:xmean:diff:pinterp:combo
     78varkinds = last:tmean:xmean:pinterp:diff:combo
    7979
    8080# variables (providing CF-name, script must provide equivalent variable for each model)
     
    8282#   must exist on the table $pyHOME/variables_values.dat
    8383#   varcombo = [varn];[vark1]@...@[varkN]: variable as consecutive kinds of operation
    84 varlast = tas:uas:vas:ps:pr:pracc:rsds:prw:evspsbl:hfss:hfls:hurs:huss:zmla:hufs:wakes:lwakeh:stherm:zmaxth:clt:cll:clm:clh:prc:prls:bils:wss
    85 vartmean = tas:uas:vas:ps:pr:pracc:rsds:prw:evspsbl:hfss:hfls:hurs:huss:zmla:hufs:wakes:lwakeh:stherm:zmaxth:clt:cll:clm:clh:prc:prls:bils:wss
    86 varxmean = ta:ua:va:hur:hurs:tas:wss:ps
    87 vardiff = ualmean:valmean:talmean:huslmean:uas:vas:ps:pr
     84#varlast = tas:uas:vas:ps:pr:pracc:rsds:prw:evspsbl:hfss:hfls:hurs:huss:zmla:hufs:wakes:lwakeh:stherm:zmaxth:clt:cll:clm:clh:prc:prls:bils:wss
     85#vartmean = tas:uas:vas:ps:pr:pracc:rsds:prw:evspsbl:hfss:hfls:hurs:huss:zmla:hufs:wakes:lwakeh:stherm:zmaxth:clt:cll:clm:clh:prc:prls:bils:wss
     86#varxmean = ta:ua:va:hur:hurs:tas:wss:ps
     87#vardiff = tas|last:tas|xmean:tas|tmean
     88#varpinterp = ta:ua:va:hur:ws:hus
     89#varcombo = ta;pinterp@last@xmean:ua;pinterp@last@xmean:va;pinterp@last@xmean:hur;pinterp@last@xmean:ws;pinterp@turb@xmean:hus;pinterp@turb@xmean
     90
     91varlast = tas:uas:vas:hfss:hfls:wss
     92vartmean = tas:uas:vas:hfss:hfls:wss
     93varxmean = tas:uas:vas:hfss:hfls:wss
    8894varpinterp = ta:ua:va:hur:ws:hus
     95vardiff = tas|last:tas|xmean:tas|tmean
    8996varcombo = ta;pinterp@last@xmean:ua;pinterp@last@xmean:va;pinterp@last@xmean:hur;pinterp@last@xmean:ws;pinterp@turb@xmean:hus;pinterp@turb@xmean
    9097
Note: See TracChangeset for help on using the changeset viewer.