1 | #!/bin/ksh |
---|
2 | |
---|
3 | # CALLS: rebuild_nemo.exe |
---|
4 | |
---|
5 | #set -ax |
---|
6 | usage () |
---|
7 | { |
---|
8 | echo |
---|
9 | echo " NEMO Rebuild" |
---|
10 | echo " ************" |
---|
11 | echo |
---|
12 | echo " usage: ${0##*/} [-l -t -c -m -n] filebase ndomain [rebuild dimensions]" |
---|
13 | echo |
---|
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)" |
---|
20 | echo |
---|
21 | exit 1 |
---|
22 | } |
---|
23 | |
---|
24 | while getopts c:n:t:d:lm opt |
---|
25 | do |
---|
26 | case ${opt} in |
---|
27 | l) |
---|
28 | BATCH="yes" |
---|
29 | BATCH_CMD="qsub" |
---|
30 | ARCH="XC40_METO" |
---|
31 | echo "Submitting job to compute node" |
---|
32 | ;; |
---|
33 | t) |
---|
34 | OMP_NUM_THREADS=${OPTARG} |
---|
35 | ;; |
---|
36 | c) |
---|
37 | NCHUNKSIZE=${OPTARG} |
---|
38 | ;; |
---|
39 | m) |
---|
40 | NMASK="TRUE" |
---|
41 | ;; |
---|
42 | d) |
---|
43 | DEFLATE=${OPTARG} |
---|
44 | ;; |
---|
45 | n) |
---|
46 | nam_rebuild=${OPTARG} |
---|
47 | ;; |
---|
48 | esac |
---|
49 | done |
---|
50 | shift $(expr ${OPTIND} - 1) |
---|
51 | |
---|
52 | if [[ $# -lt 2 ]] ; then |
---|
53 | usage |
---|
54 | fi |
---|
55 | |
---|
56 | script_dir=$(dirname $0) |
---|
57 | |
---|
58 | file=$1 |
---|
59 | ndomain=$2 |
---|
60 | DIM1=$3 |
---|
61 | DIM2=$4 |
---|
62 | export OMP_NUM_THREADS=${OMP_NUM_THREADS:-1} |
---|
63 | nam_rebuild=${nam_rebuild:-nam_rebuild_$$} |
---|
64 | |
---|
65 | if [[ -n ${DIM1} && -n ${DIM2} ]] ; then |
---|
66 | dim_str=" dims '${DIM1}','${DIM2}'" |
---|
67 | dims="dims='${DIM1}','${DIM2}'" |
---|
68 | fi |
---|
69 | |
---|
70 | echo "file ${file}, num_domains ${ndomain}, num_threads ${OMP_NUM_THREADS}${dim_str}" |
---|
71 | |
---|
72 | cat > $nam_rebuild << EOC |
---|
73 | &nam_rebuild |
---|
74 | filebase='${file}' |
---|
75 | ndomain=${ndomain} |
---|
76 | EOC |
---|
77 | if [[ -n ${dims} ]] ; then |
---|
78 | echo ${dims} >> $nam_rebuild |
---|
79 | fi |
---|
80 | if [[ -n ${NCHUNKSIZE} ]] ; then |
---|
81 | echo " nchunksize=${NCHUNKSIZE}" >> $nam_rebuild |
---|
82 | fi |
---|
83 | if [[ -n ${NMASK} ]] ; then |
---|
84 | echo " l_maskout=.true." >> $nam_rebuild |
---|
85 | fi |
---|
86 | if [[ -n ${DEFLATE} ]] ; then |
---|
87 | echo " deflate_level=${DEFLATE}" >> $nam_rebuild |
---|
88 | fi |
---|
89 | |
---|
90 | echo "/" >> $nam_rebuild |
---|
91 | |
---|
92 | if [[ ${BATCH} == "yes" ]] ; then |
---|
93 | batch_file=rebuild_nemo_batch_${ARCH} |
---|
94 | |
---|
95 | #Create a modified local copy of the batch submission file |
---|
96 | #The process ID is appended to the end of the file name so it is unique |
---|
97 | cat ${script_dir}/BATCH_TEMPLATES/${batch_file} | sed -e"s/NTHREADS/${OMP_NUM_THREADS}/" \ |
---|
98 | -e"s:INDIR:${script_dir}:" \ |
---|
99 | -e"s/NAMELIST/${nam_rebuild}/" > ${batch_file}_$$.sh |
---|
100 | |
---|
101 | #Submit the job |
---|
102 | $BATCH_CMD ${batch_file}_$$.sh |
---|
103 | |
---|
104 | else |
---|
105 | ${script_dir}/rebuild_nemo.exe $nam_rebuild |
---|
106 | fi |
---|
107 | |
---|