source: configs/testing/bash/create_runs.sh @ 566

Last change on this file since 566 was 566, checked in by dubos, 7 years ago

testing : shorten DCMIP 2.1 run

  • Property svn:executable set to *
File size: 6.8 KB
Line 
1#!/bin/bash
2
3function create_exp() { # executable expname output_grid output_freq  - $* passed to rundef_$expname
4    EXEC=$1 ; shift
5    EXP=$1 ; shift
6    OUTPUT_GRID=$1 ; shift
7    OUTPUT_FREQ=$1 ; shift
8    EXPDIR=${EXP}_${EXEC}_$1
9    echo "Creating $EXPDIR"
10    rm -rf $EXPDIR
11    mkdir $EXPDIR
12    cd $EXPDIR
13    ln -sf $ROOT/bin/icosa_${EXEC}.exe gcm.exe
14    cp $ROOT/python/common.py post.py
15    echo "post_${EXP}()" >> post.py
16#    ln -sf $ROOT/python/post_${EXP}.py post.py
17    rundef_$EXP $* > tmp.def
18    sort tmp.def | cut -c 7- > run.def
19    rm -f tmp.def
20    xml_iodef > iodef.xml
21    xml_icosa > icosa.xml
22    xml_field_def > field_def.xml
23    xml_dcmip $EXP $OUTPUT_GRID $OUTPUT_FREQ > filedef_dcmip2016.xml
24    job_${EXP} ${EXEC} $* > job.sh
25    cd ..
26}
27
28function rundef_all() {
29    cat <<EOF
30100   #------------- Planet ---------------
31200   #------------- Dynamics  ------------
32300   #-------------- Mesh ----------------
33400   #------------ Numerics --------------
34500   #----------- Dissipation ------------
35600   #-------------- Physics -------------
36700   #---------------- Run ---------------
37EOF
38}
39
40function setvar()
41{
42    while (($# > 1)) ; do
43        ii=${idx[$1]}
44        echo "$ii   $1=$2"
45        shift ; shift
46    done
47}
48function order()
49{
50    ii=$1 ; shift
51    for name in $* ; do
52        ((ii+=1))
53       idx[${name}]=$ii
54#       echo $name ${idx[${name}]}
55    done
56}
57
58#----------------------------- pre-defined resolutions ---------------------------
59
60function set_nbp_40() {
61    setvar dt 480 optim_it 500
62    split_${EXEC}_40
63}
64
65function set_nbp_80() {
66    setvar dt 240 optim_it 1000
67    split_${EXEC}_80
68}
69
70#-------------------------------- Williamson (1991) ------------------------------
71
72function rundef_W91() {
73    NBP=$1 ; TAU=$2
74    rundef_all
75    set_nbp_$NBP
76    setvar caldyn_conserv enstrophy caldyn_eta eta_lag boussinesq .TRUE. llm 1 radius 6.37122e6 g 9.80616
77    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
78    setvar write_period 86400 run_length 2592000 etat0 williamson91.6
79}
80
81function job_W91() {
82    job_$1_$2 W91_$1
83}
84
85#-------------------------------- Jablonowsky & Williamson (2006) ------------------------------
86
87function rundef_DCMIP(){
88    rundef_all
89    set_nbp_$1
90    setvar radius 6.37122e6 g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5
91    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv
92}
93
94function rundef_JW06() { # NBP TAU
95    NBP=$1 ; TAU=$2
96    rundef_DCMIP $NBP
97#    setvar hydrostatic .FALSE.
98    setvar omega 7.292e-5 llm 60 disvert ncar ncar_dz 500 nqtot 2 itau_adv 3
99    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
100    setvar write_period 21600 run_length 259200 etat0 jablonowsky06
101}
102
103function job_JW06() { # EXEC NBP
104    job_$1_$2 JW06_$1 # e.g. job_mpi_80 JW06_mpi
105}
106
107#------------------------------------- DCMIP 2012 ---------------------------------
108
109function rundef_DCMIP21() { # NBP TAU
110    NBP=$1 ; TAU=$2
111    rundef_DCMIP $NBP
112    setvar omega 0. llm 60 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 500
113    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
114    setvar scale_factor 500 write_period 50000 run_length 1.8e6 etat0 dcmip2_schaer_noshear
115    setvar rayleigh_friction_type dcmip2_schaer_noshear rayleigh_friction_tau 12500
116}
117
118function rundef_DCMIP31() { # NBP TAU
119    NBP=$1 ; TAU=$2
120    rundef_DCMIP $NBP
121    setvar hydrostatic .FALSE.
122    setvar omega 0. llm 10 disvert ncar ncar_T0 300 ncar_p0 1e5 ncar_disvert_c 1 ncar_dz 1118
123    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU 
124    setvar scale_factor 125 write_period 7500 run_length 4.5e5 etat0 dcmip3
125}
126
127function rundef_DCMIP41() { # NBP TAU
128    NBP=$1 ; TAU=$2
129    rundef_DCMIP $NBP
130#    setvar hydrostatic .FALSE.
131    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 2 itau_adv 3
132    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
133    setvar write_period 21600 run_length 2592000 etat0 dcmip4 dcmip4_testcase 1
134}
135
136function rundef_DCMIP51() { # NBP TAU
137    NBP=$1 ; TAU=$2
138    rundef_DCMIP $NBP
139    setvar omega 7.292e-5 llm 30 disvert ncarl30 nqtot 1 itau_adv 3
140    setvar tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
141    setvar write_period 7200 run_length 864000 etat0 dcmip5
142    setvar physics dcmip dcmip_physics 0 itau_physics 6
143}
144
145function job_DCMIP21() { # EXEC NBP
146    job_$1_$2 DCMIP21_$1 # e.g. job_mpi_80 DCMIP31_mpi
147}
148function job_DCMIP31() { # EXEC NBP
149    job_$1_$2 DCMIP31_$1 # e.g. job_mpi_80 DCMIP31_mpi
150}
151function job_DCMIP41() { # EXEC NBP
152    job_$1_$2 DCMIP41_$1
153}
154function job_DCMIP51() { # EXEC NBP
155    job_$1_$2 DCMIP51_$1
156}
157
158#------------------------------------- OTHER ---------------------------------
159
160function rundef_bubble() { # NBP TAU
161    NBP=$1 ; TAU=$2
162    rundef_all
163    set_nbp_$NBP
164    setvar llm 50 disvert ncar ncar_dz 20 ncar_T0 300 ncar_p0 1e5
165#    setvar time_scheme ARK2.3
166    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
167    setvar radius 5e6 scale_factor 10000  g 9.80616 kappa 0.2857143 cpp 1004.5 preff 1e5 omega 0.
168}
169function job_bubble() { # EXEC NBP
170    job_$1_$2 Bubble_$1
171}
172
173function rundef_held_suarez() { # NBP TAU
174    NBP=$1 ; TAU=$2
175    rundef_DCMIP $NBP
176    setvar llm 19 disvert std write_period 86400 run_length 2592000 etat0 held_suarez # physics held_suarez
177    setvar time_scheme RK2.5
178    setvar nitergdiv 2 nitergrot 2 niterdivgrad 2 tau_graddiv $TAU tau_gradrot $TAU tau_divgrad $TAU
179}
180function job_held_suarez() { # EXEC NBP
181    job_$1_$2 HS94_$1
182}
183
184#-------------------------------- END TEST CASES -----------------------------
185
186function basic()
187{
188    rm -rf RUNS
189    mkdir RUNS
190    cd RUNS
191# Williamson 1991
192#    create_exp serial W91 two_degree 24h 40 5000 # nbp tau
193#    create_exp mpi W91 two_degree 24h 40 5000 # nbp tau
194    create_exp mpi JW06 two_degree 24h 40 10000 # nbp tau
195# DCMIP 2012
196    create_exp mpi DCMIP21 two_degree 100s 40 90000 # nbp tau
197    create_exp mpi DCMIP31 two_degree 60s 40 90000 # nbp tau
198    create_exp mpi_omp DCMIP41 two_degree 24h 40 10000 # nbp tau
199#    create_exp mpi DCMIP51 one_degree 2h  80 10000 # nbp tau
200# Other
201    create_exp mpi_omp held_suarez two_degree 24h 40 10000 # nbp tau
202}
203
204function main()
205{
206# the number associated to each run.def parameter is used to sort the lines and order them in a logical way
207    declare -A idx
208    order 100 radius omega g cpp kappa preff scale_factor
209    order 200 boussinesq hydrostatic
210    order 300 nbp optim_it nsplit_i nsplit_j llm omp_level_size disvert ncar_disvert_c ncar_dz ncar_T0 ncar_p0
211    order 400 caldyn_eta time_scheme caldyn_conserv dt nqtot itau_adv
212    order 500 nitergdiv tau_graddiv nitergrot tau_gradrot niterdivgrad tau_divgrad rayleigh_friction_type rayleigh_friction_tau
213    order 600 physics dcmip_physics itau_physics
214    order 700 run_length write_period etat0 dcmip4_testcase
215
216    basic
217}
218
219source current_args
220source bash/${arch}.sh
221source bash/xml.sh
222ROOT=$PWD
223main
Note: See TracBrowser for help on using the repository browser.