Ignore:
Timestamp:
May 15, 2025, 6:26:24 PM (9 months ago)
Author:
jbclement
Message:

Mars PCM:
Cleaning and improvement of robustness for "run0" and "run_month1" scripts with file checks and clearer errors.
JBC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/deftank/irene/run_month1

    r2816 r3766  
    2323#MSUB -x
    2424
     25## Script to run chained simulations
     26## (uses script "run0" and reference file "run.def.ref")
     27## Set values of "num_now" and "num_end" in the script below
     28## to set initial month # and final month # of the simulation
     29
    2530# A few parameters that might need be changed depending on your setup:
    2631# Path to the arch.env to source
    2732source ../trunk/LMDZ.COMMON/arch.env
    28 # Number of threads to use (must be the same as "#MSUB -c" above) 
     33# Number of threads to use (must be the same as "#MSUB -c" above)
    2934export OMP_NUM_THREADS=5
    3035export OMP_STACKSIZE=400M
     36#
     37########################################################################
     38set -exv
     39ls -al
     40trap 'echo -e "Error at line $LINENO!"' ERR
    3141
    32 set -xv
    33 ls -al
    34 
    35 ## set starting month and ending month below:
     42# Set starting month and ending month below:
    3643num_now=1
    3744num_end=12
    38 (( num_previous = $num_now - 1 ))
     45num_previous=$(( num_now - 1 ))
    3946
    4047echo "$num_previous" > num_run
    4148# next month number
    42 (( num_next = $num_now + 1 ))
     49num_next=$(( num_now + 1 ))
    4350# true (i.e. modulo 12) month number
    44 (( true_num = $num_now % 12 ))
     51true_num=$(( num_now % 12 ))
    4552
     53# Check if required files exist
    4654\rm -f  error; touch error
    4755
     56if [ ! -f run.def.ref ]; then
     57  echo "Error: file \"run.def.ref\" not found in current directory!" > error
     58  exit 1
     59fi
     60
     61if [ ! -x run0 ]; then
     62  echo "Error: file \"run0\" not found or not executable in current directory!" > error
     63  exit 1
     64fi
     65
     66if [ ! -f run_month$num_now ]; then
     67  echo "Error: file \"run_month${num_now}\" not found in current directory!" > error
     68  exit 1
     69fi
     70
     71# Run model depending on current month
    4872case $true_num in
    49   1 ) sed s/9999/61/ run.def.ref > run.def ; run0 >> error ;;    #1
    50   2 ) sed s/9999/66/ run.def.ref > run.def ; run0 >> error ;;    #2
    51   3 ) sed s/9999/66/ run.def.ref > run.def ; run0 >> error ;;    #3
    52   4 ) sed s/9999/65/ run.def.ref > run.def ; run0 >> error ;;    #4
    53   5 ) sed s/9999/60/ run.def.ref > run.def ; run0 >> error ;;    #5
    54   6 ) sed s/9999/54/ run.def.ref > run.def ; run0 >> error ;;    #6
    55   7 ) sed s/9999/50/ run.def.ref > run.def ; run0 >> error ;;    #7
    56   8 ) sed s/9999/46/ run.def.ref > run.def ; run0 >> error ;;    #8
    57   9 ) sed s/9999/47/ run.def.ref > run.def ; run0 >> error ;;    #9
    58  10 ) sed s/9999/47/ run.def.ref > run.def ; run0 >> error ;;    #10
    59  11 ) sed s/9999/51/ run.def.ref > run.def ; run0 >> error ;;    #11
    60   0 ) sed s/9999/56/ run.def.ref > run.def ; run0 >> error ;;    #12
    61   * ) echo "error" ;;
     73  1 ) sed s/9999/61/ run.def.ref > run.def ; ./run0 >> error ;;    #1
     74  2 ) sed s/9999/66/ run.def.ref > run.def ; ./run0 >> error ;;    #2
     75  3 ) sed s/9999/66/ run.def.ref > run.def ; ./run0 >> error ;;    #3
     76  4 ) sed s/9999/65/ run.def.ref > run.def ; ./run0 >> error ;;    #4
     77  5 ) sed s/9999/60/ run.def.ref > run.def ; ./run0 >> error ;;    #5
     78  6 ) sed s/9999/54/ run.def.ref > run.def ; ./run0 >> error ;;    #6
     79  7 ) sed s/9999/50/ run.def.ref > run.def ; ./run0 >> error ;;    #7
     80  8 ) sed s/9999/46/ run.def.ref > run.def ; ./run0 >> error ;;    #8
     81  9 ) sed s/9999/47/ run.def.ref > run.def ; ./run0 >> error ;;    #9
     82 10 ) sed s/9999/47/ run.def.ref > run.def ; ./run0 >> error ;;    #10
     83 11 ) sed s/9999/51/ run.def.ref > run.def ; ./run0 >> error ;;    #11
     84  0 ) sed s/9999/56/ run.def.ref > run.def ; ./run0 >> error ;;    #12
     85  * ) echo "Error: Invalid value of true_num ($true_num)" ; exit 1 ;;
    6286esac
    6387
    64 # launch job for next month
    65 if (( $num_next <= $num_end )) ; then
     88# Launch job for next month
     89if (( num_next <= num_end )) ; then
    6690  cp -f run_month$num_now tmp
    6791  sed -e "s@run_month${num_now}@run_month${num_next}@" \
    6892      -e "s@num_now=${num_now}@num_now=${num_next}@" tmp > run_month$num_next
    6993  rm tmp
    70  
    7194  ccc_msub run_month$num_next
    7295fi
Note: See TracChangeset for help on using the changeset viewer.