postmon.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/bash
  2. # Extracts main variables from PlaSim output and computes monthly means
  3. # Edit $POSTDIR and $INDIR below
  4. #set -ex
  5. VARS2D="ps psl tas tasmin tasmax ts uas vas evspsbl pr prc prl prsn mrros mrso tsl rsdt rsut rlut rsds rsus rlds rlus hfls hfss clt prw huss snd snm tauu tauv sit sic"
  6. VARS3D="hus hur zg ta ua va wa wap cl clw"
  7. VARSEXTRA="rst rls prl sndc stf mld"
  8. VARSFX="orog lsm"
  9. PLEVS="20,30,50,70,100,150,200,250,300,400,500,600,700,850,925,1000"
  10. BURNSH="/home/jost/work/plasim/scripts/burn.sh"
  11. #BURNSH="/home/jost/work/plasim/scripts/burn.sh -p $PLEVS" # uncomment if you want to specify different levels
  12. if [ $# -lt 3 ] ; then
  13. echo Usage: post.sh exp year1 year2
  14. exit
  15. fi
  16. exp=$1
  17. y1=$2
  18. y2=$3
  19. fn=MOST
  20. POSTDIR="$SCRATCH/plasim/exps/$exp/post"
  21. INDIR="$WORK/plasim/plasim/exps/$exp"
  22. mkdir -p $POSTDIR
  23. y1f=$(printf "%03d" $y1)
  24. mkdir -p $POSTDIR/fx
  25. for var in $VARSFX
  26. do
  27. echo "Processing $var (fixed)"
  28. $BURNSH $INDIR/$fn.$y1f $POSTDIR/fx/temp$$.nc $var
  29. cdo -s seltimestep,1 $POSTDIR/fx/temp$$.nc $POSTDIR/fx/${exp}_${var}.nc
  30. rm -f $POSTDIR/fx/temp$$.nc
  31. done
  32. for var in $VARS2D $VARS3D $VARSEXTRA
  33. do
  34. for (( y=$y1 ; y<=$y2; y++ )); do
  35. yf=$(printf "%03d" $y)
  36. echo "Processing $var year $yf"
  37. mkdir -p $POSTDIR/$yf
  38. $BURNSH $INDIR/$fn.$yf $POSTDIR/$yf/temp$$.nc $var
  39. cdo -s monmean $POSTDIR/$yf/temp$$.nc $POSTDIR/$yf/${exp}_${yf}_${var}.nc
  40. rm -f $POSTDIR/$yf/temp$$.nc
  41. done
  42. done