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/spirit/run_month1

    r2923 r3766  
    88#SBATCH --output %x.%j.out
    99
     10## Script to run chained simulations
     11## (uses script "run0" and reference file "run.def.ref")
     12## Set values of "num_now" and "num_end" in the script below
     13## to set initial month # and final month # of the simulation
     14
    1015# A few parameters that might need be changed depending on your setup:
    1116# Path to the arch.env to source
    1217source ../trunk/LMDZ.COMMON/arch.env
     18# Number of threads to use (must be the same as "#SBATCH --cpus-per-task=" above)
     19export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
     20export OMP_STACKSIZE=400M
     21#
     22########################################################################
     23set -exv
     24ls -al
     25trap 'echo -e "Error at line $LINENO!"' ERR
    1326
    14 # Number of threads to use (must be the same as "#MSUB -c" above)
    15 export OMP_NUM_THREADS=4
    16 export OMP_STACKSIZE=400M
    17 
    18 set -xv
    19 ls -al
    20 
    21 ## set starting month and ending month below:
     27# Set starting month and ending month below:
    2228num_now=1
    2329num_end=12
    24 (( num_previous = $num_now - 1 ))
     30num_previous=$(( num_now - 1 ))
    2531
    2632echo "$num_previous" > num_run
    2733# next month number
    28 (( num_next = $num_now + 1 ))
     34num_next=$(( num_now + 1 ))
    2935# true (i.e. modulo 12) month number
    30 (( true_num = $num_now % 12 ))
     36true_num=$(( num_now % 12 ))
    3137
     38# Check if required files exist
    3239\rm -f  error; touch error
    3340
     41if [ ! -f run.def.ref ]; then
     42  echo "Error: file \"run.def.ref\" not found in current directory!" > error
     43  exit 1
     44fi
     45
     46if [ ! -x run0 ]; then
     47  echo "Error: file \"run0\" not found or not executable in current directory!" > error
     48  exit 1
     49fi
     50
     51if [ ! -f run_month$num_now ]; then
     52  echo "Error: file \"run_month${num_now}\" not found in current directory!" > error
     53  exit 1
     54fi
     55
     56# Run model depending on current month
    3457case $true_num in
    35   1 ) sed s/9999/61/ run.def.ref > run.def ; run0 >> error ;;    #1
    36   2 ) sed s/9999/66/ run.def.ref > run.def ; run0 >> error ;;    #2
    37   3 ) sed s/9999/66/ run.def.ref > run.def ; run0 >> error ;;    #3
    38   4 ) sed s/9999/65/ run.def.ref > run.def ; run0 >> error ;;    #4
    39   5 ) sed s/9999/60/ run.def.ref > run.def ; run0 >> error ;;    #5
    40   6 ) sed s/9999/54/ run.def.ref > run.def ; run0 >> error ;;    #6
    41   7 ) sed s/9999/50/ run.def.ref > run.def ; run0 >> error ;;    #7
    42   8 ) sed s/9999/46/ run.def.ref > run.def ; run0 >> error ;;    #8
    43   9 ) sed s/9999/47/ run.def.ref > run.def ; run0 >> error ;;    #9
    44  10 ) sed s/9999/47/ run.def.ref > run.def ; run0 >> error ;;    #10
    45  11 ) sed s/9999/51/ run.def.ref > run.def ; run0 >> error ;;    #11
    46   0 ) sed s/9999/56/ run.def.ref > run.def ; run0 >> error ;;    #12
    47   * ) echo "error" ;;
     58  1 ) sed s/9999/61/ run.def.ref > run.def ; ./run0 >> error ;;    #1
     59  2 ) sed s/9999/66/ run.def.ref > run.def ; ./run0 >> error ;;    #2
     60  3 ) sed s/9999/66/ run.def.ref > run.def ; ./run0 >> error ;;    #3
     61  4 ) sed s/9999/65/ run.def.ref > run.def ; ./run0 >> error ;;    #4
     62  5 ) sed s/9999/60/ run.def.ref > run.def ; ./run0 >> error ;;    #5
     63  6 ) sed s/9999/54/ run.def.ref > run.def ; ./run0 >> error ;;    #6
     64  7 ) sed s/9999/50/ run.def.ref > run.def ; ./run0 >> error ;;    #7
     65  8 ) sed s/9999/46/ run.def.ref > run.def ; ./run0 >> error ;;    #8
     66  9 ) sed s/9999/47/ run.def.ref > run.def ; ./run0 >> error ;;    #9
     67 10 ) sed s/9999/47/ run.def.ref > run.def ; ./run0 >> error ;;    #10
     68 11 ) sed s/9999/51/ run.def.ref > run.def ; ./run0 >> error ;;    #11
     69  0 ) sed s/9999/56/ run.def.ref > run.def ; ./run0 >> error ;;    #12
     70  * ) echo "Error: Invalid value of true_num ($true_num)" ; exit 1 ;;
    4871esac
    4972
    50 # launch job for next month
    51 if (( $num_next <= $num_end )) ; then
     73# Launch job for next month
     74if (( num_next <= num_end )) ; then
    5275  cp -f run_month$num_now tmp
    5376  sed -e "s@run_month${num_now}@run_month${num_next}@" \
    5477      -e "s@num_now=${num_now}@num_now=${num_next}@" tmp > run_month$num_next
    5578  rm tmp
    56  
    5779  sbatch run_month$num_next
    5880fi
Note: See TracChangeset for help on using the changeset viewer.