[2895] | 1 | #!/bin/ksh |
---|
| 2 | |
---|
[7683] | 3 | # CALLS: rebuild_nemo.exe |
---|
| 4 | |
---|
[2895] | 5 | #set -ax |
---|
| 6 | usage () |
---|
| 7 | { |
---|
| 8 | echo |
---|
| 9 | echo " NEMO Rebuild" |
---|
| 10 | echo " ************" |
---|
| 11 | echo |
---|
[7683] | 12 | echo " usage: ${0##*/} [-l -t -c -m -n] filebase ndomain [rebuild dimensions]" |
---|
[2895] | 13 | echo |
---|
[7683] | 14 | echo " flags: -l submit to compute node" |
---|
| 15 | echo " -t num use num threads" |
---|
| 16 | echo " -c num split 4D vars into time chuncks of size num" |
---|
| 17 | echo " -m force masking of global arrays (zero if no mdi)" |
---|
| 18 | echo " -d deflate_level deflate level for output files (key_netcdf4 only)" |
---|
| 19 | echo " -n namelist full path to namelist file to be created (otherwise default nam_rebuild+_process_id is used)" |
---|
[7685] | 20 | echo " -r memory Memory to request on compute node including units (Default = 10Gb)" |
---|
[2895] | 21 | echo |
---|
| 22 | exit 1 |
---|
| 23 | } |
---|
| 24 | |
---|
[7685] | 25 | while getopts c:n:t:d:r:lm opt |
---|
[2895] | 26 | do |
---|
| 27 | case ${opt} in |
---|
[7683] | 28 | l) |
---|
| 29 | BATCH="yes" |
---|
| 30 | BATCH_CMD="qsub" |
---|
| 31 | ARCH="XC40_METO" |
---|
| 32 | echo "Submitting job to compute node" |
---|
| 33 | ;; |
---|
[2895] | 34 | t) |
---|
| 35 | OMP_NUM_THREADS=${OPTARG} |
---|
| 36 | ;; |
---|
[3025] | 37 | c) |
---|
| 38 | NCHUNKSIZE=${OPTARG} |
---|
| 39 | ;; |
---|
[7683] | 40 | m) |
---|
| 41 | NMASK="TRUE" |
---|
[7685] | 42 | echo "mask" |
---|
[7683] | 43 | ;; |
---|
| 44 | d) |
---|
| 45 | DEFLATE=${OPTARG} |
---|
| 46 | ;; |
---|
| 47 | n) |
---|
| 48 | nam_rebuild=${OPTARG} |
---|
| 49 | ;; |
---|
[7685] | 50 | r) |
---|
| 51 | MEMORY=${OPTARG} |
---|
| 52 | ;; |
---|
[2895] | 53 | esac |
---|
| 54 | done |
---|
| 55 | shift $(expr ${OPTIND} - 1) |
---|
| 56 | |
---|
[7683] | 57 | if [[ $# -lt 2 ]] ; then |
---|
[2895] | 58 | usage |
---|
| 59 | fi |
---|
| 60 | |
---|
| 61 | script_dir=$(dirname $0) |
---|
| 62 | |
---|
| 63 | file=$1 |
---|
| 64 | ndomain=$2 |
---|
| 65 | DIM1=$3 |
---|
| 66 | DIM2=$4 |
---|
[7683] | 67 | export OMP_NUM_THREADS=${OMP_NUM_THREADS:-1} |
---|
| 68 | nam_rebuild=${nam_rebuild:-nam_rebuild_$$} |
---|
[7685] | 69 | MEMORY=${MEMORY:-10Gb} |
---|
[2895] | 70 | |
---|
| 71 | if [[ -n ${DIM1} && -n ${DIM2} ]] ; then |
---|
| 72 | dim_str=" dims '${DIM1}','${DIM2}'" |
---|
| 73 | dims="dims='${DIM1}','${DIM2}'" |
---|
| 74 | fi |
---|
| 75 | |
---|
| 76 | echo "file ${file}, num_domains ${ndomain}, num_threads ${OMP_NUM_THREADS}${dim_str}" |
---|
| 77 | |
---|
[7683] | 78 | cat > $nam_rebuild << EOC |
---|
[2895] | 79 | &nam_rebuild |
---|
| 80 | filebase='${file}' |
---|
| 81 | ndomain=${ndomain} |
---|
| 82 | EOC |
---|
| 83 | if [[ -n ${dims} ]] ; then |
---|
[7683] | 84 | echo ${dims} >> $nam_rebuild |
---|
[2895] | 85 | fi |
---|
[3025] | 86 | if [[ -n ${NCHUNKSIZE} ]] ; then |
---|
[7683] | 87 | echo " nchunksize=${NCHUNKSIZE}" >> $nam_rebuild |
---|
[3025] | 88 | fi |
---|
[7683] | 89 | if [[ -n ${NMASK} ]] ; then |
---|
| 90 | echo " l_maskout=.true." >> $nam_rebuild |
---|
| 91 | fi |
---|
| 92 | if [[ -n ${DEFLATE} ]] ; then |
---|
| 93 | echo " deflate_level=${DEFLATE}" >> $nam_rebuild |
---|
| 94 | fi |
---|
[2895] | 95 | |
---|
[7683] | 96 | echo "/" >> $nam_rebuild |
---|
| 97 | |
---|
| 98 | if [[ ${BATCH} == "yes" ]] ; then |
---|
| 99 | batch_file=rebuild_nemo_batch_${ARCH} |
---|
| 100 | |
---|
| 101 | #Create a modified local copy of the batch submission file |
---|
| 102 | #The process ID is appended to the end of the file name so it is unique |
---|
| 103 | cat ${script_dir}/BATCH_TEMPLATES/${batch_file} | sed -e"s/NTHREADS/${OMP_NUM_THREADS}/" \ |
---|
[7685] | 104 | -e"s/MEMORY/${MEMORY}/" \ |
---|
[7683] | 105 | -e"s:INDIR:${script_dir}:" \ |
---|
| 106 | -e"s/NAMELIST/${nam_rebuild}/" > ${batch_file}_$$.sh |
---|
| 107 | |
---|
| 108 | #Submit the job |
---|
| 109 | $BATCH_CMD ${batch_file}_$$.sh |
---|
| 110 | |
---|
| 111 | else |
---|
| 112 | ${script_dir}/rebuild_nemo.exe $nam_rebuild |
---|
| 113 | fi |
---|
| 114 | |
---|