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

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

testing : add diagflux flag and outputs

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